blob: f6d41eeec841604adf2f4c32846b5e408f5a0282 [file] [log] [blame]
Alexander Hansencc372352025-01-14 14:15:39 +01001#pragma once
2
3#include "sdbusplus/async/context.hpp"
4
5#include <cstdint>
6#include <string>
7
8namespace phosphor::software::device
9{
10class Device;
11}
12
13using namespace phosphor::software::device;
14
15namespace phosphor::software::config
16{
17
18/* This class represents the device software configuration we get from
19 * entity-manager via D-Bus. Each Code Updater can create its own configuration
20 * class that inherits from this to store additional properties from their
21 * device configuration, like bus/address/...
22 */
23class SoftwareConfig
24{
25 public:
26 SoftwareConfig(const std::string& objPath, uint32_t vendorIANA,
27 const std::string& compatible, const std::string& configType,
28 const std::string& name);
29
30 // The dbus object path this configuration was fetched from
31 const std::string objectPath;
32
33 // https://github.com/openbmc/entity-manager/blob/master/schemas/firmware.json
34
35 // 'Name' field from the EM config
36 const std::string configName;
37
38 // 'Type' field from the EM config
39 const std::string configType;
40
41 // @returns the object path of the inventory item which
42 // can be associated with this device.
43 sdbusplus::async::task<std::string> getInventoryItemObjectPath(
44 sdbusplus::async::context& ctx);
45
46 private:
47 // 'VendorIANA' field from the EM config
48 const uint32_t vendorIANA; // e.g. "0x0000A015", 4 bytes as per PLDM spec
49
50 // 'CompatibleHardware' field from the EM config
51 const std::string
52 compatibleHardware; // e.g.
53 // "com.meta.Hardware.Yosemite4.MedusaBoard.CPLD.LCMX02_2000HC"
54
55 friend Device;
56};
57
58}; // namespace phosphor::software::config