Add GPIO pin description

Added functionality to read gpio pin code description from
gpio_desc.json file stored in /usr/share/ipmi-providers/.
This file is platform specific and can be overwritten for
different platforms. This gpio pin description will be
requested by lcd debug card for displaying in screen.

Tested: verified with lcd debug card screen.

Change-Id: I32275a5d218cbfdd20cd919768688ab6cc67b091
Signed-off-by: Vijay Khemka <vijaykhemka@fb.com>
diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index b628c7b..9fbcc90 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -46,6 +46,8 @@
 
 int plat_udbg_get_post_desc(uint8_t, uint8_t *, uint8_t, uint8_t *, uint8_t *,
                             uint8_t *);
+int plat_udbg_get_gpio_desc(uint8_t, uint8_t *, uint8_t *, uint8_t *, uint8_t *,
+                            uint8_t *);
 ipmi_ret_t plat_udbg_get_frame_data(uint8_t, uint8_t, uint8_t *, uint8_t *,
                                     uint8_t *);
 ipmi_ret_t plat_udbg_control_panel(uint8_t, uint8_t, uint8_t, uint8_t *,
@@ -481,11 +483,31 @@
     uint8_t *req = reinterpret_cast<uint8_t *>(request);
     uint8_t *res = reinterpret_cast<uint8_t *>(response);
 
-    phosphor::logging::log<phosphor::logging::level::INFO>(
-        "Get GPIO Description Event");
+    uint8_t index = 0;
+    uint8_t next = 0;
+    uint8_t level = 0;
+    uint8_t pinDef = 0;
+    uint8_t descLen = 0;
+    int ret;
 
-    std::memcpy(res, req, SIZE_IANA_ID + 1); // IANA ID
-    *data_len = SIZE_IANA_ID + 1;
+    index = req[3];
+
+    ret = plat_udbg_get_gpio_desc(index, &next, &level, &pinDef, &descLen,
+                                  &res[8]);
+    if (ret)
+    {
+        memcpy(res, req, SIZE_IANA_ID); // IANA ID
+        *data_len = SIZE_IANA_ID;
+        return IPMI_CC_UNSPECIFIED_ERROR;
+    }
+
+    memcpy(res, req, SIZE_IANA_ID); // IANA ID
+    res[3] = index;
+    res[4] = next;
+    res[5] = level;
+    res[6] = pinDef;
+    res[7] = descLen;
+    *data_len = SIZE_IANA_ID + 5 + descLen;
 
     return IPMI_CC_OK;
 }