1dd2c6fdcSAndrew Geissler #pragma once 2dd2c6fdcSAndrew Geissler 3*0b02be92SPatrick Venture #include <host-cmd-manager.hpp> 4dd2c6fdcSAndrew Geissler #include <sdbusplus/bus.hpp> 5dd2c6fdcSAndrew Geissler #include <xyz/openbmc_project/Control/Host/server.hpp> 6dd2c6fdcSAndrew Geissler namespace phosphor 7dd2c6fdcSAndrew Geissler { 8dd2c6fdcSAndrew Geissler namespace host 9dd2c6fdcSAndrew Geissler { 103eb117a3SVishwanatha Subbanna namespace command 113eb117a3SVishwanatha Subbanna { 1212866370SAndrew Geissler 13dd2c6fdcSAndrew Geissler /** @class Host 14dd2c6fdcSAndrew Geissler * @brief OpenBMC control host interface implementation. 15dd2c6fdcSAndrew Geissler * @details A concrete implementation for xyz.openbmc_project.Control.Host 16dd2c6fdcSAndrew Geissler * DBus API. 17dd2c6fdcSAndrew Geissler */ 18dd2c6fdcSAndrew Geissler class Host : public sdbusplus::server::object::object< 19dd2c6fdcSAndrew Geissler sdbusplus::xyz::openbmc_project::Control::server::Host> 20dd2c6fdcSAndrew Geissler { 21dd2c6fdcSAndrew Geissler public: 22dd2c6fdcSAndrew Geissler /** @brief Constructs Host Control Interface 23dd2c6fdcSAndrew Geissler * 24dd2c6fdcSAndrew Geissler * @param[in] bus - The Dbus bus object 25dd2c6fdcSAndrew Geissler * @param[in] objPath - The Dbus object path 26dd2c6fdcSAndrew Geissler */ 27*0b02be92SPatrick Venture Host(sdbusplus::bus::bus& bus, const char* objPath) : 28dd2c6fdcSAndrew Geissler sdbusplus::server::object::object< 29*0b02be92SPatrick Venture sdbusplus::xyz::openbmc_project::Control::server::Host>(bus, 30*0b02be92SPatrick Venture objPath), 313eb117a3SVishwanatha Subbanna bus(bus) 323eb117a3SVishwanatha Subbanna { 333eb117a3SVishwanatha Subbanna // Nothing to do 343eb117a3SVishwanatha Subbanna } 3562817fa9SAndrew Geissler 3662817fa9SAndrew Geissler /** @brief Send input command to host 373eb117a3SVishwanatha Subbanna * Note that the command will be queued in a FIFO if 383eb117a3SVishwanatha Subbanna * other commands to the host have yet to be run 3962817fa9SAndrew Geissler * 4062817fa9SAndrew Geissler * @param[in] command - Input command to execute 4162817fa9SAndrew Geissler */ 4262817fa9SAndrew Geissler void execute(Command command) override; 431b9d4e5cSAndrew Geissler 441b9d4e5cSAndrew Geissler private: 453eb117a3SVishwanatha Subbanna /** @brief sdbusplus DBus bus connection. */ 461b9d4e5cSAndrew Geissler sdbusplus::bus::bus& bus; 4712866370SAndrew Geissler 483eb117a3SVishwanatha Subbanna /** @brief Callback function to be invoked by command manager 493eb117a3SVishwanatha Subbanna * 503eb117a3SVishwanatha Subbanna * @detail Conveys the status of the last Host bound command. 513eb117a3SVishwanatha Subbanna * Depending on the status, a CommandComplete or 523eb117a3SVishwanatha Subbanna * CommandFailure signal would be sent 533eb117a3SVishwanatha Subbanna * 543eb117a3SVishwanatha Subbanna * @param[in] cmd - IPMI command and data sent to Host 553eb117a3SVishwanatha Subbanna * @param[in] status - Success or Failure 563eb117a3SVishwanatha Subbanna */ 573eb117a3SVishwanatha Subbanna void commandStatusHandler(IpmiCmdData cmd, bool status); 58dd2c6fdcSAndrew Geissler }; 59dd2c6fdcSAndrew Geissler 603eb117a3SVishwanatha Subbanna } // namespace command 61dd2c6fdcSAndrew Geissler } // namespace host 62dd2c6fdcSAndrew Geissler } // namespace phosphor 63