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;
fFilteredTemperature = -100;
}
// Added DISABLE INTERRUPTS to test for parasitic fix.
TempSensor.requestTemperatures(); // prep sensor for future reading
ScreenManager.reqUpdate();
@ -1309,4 +1308,5 @@ const char* getVersionDate()
int getBoardRevision()
{
return BoardRevision;
}
}

View file

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

View file

@ -260,18 +260,63 @@ CScreenManager::checkUpdate()
// Clock
// return to those upon timeout, otherwise return to Basic Control screen
if(_rootMenu > 2) {
_rootMenu = _subMenu = 1;
uint8_t userHomeMenu = NVstore.getHomeMenu().onTimeout;
if(userHomeMenu) { // allow user to override defualt screen
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;
}
else {
_rootMenu = _subMenu = 1;
DebugPort.print("Screen Manager: Menu timeout, falling back to Basic control screen");
}
}
_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(_pRebootScreen) {
_pRebootScreen->show();