diff options
Diffstat (limited to 'host-ipmid/ipmid-host-cmd-utils.hpp')
-rw-r--r-- | host-ipmid/ipmid-host-cmd-utils.hpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/host-ipmid/ipmid-host-cmd-utils.hpp b/host-ipmid/ipmid-host-cmd-utils.hpp new file mode 100644 index 0000000..f564e2a --- /dev/null +++ b/host-ipmid/ipmid-host-cmd-utils.hpp @@ -0,0 +1,49 @@ +#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 reponse. + * 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 |