pldmtool: Fix SetStateEffecterStates command
Fix and use the following command to set state effecter PDR:
pldmtool platform SetStateEffecterStates --id <effecterId> --count
<count> --data <setRequest effecterState ...>
Tested:
$ pldmtool platform SetStateEffecterStates -i 1 -c 1 -d 0 2
set_request = 0
Encode request successfully
Request Message:
08 01 80 02 39 01 00 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Success in creating the socket : RC = 3
Success in connecting to socket : RC = 0
Success in sending message type as pldm to mctp : RC = 0
Write to socket successful : RC = 24
Total length:24
Loopback response message:
08 01 80 02 39 01 00 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
On first recv(),response == request : RC = 0
Total length: 6
Shutdown Socket successful : RC = 0
Response Message:
08 01 00 02 39 00
SetStateEffecterStates: SUCCESS
$ pldmtool platform SetStateEffecterStates -i 1 -c 1 -d 1 2
set_request = 1
Encode request successfully
Request Message:
08 01 80 02 39 01 00 01 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Success in creating the socket : RC = 3
Success in connecting to socket : RC = 0
Success in sending message type as pldm to mctp : RC = 0
Write to socket successful : RC = 24
Total length:24
Loopback response message:
08 01 80 02 39 01 00 01 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
On first recv(),response == request : RC = 0
Total length: 6
Shutdown Socket successful : RC = 0
Response Message:
08 01 00 02 39 00
SetStateEffecterStates: SUCCESS
Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: I4a2e71b149040c3e0c0f585f8fae0e5e25ec7ceb
diff --git a/utils.hpp b/utils.hpp
index fecf12e..db49f51 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -77,13 +77,14 @@
/** @brief Convert effecter data to structure of set_effecter_state_field
*
* @param[in] effecterData - the date of effecter
- * @param[out] effecter_id - a handle that is used to identify and access the
- * effecter
- * @param[out] stateField - structure of set_effecter_state_field
+ * @param[in] effecterCount - the number of individual sets of effecter
+ * information
+ * @return[out] parse success and get a valid set_effecter_state_field
+ * structure, return nullopt means parse failed
*/
-bool decodeEffecterData(const std::vector<uint8_t>& effecterData,
- uint16_t& effecter_id,
- std::vector<set_effecter_state_field>& stateField);
+std::optional<std::vector<set_effecter_state_field>>
+ parseEffecterData(const std::vector<uint8_t>& effecterData,
+ uint8_t effecterCount);
/**
* @brief creates an error log