eive-obsw/linux/devices/PayloadPcduHandler.h
Robin Mueller 656eaf4dea
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
apply auto format
2022-02-10 16:55:18 +01:00

43 lines
1.7 KiB
C++

#ifndef LINUX_DEVICES_PLPCDUHANDLER_H_
#define LINUX_DEVICES_PLPCDUHANDLER_H_
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
#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_ */