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