All notable changes to this project are documented in this file.
The format follows Keep a Changelog and the project adheres to Semantic Versioning.
- Removed the library-provided inline
timerinstance. Sketches should now declare their ownESPTimerobjects (global, static, or as class members) before callinginit(), enabling multiple independent timer managers. - Standardized teardown around
deinit()+isInitialized()and removed theclearTimer(id)alias in favor ofclearTimeout(id). - Added
ESPTimerConfig::usePSRAMBuffersand routed timer-owned persistent/transient vectors throughESPBufferManagerwith safe fallback to default heap. - Migrated timer lane task creation/lifecycle back to native FreeRTOS task handling (
xTaskCreatePinnedToCore/vTaskDelete). - Added fixed-capacity timer buckets (
maxTimeouts,maxIntervals,maxSecCounters,maxMsCounters,maxMinCounters) so runtime scheduling stays bounded afterinit(). - Made
init()transactional and standardized sentinel failure behavior: failed init leaves the instance uninitialized andset*helpers return0when the instance is unavailable or full.
- Ensured per-second and per-minute countdown timers emit their final tick by rounding up remaining time.
- Added lifecycle test coverage for pre-init
deinit(), repeateddeinit(), andinit -> deinit -> initreinitialization. - Removed library-owned exception/abort paths from timer allocation and callback dispatch, and guarded lifecycle state/ID generation behind a persistent mutex for task-safe use.
- CI now pins PIOArduino Core to
v6.1.19and installs the ESP32 platform viapio pkg install, restoring PlatformIO compatibility with the currentplatform-espressif32package.
- Added an MIT license badge and cross-links to other ESPToolKit libraries in the README.
- Removed the outdated note about API sugar helpers from the roadmap.
1.0.0 - 2025-09-25
- Introduced the FreeRTOS-backed
ESPTimerAPI withinit,setTimeout,setInterval, and per-second/millisecond/minute countdown helpers. - Added lifecycle controls (
pause*,resume*,toggleRunStatus*,clear*,getStatus) and theESPTimerStatusstate machine for inspecting individual timers. - Enabled task tuning via
ESPTimerConfig, allowing stack size, priority, and core affinity customization, with an internal mutex for thread-safe updates. - Provided example sketches (
examples/Basic,examples/PauseResume) demonstrating one-shot, interval, and pause/resume flows. - Added unit tests covering timeout, interval, and countdown behaviour via CMake/CTest integration.
- Published Arduino and PlatformIO metadata (
library.json,library.properties) plus top-level CMake integration for builds. - Set up GitHub CI, release automation, and issue/PR templates to standardize contributions.
- Authored the initial README detailing features, quick start guidance, and usage notes.
- Added a project roadmap, license, and code of conduct to outline direction and expectations.