diff options
Diffstat (limited to 'include/ipmid-host/cmd-utils.hpp')
-rw-r--r-- | include/ipmid-host/cmd-utils.hpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/include/ipmid-host/cmd-utils.hpp b/include/ipmid-host/cmd-utils.hpp new file mode 100644 index 0000000..e7c6dc2 --- /dev/null +++ b/include/ipmid-host/cmd-utils.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include <unistd.h> + +#include <functional> +#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 |