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
* **What is the goal of this PR?** (e.g., Fixes a bug in the user
authentication module, Implements the new feature for
file uploading.)
As we get more settings, I think it makes sense to do categories for
them. This just allows users to find the settings easier and navigate to
them.
* **What changes are included?**
## Additional Context
* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks, specific areas to
focus on).
Co-authored-by: dpoulter <daniel@yoco.com>
Co-authored-by: Dave Allie <dave@daveallie.com>