1use super::{fugit::KilohertzU32, prelude::*};
2use core::{cell::Cell, marker::PhantomData};
3
4pub struct FrequencyHolder<T> {
6 frequency: Cell<KilohertzU32>,
7 _t: PhantomData<T>,
8}
9
10unsafe impl<T: TickInstant> Sync for FrequencyHolder<T> {}
11
12impl<T> FrequencyHolder<T>
13where
14 T: TickInstant,
15{
16 pub const fn new(frequency: KilohertzU32) -> Self {
17 Self {
18 frequency: Cell::new(frequency),
19 _t: PhantomData,
20 }
21 }
22
23 pub fn set(&self, frequency: KilohertzU32) {
24 critical_section::with(|_| {
25 self.frequency.set(frequency);
26 })
27 }
28
29 pub fn get(&self) -> KilohertzU32 {
30 self.frequency.get()
31 }
32}