summaryrefslogtreecommitdiffstats
path: root/sensorhandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sensorhandler.cpp')
-rw-r--r--sensorhandler.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index a4cfe34..eac4215 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -7,15 +7,20 @@
#include <systemd/sd-bus.h>
#include "host-ipmid/ipmid-api.h"
#include <phosphor-logging/log.hpp>
+#include <phosphor-logging/elog-errors.hpp>
#include "ipmid.hpp"
#include "sensorhandler.h"
#include "types.hpp"
#include "utils.hpp"
+#include "xyz/openbmc_project/Common/error.hpp"
+
extern int updateSensorRecordFromSSRAESC(const void *);
extern sd_bus *bus;
extern const ipmi::sensor::IdInfoMap sensors;
using namespace phosphor::logging;
+using InternalFailure =
+ sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
void register_netfn_sen_functions() __attribute__((constructor));
@@ -418,7 +423,18 @@ ipmi_ret_t setSensorReading(void *request)
return IPMI_CC_SENSOR_INVALID;
}
- return iter->second.updateFunc(cmdData, iter->second);
+ try
+ {
+ return iter->second.updateFunc(cmdData, iter->second);
+ }
+ catch (InternalFailure& e)
+ {
+ log<level::ERR>("Set sensor failed",
+ entry("SENSOR_NUM=%d", cmdData.number));
+ commit<InternalFailure>();
+ }
+
+ return IPMI_CC_UNSPECIFIED_ERROR;
}
ipmi_ret_t ipmi_sen_set_sensor(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
OpenPOWER on IntegriCloud