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