Merge state-handler: add proper way of non-blinking lcd from vas-dav/state-machine
state-handler: add proper way of non-blinking lcd
This commit is contained in:
commit
5f5fcfe560
@ -103,7 +103,8 @@ private:
|
|||||||
void SetState (state_pointer newstate);
|
void SetState (state_pointer newstate);
|
||||||
bool current_mode;
|
bool current_mode;
|
||||||
Counter value[2] = { { 0, 100 }, { 0, 120 } };
|
Counter value[2] = { { 0, 100 }, { 0, 120 } };
|
||||||
int saved_set_value, saved_curr_value;
|
int saved_set_value[2] = { 0, 0 };
|
||||||
|
int saved_curr_value[2] = { 0, 0 };
|
||||||
LiquidCrystal *_lcd;
|
LiquidCrystal *_lcd;
|
||||||
|
|
||||||
/** Initialization state
|
/** Initialization state
|
||||||
@ -136,6 +137,14 @@ private:
|
|||||||
* @param button current button
|
* @param button current button
|
||||||
*/
|
*/
|
||||||
void handleControlButtons (uint8_t button);
|
void handleControlButtons (uint8_t button);
|
||||||
|
|
||||||
|
/** Save values to class' varibales
|
||||||
|
*
|
||||||
|
* @param eventValue value coming from an event
|
||||||
|
* @param counterValue value of the inner Counter
|
||||||
|
* @param mode current mode
|
||||||
|
*/
|
||||||
|
void save (int eventValue, int counterValue, size_t mode);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* STATE_HANDLER_H_ */
|
#endif /* STATE_HANDLER_H_ */
|
||||||
|
|||||||
@ -13,8 +13,6 @@ StateHandler::StateHandler (LiquidCrystal *lcd)
|
|||||||
current = &StateHandler::stateInit;
|
current = &StateHandler::stateInit;
|
||||||
(this->*current) (Event (Event::eEnter));
|
(this->*current) (Event (Event::eEnter));
|
||||||
current_mode = MANUAL;
|
current_mode = MANUAL;
|
||||||
saved_set_value = 0;
|
|
||||||
saved_curr_value = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StateHandler::~StateHandler ()
|
StateHandler::~StateHandler ()
|
||||||
@ -112,13 +110,7 @@ StateHandler::stateManual (const Event &event)
|
|||||||
handleControlButtons (event.value);
|
handleControlButtons (event.value);
|
||||||
break;
|
break;
|
||||||
case Event::eTick:
|
case Event::eTick:
|
||||||
if (saved_curr_value != event.value
|
save (event.value, value[MANUAL].getCurrent (), MANUAL);
|
||||||
|| saved_set_value != value[MANUAL].getCurrent ())
|
|
||||||
{
|
|
||||||
saved_curr_value = event.value;
|
|
||||||
saved_set_value = value[MANUAL].getCurrent ();
|
|
||||||
displaySet (value[MANUAL].getCurrent (), event.value);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,13 +129,7 @@ StateHandler::stateAuto (const Event &event)
|
|||||||
handleControlButtons (event.value);
|
handleControlButtons (event.value);
|
||||||
break;
|
break;
|
||||||
case Event::eTick:
|
case Event::eTick:
|
||||||
if (saved_curr_value != event.value
|
save (event.value, value[AUTO].getCurrent (), AUTO);
|
||||||
|| saved_set_value != value[AUTO].getCurrent ())
|
|
||||||
{
|
|
||||||
saved_curr_value = event.value;
|
|
||||||
saved_set_value = value[AUTO].getCurrent ();
|
|
||||||
displaySet (value[AUTO].getCurrent (), event.value);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,3 +153,15 @@ StateHandler::handleControlButtons (uint8_t button)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
StateHandler::save (int eventValue, int counterValue, size_t mode)
|
||||||
|
{
|
||||||
|
if (saved_curr_value[mode] != eventValue
|
||||||
|
|| saved_set_value[mode] != counterValue)
|
||||||
|
{
|
||||||
|
saved_curr_value[mode] = eventValue;
|
||||||
|
saved_set_value[mode] = counterValue;
|
||||||
|
displaySet (counterValue, eventValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user