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)