state-handler: #6 add state controller functions
- HandleState to set an event of the state - SetState to update current state to new
This commit is contained in:
parent
f9a1e411ae
commit
452a385756
@ -41,13 +41,27 @@ enum _buttons {
|
|||||||
BUTTON_CONTROL_TOG_ACTIVE
|
BUTTON_CONTROL_TOG_ACTIVE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class StateHandler;
|
||||||
|
typedef void (StateHandler::*state_pointer)(const Event &);
|
||||||
|
|
||||||
|
|
||||||
class StateHandler {
|
class StateHandler {
|
||||||
public:
|
public:
|
||||||
StateHandler();
|
StateHandler();
|
||||||
virtual ~StateHandler();
|
virtual ~StateHandler();
|
||||||
int getSetPresuure(); // Get currently set pressure 0-100%
|
int getSetPresuure(); // Get currently set pressure 0-100%
|
||||||
int getSetSpeed(); //Get currently set FanSpeed 0-100%
|
int getSetSpeed(); //Get currently set FanSpeed 0-100%
|
||||||
|
|
||||||
|
/** Handle the given event of the current state
|
||||||
|
* @param event event to be handled in the current state
|
||||||
|
*/
|
||||||
|
void HandleState(const Event &event);
|
||||||
private:
|
private:
|
||||||
|
state_pointer current;
|
||||||
|
/** Set a new curremt state
|
||||||
|
* @param newstate new state to be set to current
|
||||||
|
*/
|
||||||
|
void SetState(state_pointer newstate);
|
||||||
bool mode;
|
bool mode;
|
||||||
Counter * bar_pressure;
|
Counter * bar_pressure;
|
||||||
Counter * bar_speed;
|
Counter * bar_speed;
|
||||||
|
|||||||
@ -25,3 +25,14 @@ int StateHandler::getSetSpeed(){
|
|||||||
// TODO
|
// TODO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StateHandler::HandleState(const Event &event){
|
||||||
|
(this->*current)(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void StateHandler::SetState(state_pointer newstate){
|
||||||
|
(this->*current)(Event(Event::eExit));
|
||||||
|
current = newstate;
|
||||||
|
(this->*current)(Event(Event::eEnter));
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user