diff --git a/Arduino/BTCDieselHeater/BTCDieselHeater.ino b/Arduino/BTCDieselHeater/BTCDieselHeater.ino index f21e9fa..9865871 100644 --- a/Arduino/BTCDieselHeater/BTCDieselHeater.ino +++ b/Arduino/BTCDieselHeater/BTCDieselHeater.ino @@ -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; -} \ No newline at end of file +} + diff --git a/Arduino/BTCDieselHeater/src/OLED/HomeMenuSelScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/HomeMenuSelScreen.cpp index 096ff9d..2d044cd 100644 --- a/Arduino/BTCDieselHeater/src/OLED/HomeMenuSelScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/HomeMenuSelScreen.cpp @@ -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; diff --git a/Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp b/Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp index 6477039..cabbf29 100644 --- a/Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp @@ -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();