blob: 45aa521aa971ab3f61ece7824c9744f693a64b87 [file] [log] [blame]
Lei YU01539e72019-07-31 10:57:38 +08001#pragma once
2
3#include "config.h"
4
Lei YU91029442019-08-01 15:57:31 +08005#include "types.hpp"
6
Lei YU01539e72019-07-31 10:57:38 +08007#include <sdbusplus/server.hpp>
Lei YU91029442019-08-01 15:57:31 +08008#include <xyz/openbmc_project/Association/Definitions/server.hpp>
Lei YU01539e72019-07-31 10:57:38 +08009#include <xyz/openbmc_project/Software/Activation/server.hpp>
10#include <xyz/openbmc_project/Software/ExtendedVersion/server.hpp>
11
12namespace phosphor
13{
14namespace software
15{
16namespace updater
17{
18
19using ActivationInherit = sdbusplus::server::object::object<
20 sdbusplus::xyz::openbmc_project::Software::server::ExtendedVersion,
Lei YU91029442019-08-01 15:57:31 +080021 sdbusplus::xyz::openbmc_project::Software::server::Activation,
22 sdbusplus::xyz::openbmc_project::Association::server::Definitions>;
Lei YU01539e72019-07-31 10:57:38 +080023
24/** @class Activation
25 * @brief OpenBMC activation software management implementation.
26 * @details A concrete implementation for
27 * xyz.openbmc_project.Software.Activation DBus API.
28 */
29class Activation : public ActivationInherit
30{
31 public:
32 /** @brief Constructs Activation Software Manager
33 *
34 * @param[in] bus - The Dbus bus object
35 * @param[in] path - The Dbus object path
36 * @param[in] versionId - The software version id
37 * @param[in] extVersion - The extended version
38 * @param[in] activationStatus - The status of Activation
Lei YU91029442019-08-01 15:57:31 +080039 * @param[in] assocs - Association objects
Lei YU01539e72019-07-31 10:57:38 +080040 */
41 Activation(sdbusplus::bus::bus& bus, const std::string& path,
42 const std::string& versionId, const std::string& extVersion,
43 sdbusplus::xyz::openbmc_project::Software::server::Activation::
Lei YU91029442019-08-01 15:57:31 +080044 Activations activationStatus,
45 const AssociationList& assocs) :
Lei YU01539e72019-07-31 10:57:38 +080046 ActivationInherit(bus, path.c_str(), true),
47 bus(bus), path(path), versionId(versionId)
48 {
49 // Set Properties.
50 extendedVersion(extVersion);
51 activation(activationStatus);
Lei YU91029442019-08-01 15:57:31 +080052 associations(assocs);
Lei YU01539e72019-07-31 10:57:38 +080053
54 // Emit deferred signal.
55 emit_object_added();
56 }
57
58 /** @brief Overloaded Activation property setter function
59 *
60 * @param[in] value - One of Activation::Activations
61 *
62 * @return Success or exception thrown
63 */
64 Activations activation(Activations value) override;
65
66 /** @brief Activation */
67 using ActivationInherit::activation;
68
69 /** @brief Overloaded requestedActivation property setter function
70 *
71 * @param[in] value - One of Activation::RequestedActivations
72 *
73 * @return Success or exception thrown
74 */
75 RequestedActivations
76 requestedActivation(RequestedActivations value) override;
77
78 /** @brief Persistent sdbusplus DBus bus connection */
79 sdbusplus::bus::bus& bus;
80
81 /** @brief Persistent DBus object path */
82 std::string path;
83
84 /** @brief Version id */
85 std::string versionId;
86};
87
88} // namespace updater
89} // namespace software
90} // namespace phosphor