Multiple goals are achieved with this change:
- make descriptions of settings close to their definitions
- settings validation on loading with reset to default in case of bad
value
- do not boot-loop on bad string values
- (de)serialization is based on a single list of descriptors: single point
of truth
- possibly to have default values for the String configuration type
- more constexpr to reduce RAM usage
- less hardcoded values
- more maintainable
RAM Usage:
From
RAM: [=== ] 32.5% (used 106516 bytes from 327680 bytes)
Flash: [========= ] 94.9% (used 6217240 bytes from 6553600 bytes)
To
RAM: [=== ] 32.3% (used 105844 bytes from 327680 bytes)
Flash: [========= ] 94.8% (used 6213378 bytes from 6553600 bytes)
Boot config validation with a test where the status bar config is wrong:
[1256] [SD] SD card detected
[1256] [CPS] Loading settings from file
[1265] [CPS] Invalid value (0x3) for Status Bar, resetting to default
[1265] [CPS] Settings loaded from file
## Summary
* Swap to updated SDCardManager which uses SdFat
* Add exFAT support
* Swap to using FsFile everywhere
* Use newly exposed `SdMan` macro to get to static instance of
SDCardManager
* Move a bunch of FsHelpers up to SDCardManager