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);