blob: 2b0a55a0faf4e92f426d34958bc342275d49c927 [file] [log] [blame]
#pragma once
#include <vector>
#include "message_handler.hpp"
namespace sol
{
namespace command
{
/** @brief SOL Payload Handler
*
* This command is used for activating and deactivating a payload type under a
* given IPMI session. The UDP Port number for SOL is the same as the port that
* was used to establish the IPMI session.
*
* @param[in] inPayload - Request data for the command.
* @param[in] handler - Reference to the message handler.
*
* @return Response data for the command.
*/
std::vector<uint8_t> payloadHandler(const std::vector<uint8_t>& inPayload,
const message::Handler& handler);
constexpr uint8_t netfnTransport = 0x0C;
constexpr uint8_t solActivatingCmd = 0x20;
/** @struct ActivatingRequest
*
* IPMI payload for SOL Activating command.
*/
struct ActivatingRequest
{
#if BYTE_ORDER == LITTLE_ENDIAN
uint8_t sessionState : 4; //!< SOL session state.
uint8_t reserved : 4; //!< Reserved.
#endif
#if BYTE_ORDER == BIG_ENDIAN
uint8_t reserved : 4; //!< Reserved.
uint8_t sessionState : 4; //!< SOL session state.
#endif
uint8_t payloadInstance; //!< Payload instance.
uint8_t majorVersion; //!< SOL format major version
uint8_t minorVersion; //!< SOL format minor version
} __attribute__((packed));
/** @brief SOL Activating Command.
*
* This command provides a mechanism for the BMC to notify a remote application
* that a SOL payload is activating on another channel.The request message is a
* message that is asynchronously generated by the BMC. The BMC will not wait
* for a response from the remote console before dropping the serial connection
* to proceed with SOL, therefore the remote console does not need to respond
* to this command.
*
* @param[in] payloadInstance - SOL payload instance.
* @param[in] sessionID - IPMI session ID.
*/
void activating(uint8_t payloadInstance, uint32_t sessionID);
} // namespace command
} // namespace sol