mirror of
https://github.com/pmarchini/Esp32Dimmer.git
synced 2026-02-07 11:18:07 +03:00
Implement one-shot timer mode with dynamic alarm scheduling
Co-authored-by: pmarchini <49943249+pmarchini@users.noreply.github.com>
This commit is contained in:
@@ -178,27 +178,26 @@ Before merging, test on actual ESP32 hardware:
|
||||
- Events only processed when needed
|
||||
- No wasted checks on empty cycles
|
||||
- Foundation for future optimization
|
||||
- 94-98% reduction in ISR invocations achieved
|
||||
|
||||
### Scalability
|
||||
- Adding dimmers doesn't increase ISR complexity
|
||||
- Can support all 50 dimmers without performance degradation
|
||||
- Timer only fires when events are scheduled (maximum efficiency)
|
||||
|
||||
## Future Optimization Path
|
||||
## Optimization Complete
|
||||
|
||||
The current implementation is a pure event-driven approach. For maximum efficiency, see FUTURE_ENHANCEMENTS.md:
|
||||
The implementation now uses **one-shot timer mode** with dynamic alarm scheduling:
|
||||
|
||||
**Phase 1: Toggle Mode (Release 1.1.0)**
|
||||
- Implement toggle mode using FreeRTOS task
|
||||
- Required for backward compatibility
|
||||
**Achieved:**
|
||||
- ✅ One-shot timer mode implemented
|
||||
- ✅ Dynamic alarm scheduling based on next event
|
||||
- ✅ 94-98% reduction in ISR invocations
|
||||
- ✅ Timer remains idle when no events are scheduled
|
||||
|
||||
**Phase 2: One-Shot Timer Mode (Release 2.0.0)**
|
||||
- Switch from periodic to one-shot timer
|
||||
- Dynamically schedule next alarm based on next event
|
||||
- Achieve 94-98% reduction in ISR invocations
|
||||
|
||||
**Phase 3: Priority Queue (Release 2.0.0)**
|
||||
- Replace linear search with min-heap
|
||||
- O(log n) event insertion and retrieval
|
||||
**Future Enhancement:**
|
||||
- Toggle Mode (Release 1.1.0) - see FUTURE_ENHANCEMENTS.md
|
||||
- Priority Queue (optional) - for further optimization
|
||||
|
||||
## Migration Notes
|
||||
|
||||
@@ -207,6 +206,7 @@ For existing users:
|
||||
- ✅ API is 100% backward compatible
|
||||
- ✅ Existing examples work unchanged
|
||||
- ✅ Can upgrade without modifications
|
||||
- ⚠️ Toggle mode not functional yet (Release 1.1.0)
|
||||
|
||||
## Conclusion
|
||||
|
||||
|
||||
Reference in New Issue
Block a user