Merge pull request #3697 from tones111/time_driver_example

fix embassy-time-driver example
This commit is contained in:
Dario Nieuwenhuis 2024-12-31 09:43:11 +00:00 committed by GitHub
commit dc9a83b9b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 4 deletions

View File

@ -368,3 +368,7 @@ tick-hz-5_242_880_000 = []
[dependencies]
document-features = "0.2.7"
[dev-dependencies]
critical-section = "1"
embassy-time-queue-utils = { path = "../embassy-time-queue-utils" }

View File

@ -49,15 +49,16 @@
//! Note that if you are using multiple queues, you will need to ensure that a single timer
//! queue item is only ever enqueued into a single queue at a time.
//!
//! ```ignore
//! ```
//! use core::cell::RefCell;
//! use core::task::Waker;
//!
//! use critical_section::{CriticalSection, Mutex};
//! use embassy_time_queue_utils::Queue;
//! use embassy_time_driver::Driver;
//!
//! struct MyDriver {
//! timer_queue: critical_section::Mutex<RefCell<Queue>>,
//! queue: Mutex<RefCell<Queue>>,
//! }
//!
//! impl MyDriver {
@ -67,14 +68,14 @@
//! }
//!
//! impl Driver for MyDriver {
//! // fn now(&self) -> u64 { ... }
//! fn now(&self) -> u64 { todo!() }
//!
//! fn schedule_wake(&self, at: u64, waker: &Waker) {
//! critical_section::with(|cs| {
//! let mut queue = self.queue.borrow(cs).borrow_mut();
//! if queue.schedule_wake(at, waker) {
//! let mut next = queue.next_expiration(self.now());
//! while !self.set_alarm(cs, next) {
//! while !self.set_alarm(&cs, next) {
//! next = queue.next_expiration(self.now());
//! }
//! }