From c2cd7163fa1acfef158e8db22c7d7762204c0f3e Mon Sep 17 00:00:00 2001 From: "torlando-agent[bot]" <281092095+torlando-agent[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 04:14:38 +0000 Subject: [PATCH] fix: preserve unrecognized SD media --- lib/tdeck_ui/Hardware/TDeck/SDAccess.cpp | 5 +++-- tests/build_scripts/test_map_tile_store_contract.py | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/tdeck_ui/Hardware/TDeck/SDAccess.cpp b/lib/tdeck_ui/Hardware/TDeck/SDAccess.cpp index f0498e15..af455c47 100644 --- a/lib/tdeck_ui/Hardware/TDeck/SDAccess.cpp +++ b/lib/tdeck_ui/Hardware/TDeck/SDAccess.cpp @@ -41,8 +41,9 @@ bool SDAccess::init(SemaphoreHandle_t mutex) { // SD card init: use global SPI (FSPI) before Display claims HSPI SPI.begin(Pin::DISPLAY_SCK, Radio::SPI_MISO, Pin::DISPLAY_MOSI); - // format_if_empty=true auto-formats unformatted cards as FAT - bool ok = SD.begin(SDCard::CS, SPI, SD_SPI_FREQ, "/sd", 5, true); + // Never format unknown or damaged media. A failed mount is reported and + // existing card contents remain untouched for explicit recovery. + bool ok = SD.begin(SDCard::CS, SPI, SD_SPI_FREQ, "/sd", 5, false); xSemaphoreGive(_spi_mutex); diff --git a/tests/build_scripts/test_map_tile_store_contract.py b/tests/build_scripts/test_map_tile_store_contract.py index 1d09c5bb..79f387eb 100644 --- a/tests/build_scripts/test_map_tile_store_contract.py +++ b/tests/build_scripts/test_map_tile_store_contract.py @@ -5,6 +5,7 @@ CORE_H = ROOT / "lib/tdeck_ui/Hardware/TDeck/MapTileStore.h" CORE_CPP = ROOT / "lib/tdeck_ui/Hardware/TDeck/MapTileStore.cpp" SD_H = ROOT / "lib/tdeck_ui/Hardware/TDeck/MapTileStoreSD.h" SD_CPP = ROOT / "lib/tdeck_ui/Hardware/TDeck/MapTileStoreSD.cpp" +SD_ACCESS_CPP = ROOT / "lib/tdeck_ui/Hardware/TDeck/SDAccess.cpp" def test_sd_adapter_uses_existing_mount_without_begin_or_format(): @@ -34,3 +35,9 @@ def test_adapter_releases_shared_bus_for_each_chunk(): source = SD_CPP.read_text() assert "readChunk" in source and "writeChunk" in source assert source.count("SDAccess::release_bus()") >= 8 + + +def test_global_sd_mount_never_formats_unrecognized_media(): + source = SD_ACCESS_CPP.read_text() + assert "format_if_empty=true" not in source + assert 'SD.begin(SDCard::CS, SPI, SD_SPI_FREQ, "/sd", 5, false)' in source