blob: 494553108f9dc4394e20e2f59e8907362484b17b [file] [log] [blame]
Adriana Kobylak2d8fa222017-03-15 12:34:32 -05001#pragma once
2
3#include <sdbusplus/bus.hpp>
4#include <xyz/openbmc_project/Software/Activation/server.hpp>
Adriana Kobylakea9626f2017-04-05 15:37:40 -05005#include <xyz/openbmc_project/Software/ActivationBlocksTransition/server.hpp>
Saqib Khan7254f0e2017-04-10 21:45:37 -05006#include "xyz/openbmc_project/Software/ExtendedVersion/server.hpp"
Adriana Kobylak2d8fa222017-03-15 12:34:32 -05007
8namespace openpower
9{
10namespace software
11{
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050012namespace updater
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050013{
14
15using ActivationInherit = sdbusplus::server::object::object<
Saqib Khan7254f0e2017-04-10 21:45:37 -050016 sdbusplus::xyz::openbmc_project::Software::server::ExtendedVersion,
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050017 sdbusplus::xyz::openbmc_project::Software::server::Activation>;
Adriana Kobylakea9626f2017-04-05 15:37:40 -050018using ActivationBlocksTransitionInherit = sdbusplus::server::object::object<
19 sdbusplus::xyz::openbmc_project::Software::server::ActivationBlocksTransition>;
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050020
21/** @class Activation
22 * @brief OpenBMC activation software management implementation.
23 * @details A concrete implementation for
24 * xyz.openbmc_project.Software.Activation DBus API.
25 */
26class Activation : public ActivationInherit
27{
28 public:
29 /** @brief Constructs Activation Software Manager
30 *
31 * @param[in] bus - The Dbus bus object
32 * @param[in] path - The Dbus object path
Saqib Khan7254f0e2017-04-10 21:45:37 -050033 * @param[in] versionId - The software version id
34 * @param[in] extVersion - The extended version
Saqib Khana8ade7e2017-04-12 10:27:56 -050035 * @param[in] activationStatus - The status of Activation
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050036 */
Adriana Kobylakbc37a4c2017-04-10 09:45:36 -050037 Activation(sdbusplus::bus::bus& bus, const std::string& path,
Saqib Khan7254f0e2017-04-10 21:45:37 -050038 std::string& versionId,
Saqib Khana8ade7e2017-04-12 10:27:56 -050039 std::string& extVersion,
40 sdbusplus::xyz::openbmc_project::Software::
41 server::Activation::Activations activationStatus) :
Saqib Khan7254f0e2017-04-10 21:45:37 -050042 ActivationInherit(bus, path.c_str(), true),
43 versionId(versionId)
44 {
45 // Set Properties.
46 extendedVersion(extVersion);
Saqib Khana8ade7e2017-04-12 10:27:56 -050047 activation(activationStatus);
Saqib Khan7254f0e2017-04-10 21:45:37 -050048 // Emit deferred signal.
49 emit_object_added();
50 }
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050051
52 /** @brief Overloaded Activation property setter function
53 *
54 * @param[in] value - One of Activation::Activations
55 *
56 * @return Success or exception thrown
57 */
58 Activations activation(Activations value) override;
59
60 /** @brief Overloaded requestedActivation property setter function
61 *
62 * @param[in] value - One of Activation::RequestedActivations
63 *
64 * @return Success or exception thrown
65 */
66 RequestedActivations requestedActivation(RequestedActivations value)
67 override;
68
Adriana Kobylakbc37a4c2017-04-10 09:45:36 -050069 /** @brief Version id */
70 std::string versionId;
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050071};
72
Adriana Kobylakea9626f2017-04-05 15:37:40 -050073/** @class ActivationBlocksTransition
74 * @brief OpenBMC ActivationBlocksTransition implementation.
75 * @details A concrete implementation for
76 * xyz.openbmc_project.Software.ActivationBlocksTransition DBus API.
77 */
78class ActivationBlocksTransition : public ActivationBlocksTransitionInherit
79{
80 public:
81 /** @brief Constructs ActivationBlocksTransition.
82 *
83 * @param[in] bus - The Dbus bus object
84 * @param[in] path - The Dbus object path
85 */
86 ActivationBlocksTransition(sdbusplus::bus::bus& bus,
87 const std::string& path) :
88 ActivationBlocksTransitionInherit(bus, path.c_str()) {}
89};
90
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050091} // namespace updater
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050092} // namespace software
93} // namespace openpower
94