state-handler: add timeout_error handling
This commit is contained in:
parent
942e87b37c
commit
a6d7bc0b27
@ -60,7 +60,8 @@ enum _mode
|
||||
{
|
||||
MANUAL,
|
||||
AUTO,
|
||||
SENSORS
|
||||
SENSORS,
|
||||
ERROR_TIMEOUT
|
||||
};
|
||||
|
||||
enum _sensors
|
||||
|
||||
@ -48,6 +48,12 @@ StateHandler::displaySet (size_t mode)
|
||||
snprintf (line_down, 16, "HUM:%02d CO2:%02d", sensors_data[HUMIDITY],
|
||||
sensors_data[CO2]);
|
||||
break;
|
||||
case ERROR_TIMEOUT:
|
||||
snprintf (line_up, 16, " FORCE STOP ", sensors_data[PRESSUREDAT],
|
||||
sensors_data[TEMPERATURE]);
|
||||
snprintf (line_down, 16, "REAS: TIMEOUT", sensors_data[HUMIDITY],
|
||||
sensors_data[CO2]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -93,7 +99,6 @@ StateHandler::stateInit (const Event &event)
|
||||
case Event::eEnter:
|
||||
break;
|
||||
case Event::eExit:
|
||||
_lcd->clear ();
|
||||
break;
|
||||
case Event::eKey:
|
||||
handleControlButtons (event.value);
|
||||
@ -133,8 +138,15 @@ StateHandler::stateManual (const Event &event)
|
||||
if (event.value % 500 == 0)
|
||||
{
|
||||
SetState (&StateHandler::stateGetPressure);
|
||||
break;
|
||||
}
|
||||
if (event.value < 0)
|
||||
{
|
||||
displaySet (ERROR_TIMEOUT);
|
||||
fan_speed.setInit (0);
|
||||
value[(current_mode)].setInit (0);
|
||||
SetState (&StateHandler::stateInit);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -161,6 +173,13 @@ StateHandler::stateAuto (const Event &event)
|
||||
{
|
||||
SetState (&StateHandler::stateGetPressure);
|
||||
}
|
||||
if (event.value < 0)
|
||||
{
|
||||
displaySet (ERROR_TIMEOUT);
|
||||
fan_speed.setInit (0);
|
||||
value[(current_mode)].setInit (0);
|
||||
SetState (&StateHandler::stateInit);
|
||||
}
|
||||
pid ();
|
||||
this->A01->write (fan_speed.getCurrent ());
|
||||
break;
|
||||
@ -199,10 +218,10 @@ StateHandler::handleControlButtons (uint8_t button)
|
||||
switch (button)
|
||||
{
|
||||
case BUTTON_CONTROL_DOWN:
|
||||
this->value[(current_mode) ? AUTO : MANUAL].dec ();
|
||||
this->value[(current_mode)].dec ();
|
||||
break;
|
||||
case BUTTON_CONTROL_UP:
|
||||
this->value[(current_mode) ? AUTO : MANUAL].inc ();
|
||||
this->value[(current_mode)].inc ();
|
||||
break;
|
||||
case BUTTON_CONTROL_TOG_MODE:
|
||||
current_mode = !current_mode;
|
||||
@ -235,7 +254,6 @@ StateHandler::fan_speed_normalized ()
|
||||
return speed * 10;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
StateHandler::pid ()
|
||||
{
|
||||
@ -258,4 +276,3 @@ StateHandler::updateSensorValues ()
|
||||
state_timer->tickCounter (5);
|
||||
sensors_data[HUMIDITY] = humidity.readRH ();
|
||||
}
|
||||
|
||||
|
||||
@ -83,6 +83,11 @@ main (void)
|
||||
while (1)
|
||||
{
|
||||
getcounterValue = glob_time.getCounter ();
|
||||
if (getcounterValue > 15000)
|
||||
{
|
||||
glob_time.resetCounter ();
|
||||
ventMachine.HandleState (Event (Event::eTick, -1));
|
||||
}
|
||||
sw_up.listen ();
|
||||
sw_down.listen ();
|
||||
sw_toggle.listen ();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user