Fix: refactor get channel cipher suite command

Get channel cipher suites command updated as per new ipmi structure.

Tested:
ipmitool raw 0x06 0x54 0x01 0x00 0x80
01 c0 03 01 41 81 c0 11 03 44 81                //response

Also verified by issuing cmd:
ipmitool channel getciphers ipmi 0x01
which listed supported CIA algorithms as response

Signed-off-by: Ayushi Smriti <smriti.ayushi@linux.intel.com>
Change-Id: Ibc942f5b197c72071cd35a138fbe244db7519824
diff --git a/app/channel.hpp b/app/channel.hpp
index 7004ddd..8e5accb 100644
--- a/app/channel.hpp
+++ b/app/channel.hpp
@@ -1,6 +1,6 @@
 #include "nlohmann/json.hpp"
 
-#include <ipmid/api.h>
+#include <ipmid/api.hpp>
 
 /** @brief The set channel access IPMI command.
  *
@@ -53,31 +53,31 @@
                                  ipmi_data_len_t data_len,
                                  ipmi_context_t context);
 
-/** @brief Implementation of get channel cipher suites command
+/** @brief this command is used to look up what authentication, integrity,
+ *  confidentiality algorithms are supported.
  *
- *  @param[in] netfn - Net Function
- *  @param[in] cmd - Command
- *  @param[in] request - Request pointer
- *  @param[in,out] response - Response pointer
- *  @param[in,out] data_len - Data Length
- *  @param[in] context - Context
+ *  @ param ctx - context pointer
+ *  @ param channelNumber - channel number
+ *  @ param payloadType - payload type
+ *  @ param listIndex - list index
+ *  @ param algoSelectBit - list algorithms
  *
- *  @return IPMI_CC_OK on success, non-zero otherwise.
- */
-ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-                                  ipmi_request_t request,
-                                  ipmi_response_t response,
-                                  ipmi_data_len_t data_len,
-                                  ipmi_context_t context);
+ *  @returns ipmi completion code plus response data
+ *  - rspChannel - channel number for authentication algorithm.
+ *  - rspRecords - cipher suite records.
+ **/
+ipmi::RspType<uint8_t,             // Channel Number
+              std::vector<uint8_t> // Cipher Records
+              >
+    getChannelCipherSuites(ipmi::Context::ptr ctx, uint4_t channelNumber,
+                           uint4_t reserved1, uint8_t payloadType,
+                           uint6_t listIndex, uint1_t reserved2,
+                           uint1_t algoSelectBit);
 
 namespace cipher
 {
 
-static constexpr auto defaultChannelNumber = 1;
-static constexpr auto listTypeMask = 0x80;
 static constexpr auto listCipherSuite = 0x80;
-static constexpr auto listIndexMask = 0x3F;
-static constexpr auto respSize = 16;
 
 using Json = nlohmann::json;
 static constexpr auto configFile = "/usr/share/ipmi-providers/cipher_list.json";
@@ -92,23 +92,3 @@
 static constexpr auto confTag = 0x80;
 
 } // namespace cipher
-
-/** @struct GetChannelCipherRequest
- *
- *  IPMI payload for Get Channel Cipher Suites command request
- */
-struct GetChannelCipherRequest
-{
-    uint8_t channelNumber; //!< Channel Number
-    uint8_t payloadType;   //!< Payload type number
-    uint8_t listIndex;     //!< List Index
-} __attribute__((packed));
-
-/** @struct GetChannelCipherRespHeader
- *
- *  IPMI payload for Get Channel Cipher Suites command response header
- */
-struct GetChannelCipherRespHeader
-{
-    uint8_t channelNumber; //!< Channel Number
-} __attribute__((packed));