sensor: Use getFunc to handle the get sensor reading

Change-Id: If0f3185e7ce1d300be20b58ee5004a58e35c222d
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index 1aa5181..ca8ef53 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -663,9 +663,28 @@
             break;
         }
         default:
-            *data_len=0;
-            rc = IPMI_CC_SENSOR_INVALID;
-            break;
+        {
+            const auto iter = sensors.find(reqptr->sennum);
+            if (iter == sensors.end())
+            {
+                return IPMI_CC_SENSOR_INVALID;
+            }
+
+            try
+            {
+                auto getResponse =  iter->second.getFunc(iter->second);
+                *data_len = getResponse.size();
+                memcpy(resp, getResponse.data(), *data_len);
+                return IPMI_CC_OK;
+            }
+            catch (InternalFailure& e)
+            {
+                 log<level::ERR>("Get sensor failed",
+                                 entry("SENSOR_NUM=%d", reqptr->sennum));
+                 commit<InternalFailure>();
+                 return IPMI_CC_SENSOR_INVALID;
+            }
+        }
     }
 
     reply = sd_bus_message_unref(reply);