state-handler: fix button delay
This commit is contained in:
parent
2bef3ce8c0
commit
58dbbf0f06
@ -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
|
||||
*
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user