Add timeout to the menu display logic

This commit is contained in:
Ben V. Brown
2019-12-24 12:17:02 +11:00
parent 0f707bf323
commit f2337ffc37

View File

@@ -105,9 +105,8 @@ const menuitem rootSettingsMenu[] {
* Exit
*/
#ifdef MODEL_TS100
{ (const char*)SettingsDescriptions[0],
{ settings_setInputVRange},
{ settings_displayInputVRange}}, /*Voltage input*/
{ (const char*) SettingsDescriptions[0], { settings_setInputVRange }, {
settings_displayInputVRange } }, /*Voltage input*/
#else
{ (const char*) SettingsDescriptions[20], { settings_setInputPRange }, {
settings_displayInputPRange } }, /*Voltage input*/
@@ -731,11 +730,8 @@ void gui_Menu(const menuitem* menu) {
/ (systemSettings.descriptionScrollSpeed == 1 ?
1 : 2));
descriptionOffset %= descriptionWidth; // Roll around at the end
if (lastOffset != descriptionOffset) {
OLED::clearScreen();
//^ Rolling offset based on time
OLED::setCursor((OLED_WIDTH - descriptionOffset), 0);
OLED::print(menu[currentScreen].description);
lastOffset = descriptionOffset;
@@ -807,6 +803,12 @@ void gui_Menu(const menuitem* menu) {
osDelay(40);
lcdRefresh = false;
}
if ((xTaskGetTickCount() - lastButtonTime) > (1000 * 30)) {
// If user has not pressed any buttons in 30 seconds, exist back a menu.
// This will trickle the user back to the main screen eventually
earlyExit = true;
descriptionStart = 0;
}
}
}