From 53955a4a6b94ce76b452e8728bd93d70951fc7ee Mon Sep 17 00:00:00 2001 From: mikeller Date: Sat, 2 Nov 2019 13:50:36 +1300 Subject: [PATCH] Show blackbox log number in OSD only when available. --- src/main/blackbox/blackbox_io.c | 17 +++++++++++------ src/main/blackbox/blackbox_io.h | 2 +- src/main/osd/osd.c | 11 +++++++---- src/main/osd/osd_elements.c | 7 ++++++- src/test/unit/link_quality_unittest.cc | 2 +- src/test/unit/osd_unittest.cc | 2 +- 6 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/main/blackbox/blackbox_io.c b/src/main/blackbox/blackbox_io.c index 43f1e4119..a0ee1c91e 100644 --- a/src/main/blackbox/blackbox_io.c +++ b/src/main/blackbox/blackbox_io.c @@ -76,7 +76,7 @@ static struct { afatfsFilePtr_t logFile; afatfsFilePtr_t logDirectory; afatfsFinder_t logDirectoryFinder; - uint32_t largestLogFileNumber; + int32_t largestLogFileNumber; enum { BLACKBOX_SDCARD_INITIAL, @@ -440,7 +440,7 @@ static void blackboxLogFileCreated(afatfsFilePtr_t file) static void blackboxCreateLogFile(void) { - uint32_t remainder = blackboxSDCard.largestLogFileNumber + 1; + int32_t remainder = blackboxSDCard.largestLogFileNumber + 1; char filename[] = LOGFILE_PREFIX "00000." LOGFILE_SUFFIX; @@ -488,7 +488,7 @@ static bool blackboxSDCardBeginLog(void) memcpy(logSequenceNumberString, directoryEntry->filename + 3, 5); logSequenceNumberString[5] = '\0'; - blackboxSDCard.largestLogFileNumber = MAX((uint32_t) atoi(logSequenceNumberString), blackboxSDCard.largestLogFileNumber); + blackboxSDCard.largestLogFileNumber = MAX((int32_t)atoi(logSequenceNumberString), blackboxSDCard.largestLogFileNumber); } } else { // We're done checking all the files on the card, now we can create a new log file @@ -619,12 +619,17 @@ bool isBlackboxDeviceWorking(void) } } -unsigned int blackboxGetLogNumber(void) +int32_t blackboxGetLogNumber(void) { + switch (blackboxConfig()->device) { #ifdef USE_SDCARD - return blackboxSDCard.largestLogFileNumber; + case BLACKBOX_DEVICE_SDCARD: + return blackboxSDCard.largestLogFileNumber; #endif - return 0; + + default: + return -1; + } } /** diff --git a/src/main/blackbox/blackbox_io.h b/src/main/blackbox/blackbox_io.h index 72e1a6042..52af9d5d2 100644 --- a/src/main/blackbox/blackbox_io.h +++ b/src/main/blackbox/blackbox_io.h @@ -57,7 +57,7 @@ bool blackboxDeviceEndLog(bool retainLog); bool isBlackboxDeviceFull(void); bool isBlackboxDeviceWorking(void); -unsigned int blackboxGetLogNumber(void); +int32_t blackboxGetLogNumber(void); void blackboxReplenishHeaderBudget(void); blackboxBufferReserveStatus_e blackboxDeviceReserveBufferSpace(int32_t bytes); diff --git a/src/main/osd/osd.c b/src/main/osd/osd.c index c20411210..1a1c84869 100644 --- a/src/main/osd/osd.c +++ b/src/main/osd/osd.c @@ -670,10 +670,13 @@ static bool osdDisplayStat(int statistic, uint8_t displayRow) break; case OSD_STAT_BLACKBOX_NUMBER: - if (blackboxConfig()->device && blackboxConfig()->device != BLACKBOX_DEVICE_SERIAL) { - itoa(blackboxGetLogNumber(), buff, 10); - osdDisplayStatisticLabel(displayRow, "BB LOG NUM", buff); - return true; + { + int32_t logNumber = blackboxGetLogNumber(); + if (logNumber >= 0) { + itoa(logNumber, buff, 10); + osdDisplayStatisticLabel(displayRow, "BB LOG NUM", buff); + return true; + } } break; #endif diff --git a/src/main/osd/osd_elements.c b/src/main/osd/osd_elements.c index f82765cbb..18e6e4b85 100644 --- a/src/main/osd/osd_elements.c +++ b/src/main/osd/osd_elements.c @@ -923,7 +923,12 @@ static void osdElementLogStatus(osdElementParms_t *element) } else if (isBlackboxDeviceFull()) { tfp_sprintf(element->buff, "%c>", SYM_BBLOG); } else { - tfp_sprintf(element->buff, "%c%d", SYM_BBLOG, blackboxGetLogNumber()); + int32_t logNumber = blackboxGetLogNumber(); + if (logNumber >= 0) { + tfp_sprintf(element->buff, "%c%d", SYM_BBLOG, logNumber); + } else { + tfp_sprintf(element->buff, "%c", SYM_BBLOG); + } } } } diff --git a/src/test/unit/link_quality_unittest.cc b/src/test/unit/link_quality_unittest.cc index a3885e6b5..c22ae1c6d 100644 --- a/src/test/unit/link_quality_unittest.cc +++ b/src/test/unit/link_quality_unittest.cc @@ -423,7 +423,7 @@ extern "C" { int32_t getMAhDrawn() { return 0; } int32_t getEstimatedAltitudeCm() { return 0; } int32_t getEstimatedVario() { return 0; } - unsigned int blackboxGetLogNumber() { return 0; } + int32_t blackboxGetLogNumber() { return 0; } bool isBlackboxDeviceWorking() { return true; } bool isBlackboxDeviceFull() { return false; } serialPort_t *openSerialPort(serialPortIdentifier_e, serialPortFunction_e, serialReceiveCallbackPtr, void *, uint32_t, portMode_e, portOptions_e) {return NULL;} diff --git a/src/test/unit/osd_unittest.cc b/src/test/unit/osd_unittest.cc index 4e3264711..60bfb93f4 100644 --- a/src/test/unit/osd_unittest.cc +++ b/src/test/unit/osd_unittest.cc @@ -1132,7 +1132,7 @@ extern "C" { return simulationVerticalSpeed; } - unsigned int blackboxGetLogNumber() { + int32_t blackboxGetLogNumber() { return 0; }