Unive Tien | 7ad45b4 | 2025-08-18 06:04:53 +0000 | [diff] [blame^] | 1 | #pragma once |
| 2 | |
| 3 | #include "common/types.hpp" |
| 4 | #include "common/utils.hpp" |
| 5 | |
| 6 | #include <xyz/openbmc_project/Association/Definitions/server.hpp> |
| 7 | #include <xyz/openbmc_project/Software/Version/server.hpp> |
| 8 | |
| 9 | class FirmwareInventoryTest; |
| 10 | |
| 11 | namespace pldm::fw_update |
| 12 | { |
| 13 | |
| 14 | class FirmwareInventory; |
| 15 | using SoftwareVersion = sdbusplus::server::object_t< |
| 16 | sdbusplus::xyz::openbmc_project::Software::server::Version>; |
| 17 | using SoftwareAssociationDefinitions = sdbusplus::server::object_t< |
| 18 | sdbusplus::xyz::openbmc_project::Association::server::Definitions>; |
| 19 | |
| 20 | using SoftwareVersionPurpose = SoftwareVersion::VersionPurpose; |
| 21 | |
| 22 | using namespace pldm; |
| 23 | |
| 24 | class FirmwareInventory |
| 25 | { |
| 26 | public: |
| 27 | friend class ::FirmwareInventoryTest; |
| 28 | FirmwareInventory() = delete; |
| 29 | FirmwareInventory(const FirmwareInventory&) = delete; |
| 30 | FirmwareInventory(FirmwareInventory&&) = delete; |
| 31 | FirmwareInventory& operator=(const FirmwareInventory&) = delete; |
| 32 | FirmwareInventory& operator=(FirmwareInventory&&) = delete; |
| 33 | ~FirmwareInventory() = default; |
| 34 | |
| 35 | /** |
| 36 | * @brief Constructor |
| 37 | * @param[in] softwareIdentifier - Software identifier containing EID and |
| 38 | * component identifier |
| 39 | * @param[in] softwarePath - D-Bus object path for the firmware inventory |
| 40 | * entry |
| 41 | * @param[in] softwareVersion - Active version of the firmware |
| 42 | * @param[in] associatedEndpoint - D-Bus object path of the endpoint |
| 43 | * associated with the firmware |
| 44 | * @param[in] descriptors - Descriptors associated with the firmware |
| 45 | * @param[in] componentInfo - Component information associated with the |
| 46 | * firmware |
| 47 | * @param[in] purpose - Purpose of the software version, default is Unknown |
| 48 | * @note The descriptors and componentInfo parameters are reserved for |
| 49 | * future use and currently not used in the implementation. |
| 50 | */ |
| 51 | explicit FirmwareInventory( |
| 52 | SoftwareIdentifier /*softwareIdentifier*/, |
| 53 | const std::string& softwarePath, const std::string& softwareVersion, |
| 54 | const std::string& associatedEndpoint, |
| 55 | const Descriptors& /*descriptors*/, |
| 56 | const ComponentInfo& /*componentInfo*/, |
| 57 | SoftwareVersionPurpose purpose = SoftwareVersionPurpose::Unknown); |
| 58 | |
| 59 | private: |
| 60 | /** |
| 61 | * @brief Reference to the sdbusplus bus |
| 62 | */ |
| 63 | sdbusplus::bus_t& bus = utils::DBusHandler::getBus(); |
| 64 | |
| 65 | /** |
| 66 | * @brief The D-Bus object path for the firmware inventory entry, obtained |
| 67 | * by |
| 68 | */ |
| 69 | std::string softwarePath; |
| 70 | |
| 71 | /** |
| 72 | * @brief Software association object that represents the associations |
| 73 | * for the firmware |
| 74 | */ |
| 75 | SoftwareAssociationDefinitions association; |
| 76 | |
| 77 | /** |
| 78 | * @brief Software version object that represents the firmware version |
| 79 | */ |
| 80 | SoftwareVersion version; |
| 81 | }; |
| 82 | |
| 83 | } // namespace pldm::fw_update |