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>(
29dd2c6fdcSAndrew Geissler                         bus, objPath)
30dd2c6fdcSAndrew Geissler         {}
31*62817fa9SAndrew Geissler 
32*62817fa9SAndrew Geissler         /** @brief Send input command to host
33*62817fa9SAndrew Geissler          *
34*62817fa9SAndrew Geissler          * Note that the command will be queued in a FIFO if other commands
35*62817fa9SAndrew Geissler          * to the host have yet to be run
36*62817fa9SAndrew Geissler          *
37*62817fa9SAndrew Geissler          * @param[in] command       - Input command to execute
38*62817fa9SAndrew Geissler          */
39*62817fa9SAndrew Geissler         void execute(Command command) override;
40dd2c6fdcSAndrew Geissler };
41dd2c6fdcSAndrew Geissler 
42dd2c6fdcSAndrew Geissler } // namespace host
43dd2c6fdcSAndrew Geissler } // namespace phosphor
44