eive-obsw/linux/devices/PayloadPcduHandler.h

42 lines
1.7 KiB
C
Raw Normal View History

2022-02-10 14:24:34 +01:00
#ifndef LINUX_DEVICES_PLPCDUHANDLER_H_
#define LINUX_DEVICES_PLPCDUHANDLER_H_
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
2022-02-10 16:55:06 +01:00
#include "fsfw_hal/common/gpio/GpioIF.h"
2022-02-10 14:24:34 +01:00
2022-02-10 15:39:54 +01:00
class PayloadPcduHandler : DeviceHandlerBase {
public:
2022-02-10 16:55:06 +01:00
PayloadPcduHandler(object_id_t objectId, object_id_t comIF, CookieIF* cookie, GpioIF* gpioIF);
2022-02-10 15:39:54 +01:00
private:
2022-02-10 16:05:36 +01:00
enum class States {
ADC_OFF_PL_OFF,
2022-02-10 16:55:06 +01:00
SWITCH_ON_RELAY_TRANSITION,
// In this mode, the handler can start polling the ADC. This is the ON mode
2022-02-10 16:05:36 +01:00
ADC_ON_PL_OFF,
2022-02-10 16:55:06 +01:00
SWITCH_ON_HPA_TRANSITION,
// Now the ADC is actually spitting out sensible values. This is the normal mode with the
// experiment being on.
2022-02-10 16:05:36 +01:00
ADC_ON_PL_ON
};
States state;
2022-02-10 16:55:06 +01:00
GpioIF* gpioIF;
2022-02-10 16:05:36 +01:00
2022-02-10 16:55:06 +01:00
void doTransition(Mode_t modeFrom, Submode_t subModeFrom) override;
2022-02-10 14:24:34 +01:00
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_ */