2022-03-22 15:49:22 +01:00
|
|
|
#ifndef MISSION_SYSTEM_POWERSTATEMACHINE_H_
|
|
|
|
#define MISSION_SYSTEM_POWERSTATEMACHINE_H_
|
|
|
|
|
|
|
|
#include <fsfw/modes/HasModesIF.h>
|
|
|
|
#include <fsfw/power/PowerSwitchIF.h>
|
|
|
|
#include <fsfw/timemanager/Countdown.h>
|
|
|
|
|
2023-03-24 20:50:33 +01:00
|
|
|
#include "mission/powerDefs.h"
|
2022-03-22 15:49:22 +01:00
|
|
|
|
2022-08-24 17:27:47 +02:00
|
|
|
class PowerStateMachineBase {
|
2022-03-22 15:49:22 +01:00
|
|
|
public:
|
|
|
|
PowerStateMachineBase(PowerSwitchIF* pwrSwitcher, dur_millis_t checkTimeout);
|
|
|
|
|
|
|
|
virtual power::OpCodes fsm() = 0;
|
|
|
|
|
|
|
|
void setCheckTimeout(dur_millis_t timeout);
|
|
|
|
void reset();
|
|
|
|
void start(Mode_t mode, Submode_t submode);
|
|
|
|
bool active();
|
|
|
|
power::States getState() const;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
power::OpCodes opResult = power::OpCodes::NONE;
|
|
|
|
power::States state = power::States::IDLE;
|
|
|
|
PowerSwitchIF* pwrSwitcher = nullptr;
|
|
|
|
Mode_t targetMode = HasModesIF::MODE_OFF;
|
|
|
|
Submode_t targetSubmode = 0;
|
|
|
|
Countdown checkTimeout;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* MISSION_SYSTEM_POWERSTATEMACHINE_H_ */
|