@@ -2576,21 +2576,39 @@ void GNSS_MOSAIC::update()
2576
2576
static uint64_t previousFreeSpace = 0 ;
2577
2577
if (millis () > (sdCardSizeLastCheck + sdCardSizeCheckInterval))
2578
2578
{
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
2584
2580
{
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
+ }
2588
2605
}
2589
2606
else
2590
2607
{
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 ;
2593
2610
}
2611
+
2594
2612
sdCardSizeLastCheck = millis ();
2595
2613
}
2596
2614
0 commit comments