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