blob: 8e56bd4eed5551cb4a56f0759b311040b846a199 [file] [log] [blame]
Vishwanatha Subbanna07655062017-07-14 20:31:57 +05301#pragma once
2
William A. Kennington III822eaf62019-02-12 15:20:06 -08003#include <ipmid-host/cmd-utils.hpp>
Vishwanatha Subbanna07655062017-07-14 20:31:57 +05304#include <org/open_power/Control/Host/server.hpp>
Patrick Venture02261c02018-10-31 15:16:23 -07005#include <sdbusplus/bus.hpp>
Vishwanatha Subbanna07655062017-07-14 20:31:57 +05306namespace open_power
7{
8namespace host
9{
10namespace command
11{
12
13namespace Base = sdbusplus::org::open_power::Control::server;
14using 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 */
Patrick Williamsa0a221f2022-07-22 19:26:53 -050021class Host : public sdbusplus::server::object_t<Base::Host>
Vishwanatha Subbanna07655062017-07-14 20:31:57 +053022{
Patrick Venture02261c02018-10-31 15:16:23 -070023 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 */
Patrick Williamsa0a221f2022-07-22 19:26:53 -050029 Host(sdbusplus::bus_t& bus, const char* objPath) :
30 sdbusplus::server::object_t<Base::Host>(bus, objPath), bus(bus)
Patrick Venture02261c02018-10-31 15:16:23 -070031 {
32 // Nothing to do
33 }
Vishwanatha Subbanna07655062017-07-14 20:31:57 +053034
Patrick Venture02261c02018-10-31 15:16:23 -070035 /** @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 */
Patrick Williams61950102020-05-13 17:49:58 -050042 void execute(Command command, std::variant<uint8_t> data) override;
Vishwanatha Subbanna07655062017-07-14 20:31:57 +053043
Patrick Venture02261c02018-10-31 15:16:23 -070044 private:
45 /** @brief sdbusplus DBus bus connection. */
Patrick Williamsa0a221f2022-07-22 19:26:53 -050046 sdbusplus::bus_t& bus;
Vishwanatha Subbanna07655062017-07-14 20:31:57 +053047
Patrick Venture02261c02018-10-31 15:16:23 -070048 /** @brief Callback function to be invoked by command manager
49 *
50 * @detail Conveys the status of the last Host bound command.
51 * Depending on the status, a CommandComplete or
52 * CommandFailure signal would be sent
53 *
54 * @param[in] cmd - IPMI command and data sent to Host
55 * @param[in] status - Success or Failure
56 */
57 void commandStatusHandler(IpmiCmdData cmd, bool status);
Vishwanatha Subbanna07655062017-07-14 20:31:57 +053058};
59
60} // namespace command
61} // namespace host
Patrick Venture02261c02018-10-31 15:16:23 -070062} // namespace open_power