bm_instance: Create a new handler

This OEM handler will get properties from tmpfs to serve over IPMI.

Tested:
~# cat /run/bm-instance/asset-tag
12345
~# ipmitool raw 0x2e 0x32 0x79 0x2b 0x00 0x17 0x00
 79 2b 00 17 05 31 32 33 34 35
...
...
(Verified this works for all 7 sub commands)

Signed-off-by: Brandon Kim <brandonkim@google.com>
Change-Id: I191b6f4994d91ada49a3332a8e93a3a305561904
diff --git a/handler_impl.hpp b/handler_impl.hpp
index b1f48bc..dc00051 100644
--- a/handler_impl.hpp
+++ b/handler_impl.hpp
@@ -78,6 +78,7 @@
                             uint8_t settings_id, uint16_t value) const override;
     uint16_t accelGetVrSettings(::ipmi::Context::ptr ctx, uint8_t chip_id,
                                 uint8_t settings_id) const override;
+    std::string getBMInstanceProperty(uint8_t propertyType) const override;
 
   protected:
     // Exposed for dependency injection
@@ -109,6 +110,12 @@
     const std::unordered_map<uint8_t, std::string> _vrSettingsMap{
         {0, "idle_mode_"}, {1, "power_brake_"}, {2, "loadline_"}};
 
+    const std::unordered_map<uint8_t, std::string> bmInstanceTypeStringMap = {
+        {0x00, "asset-tag"}, {0x01, "board-serial-number"},
+        {0x02, "family"},    {0x03, "product-name"},
+        {0x04, "sku"},       {0x05, "system-serial-number"},
+        {0x06, "uuid"}};
+
     nlohmann::json _entityConfig{};
 
     std::vector<std::tuple<uint32_t, std::string>> _pcie_i2c_map;