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; bool current_mode;
Counter set[2] = { { 0, 100 }, { 0, 120 } }; Counter set[2] = { { 0, 100 }, { 0, 120 } };
LiquidCrystal *_lcd; 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_ */ #endif /* STATE_HANDLER_H_ */

View File

@ -62,13 +62,50 @@ StateHandler::SetState (state_pointer newstate)
(this->*current) (Event (Event::eEnter)); (this->*current) (Event (Event::eEnter));
} }
void StateHandler::HandleState(const Event &event){ void
(this->*current)(event); 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){ void
(this->*current)(Event(Event::eExit)); stateManual (const Event &event)
current = newstate; {
(this->*current)(Event(Event::eEnter)); 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;
}
} }