Robin Mueller
656eaf4dea
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
43 lines
1.7 KiB
C++
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_ */
|