From 3dfc3d6d2acd41e57b81a4812a52d23613d336ca Mon Sep 17 00:00:00 2001 From: Vasily Davydov Date: Mon, 10 Oct 2022 10:33:07 +0300 Subject: [PATCH] state-handler: #6 add basic states Add the states: - init - manual - auto --- .vscode/settings.json | 5 +++ StateHandler/inc/StateHandler.h | 25 +++++++++++++++ StateHandler/src/StateHandler.cpp | 51 ++++++++++++++++++++++++++----- 3 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..97da8e0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "C_Cpp.autocompleteAddParentheses": true, + "files.autoSave": "onFocusChange", + "C_Cpp.codeAnalysis.clangTidy.enabled": true +} \ No newline at end of file diff --git a/StateHandler/inc/StateHandler.h b/StateHandler/inc/StateHandler.h index fd1b271..48ce4d3 100644 --- a/StateHandler/inc/StateHandler.h +++ b/StateHandler/inc/StateHandler.h @@ -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_ */ diff --git a/StateHandler/src/StateHandler.cpp b/StateHandler/src/StateHandler.cpp index ee75928..add68e5 100644 --- a/StateHandler/src/StateHandler.cpp +++ b/StateHandler/src/StateHandler.cpp @@ -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; + } +} \ No newline at end of file