1 #pragma once 2 3 #include <host-ipmid/ipmid-host-cmd-utils.hpp> 4 #include <org/open_power/Control/Host/server.hpp> 5 #include <sdbusplus/bus.hpp> 6 namespace open_power 7 { 8 namespace host 9 { 10 namespace command 11 { 12 13 namespace Base = sdbusplus::org::open_power::Control::server; 14 using IpmiCmdData = phosphor::host::command::IpmiCmdData; 15 16 /** @class Host 17 * @brief OpenBMC control host interface implementation. 18 * @details A concrete implementation for org.open_power.Control.Host 19 * DBus API. 20 */ 21 class Host : public sdbusplus::server::object::object<Base::Host> 22 { 23 public: 24 /** @brief Constructs Host Control Interface 25 * 26 * @param[in] bus - The Dbus bus object 27 * @param[in] objPath - The Dbus object path 28 */ 29 Host(sdbusplus::bus::bus& bus, const char* objPath) : 30 sdbusplus::server::object::object<Base::Host>(bus, objPath), bus(bus) 31 { 32 // Nothing to do 33 } 34 35 /** @brief Sends input command to host 36 * Note that the command will be queued in a FIFO if 37 * other commands to the host have yet to be run 38 * 39 * @param[in] command - Input command to execute 40 * @param[in] data - Data associated with the command 41 */ 42 void execute(Command command, 43 sdbusplus::message::variant<uint8_t> data) override; 44 45 private: 46 /** @brief sdbusplus DBus bus connection. */ 47 sdbusplus::bus::bus& bus; 48 49 /** @brief Callback function to be invoked by command manager 50 * 51 * @detail Conveys the status of the last Host bound command. 52 * Depending on the status, a CommandComplete or 53 * CommandFailure signal would be sent 54 * 55 * @param[in] cmd - IPMI command and data sent to Host 56 * @param[in] status - Success or Failure 57 */ 58 void commandStatusHandler(IpmiCmdData cmd, bool status); 59 }; 60 61 } // namespace command 62 } // namespace host 63 } // namespace open_power 64