pldmtool: Add completion code to GetPLDMTypes & GetPLDMVersion
Add human readable completion code strings to GetPLDMTypes
and GetPLDMVersion command response.
Test Results:
```
./pldmtool base GetPLDMTypes -m 13
{
"CompletionCode": "SUCCESS",
"PLDMTypes": [
{
"PLDM Type": "base",
"PLDM Type Code": 0
},
{
"PLDM Type": "platform",
"PLDM Type Code": 2
}
]
}
./pldmtool base GetPLDMVersion -t base -m 13
{
"CompletionCode": "SUCCESS",
"Response": "1.0.0"
}
```
Change-Id: Ic6441812a1958016345516527ff10f4cf2b72379
Signed-off-by: Rajeev Ranjan <ranjan.rajeev1609@gmail.com>
diff --git a/pldmtool/pldm_base_cmd.cpp b/pldmtool/pldm_base_cmd.cpp
index de856d2..2e037cc 100644
--- a/pldmtool/pldm_base_cmd.cpp
+++ b/pldmtool/pldm_base_cmd.cpp
@@ -143,20 +143,27 @@
std::vector<bitfield8_t> types(8);
auto rc = decode_get_types_resp(responsePtr, payloadLength, &cc,
types.data());
- if (rc != PLDM_SUCCESS || cc != PLDM_SUCCESS)
+ if (rc != PLDM_SUCCESS)
{
std::cerr << "Response Message Error: "
<< "rc=" << rc << ",cc=" << (int)cc << "\n";
return;
}
- printPldmTypes(types);
+ ordered_json data;
+ fillCompletionCode(cc, data, PLDM_BASE);
+ if (cc == PLDM_SUCCESS)
+ {
+ printPLDMTypes(types, data);
+ }
+
+ pldmtool::helper::DisplayInJson(data);
}
private:
- void printPldmTypes(std::vector<bitfield8_t>& types)
+ void printPLDMTypes(std::vector<bitfield8_t>& types, ordered_json& data)
{
- ordered_json data;
+ ordered_json jPldmTypes;
ordered_json jarray;
for (int i = 0; i < PLDM_MAX_TYPES; i++)
{
@@ -170,11 +177,11 @@
{
jarray["PLDM Type"] = it->first;
jarray["PLDM Type Code"] = i;
- data.emplace_back(jarray);
+ jPldmTypes.emplace_back(jarray);
}
}
}
- pldmtool::helper::DisplayInJson(data);
+ data["PLDMTypes"] = jPldmTypes;
}
};
@@ -214,23 +221,29 @@
auto rc =
decode_get_version_resp(responsePtr, payloadLength, &cc,
&transferHandle, &transferFlag, &version);
- if (rc != PLDM_SUCCESS || cc != PLDM_SUCCESS)
+ if (rc != PLDM_SUCCESS)
{
std::cerr << "Response Message Error: "
<< "rc=" << rc << ",cc=" << (int)cc << "\n";
return;
}
- char buffer[16] = {0};
- ver2str(&version, buffer, sizeof(buffer));
ordered_json data;
- auto it = std::find_if(
- pldmTypes.begin(), pldmTypes.end(),
- [&](const auto& typePair) { return typePair.second == pldmType; });
-
- if (it != pldmTypes.end())
+ fillCompletionCode(cc, data, PLDM_BASE);
+ if (cc == PLDM_SUCCESS)
{
- data["Response"] = buffer;
+ char buffer[16] = {0};
+ ver2str(&version, buffer, sizeof(buffer));
+ auto it = std::find_if(pldmTypes.begin(), pldmTypes.end(),
+ [&](const auto& typePair) {
+ return typePair.second == pldmType;
+ });
+
+ if (it != pldmTypes.end())
+ {
+ data["Response"] = buffer;
+ }
}
+
pldmtool::helper::DisplayInJson(data);
}