#ifndef MISSION_SYSTEM_POWERSTATEMACHINE_H_ #define MISSION_SYSTEM_POWERSTATEMACHINE_H_ #include #include #include #include "mission/power/defs.h" class PowerStateMachineBase { 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_ */