2016-06-15 23:48:41 +02:00
|
|
|
#ifndef POWERSWITCHER_H_
|
|
|
|
#define POWERSWITCHER_H_
|
|
|
|
#include <framework/power/PowerSwitchIF.h>
|
|
|
|
#include <framework/returnvalues/HasReturnvaluesIF.h>
|
|
|
|
#include <framework/timemanager/Countdown.h>
|
|
|
|
|
|
|
|
class PowerSwitcher : public HasReturnvaluesIF {
|
|
|
|
public:
|
|
|
|
enum State_t {
|
|
|
|
WAIT_OFF,
|
|
|
|
WAIT_ON,
|
|
|
|
SWITCH_IS_OFF,
|
|
|
|
SWITCH_IS_ON,
|
|
|
|
};
|
|
|
|
State_t state;
|
2018-07-12 16:29:32 +02:00
|
|
|
static const uint8_t INTERFACE_ID = CLASS_ID::POWER_SWITCHER;
|
2016-06-15 23:48:41 +02:00
|
|
|
static const ReturnValue_t IN_POWER_TRANSITION = MAKE_RETURN_CODE(1);
|
|
|
|
static const ReturnValue_t SWITCH_STATE_MISMATCH = MAKE_RETURN_CODE(2);
|
|
|
|
PowerSwitcher( uint8_t setSwitch1, uint8_t setSwitch2 = NO_SWITCH, State_t setStartState = SWITCH_IS_OFF );
|
2018-07-12 16:29:32 +02:00
|
|
|
ReturnValue_t initialize(object_id_t powerSwitchId);
|
2016-06-15 23:48:41 +02:00
|
|
|
void turnOn();
|
|
|
|
void turnOff();
|
|
|
|
void doStateMachine();
|
|
|
|
State_t getState();
|
|
|
|
ReturnValue_t checkSwitchState();
|
|
|
|
uint32_t getSwitchDelay();
|
|
|
|
uint8_t getFirstSwitch() const;
|
|
|
|
uint8_t getSecondSwitch() const;
|
|
|
|
private:
|
|
|
|
uint8_t firstSwitch;
|
|
|
|
uint8_t secondSwitch;
|
|
|
|
PowerSwitchIF* power;
|
|
|
|
static const uint8_t NO_SWITCH = 0xFF;
|
|
|
|
enum SwitchReturn_t {
|
|
|
|
ONE_SWITCH = 1,
|
|
|
|
TWO_SWITCHES = 2
|
|
|
|
};
|
|
|
|
ReturnValue_t getStateOfSwitches();
|
|
|
|
void commandSwitches( ReturnValue_t onOff );
|
|
|
|
SwitchReturn_t howManySwitches();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* POWERSWITCHER_H_ */
|