xref: /openbmc/pldm/fw-update/firmware_inventory.hpp (revision 7ad45b401134e3b3a05a75200dbba00afd5aee46)
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