1 #pragma once 2 3 #include "item_updater.hpp" 4 5 namespace openpower 6 { 7 namespace software 8 { 9 namespace updater 10 { 11 12 /** @class ItemUpdaterStatic 13 * @brief Manages the activation of the host version items for static layout 14 */ 15 class ItemUpdaterStatic : public ItemUpdater 16 { 17 public: 18 ItemUpdaterStatic(sdbusplus::bus::bus& bus, const std::string& path) : 19 ItemUpdater(bus, path) 20 { 21 processPNORImage(); 22 gardReset = std::make_unique<GardReset>(bus, GARD_PATH); 23 volatileEnable = std::make_unique<ObjectEnable>(bus, volatilePath); 24 25 // Emit deferred signal. 26 emit_object_added(); 27 } 28 virtual ~ItemUpdaterStatic() = default; 29 30 void freePriority(uint8_t value, const std::string& versionId) override; 31 32 void processPNORImage() override; 33 34 void deleteAll() override; 35 36 bool freeSpace() override; 37 38 void updateFunctionalAssociation(const std::string& versionId) override; 39 40 bool isVersionFunctional(const std::string& versionId) override; 41 42 private: 43 /** @brief Create Activation object */ 44 std::unique_ptr<Activation> createActivationObject( 45 const std::string& path, const std::string& versionId, 46 const std::string& extVersion, 47 sdbusplus::xyz::openbmc_project::Software::server::Activation:: 48 Activations activationStatus, 49 AssociationList& assocs) override; 50 51 /** @brief Create Version object */ 52 std::unique_ptr<Version> 53 createVersionObject(const std::string& objPath, 54 const std::string& versionId, 55 const std::string& versionString, 56 sdbusplus::xyz::openbmc_project::Software::server:: 57 Version::VersionPurpose versionPurpose, 58 const std::string& filePath) override; 59 60 /** @brief Validate if image is valid or not */ 61 bool validateImage(const std::string& path); 62 63 /** @brief Host factory reset - clears PNOR partitions for each 64 * Activation D-Bus object */ 65 void reset() override; 66 67 /** @brief The functional version ID */ 68 std::string functionalVersionId; 69 }; 70 71 } // namespace updater 72 } // namespace software 73 } // namespace openpower 74