From 58dbbf0f06186a9177fc6375e968039058630430 Mon Sep 17 00:00:00 2001 From: Vasily Davydov Date: Thu, 27 Oct 2022 14:25:06 +0300 Subject: [PATCH] state-handler: fix button delay --- esp-vent-main/inc/StateHandler/StateHandler.h | 15 +++++-- .../src/StateHandler/StateHandler.cpp | 40 ++++++++++++++----- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/esp-vent-main/inc/StateHandler/StateHandler.h b/esp-vent-main/inc/StateHandler/StateHandler.h index a679c46..5673839 100644 --- a/esp-vent-main/inc/StateHandler/StateHandler.h +++ b/esp-vent-main/inc/StateHandler/StateHandler.h @@ -185,13 +185,20 @@ private: */ void handleTickValue (int value); - /** Save values to class' varibales + /** Save pressure values to class' varibales * - * @param eventValue value coming from an event - * @param counterValue value of the inner Counter + * @param pressure current pressure * @param mode current mode */ - void save (int eventValue, size_t mode); + void savePressureAndDisplay (int pressure, size_t mode); + + /** Save set values to class' varibales + * + * @param mode current mode + * @return true if saved + * @return false if not saved + */ + bool saveSetAndDisplay (size_t mode); /** Calculates pid for fan control value * diff --git a/esp-vent-main/src/StateHandler/StateHandler.cpp b/esp-vent-main/src/StateHandler/StateHandler.cpp index 10ae473..5f8cec5 100644 --- a/esp-vent-main/src/StateHandler/StateHandler.cpp +++ b/esp-vent-main/src/StateHandler/StateHandler.cpp @@ -120,7 +120,8 @@ StateHandler::stateManual (const Event &event) switch (event.type) { case Event::eEnter: - this->_propeller->spin (fan_speed.getCurrent ()); + displaySet(MANUAL); + // this->_propeller->spin (fan_speed.getCurrent ()); break; case Event::eExit: break; @@ -139,7 +140,8 @@ StateHandler::stateAuto (const Event &event) switch (event.type) { case Event::eEnter: - this->_propeller->spin (fan_speed.getCurrent ()); + displaySet(AUTO); + // this->_propeller->spin (fan_speed.getCurrent ()); break; case Event::eExit: break; @@ -173,7 +175,8 @@ StateHandler::stateGetPressure (const Event &event) _pressure->wakeUp (); break; } - save (_pressure->getPressure (), ((current_mode) ? AUTO : MANUAL)); + savePressureAndDisplay (_pressure->getPressure (), + ((current_mode) ? AUTO : MANUAL)); SetState (current_mode ? &StateHandler::stateAuto : &StateHandler::stateManual); break; @@ -194,10 +197,19 @@ StateHandler::handleControlButtons (uint8_t button) case BUTTON_CONTROL_TOG_MODE: current_mode = !current_mode; SetState (&StateHandler::stateInit); + return; break; default: break; } + if (current_mode == MANUAL && saveSetAndDisplay (MANUAL)) + { + this->_propeller->spin (getSetSpeed () * 10); + } + else + { + saveSetAndDisplay (AUTO); + } } void @@ -206,7 +218,7 @@ StateHandler::handleTickValue (int value) if (value % TIMER_SENSORS_TIMEOUT == 0) { updateSensorValues (); - displaySet (SENSORS); + // displaySet (SENSORS); } if (value % TIMER_PRESSURE_TIMEOUT == 0) { @@ -222,16 +234,26 @@ StateHandler::handleTickValue (int value) } void -StateHandler::save (int eventValue, size_t mode) +StateHandler::savePressureAndDisplay (int pressure, size_t mode) +{ + if (saved_curr_value[mode] != pressure) + { + saved_curr_value[mode] = pressure; + displaySet (mode); + } +} + +bool +StateHandler::saveSetAndDisplay (size_t mode) { int counterValue = value[mode].getCurrent (); - if (saved_curr_value[mode] != eventValue - || saved_set_value[mode] != counterValue) + if (saved_set_value[mode] != counterValue) { - saved_curr_value[mode] = eventValue; saved_set_value[mode] = counterValue; - displaySet ((current_mode) ? AUTO : MANUAL); + displaySet (mode); + return true; } + return false; } int