#pragma once #include "control.hpp" #include #include #include #include #include namespace pid_control::ipmi { // Implements validation of IPMI commands and handles sending back the // responses. class ZoneControlIpmiHandler { public: explicit ZoneControlIpmiHandler( std::unique_ptr control) : _control(std::move(control)) {} ::ipmi::Cc getFailsafeModeState(const uint8_t* reqBuf, uint8_t* replyBuf, size_t* dataLen); ::ipmi::Cc getManualModeState(const uint8_t* reqBuf, uint8_t* replyBuf, size_t* dataLen); ::ipmi::Cc setManualModeState(const uint8_t* reqBuf, uint8_t* replyBuf, const size_t* dataLen); private: std::unique_ptr _control; }; ::ipmi::Cc manualModeControl(ZoneControlIpmiHandler* handler, uint8_t cmd, const uint8_t* reqBuf, uint8_t* replyCmdBuf, size_t* dataLen); } // namespace pid_control::ipmi