#ifndef MISSION_SYSTEM_OBJECTS_STACK5VHANDLER_H_ #define MISSION_SYSTEM_OBJECTS_STACK5VHANDLER_H_ #include #include "mission/devices/devicedefinitions/GomspaceDefinitions.h" enum class StackCommander { RAD_SENSOR = 0, PL_PCDU = 1 }; enum class HandlerState { SWITCH_PENDING, IDLE }; class Stack5VHandler { public: static constexpr ReturnValue_t BUSY = returnvalue::makeCode(1, 0); Stack5VHandler(PowerSwitchIF& switcher); ReturnValue_t deviceToOn(StackCommander commander, bool updateStates); ReturnValue_t deviceToOff(StackCommander commander, bool updateStates); bool isSwitchOn(); void update(); private: MutexIF* stackLock; PowerSwitchIF& switcher; bool switchIsOn = false; bool targetState = false; HandlerState handlerState = HandlerState::IDLE; bool radSensorIsOn = false; bool plPcduIsOn = false; pcdu::Switches stackSwitch = pcdu::Switches::P60_DOCK_5V_STACK; bool updateInternalStates(); }; #endif /* MISSION_SYSTEM_OBJECTS_STACK5VHANDLER_H_ */