#ifndef MISSION_DEVICES_MGMRM3100HANDLER_H_ #define MISSION_DEVICES_MGMRM3100HANDLER_H_ #include "devicedefinitions/MGMHandlerRM3100Definitions.h" #include class MGMHandlerRM3100: public DeviceHandlerBase { public: MGMHandlerRM3100(object_id_t objectId, object_id_t deviceCommunication, CookieIF* comCookie); virtual ~MGMHandlerRM3100(); protected: /* DeviceHandlerBase overrides */ virtual ReturnValue_t buildTransitionDeviceCommand( DeviceCommandId_t *id) override; virtual void doStartUp() override; virtual void doShutDown() override; virtual ReturnValue_t buildNormalDeviceCommand( DeviceCommandId_t *id) override; virtual ReturnValue_t buildCommandFromCommand( DeviceCommandId_t deviceCommand, const uint8_t *commandData, size_t commandDataLen) override; virtual ReturnValue_t scanForReply(const uint8_t *start, size_t len, DeviceCommandId_t *foundId, size_t *foundLen) override; virtual ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) override; private: enum InternalState { STATE_NONE, STATE_CONFIGURE_CMM, STATE_READ_CMM, // The cycle count states are propably not going to be used because // the default cycle count will be used. STATE_CONFIGURE_CYCLE_COUNT, STATE_READ_CYCLE_COUNT, STATE_CONFIGURE_TMRC, STATE_READ_TMRC, STATE_NORMAL }; InternalState internalState = InternalState::STATE_NONE; bool commandExecuted = false; uint8_t commandBuffer[9]; uint8_t commandBufferLen = 0; uint8_t cmmRegValue = RM3100::CMM_VALUE; uint8_t tmrcRegValue = RM3100::TMRC_DEFAULT_VALUE; }; #endif /* MISSION_DEVICEHANDLING_MGMRM3100HANDLER_H_ */