Skip to content

Commit 79cfb30

Browse files
committed
mosaic-X5 : improve logIncreasing checks
If the user inserts a new SD card, we need to be able to recover from sdFreeSpace > previousFreeSpace
1 parent 6368f50 commit 79cfb30

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed

Firmware/RTK_Everywhere/GNSS_Mosaic.ino

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2576,21 +2576,39 @@ void GNSS_MOSAIC::update()
25762576
static uint64_t previousFreeSpace = 0;
25772577
if (millis() > (sdCardSizeLastCheck + sdCardSizeCheckInterval))
25782578
{
2579-
updateSD();
2580-
2581-
if (previousFreeSpace == 0)
2582-
previousFreeSpace = sdFreeSpace;
2583-
if (sdFreeSpace < previousFreeSpace)
2579+
if (updateSD()) // updateSD will only return true if a card is inserted and the card size has been read
25842580
{
2585-
previousFreeSpace = sdFreeSpace;
2586-
logIncreasing = true;
2587-
sdCardLastFreeChange = millis();
2581+
// If previousFreeSpace hasn't been initialized, initialize it
2582+
if (previousFreeSpace == 0)
2583+
previousFreeSpace = sdFreeSpace;
2584+
2585+
if (sdFreeSpace < previousFreeSpace)
2586+
{
2587+
// The free space is decreasing, so set logIncreasing to true
2588+
previousFreeSpace = sdFreeSpace;
2589+
logIncreasing = true;
2590+
sdCardLastFreeChange = millis();
2591+
}
2592+
else if (sdFreeSpace == previousFreeSpace)
2593+
{
2594+
// The free space has not changed
2595+
// X5 is slow to update free. Seems to be about every ~20s?
2596+
// So only set logIncreasing to false after 30s
2597+
if (millis() > (sdCardLastFreeChange + 30000))
2598+
logIncreasing = false;
2599+
}
2600+
else // if (sdFreeSpace > previousFreeSpace)
2601+
{
2602+
// User must have inserted a new SD card?
2603+
previousFreeSpace = sdFreeSpace;
2604+
}
25882605
}
25892606
else
25902607
{
2591-
if (millis() > (sdCardLastFreeChange + 30000)) // X5 is slow to update free. Seems to be about every ~20s?
2592-
logIncreasing = false;
2608+
// updateSD failed. So sdFreeSpace can't be trusted and the log cannot be increasing
2609+
logIncreasing = false;
25932610
}
2611+
25942612
sdCardSizeLastCheck = millis();
25952613
}
25962614

0 commit comments

Comments
 (0)