Implemented screen switching upon timeout, start and stop in ScreenManager

This commit is contained in:
rljonesau 2019-04-20 19:13:24 +10:00
parent 480bd1b15c
commit 505015139c
3 changed files with 51 additions and 6 deletions

View file

@ -795,7 +795,6 @@ void loop()
DS18B20holdoff = 2; DS18B20holdoff = 2;
fFilteredTemperature = -100; fFilteredTemperature = -100;
} }
// Added DISABLE INTERRUPTS to test for parasitic fix.
TempSensor.requestTemperatures(); // prep sensor for future reading TempSensor.requestTemperatures(); // prep sensor for future reading
ScreenManager.reqUpdate(); ScreenManager.reqUpdate();
@ -1309,4 +1308,5 @@ const char* getVersionDate()
int getBoardRevision() int getBoardRevision()
{ {
return BoardRevision; return BoardRevision;
} }

View file

@ -73,7 +73,7 @@ CHomeMenuSelScreen::show()
} }
_printMenuText(70, 14, msg, _rowSel == 3); _printMenuText(70, 14, msg, _rowSel == 3);
_printMenuText(66, 26, "On Start:", false, eRightJustify); _printMenuText(66, 26, "On start:", false, eRightJustify);
switch(_action.onStart) { switch(_action.onStart) {
case 0: strcpy(msg, "Default"); break; case 0: strcpy(msg, "Default"); break;
case 1: strcpy(msg, "Detailed"); break; case 1: strcpy(msg, "Detailed"); break;
@ -82,7 +82,7 @@ CHomeMenuSelScreen::show()
} }
_printMenuText(70, 26, msg, _rowSel == 2); _printMenuText(70, 26, msg, _rowSel == 2);
_printMenuText(66, 38, "On Stop:", false, eRightJustify); _printMenuText(66, 38, "On stop:", false, eRightJustify);
switch(_action.onStop) { switch(_action.onStop) {
case 0: strcpy(msg, "Default"); break; case 0: strcpy(msg, "Default"); break;
case 1: strcpy(msg, "Detailed"); break; case 1: strcpy(msg, "Detailed"); break;

View file

@ -260,18 +260,63 @@ CScreenManager::checkUpdate()
// Clock // Clock
// return to those upon timeout, otherwise return to Basic Control screen // return to those upon timeout, otherwise return to Basic Control screen
if(_rootMenu > 2) { if(_rootMenu > 2) {
_rootMenu = _subMenu = 1;
uint8_t userHomeMenu = NVstore.getHomeMenu().onTimeout; uint8_t userHomeMenu = NVstore.getHomeMenu().onTimeout;
if(userHomeMenu) { // allow user to override defualt screen if(userHomeMenu) { // allow user to override defualt screen
userHomeMenu--; userHomeMenu--;
DebugPort.print("Falling back to user home screen #"); DebugPort.println(userHomeMenu); DebugPort.print("Screen Manager: Menu timeout, falling back to user preferred screen: ");
switch(userHomeMenu) {
case 0: DebugPort.println("Detailed control menu"); break;
case 1: DebugPort.println("Basic control menu"); break;
case 2: DebugPort.println("Clock menu"); break;
}
_rootMenu = _subMenu = userHomeMenu; _rootMenu = _subMenu = userHomeMenu;
} }
else {
_rootMenu = _subMenu = 1;
DebugPort.print("Screen Manager: Menu timeout, falling back to Basic control screen");
}
} }
_enterScreen(); _enterScreen();
} }
}
static int prevRunState = -1;
int runState = getHeaterInfo().getRunStateEx();
if(runState != prevRunState) {
if(runState > 0 && prevRunState == 0) {
// heater has started
uint8_t userStartMenu = NVstore.getHomeMenu().onStart;
if(userStartMenu && userStartMenu <= 3) { // allow user to override defualt screen
userStartMenu--;
DebugPort.print("Screen Manager: Heater start detected, switching to user preferred screen: ");
switch(userStartMenu) {
case 0: DebugPort.println("Detailed control menu"); break;
case 1: DebugPort.println("Basic control menu"); break;
case 2: DebugPort.println("Clock menu"); break;
}
_rootMenu = _subMenu = userStartMenu;
_enterScreen();
}
}
if(runState == 0 && prevRunState != 0) {
// heater has stopped
uint8_t userStopMenu = NVstore.getHomeMenu().onStop;
if(userStopMenu && userStopMenu <= 3) { // allow user to override defualt screen
userStopMenu--;
DebugPort.print("Screen Manager: Heater stop detected, switching to user preferred screen: ");
switch(userStopMenu) {
case 0: DebugPort.println("Detailed control menu"); break;
case 1: DebugPort.println("Basic control menu"); break;
case 2: DebugPort.println("Clock menu"); break;
}
_rootMenu = _subMenu = userStopMenu;
_enterScreen();
}
}
prevRunState = runState;
} }
if(_bReqUpdate) { if(_bReqUpdate) {
if(_pRebootScreen) { if(_pRebootScreen) {
_pRebootScreen->show(); _pRebootScreen->show();