Add self channel number conversion function

Support for self channel number conversion added. This will
be used by IPMI commands like GetUserAccess, GetChannelInfo etc.
to query the details for the channel in which the command is
requested. Self channel number 0xE will be converted to proper
channel number by this function

Unit-Test:
Performed that commands received through ipmid channel are marked
as channel 0xF and through netipmid as 0x1, when channel number
0xE is used

Change-Id: I53820558faf4439d9909d52e4e98d71c38e714b4
Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
diff --git a/user_channel/channel_layer.cpp b/user_channel/channel_layer.cpp
index ae23f3f..d173208 100644
--- a/user_channel/channel_layer.cpp
+++ b/user_channel/channel_layer.cpp
@@ -59,6 +59,11 @@
     return getChannelConfigObject().isValidChannel(chNum);
 }
 
+uint8_t convertCurrentChannelNum(const uint8_t chNum)
+{
+    return getChannelConfigObject().convertToChannelIndexNumber(chNum);
+}
+
 bool isValidAuthType(const uint8_t chNum, const EAuthType& authType)
 {
     return getChannelConfigObject().isValidAuthType(chNum, authType);
diff --git a/user_channel/channel_layer.hpp b/user_channel/channel_layer.hpp
index 60badbc..abaa0bf 100644
--- a/user_channel/channel_layer.hpp
+++ b/user_channel/channel_layer.hpp
@@ -22,7 +22,7 @@
 {
 
 static constexpr uint8_t maxIpmiChannels = 16;
-static constexpr uint8_t selfChNum = 0xE;
+static constexpr uint8_t currentChNum = 0xE;
 
 /**
  * @enum IPMI return codes specific to channel (refer spec se 22.22 response
@@ -250,6 +250,15 @@
 ipmi_ret_t getChannelAccessData(const uint8_t chNum,
                                 ChannelAccess& chAccessData);
 
+/** @brief provides function to convert current channel number (0xE)
+ *
+ *  @param[in] chNum - channel number as requested in commands.
+ *
+ *  @return same channel number or proper channel number for current channel
+ * number (0xE).
+ */
+uint8_t convertCurrentChannelNum(const uint8_t chNum);
+
 /** @brief to set channel access data
  *
  *  @param[in] chNum - channel number
diff --git a/user_channel/channel_mgmt.cpp b/user_channel/channel_mgmt.cpp
index 3a9e2cf..0ece27e 100644
--- a/user_channel/channel_mgmt.cpp
+++ b/user_channel/channel_mgmt.cpp
@@ -827,7 +827,7 @@
             }
         }
     }
-    return ((chNum == selfChNum) ? curChannel : chNum);
+    return ((chNum == currentChNum) ? curChannel : chNum);
 }
 
 std::string ChannelConfig::convertToNetInterface(const std::string& value)
diff --git a/user_channel/channel_mgmt.hpp b/user_channel/channel_mgmt.hpp
index 8cdb9c7..d696075 100644
--- a/user_channel/channel_mgmt.hpp
+++ b/user_channel/channel_mgmt.hpp
@@ -195,6 +195,14 @@
      */
     CommandPrivilege convertToPrivLimitIndex(const std::string& value);
 
+    /** @brief function to convert channel number to channel index
+     *
+     *  @param[in] chNum - channel number
+     *
+     *  @return channel index
+     */
+    uint8_t convertToChannelIndexNumber(const uint8_t chNum);
+
     /** @brief function to write persistent channel configuration to config file
      *
      *  @return 0 for success, -errno for failure.
@@ -380,14 +388,6 @@
      */
     EChannelProtocolType convertToProtocolTypeIndex(const std::string& value);
 
-    /** @brief function to convert channel number to channel index
-     *
-     *  @param[in] chNum - channel number
-     *
-     *  @return channel index
-     */
-    uint8_t convertToChannelIndexNumber(const uint8_t chNum);
-
     /** @brief function to convert channel name to network interface name
      *
      *  @param[in] value - channel interface name - ipmi centric