2020-12-03 18:29:28 +01:00
|
|
|
#ifndef FSFW_POWER_POWERSWITCHER_H_
|
|
|
|
#define FSFW_POWER_POWERSWITCHER_H_
|
|
|
|
|
|
|
|
#include "../objectmanager/SystemObjectIF.h"
|
2022-08-16 12:48:22 +02:00
|
|
|
#include "../returnvalues/returnvalue.h"
|
2020-08-13 20:53:35 +02:00
|
|
|
#include "../timemanager/Countdown.h"
|
2022-02-02 10:29:30 +01:00
|
|
|
#include "PowerSwitchIF.h"
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-08-15 20:28:16 +02:00
|
|
|
class PowerSwitcher {
|
2022-02-02 10:29:30 +01:00
|
|
|
public:
|
|
|
|
enum State_t {
|
|
|
|
WAIT_OFF,
|
|
|
|
WAIT_ON,
|
|
|
|
SWITCH_IS_OFF,
|
|
|
|
SWITCH_IS_ON,
|
|
|
|
};
|
2022-03-28 12:48:15 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
static const uint8_t INTERFACE_ID = CLASS_ID::POWER_SWITCHER;
|
|
|
|
static const ReturnValue_t IN_POWER_TRANSITION = MAKE_RETURN_CODE(1);
|
|
|
|
static const ReturnValue_t SWITCH_STATE_MISMATCH = MAKE_RETURN_CODE(2);
|
2022-04-01 16:40:13 +02:00
|
|
|
PowerSwitcher(PowerSwitchIF* switcher, power::Switch_t setSwitch1,
|
|
|
|
power::Switch_t setSwitch2 = power::NO_SWITCH,
|
2022-02-02 10:29:30 +01:00
|
|
|
State_t setStartState = SWITCH_IS_OFF);
|
2022-03-28 12:48:15 +02:00
|
|
|
void turnOn(bool checkCurrentState = true);
|
|
|
|
void turnOff(bool checkCurrentState = true);
|
|
|
|
bool active();
|
2022-02-02 10:29:30 +01:00
|
|
|
void doStateMachine();
|
|
|
|
State_t getState();
|
|
|
|
ReturnValue_t checkSwitchState();
|
|
|
|
uint32_t getSwitchDelay();
|
2022-03-28 12:48:15 +02:00
|
|
|
power::Switch_t getFirstSwitch() const;
|
|
|
|
power::Switch_t getSecondSwitch() const;
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
private:
|
|
|
|
PowerSwitchIF* power = nullptr;
|
2022-03-28 12:48:15 +02:00
|
|
|
State_t state;
|
|
|
|
power::Switch_t firstSwitch = power::NO_SWITCH;
|
|
|
|
power::Switch_t secondSwitch = power::NO_SWITCH;
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
enum SwitchReturn_t { ONE_SWITCH = 1, TWO_SWITCHES = 2 };
|
|
|
|
ReturnValue_t getStateOfSwitches();
|
|
|
|
void commandSwitches(ReturnValue_t onOff);
|
|
|
|
SwitchReturn_t howManySwitches();
|
|
|
|
};
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2020-12-03 18:29:28 +01:00
|
|
|
#endif /* FSFW_POWER_POWERSWITCHER_H_ */
|