19b21efc5SLei YU #pragma once
29b21efc5SLei YU 
39b21efc5SLei YU #include "activation.hpp"
49b21efc5SLei YU 
5*ab139ce9SAndrew Geissler #include <string>
6*ab139ce9SAndrew Geissler 
79b21efc5SLei YU namespace openpower
89b21efc5SLei YU {
99b21efc5SLei YU namespace software
109b21efc5SLei YU {
119b21efc5SLei YU namespace updater
129b21efc5SLei YU {
139b21efc5SLei YU 
142b2d2298SLei YU constexpr auto squashFSImage = "pnor.xz.squashfs";
152b2d2298SLei YU 
169b21efc5SLei YU class RedundancyPriorityUbi : public RedundancyPriority
179b21efc5SLei YU {
189b21efc5SLei YU   public:
19df7a6157SAdriana Kobylak     RedundancyPriorityUbi(sdbusplus::bus::bus& bus, const std::string& path,
20df7a6157SAdriana Kobylak                           Activation& parent, uint8_t value) :
21df7a6157SAdriana Kobylak         RedundancyPriority(bus, path, parent, value)
22df7a6157SAdriana Kobylak     {
23df7a6157SAdriana Kobylak         priority(value);
24df7a6157SAdriana Kobylak     }
259b21efc5SLei YU     virtual ~RedundancyPriorityUbi() = default;
269b21efc5SLei YU 
279b21efc5SLei YU     /** @brief Overloaded Priority property set function
289b21efc5SLei YU      *
299b21efc5SLei YU      *  @param[in] value - uint8_t
309b21efc5SLei YU      *
319b21efc5SLei YU      *  @return Success or exception thrown
329b21efc5SLei YU      */
339b21efc5SLei YU     uint8_t priority(uint8_t value) override;
349b21efc5SLei YU };
359b21efc5SLei YU 
369b21efc5SLei YU /** @class ActivationUbi
379b21efc5SLei YU  *  @brief OpenBMC activation software management implementation.
389b21efc5SLei YU  *  @details A concrete implementation for
399b21efc5SLei YU  *  xyz.openbmc_project.Software.Activation DBus API.
409b21efc5SLei YU  */
419b21efc5SLei YU class ActivationUbi : public Activation
429b21efc5SLei YU {
439b21efc5SLei YU   public:
449b21efc5SLei YU     using Activation::Activation;
459b21efc5SLei YU     virtual ~ActivationUbi() = default;
469b21efc5SLei YU 
479b21efc5SLei YU     /** @brief Overloaded Activation property setter function
489b21efc5SLei YU      *
499b21efc5SLei YU      *  @param[in] value - One of Activation::Activations
509b21efc5SLei YU      *
519b21efc5SLei YU      *  @return Success or exception thrown
529b21efc5SLei YU      */
539b21efc5SLei YU     Activations activation(Activations value) override;
549b21efc5SLei YU 
559b21efc5SLei YU     RequestedActivations
569b21efc5SLei YU         requestedActivation(RequestedActivations value) override;
579b21efc5SLei YU 
589b21efc5SLei YU   private:
599b21efc5SLei YU     /** @brief Tracks whether the read-only & read-write volumes have been
609b21efc5SLei YU      *created as part of the activation process. **/
619b21efc5SLei YU     bool ubiVolumesCreated = false;
629b21efc5SLei YU 
639b21efc5SLei YU     void unitStateChange(sdbusplus::message::message& msg) override;
649b21efc5SLei YU     void startActivation() override;
659b21efc5SLei YU     void finishActivation() override;
669b21efc5SLei YU };
679b21efc5SLei YU 
689b21efc5SLei YU } // namespace updater
699b21efc5SLei YU } // namespace software
709b21efc5SLei YU } // namespace openpower
71