1dd2c6fdcSAndrew Geissler #pragma once 2dd2c6fdcSAndrew Geissler 3dd2c6fdcSAndrew Geissler #include <sdbusplus/bus.hpp> 4dd2c6fdcSAndrew Geissler #include <xyz/openbmc_project/Control/Host/server.hpp> 5dd2c6fdcSAndrew Geissler 6dd2c6fdcSAndrew Geissler namespace phosphor 7dd2c6fdcSAndrew Geissler { 8dd2c6fdcSAndrew Geissler namespace host 9dd2c6fdcSAndrew Geissler { 10dd2c6fdcSAndrew Geissler 11dd2c6fdcSAndrew Geissler /** @class Host 12dd2c6fdcSAndrew Geissler * @brief OpenBMC control host interface implementation. 13dd2c6fdcSAndrew Geissler * @details A concrete implementation for xyz.openbmc_project.Control.Host 14dd2c6fdcSAndrew Geissler * DBus API. 15dd2c6fdcSAndrew Geissler */ 16dd2c6fdcSAndrew Geissler class Host : public sdbusplus::server::object::object< 17dd2c6fdcSAndrew Geissler sdbusplus::xyz::openbmc_project::Control::server::Host> 18dd2c6fdcSAndrew Geissler { 19dd2c6fdcSAndrew Geissler public: 20dd2c6fdcSAndrew Geissler /** @brief Constructs Host Control Interface 21dd2c6fdcSAndrew Geissler * 22dd2c6fdcSAndrew Geissler * @param[in] bus - The Dbus bus object 23dd2c6fdcSAndrew Geissler * @param[in] objPath - The Dbus object path 24dd2c6fdcSAndrew Geissler */ 25dd2c6fdcSAndrew Geissler Host(sdbusplus::bus::bus& bus, 26dd2c6fdcSAndrew Geissler const char* objPath) : 27dd2c6fdcSAndrew Geissler sdbusplus::server::object::object< 28dd2c6fdcSAndrew Geissler sdbusplus::xyz::openbmc_project::Control::server::Host>( 29*1b9d4e5cSAndrew Geissler bus, objPath), 30*1b9d4e5cSAndrew Geissler bus(bus) 31dd2c6fdcSAndrew Geissler {} 3262817fa9SAndrew Geissler 3362817fa9SAndrew Geissler /** @brief Send input command to host 3462817fa9SAndrew Geissler * 3562817fa9SAndrew Geissler * Note that the command will be queued in a FIFO if other commands 3662817fa9SAndrew Geissler * to the host have yet to be run 3762817fa9SAndrew Geissler * 3862817fa9SAndrew Geissler * @param[in] command - Input command to execute 3962817fa9SAndrew Geissler */ 4062817fa9SAndrew Geissler void execute(Command command) override; 41*1b9d4e5cSAndrew Geissler 42*1b9d4e5cSAndrew Geissler private: 43*1b9d4e5cSAndrew Geissler 44*1b9d4e5cSAndrew Geissler /** @brief Persistent sdbusplus DBus bus connection. */ 45*1b9d4e5cSAndrew Geissler sdbusplus::bus::bus& bus; 46dd2c6fdcSAndrew Geissler }; 47dd2c6fdcSAndrew Geissler 48dd2c6fdcSAndrew Geissler } // namespace host 49dd2c6fdcSAndrew Geissler } // namespace phosphor 50