diff options
Diffstat (limited to 'storageaddsel.cpp')
-rw-r--r-- | storageaddsel.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/storageaddsel.cpp b/storageaddsel.cpp index 84e3092..0b40d47 100644 --- a/storageaddsel.cpp +++ b/storageaddsel.cpp @@ -8,12 +8,15 @@ #include <memory> #include <systemd/sd-bus.h> #include <mapper.h> +#include <elog.hpp> +#include <elog-errors-HostEvent.hpp> #include "host-ipmid/ipmid-api.h" #include "sensorhandler.h" #include "storagehandler.h" using namespace std; +using namespace phosphor::logging; ////////////////////////// struct esel_section_headers_t { @@ -185,6 +188,26 @@ int send_esel_to_dbus(const char *desc, const char *sev, const char *details, ui const char *object_name = "/org/openbmc/records/events"; char *bus_name = NULL; + // Allocate enough space to represent the data in hex separated by spaces, + // to mimic how IPMI would display the data. + unique_ptr<char[]> selData(new char[debuglen*3]()); + uint32_t i = 0; + for(i = 0; i < debuglen; i++) + { + sprintf(&selData[i*3], "%02x ", 0xFF & ((char*)debug)[i]); + } + log<level::INFO>("Received Host Event", entry("ESEL=%s", selData.get())); + + try + { + elog<org::open_power::Error::Host::Event>( + prev_entry<org::open_power::Error::Host::Event::ESEL>()); + } + catch (elogException<org::open_power::Error::Host::Event>& e) + { + commit(e.name()); + } + mbus = ipmid_get_sd_bus_connection(); r = mapper_get_service(mbus, object_name, &bus_name); if (r < 0) { |