summaryrefslogtreecommitdiffstats
path: root/host-interface.cpp
diff options
context:
space:
mode:
authorAndrew Geissler <andrewg@us.ibm.com>2017-03-21 15:04:05 -0500
committerAndrew Geissler <andrewg@us.ibm.com>2017-05-09 12:49:07 -0500
commit1b9d4e5c676f5f2fd35583dc5e3459783a650578 (patch)
tree6864362bed697168df44f99056ff3630af946f79 /host-interface.cpp
parent1c1bd754ed2ea0fe0527bec39870e5fcbb859bc4 (diff)
downloadphosphor-host-ipmid-1b9d4e5c676f5f2fd35583dc5e3459783a650578.tar.gz
phosphor-host-ipmid-1b9d4e5c676f5f2fd35583dc5e3459783a650578.zip
Send the SMS attention to host when Execute called
Change-Id: Id523470fcabf59cf2bda592cf1fe687ac44c3328 Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
Diffstat (limited to 'host-interface.cpp')
-rw-r--r--host-interface.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/host-interface.cpp b/host-interface.cpp
index 05539b9..f485516 100644
--- a/host-interface.cpp
+++ b/host-interface.cpp
@@ -1,5 +1,6 @@
#include <queue>
#include <phosphor-logging/log.hpp>
+#include <utils.hpp>
#include "host-interface.hpp"
namespace phosphor
@@ -7,6 +8,10 @@ namespace phosphor
namespace host
{
+constexpr auto MAPPER_BUSNAME = "xyz.openbmc_project.ObjectMapper";
+constexpr auto MAPPER_PATH = "/xyz/openbmc_project/object_mapper";
+constexpr auto MAPPER_INTERFACE = "xyz.openbmc_project.ObjectMapper";
+
using namespace phosphor::logging;
// When you see base:: you know we're referencing our base class
@@ -20,6 +25,31 @@ void Host::execute(base::Host::Command command)
entry("CONTROL_HOST_CMD=%s",
convertForMessage(command)));
workQueue.push(command);
+
+ // If this was the only entry then send the SMS attention
+ if(workQueue.size() == 1)
+ {
+ log<level::INFO>("Asserting SMS Attention");
+
+ std::string IPMI_PATH("/org/openbmc/HostIpmi/1");
+ std::string IPMI_INTERFACE("org.openbmc.HostIpmi");
+
+ auto host = ipmi::getService(this->bus,IPMI_INTERFACE,IPMI_PATH);
+
+ auto method = this->bus.new_method_call(host.c_str(),
+ IPMI_PATH.c_str(),
+ IPMI_INTERFACE.c_str(),
+ "setAttention");
+ auto reply = this->bus.call(method);
+
+ if (reply.is_method_error())
+ {
+ log<level::ERR>("Error in setting SMS attention");
+ throw std::runtime_error("ERROR in call to setAttention");
+ }
+ log<level::INFO>("SMS Attention asserted");
+ }
+
return;
}
OpenPOWER on IntegriCloud