Add adjustable sleep timer and file browser settings

Implemented the adjustable sleep timer feature as requested. Updated the settings storage to include refresh interval and default folder preferences. Modified the state file version to accommodate new fields for last browsed folder.
This commit is contained in:
altsysrq
2026-01-03 23:24:21 -06:00
parent 0054981eab
commit 8ca01e9ede
13 changed files with 350 additions and 13 deletions

View File

@@ -12,7 +12,7 @@ CrossPointSettings CrossPointSettings::instance;
namespace {
constexpr uint8_t SETTINGS_FILE_VERSION = 1;
// Increment this when adding new persisted settings fields
constexpr uint8_t SETTINGS_COUNT = 13;
constexpr uint8_t SETTINGS_COUNT = 16;
constexpr char SETTINGS_FILE[] = "/.crosspoint/settings.bin";
} // namespace
@@ -40,6 +40,9 @@ bool CrossPointSettings::saveToFile() const {
serialization::writePod(outputFile, bluetoothEnabled);
serialization::writePod(outputFile, useCoverArtPicker);
serialization::writePod(outputFile, autoSleepMinutes);
serialization::writePod(outputFile, refreshInterval);
serialization::writePod(outputFile, defaultFolder);
serialization::writeString(outputFile, customDefaultFolder);
outputFile.close();
Serial.printf("[%lu] [CPS] Settings saved to file\n", millis());
@@ -92,6 +95,12 @@ bool CrossPointSettings::loadFromFile() {
if (++settingsRead >= fileSettingsCount) break;
serialization::readPod(inputFile, autoSleepMinutes);
if (++settingsRead >= fileSettingsCount) break;
serialization::readPod(inputFile, refreshInterval);
if (++settingsRead >= fileSettingsCount) break;
serialization::readPod(inputFile, defaultFolder);
if (++settingsRead >= fileSettingsCount) break;
serialization::readString(inputFile, customDefaultFolder);
if (++settingsRead >= fileSettingsCount) break;
} while (false);
inputFile.close();