state-handler: #6 add basic states

Add the states:
- init
- manual
- auto
This commit is contained in:
Vasily Davydov 2022-10-10 10:33:07 +03:00
parent 69d767a73e
commit 3dfc3d6d2a
3 changed files with 74 additions and 7 deletions

5
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"C_Cpp.autocompleteAddParentheses": true,
"files.autoSave": "onFocusChange",
"C_Cpp.codeAnalysis.clangTidy.enabled": true
}

View File

@ -99,6 +99,31 @@ private:
bool current_mode;
Counter set[2] = { { 0, 100 }, { 0, 120 } };
LiquidCrystal *_lcd;
/** Initialization state
*
* @param event event of the state
*/
void stateInit (const Event &event);
/** Manual state
*
* - set current speed
* - print current pressure
*
* @param event event of the state
*/
void stateManual (const Event &event);
/** Automated state
*
* - print current pressure
* - print set pressure
* - inc/dec fan speed
*
* @param event
*/
void stateAuto (const Event &event);
};
#endif /* STATE_HANDLER_H_ */

View File

@ -62,13 +62,50 @@ StateHandler::SetState (state_pointer newstate)
(this->*current) (Event (Event::eEnter));
}
void StateHandler::HandleState(const Event &event){
(this->*current)(event);
void
stateInit (const Event &event)
{
switch (event.type)
{
case Event::eEnter:
break;
case Event::eExit:
break;
case Event::eKey:
break;
case Event::eTick:
break;
}
}
void StateHandler::SetState(state_pointer newstate){
(this->*current)(Event(Event::eExit));
current = newstate;
(this->*current)(Event(Event::eEnter));
void
stateManual (const Event &event)
{
switch (event.type)
{
case Event::eEnter:
break;
case Event::eExit:
break;
case Event::eKey:
break;
case Event::eTick:
break;
}
}
void
stateAuto (const Event &event)
{
switch (event.type)
{
case Event::eEnter:
break;
case Event::eExit:
break;
case Event::eKey:
break;
case Event::eTick:
break;
}
}