vpd-tool:UTF-8 encoding support on hardware read
Keyword values when in unreadable format may need to be converted
to Hex. This code converts data from HW to readable format.
Test:
root@bonn003:~# tmp/vpd-tool -r -H -O "/sys/bus/i2c/drivers/at24/8-0050/eeprom" -R VINI -K SN
{
"/sys/bus/i2c/drivers/at24/8-0050/eeprom": {
"SN": "YF30UF31C007"
}
}
root@bonn003:~# tmp/vpd-tool -r -H -O "/sys/bus/i2c/drivers/at24/8-0050/eeprom" -R VINI -K HW
{
"/sys/bus/i2c/drivers/at24/8-0050/eeprom": {
"HW": "0x8001"
}
}
Change-Id: I28d9189d95202a565bcba81299f2e548cb4cb83a
Signed-off-by: Giridhari Krishna <giridharikrishnan@gmail.com>
diff --git a/vpd_tool_impl.cpp b/vpd_tool_impl.cpp
index 0fc8755..93c4d40 100644
--- a/vpd_tool_impl.cpp
+++ b/vpd_tool_impl.cpp
@@ -431,8 +431,8 @@
}
catch (const json::exception& e)
{
- json output = json::object({});
- json kwVal = json::object({});
+ std::cout << "Keyword Value: " << keyword << std::endl;
+ std::cout << e.what() << std::endl;
}
}
@@ -562,7 +562,7 @@
{
json output = json::object({});
json kwVal = json::object({});
- kwVal.emplace(keyword, keywordVal);
+ kwVal.emplace(keyword, getPrintableValue(keywordVal));
output.emplace(fruPath, kwVal);
@@ -712,7 +712,7 @@
}
}
- if (keyword != "SE")
+ if (keyword != "SE") // SE to display in Hex string only
{
ostringstream hwValStream;
hwValStream << "0x";
@@ -726,7 +726,7 @@
if (const auto value = get_if<Binary>(&kwValue))
{
- busStr = byteArrayToHexString(*value);
+ busStr = hexString(*value);
}
if (busStr != hwValStr)
{