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:
Vasily Davydov 2022-10-05 15:02:02 +03:00
parent f9a1e411ae
commit 452a385756
2 changed files with 25 additions and 0 deletions

View File

@ -41,13 +41,27 @@ enum _buttons {
BUTTON_CONTROL_TOG_ACTIVE
};
class StateHandler;
typedef void (StateHandler::*state_pointer)(const Event &);
class StateHandler {
public:
StateHandler();
virtual ~StateHandler();
int getSetPresuure(); // Get currently set pressure 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:
state_pointer current;
/** Set a new curremt state
* @param newstate new state to be set to current
*/
void SetState(state_pointer newstate);
bool mode;
Counter * bar_pressure;
Counter * bar_speed;

View File

@ -25,3 +25,14 @@ int StateHandler::getSetSpeed(){
// TODO
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));
}