summaryrefslogtreecommitdiffstats
path: root/sensorhandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sensorhandler.cpp')
-rw-r--r--sensorhandler.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index 1aa5181..ca8ef53 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -663,9 +663,28 @@ ipmi_ret_t ipmi_sen_get_sensor_reading(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
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);
OpenPOWER on IntegriCloud