Implemented screen switching upon timeout, start and stop in ScreenManager
This commit is contained in:
parent
480bd1b15c
commit
505015139c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue