J. Nick Koston
9529adb049
[preferences] Devirtualize preference backend and manager classes
...
Eliminates virtual dispatch from ESPPreferenceBackend and ESPPreferences.
Only one implementation of each exists per platform build, so the
polymorphic design was unnecessary overhead — same pattern as OTA (#14473 )
and socket (#14398 ) devirtualizations.
Each platform's backend class is now a standalone final class in its own
header (preference_backend.h). The preferences manager class is extracted
to the platform's preferences.h with a PreferencesMixin CRTP base for
shared template helpers. core/preference_backend.h provides the
PreferenceBackend alias, ESPPreferenceObject, and DECLARE_PREFERENCE_ALIASES
macro. core/preferences.h is a thin wrapper including the active platform.
ESPPreferenceBackend and ESPPreferences become backward-compatible type
aliases to the concrete types. Zero caller changes required.
2026-03-15 08:49:40 -10:00
J. Nick Koston
3e7424b307
[preferences] Reduce heap churn with small inline buffer optimization ( #13259 )
2026-03-02 14:22:55 +13:00
J. Nick Koston
0ec02d4886
[preferences] Replace per-element erase with clear() in sync() ( #13934 )
2026-02-11 11:41:53 -06:00
J. Nick Koston
9f1a427ce2
[preferences] Use static storage for singletons and flash buffer ( #13727 )
2026-02-03 04:03:52 +01:00
J. Nick Koston
54d6825323
[esp32] [libretiny] Use stack buffer for preference comparison ( #13398 )
2026-01-20 17:52:28 -10:00
J. Nick Koston
766826cc9c
[esp32][libretiny] Reuse preference buffer to avoid heap churn ( #12890 )
2026-01-04 08:28:01 -10:00
J. Nick Koston
426305836d
[esp32][libretiny] Avoid duplicate snprintf when syncing preferences ( #12542 )
2025-12-17 18:16:14 -10:00
J. Nick Koston
f32bb618ac
[esp32] Store preference keys as uint32_t, convert to string only at NVS boundary ( #12494 )
2025-12-17 11:59:35 -05:00
J. Nick Koston
6781da45cb
[esp32] Optimize NVS preferences memory usage by replacing vector with unique_ptr ( #10729 )
2025-09-18 05:24:50 -05:00
J. Nick Koston and Copilot
6c5632a0b3
[esp32] Optimize preferences is_changed() by replacing temporary vector with unique_ptr ( #10246 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-08-15 10:11:49 -05:00
487e1f871f
use `encode_uintXX` ( #8847 )
...
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-06-11 17:06:45 +12:00
Keith Burzinski
6675e99862
Remove unnecessary ellipsis ( #8964 )
2025-06-03 21:46:10 +01:00
Keith Burzinski
5771bb4907
[preferences] Shorten log messages ( #8982 )
2025-05-31 14:23:47 -05:00
Jörg Thalheim
421ebcc8b2
use PRIx macros for printing u32/i32 ints ( #4671 )
...
This fix compilation issues with the latest esp-idf.
2023-04-10 22:20:02 +00:00
anatoly-savchenkov and Jesse Hills
9a5f865eea
Add Factory Reset button and switch ( #3724 )
...
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2022-09-12 10:23:46 +12:00
Javier Peletier
f33d829ce9
FIX: NVS preferences being written even if unchanged ( #3647 )
2022-07-25 10:10:37 +12:00
37b6d442bd
Correcting ESP32 flash save/load key calculation algorithm ( #3416 )
...
Co-authored-by: Otto Winter <otto@otto-winter.com >
Co-authored-by: Dr. Zimmermann Zsolt <cina@storage1.cina.hu >
2022-06-21 17:17:51 +12:00
Martin
a8ceeaa7b0
esp32: fix NVS ( #3497 )
2022-05-23 20:56:26 +12:00
Martin
609a2ca592
ESP32: Only save to NVS if data was changed ( #3479 )
2022-05-17 10:59:36 +12:00
Maurice Makaay and Maurice Makaay
671d68bc2c
Add missing nvs_flash_init() to ESP32 preferences code ( #2805 )
...
Co-authored-by: Maurice Makaay <mmakaay1@xs4all.net >
2021-11-26 21:25:58 +01:00
Alex and Otto winter
491f8cc611
Configurable Flash Write Interval ( #2119 )
...
Co-authored-by: Alex <33379584+alexyao2015@users.noreply.github.com >
Co-authored-by: Otto winter <otto@otto-winter.com >
2021-09-21 13:47:51 +02:00
Otto Winter and Jesse Hills
ac0d921413
ESP-IDF support and generic target platforms ( #2303 )
...
* Socket refactor and SSL
* esp-idf temp
* Fixes
* Echo component and noise
* Add noise API transport support
* Updates
* ESP-IDF
* Complete
* Fixes
* Fixes
* Versions update
* New i2c APIs
* Complete i2c refactor
* SPI migration
* Revert ESP Preferences migration, too complex for now
* OTA support
* Remove echo again
* Remove ssl again
* GPIOFlags updates
* Rename esphal and ICACHE_RAM_ATTR
* Make ESP32 arduino compilable again
* Fix GPIO flags
* Complete pin registry refactor and fixes
* Fixes to make test1 compile
* Remove sdkconfig file
* Ignore sdkconfig file
* Fixes in reviewing
* Make test2 compile
* Make test4 compile
* Make test5 compile
* Run clang-format
* Fix lint errors
* Use esp-idf APIs instead of btStart
* Another round of fixes
* Start implementing ESP8266
* Make test3 compile
* Guard esp8266 code
* Lint
* Reformat
* Fixes
* Fixes v2
* more fixes
* ESP-IDF tidy target
* Convert ARDUINO_ARCH_ESPxx
* Update WiFiSignalSensor
* Update time ifdefs
* OTA needs millis from hal
* RestartSwitch needs delay from hal
* ESP-IDF Uart
* Fix OTA blank password
* Allow setting sdkconfig
* Fix idf partitions and allow setting sdkconfig from yaml
* Re-add read/write compat APIs and fix esp8266 uart
* Fix esp8266 store log strings in flash
* Fix ESP32 arduino preferences not initialized
* Update ifdefs
* Change how sdkconfig change is detected
* Add checks to ci-custom and fix them
* Run clang-format
* Add esp-idf clang-tidy target and fix errors
* Fixes from clang-tidy idf round 2
* Fixes from compiling tests with esp-idf
* Run clang-format
* Switch test5.yaml to esp-idf
* Implement ESP8266 Preferences
* Lint
* Re-do PIO package version selection a bit
* Fix arduinoespressif32 package version
* Fix unit tests
* Lint
* Lint fixes
* Fix readv/writev not defined
* Fix graphing component
* Re-add all old options from core/config.py
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2021-09-20 11:47:51 +02:00