blob: d95482bdcaf0b963802c379e4f2401c341d744f6 [file] [log] [blame]
#pragma once
#include <unistd.h>
#include <tuple>
namespace phosphor
{
namespace host
{
namespace command
{
/** @detail After sending SMS_ATN to the Host, Host comes down and
* asks why an 'SMS_ATN` was sent.
* BMC then sends 'There is a Message to be Read` as response.
* Host then comes down asks for Message and the specified
* commands and data would go as data conforming to IPMI spec.
*
* Refer: 6.13.2 Send Message Command From System Interface
* in IPMI V2.0 spec.
*/
/** @brief IPMI command */
using IPMIcmd = uint8_t;
/** @brief Data associated with command */
using Data = uint8_t;
/** @brief <IPMI command, Data> to be sent as payload when Host asks for
* the message that can be associated with the previous SMS_ATN
*/
using IpmiCmdData = std::pair<IPMIcmd, Data>;
/** @detail Implementation specific callback function to be invoked
* conveying the status of the executed command. Specific
* implementations may then broadcast an agreed signal
*/
using CallBack = std::function<void(IpmiCmdData, bool)>;
/** @detail Tuple encapsulating above 2 to enable using Manager by
* different implementations. Users of Manager will supply
* <Ipmi command, Data> along with the callback handler.
* Manager will invoke the handler onveying the status of
* the command.
*/
using CommandHandler = std::tuple<IpmiCmdData, CallBack>;
} // namespace command
} // namespace host
} // namespace phosphor