Enhancement for future use: displayNew() for system page and generic leavePage() method

This commit is contained in:
Thomas Hooge 2025-08-15 09:07:49 +02:00
parent a74ce9e553
commit bc9d139d19
2 changed files with 11 additions and 3 deletions

View File

@ -123,6 +123,7 @@ class Page{
int refreshtime = 1000; int refreshtime = 1000;
virtual int displayPage(PageData &pageData)=0; virtual int displayPage(PageData &pageData)=0;
virtual void displayNew(PageData &pageData){} virtual void displayNew(PageData &pageData){}
virtual void leavePage(PageData &pageData){}
virtual void setupKeys() { virtual void setupKeys() {
#ifdef HARDWARE_V21 #ifdef HARDWARE_V21
commonData->keydata[0].label = ""; commonData->keydata[0].label = "";

View File

@ -666,7 +666,7 @@ void OBP60Task(GwApi *api){
double homelon = commonData.config->getString(commonData.config->homeLON).toDouble(); double homelon = commonData.config->getString(commonData.config->homeLON).toDouble();
bool homevalid = homelat >= -180.0 and homelat <= 180 and homelon >= -90.0 and homelon <= 90.0; bool homevalid = homelat >= -180.0 and homelat <= 180 and homelon >= -90.0 and homelon <= 90.0;
if (homevalid) { if (homevalid) {
LOG_DEBUG(GwLog::LOG, "Home location set to %f : %f", homelat, homelon); LOG_DEBUG(GwLog::LOG, "Home location set to lat=%f, lon=%f", homelat, homelon);
} else { } else {
LOG_DEBUG(GwLog::LOG, "No valid home location found"); LOG_DEBUG(GwLog::LOG, "No valid home location found");
} }
@ -700,6 +700,7 @@ void OBP60Task(GwApi *api){
//#################################################################################### //####################################################################################
bool systemPage = false; bool systemPage = false;
bool systemPageNew = false;
Page *currentPage; Page *currentPage;
while (true){ while (true){
delay(100); // Delay 100ms (loop time) delay(100); // Delay 100ms (loop time)
@ -752,6 +753,7 @@ void OBP60Task(GwApi *api){
systemPage = true; // System page is out of band systemPage = true; // System page is out of band
syspage->setupKeys(); syspage->setupKeys();
keyboardMessage = 0; keyboardMessage = 0;
systemPageNew = true;
} }
else { else {
currentPage = pages[pageNumber].page; currentPage = pages[pageNumber].page;
@ -950,6 +952,10 @@ void OBP60Task(GwApi *api){
if (systemPage) { if (systemPage) {
displayFooter(commonData); displayFooter(commonData);
PageData sysparams; // empty PageData sysparams; // empty
if (systemPageNew) {
syspage->displayNew(sysparams);
systemPageNew = false;
}
syspage->displayPage(sysparams); syspage->displayPage(sysparams);
} }
else { else {
@ -966,10 +972,11 @@ void OBP60Task(GwApi *api){
} }
else{ else{
if (lastPage != pageNumber){ if (lastPage != pageNumber){
if (hasFRAM) fram.write(FRAM_PAGE_NO, pageNumber); // remember page for device restart pages[lastPage].page->leavePage(pages[lastPage].parameters); // call page cleanup code
if (hasFRAM) fram.write(FRAM_PAGE_NO, pageNumber); // remember new page for device restart
currentPage->setupKeys(); currentPage->setupKeys();
currentPage->displayNew(pages[pageNumber].parameters); currentPage->displayNew(pages[pageNumber].parameters);
lastPage=pageNumber; lastPage = pageNumber;
} }
//call the page code //call the page code
LOG_DEBUG(GwLog::DEBUG,"calling page %d",pageNumber); LOG_DEBUG(GwLog::DEBUG,"calling page %d",pageNumber);