state-handler: fix button delay
This commit is contained in:
parent
2bef3ce8c0
commit
58dbbf0f06
@ -185,13 +185,20 @@ private:
|
|||||||
*/
|
*/
|
||||||
void handleTickValue (int value);
|
void handleTickValue (int value);
|
||||||
|
|
||||||
/** Save values to class' varibales
|
/** Save pressure values to class' varibales
|
||||||
*
|
*
|
||||||
* @param eventValue value coming from an event
|
* @param pressure current pressure
|
||||||
* @param counterValue value of the inner Counter
|
|
||||||
* @param mode current mode
|
* @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
|
/** Calculates pid for fan control value
|
||||||
*
|
*
|
||||||
|
|||||||
@ -120,7 +120,8 @@ StateHandler::stateManual (const Event &event)
|
|||||||
switch (event.type)
|
switch (event.type)
|
||||||
{
|
{
|
||||||
case Event::eEnter:
|
case Event::eEnter:
|
||||||
this->_propeller->spin (fan_speed.getCurrent ());
|
displaySet(MANUAL);
|
||||||
|
// this->_propeller->spin (fan_speed.getCurrent ());
|
||||||
break;
|
break;
|
||||||
case Event::eExit:
|
case Event::eExit:
|
||||||
break;
|
break;
|
||||||
@ -139,7 +140,8 @@ StateHandler::stateAuto (const Event &event)
|
|||||||
switch (event.type)
|
switch (event.type)
|
||||||
{
|
{
|
||||||
case Event::eEnter:
|
case Event::eEnter:
|
||||||
this->_propeller->spin (fan_speed.getCurrent ());
|
displaySet(AUTO);
|
||||||
|
// this->_propeller->spin (fan_speed.getCurrent ());
|
||||||
break;
|
break;
|
||||||
case Event::eExit:
|
case Event::eExit:
|
||||||
break;
|
break;
|
||||||
@ -173,7 +175,8 @@ StateHandler::stateGetPressure (const Event &event)
|
|||||||
_pressure->wakeUp ();
|
_pressure->wakeUp ();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
save (_pressure->getPressure (), ((current_mode) ? AUTO : MANUAL));
|
savePressureAndDisplay (_pressure->getPressure (),
|
||||||
|
((current_mode) ? AUTO : MANUAL));
|
||||||
SetState (current_mode ? &StateHandler::stateAuto
|
SetState (current_mode ? &StateHandler::stateAuto
|
||||||
: &StateHandler::stateManual);
|
: &StateHandler::stateManual);
|
||||||
break;
|
break;
|
||||||
@ -194,10 +197,19 @@ StateHandler::handleControlButtons (uint8_t button)
|
|||||||
case BUTTON_CONTROL_TOG_MODE:
|
case BUTTON_CONTROL_TOG_MODE:
|
||||||
current_mode = !current_mode;
|
current_mode = !current_mode;
|
||||||
SetState (&StateHandler::stateInit);
|
SetState (&StateHandler::stateInit);
|
||||||
|
return;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (current_mode == MANUAL && saveSetAndDisplay (MANUAL))
|
||||||
|
{
|
||||||
|
this->_propeller->spin (getSetSpeed () * 10);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
saveSetAndDisplay (AUTO);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -206,7 +218,7 @@ StateHandler::handleTickValue (int value)
|
|||||||
if (value % TIMER_SENSORS_TIMEOUT == 0)
|
if (value % TIMER_SENSORS_TIMEOUT == 0)
|
||||||
{
|
{
|
||||||
updateSensorValues ();
|
updateSensorValues ();
|
||||||
displaySet (SENSORS);
|
// displaySet (SENSORS);
|
||||||
}
|
}
|
||||||
if (value % TIMER_PRESSURE_TIMEOUT == 0)
|
if (value % TIMER_PRESSURE_TIMEOUT == 0)
|
||||||
{
|
{
|
||||||
@ -222,16 +234,26 @@ StateHandler::handleTickValue (int value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
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 ();
|
int counterValue = value[mode].getCurrent ();
|
||||||
if (saved_curr_value[mode] != eventValue
|
if (saved_set_value[mode] != counterValue)
|
||||||
|| saved_set_value[mode] != counterValue)
|
|
||||||
{
|
{
|
||||||
saved_curr_value[mode] = eventValue;
|
|
||||||
saved_set_value[mode] = counterValue;
|
saved_set_value[mode] = counterValue;
|
||||||
displaySet ((current_mode) ? AUTO : MANUAL);
|
displaySet (mode);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user