Merge USB session safety and preserve GPS preference compatibility

This commit is contained in:
mikecarper committed 2026-10-03 16:12:32 -07:00
commit eeb25a8b5f
62 files changed
+2479 -240

No files matched your search

+11 -5
View File
@@ -35,6 +35,7 @@ class TestFS : public MemoryFS {
#include <helpers/MQTTPrefsAtomicStore.h>
#include <helpers/CLICommandUtils.h>
#include <helpers/RepeaterRadioTiming.h>
#include <helpers/GpsPowerPolicy.h>
#include <helpers/bridges/ESPNowBridgeFormat.h>
#include <helpers/radiolib/LR2021SideDetectorConfig.h>
#define MIN_LORA_TX_POWER -9
@@ -157,13 +158,14 @@ int main() {
cli.savePrefs(&cli.fs, PrefsSaveRouting::Scope::Common);
assert(cli._common_save_succeeded);
const auto baseline = cli.fs.files["/com_prefs"];
assert(baseline.size() == 871);
const size_t debug_offset = baseline.size() - 2;
const size_t logging_offset = baseline.size() - 8;
const size_t preamble_offset = baseline.size() - 5;
const size_t espnow_offset = baseline.size() - 3;
assert(baseline.size() == 873);
const size_t debug_offset = 871, trace_offset = 872;
const size_t logging_offset = 863, preamble_offset = 866;
const size_t espnow_offset = 868, gps_offset = 869;
assert(baseline[debug_offset] == 0 && baseline[logging_offset] == 1);
assert(baseline[preamble_offset] == 48 && baseline[espnow_offset] == 1);
assert(baseline[gps_offset] == 0 && baseline[gps_offset + 1] == 0);
assert(baseline[trace_offset] == 0);
Capture capture;
assert(writeCommonPrefsImage(capture, &cli.prefs));
assert(capture.bytes == baseline); // Checked and ordinary writers agree.
@@ -253,6 +255,7 @@ int main() {
// after loading debug ON; a missing later trace byte cannot erase debug.
auto image = baseline;
image[logging_offset] = 0; image[debug_offset] = 1;
image[gps_offset] = 0x50; image[gps_offset + 1] = 0x01;
for (size_t size = 0; size <= debug_offset; ++size) {
CommonCLI reader;
reader.prefs.usb_debug_enabled = 1;
@@ -260,6 +263,8 @@ int main() {
reader.loadPrefsInt(&reader.fs, "/com_prefs");
assert(reader.prefs.usb_debug_enabled == 0);
if (size > logging_offset) assert(reader.prefs.usb_logging_enabled == 0);
if (size >= gps_offset + 2) assert(reader.prefs.gps_sync_interval_hours == 336);
assert(reader.prefs.trace_when_repeat_off == 0);
}
for (uint8_t saved : {0, 1, 2, 255}) {
image[debug_offset] = saved;
@@ -269,6 +274,7 @@ int main() {
assert(cli.prefs.usb_debug_enabled == (saved == 1 ? 1 : 0));
assert(cli.prefs.usb_logging_enabled == 0);
assert(cli.prefs.primary_radio_preamble == 48 && cli.prefs.espnow_bridge_enabled == 1);
assert(cli.prefs.gps_sync_interval_hours == 336);
}
cli.prefs.usb_debug_enabled = 1;
cli.loadPrefsInt(&cli.fs, "/missing");