#ifndef LINUX_DEVICES_PLPCDUHANDLER_H_ #define LINUX_DEVICES_PLPCDUHANDLER_H_ #include #include "fsfw_hal/common/gpio/GpioIF.h" class PayloadPcduHandler : DeviceHandlerBase { public: PayloadPcduHandler(object_id_t objectId, object_id_t comIF, CookieIF* cookie, GpioIF* gpioIF); private: enum class States { ADC_OFF_PL_OFF, SWITCH_ON_RELAY_TRANSITION, // In this mode, the handler can start polling the ADC. This is the ON mode ADC_ON_PL_OFF, SWITCH_ON_HPA_TRANSITION, // Now the ADC is actually spitting out sensible values. This is the normal mode with the // experiment being on. ADC_ON_PL_ON }; States state; GpioIF* gpioIF; void doTransition(Mode_t modeFrom, Submode_t subModeFrom) override; void doStartUp() override; void doShutDown() override; ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t* id) override; ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t* id) override; void fillCommandAndReplyMap() override; ReturnValue_t buildCommandFromCommand(DeviceCommandId_t deviceCommand, const uint8_t* commandData, size_t commandDataLen) override; ReturnValue_t scanForReply(const uint8_t* start, size_t remainingSize, DeviceCommandId_t* foundId, size_t* foundLen) override; ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t* packet) override; uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override; ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap, LocalDataPoolManager& poolManager) override; }; #endif /* LINUX_DEVICES_PLPCDUHANDLER_H_ */