rtic/rtic-time/CHANGELOG.md
Finomnis 8c23e178f3
Monotonic rewrite (#874)
* Rework timer_queue and monotonic architecture

Goals:
 * make Monotonic purely internal
 * make Monotonic purely tick passed, no fugit involved
 * create a wrapper struct in the user's code via a macro that then
   converts the "now" from the tick based monotonic to a fugit based
   timestamp

We need to proxy the delay functions of the timer queue anyway,
so we could simply perform the conversion in those proxy functions.

* Update cargo.lock

* Update readme of rtic-time

* CI: ESP32: Redact esp_image: Too volatile

* Fixup: Changelog double entry rebase mistake

---------

Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
2024-04-10 22:00:38 +00:00

1.9 KiB

Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

For each category, Added, Changed, Fixed add new entries at the top!

Unreleased - v2.0.0

Added

Changed

  • Full rewrite of the Monotonic API.
    • Now split into multiple traits:
      • Monotonic - A user-facing trait that defines what the functionality of a monotonic is.
      • TimerQueueBackend - The set of functionality a backend must provide in order to be used with the TimerQueue.
    • TimerQueue is now purely based on ticks and has no concept of real time.
    • The TimerQueueBasedMonotonic trait implements a Monotonic based on a TimerQueueBackend, translating ticks into Instant and Duration.

Fixed

  • Docs: Rename DelayUs to DelayNs in docs.

v1.3.0 - 2024-01-10

Changed

  • Using embedded-hal 1.0.

v1.2.0 - 2023-12-06

Changed

  • Docs: Add sanity check to half_period_counter code example
  • Deprecate Monotonic::should_dequeue_check as it was erroneous

Fixed

  • Fix race condition in half_period_counter::calculate_now. This sadly required a minor API change.

v1.1.0 - 2023-12-04

Added

  • half_period_counter containing utilities for implementing a half-period-counter based monotonic.
  • should_dequeue_check to the Monotonic trait to handle bugged timers.

Changed

Fixed

  • Soundness fix: TimerQueue did not wait long enough in Duration based delays. Fixing this sadly required adding a const TICK_PERIOD to the Monotonic trait, which requires updating all existing implementations.
  • If the queue was non-empty and a new instant was added that was earlier than head, then the queue would no pend the monotonic handler. This would cause the new head to be dequeued at the wrong time.

v1.0.0 - 2023-05-31