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