blob: 4aff3e5a7d4869ffb646997993bc606270a36f9f [file] [log] [blame]
Adriana Kobylak2d8fa222017-03-15 12:34:32 -05001#pragma once
2
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -05003#include <sdbusplus/server.hpp>
Adriana Kobylak2d8fa222017-03-15 12:34:32 -05004#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
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050021/** @class ActivationBlocksTransition
22 * @brief OpenBMC ActivationBlocksTransition implementation.
23 * @details A concrete implementation for
24 * xyz.openbmc_project.Software.ActivationBlocksTransition DBus API.
25 */
26class ActivationBlocksTransition : public ActivationBlocksTransitionInherit
27{
28 public:
29 /** @brief Constructs ActivationBlocksTransition.
30 *
31 * @param[in] bus - The Dbus bus object
32 * @param[in] path - The Dbus object path
33 */
34 ActivationBlocksTransition(sdbusplus::bus::bus& bus,
35 const std::string& path) :
36 ActivationBlocksTransitionInherit(bus, path.c_str()) {}
37};
38
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050039/** @class Activation
40 * @brief OpenBMC activation software management implementation.
41 * @details A concrete implementation for
42 * xyz.openbmc_project.Software.Activation DBus API.
43 */
44class Activation : public ActivationInherit
45{
46 public:
47 /** @brief Constructs Activation Software Manager
48 *
49 * @param[in] bus - The Dbus bus object
50 * @param[in] path - The Dbus object path
Saqib Khan7254f0e2017-04-10 21:45:37 -050051 * @param[in] versionId - The software version id
52 * @param[in] extVersion - The extended version
Saqib Khana8ade7e2017-04-12 10:27:56 -050053 * @param[in] activationStatus - The status of Activation
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050054 */
Adriana Kobylakbc37a4c2017-04-10 09:45:36 -050055 Activation(sdbusplus::bus::bus& bus, const std::string& path,
Saqib Khan7254f0e2017-04-10 21:45:37 -050056 std::string& versionId,
Saqib Khana8ade7e2017-04-12 10:27:56 -050057 std::string& extVersion,
58 sdbusplus::xyz::openbmc_project::Software::
59 server::Activation::Activations activationStatus) :
Saqib Khan7254f0e2017-04-10 21:45:37 -050060 ActivationInherit(bus, path.c_str(), true),
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050061 bus(bus),
62 path(path),
Saqib Khan7254f0e2017-04-10 21:45:37 -050063 versionId(versionId)
64 {
65 // Set Properties.
66 extendedVersion(extVersion);
Saqib Khana8ade7e2017-04-12 10:27:56 -050067 activation(activationStatus);
Saqib Khan7254f0e2017-04-10 21:45:37 -050068 // Emit deferred signal.
69 emit_object_added();
70 }
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050071
72 /** @brief Overloaded Activation property setter function
73 *
74 * @param[in] value - One of Activation::Activations
75 *
76 * @return Success or exception thrown
77 */
78 Activations activation(Activations value) override;
79
80 /** @brief Overloaded requestedActivation property setter function
81 *
82 * @param[in] value - One of Activation::RequestedActivations
83 *
84 * @return Success or exception thrown
85 */
86 RequestedActivations requestedActivation(RequestedActivations value)
87 override;
88
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050089 /** @brief Persistent sdbusplus DBus bus connection */
90 sdbusplus::bus::bus& bus;
91
92 /** @brief Persistent DBus object path */
93 std::string path;
94
Adriana Kobylakbc37a4c2017-04-10 09:45:36 -050095 /** @brief Version id */
96 std::string versionId;
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050097
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050098 /** @brief Persistent ActivationBlocksTransition dbus object */
99 std::unique_ptr<ActivationBlocksTransition> activationBlocksTransition;
Adriana Kobylakea9626f2017-04-05 15:37:40 -0500100};
101
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -0500102} // namespace updater
Adriana Kobylak2d8fa222017-03-15 12:34:32 -0500103} // namespace software
104} // namespace openpower
105