BIOS: Implement attribute value table with type string
Construct attribute value table with type string based on string table
and attribute table.
Change-Id: I40c782ae8753340c964cf067e53e7947b18e9e35
Signed-off-by: Carol Wang <wangkair@cn.ibm.com>
diff --git a/libpldmresponder/bios_parser.cpp b/libpldmresponder/bios_parser.cpp
index a6f07d8..99c1149 100644
--- a/libpldmresponder/bios_parser.cpp
+++ b/libpldmresponder/bios_parser.cpp
@@ -433,6 +433,31 @@
{
return internal::valueMap;
}
+
+std::string getAttrValue(const AttrName& attrName)
+{
+ const auto& dBusMap = internal::attrLookup.at(attrName);
+ std::variant<std::string> propValue;
+
+ if (dBusMap == std::nullopt)
+ { // return default string
+ const auto& valueEntry = internal::valueMap.at(attrName);
+ return std::get<DefaultStr>(valueEntry);
+ }
+
+ auto bus = sdbusplus::bus::new_default();
+ auto service = pldm::responder::getService(bus, dBusMap->objectPath,
+ dBusMap->interface);
+ auto method =
+ bus.new_method_call(service.c_str(), dBusMap->objectPath.c_str(),
+ "org.freedesktop.DBus.Properties", "Get");
+ method.append(dBusMap->interface, dBusMap->propertyName);
+ auto reply = bus.call(method);
+ reply.read(propValue);
+
+ return std::get<std::string>(propValue);
+}
+
} // namespace bios_string
Strings getStrings(const char* dirPath)