From eaec09a29c0c90143563cbc61070bdeeccc321c4 Mon Sep 17 00:00:00 2001 From: norbert-walter Date: Fri, 1 Apr 2022 13:11:48 +0200 Subject: [PATCH] Fix for GPS LED --- lib/obp60task/OBP60ExtensionPort.cpp | 147 ++++++++++++++------------- lib/obp60task/OBP60ExtensionPort.h | 2 +- lib/obp60task/obp60task.cpp | 6 +- 3 files changed, 79 insertions(+), 76 deletions(-) diff --git a/lib/obp60task/OBP60ExtensionPort.cpp b/lib/obp60task/OBP60ExtensionPort.cpp index cdb4ecb..661a8c7 100644 --- a/lib/obp60task/OBP60ExtensionPort.cpp +++ b/lib/obp60task/OBP60ExtensionPort.cpp @@ -121,7 +121,7 @@ void displayTrendLow(int16_t x, int16_t y, uint16_t size, uint16_t color){ display.fillTriangle(x, y, x+size*2, y, x+size, y+size*2, color); } -void displayHeader(CommonData &commonData, GwApi::BoatValue *hdop, GwApi::BoatValue *date, GwApi::BoatValue *time){ +void displayHeader(CommonData &commonData, GwApi::BoatValue *date, GwApi::BoatValue *time){ static bool heartbeat = false; static unsigned long usbRxOld = 0; @@ -136,81 +136,84 @@ void displayHeader(CommonData &commonData, GwApi::BoatValue *hdop, GwApi::BoatVa static unsigned long n2kTxOld = 0; int textcolor = GxEPD_BLACK; - if(commonData.config->getString(commonData.config->displaycolor) == "Normal"){ - textcolor = GxEPD_BLACK; - } - else{ - textcolor = GxEPD_WHITE; - } + if(commonData.config->getBool(commonData.config->statusLine) == true){ - // Show status info - display.setTextColor(textcolor); - display.setFont(&Ubuntu_Bold8pt7b); - display.setCursor(0, 15); - if(commonData.status.wifiApOn){ - display.print(" AP "); - } - // If receive new telegram data then display bus name - if(commonData.status.tcpClRx != tcpClRxOld || commonData.status.tcpClTx != tcpClTxOld || commonData.status.tcpSerRx != tcpSerRxOld || commonData.status.tcpSerTx != tcpSerTxOld){ - display.print("TCP "); - } - if(commonData.status.n2kRx != n2kRxOld || commonData.status.n2kTx != n2kTxOld){ - display.print("N2K "); - } - if(commonData.status.serRx != serRxOld || commonData.status.serTx != serTxOld){ - display.print("183 "); - } - if(commonData.status.usbRx != usbRxOld || commonData.status.usbTx != usbTxOld){ - display.print("USB "); - } - if(commonData.config->getBool(commonData.config->useGPS) == true && hdop->valid == true && hdop->value <= 50){ - display.print("GPS"); - } - // Save old telegram counter - tcpClRxOld = commonData.status.tcpClRx; - tcpClTxOld = commonData.status.tcpClTx; - tcpSerRxOld = commonData.status.tcpSerRx; - tcpSerTxOld = commonData.status.tcpSerTx; - n2kRxOld = commonData.status.n2kRx; - n2kTxOld = commonData.status.n2kTx; - serRxOld = commonData.status.serRx; - serTxOld = commonData.status.serTx; - usbRxOld = commonData.status.usbRx; - usbTxOld = commonData.status.usbTx; - - // Heartbeat as dot - display.setTextColor(textcolor); - display.setFont(&Ubuntu_Bold32pt7b); - display.setCursor(205, 14); - if(heartbeat == true){ - display.print("."); - } - else{ - display.print(" "); - } - heartbeat = !heartbeat; - - // Date and time - display.setTextColor(textcolor); - display.setFont(&Ubuntu_Bold8pt7b); - display.setCursor(230, 15); - if(hdop->valid == true && hdop->value <= 50){ - String acttime = formatValue(time, commonData).svalue; - acttime = acttime.substring(0, 5); - String actdate = formatValue(date, commonData).svalue; - display.print(acttime); - display.print(" "); - display.print(actdate); - display.print(" "); - if(commonData.config->getInt(commonData.config->timeZone) == 0){ - display.print("UTC"); + if(commonData.config->getString(commonData.config->displaycolor) == "Normal"){ + textcolor = GxEPD_BLACK; } else{ - display.print("LOT"); + textcolor = GxEPD_WHITE; + } + + // Show status info + display.setTextColor(textcolor); + display.setFont(&Ubuntu_Bold8pt7b); + display.setCursor(0, 15); + if(commonData.status.wifiApOn){ + display.print(" AP "); + } + // If receive new telegram data then display bus name + if(commonData.status.tcpClRx != tcpClRxOld || commonData.status.tcpClTx != tcpClTxOld || commonData.status.tcpSerRx != tcpSerRxOld || commonData.status.tcpSerTx != tcpSerTxOld){ + display.print("TCP "); + } + if(commonData.status.n2kRx != n2kRxOld || commonData.status.n2kTx != n2kTxOld){ + display.print("N2K "); + } + if(commonData.status.serRx != serRxOld || commonData.status.serTx != serTxOld){ + display.print("183 "); + } + if(commonData.status.usbRx != usbRxOld || commonData.status.usbTx != usbTxOld){ + display.print("USB "); + } + if(commonData.config->getBool(commonData.config->useGPS) == true && date->valid == true){ + display.print("GPS"); + } + // Save old telegram counter + tcpClRxOld = commonData.status.tcpClRx; + tcpClTxOld = commonData.status.tcpClTx; + tcpSerRxOld = commonData.status.tcpSerRx; + tcpSerTxOld = commonData.status.tcpSerTx; + n2kRxOld = commonData.status.n2kRx; + n2kTxOld = commonData.status.n2kTx; + serRxOld = commonData.status.serRx; + serTxOld = commonData.status.serTx; + usbRxOld = commonData.status.usbRx; + usbTxOld = commonData.status.usbTx; + + // Heartbeat as dot + display.setTextColor(textcolor); + display.setFont(&Ubuntu_Bold32pt7b); + display.setCursor(205, 14); + if(heartbeat == true){ + display.print("."); + } + else{ + display.print(" "); + } + heartbeat = !heartbeat; + + // Date and time + display.setTextColor(textcolor); + display.setFont(&Ubuntu_Bold8pt7b); + display.setCursor(230, 15); + if(date->valid == true){ + String acttime = formatValue(time, commonData).svalue; + acttime = acttime.substring(0, 5); + String actdate = formatValue(date, commonData).svalue; + display.print(acttime); + display.print(" "); + display.print(actdate); + display.print(" "); + if(commonData.config->getInt(commonData.config->timeZone) == 0){ + display.print("UTC"); + } + else{ + display.print("LOT"); + } + } + else{ + display.print("No GPS data"); } - } - else{ - display.print("No GPS data"); } } diff --git a/lib/obp60task/OBP60ExtensionPort.h b/lib/obp60task/OBP60ExtensionPort.h index eeb6052..10090b2 100644 --- a/lib/obp60task/OBP60ExtensionPort.h +++ b/lib/obp60task/OBP60ExtensionPort.h @@ -40,6 +40,6 @@ void setBuzzerPower(uint power); // Set buzzer power void displayTrendHigh(int16_t x, int16_t y, uint16_t size, uint16_t color); void displayTrendLow(int16_t x, int16_t y, uint16_t size, uint16_t color); -void displayHeader(CommonData &commonData, GwApi::BoatValue *hdop, GwApi::BoatValue *date, GwApi::BoatValue *time); // Draw display header +void displayHeader(CommonData &commonData, GwApi::BoatValue *date, GwApi::BoatValue *time); // Draw display header #endif \ No newline at end of file diff --git a/lib/obp60task/obp60task.cpp b/lib/obp60task/obp60task.cpp index 86600d3..de606fe 100644 --- a/lib/obp60task/obp60task.cpp +++ b/lib/obp60task/obp60task.cpp @@ -378,11 +378,11 @@ void OBP60Task(GwApi *api){ commonData.data.maxpage = numPages; // If GPS fix then LED off (HDOP) - if(String(gpsFix) == "GPS Fix Lost" && hdop->valid == true && int(hdop->value) <= 50){ + if(String(gpsFix) == "GPS Fix Lost" && date->valid == true){ setPortPin(OBP_FLASH_LED, false); } // Ifmissing GPS fix then LED on - if(String(gpsFix) == "GPS Fix Lost" && ((hdop->valid == true && int(hdop->value) > 50) || hdop->valid == false)){ + if(String(gpsFix) == "GPS Fix Lost" && date->valid == false){ setPortPin(OBP_FLASH_LED, true); } @@ -469,7 +469,7 @@ void OBP60Task(GwApi *api){ display.fillRect(0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, bgcolor); // Clear display if (pages[pageNumber].description && pages[pageNumber].description->header){ //build some header and footer using commonData - displayHeader(commonData, hdop, date, time); + displayHeader(commonData, date, time); } // Call the particular page