dcmi: asset-tag: Implement the Get Asset Tag command

Change-Id: Ic2fb1e707174ece63fbb758bf1422c2c4d95723b
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
diff --git a/dcmihandler.hpp b/dcmihandler.hpp
index dfe1d4e..f2369a0 100644
--- a/dcmihandler.hpp
+++ b/dcmihandler.hpp
@@ -10,6 +10,7 @@
 {
     // Get capability bits
     IPMI_CMD_DCMI_GET_POWER = 0x03,
+    IPMI_CMD_DCMI_GET_ASSET_TAG = 0x06,
 };
 
 namespace dcmi
@@ -30,6 +31,33 @@
 
 } //namespace assettag
 
+static constexpr auto groupExtId = 0xDC;
+
+static constexpr auto assetTagMaxOffset = 62;
+static constexpr auto assetTagMaxSize = 63;
+static constexpr auto maxBytes = 16;
+
+/** @struct GetAssetTagRequest
+ *
+ *  DCMI payload for Get Asset Tag command request.
+ */
+struct GetAssetTagRequest
+{
+    uint8_t groupID;            //!< Group extension identification.
+    uint8_t offset;             //!< Offset to read.
+    uint8_t bytes;              //!< Number of bytes to read.
+} __attribute__((packed));
+
+/** @struct GetAssetTagResponse
+ *
+ *  DCMI payload for Get Asset Tag command response.
+ */
+struct GetAssetTagResponse
+{
+    uint8_t groupID;            //!< Group extension identification.
+    uint8_t tagLength;          //!< Total asset tag length.
+} __attribute__((packed));
+
 /** @brief Read the object tree to fetch the object path that implemented the
  *         Asset tag interface.
  *