Skip to content

Commit 17f13fc

Browse files
committed
minor improvments for embassy lib
1 parent b4f1512 commit 17f13fc

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

Diff for: va108xx-embassy/docs.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
#!/bin/sh
1+
#!/bin/bash
22
export RUSTDOCFLAGS="--cfg docsrs --generate-link-to-definition -Z unstable-options"
33
cargo +nightly doc --open

Diff for: va108xx-embassy/src/lib.rs

+20-15
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@
3333
#![no_std]
3434
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
3535
use core::cell::{Cell, RefCell};
36-
use critical_section::CriticalSection;
37-
use embassy_sync::blocking_mutex::CriticalSectionMutex as Mutex;
36+
use critical_section::{CriticalSection, Mutex};
3837
use portable_atomic::{AtomicU32, Ordering};
3938

4039
use embassy_time_driver::{time_driver_impl, Driver, TICK_HZ};
@@ -46,7 +45,7 @@ use va108xx_hal::{
4645
clock::enable_peripheral_clock,
4746
enable_nvic_interrupt, pac,
4847
prelude::*,
49-
timer::{enable_tim_clk, get_tim_raw, TimRegInterface},
48+
timer::{enable_tim_clk, get_tim_raw, TimRegInterface, ValidTim},
5049
PeripheralSelect,
5150
};
5251

@@ -116,12 +115,15 @@ pub mod embassy {
116115
/// This has to be called once at initialization time to initiate the time driver for
117116
/// embassy.
118117
#[cfg(feature = "irqs-in-lib")]
119-
pub unsafe fn init(
118+
pub unsafe fn init<
119+
TimekeeperTim: TimRegInterface + ValidTim,
120+
AlarmTim: TimRegInterface + ValidTim,
121+
>(
120122
syscfg: &mut pac::Sysconfig,
121123
irqsel: &pac::Irqsel,
122124
sysclk: impl Into<Hertz>,
123-
timekeeper_tim: impl TimRegInterface,
124-
alarm_tim: impl TimRegInterface,
125+
timekeeper_tim: TimekeeperTim,
126+
alarm_tim: AlarmTim,
125127
) {
126128
TIME_DRIVER.init(
127129
syscfg,
@@ -140,12 +142,15 @@ pub mod embassy {
140142
///
141143
/// This has to be called once at initialization time to initiate the time driver for
142144
/// embassy.
143-
pub unsafe fn init_with_custom_irqs(
145+
pub unsafe fn init_with_custom_irqs<
146+
TimekeeperTim: TimRegInterface + ValidTim,
147+
AlarmTim: TimRegInterface + ValidTim,
148+
>(
144149
syscfg: &mut pac::Sysconfig,
145150
irqsel: &pac::Irqsel,
146151
sysclk: impl Into<Hertz>,
147-
timekeeper_tim: impl TimRegInterface,
148-
alarm_tim: impl TimRegInterface,
152+
timekeeper_tim: TimekeeperTim,
153+
alarm_tim: AlarmTim,
149154
timekeeper_irq: pac::Interrupt,
150155
alarm_irq: pac::Interrupt,
151156
) {
@@ -188,21 +193,21 @@ pub struct TimerDriver {
188193

189194
impl TimerDriver {
190195
#[allow(clippy::too_many_arguments)]
191-
fn init(
196+
fn init<TimekeeperTim: TimRegInterface + ValidTim, AlarmTim: TimRegInterface + ValidTim>(
192197
&self,
193198
syscfg: &mut pac::Sysconfig,
194199
irqsel: &pac::Irqsel,
195200
sysclk: impl Into<Hertz>,
196-
timekeeper_tim: impl TimRegInterface,
197-
alarm_tim: impl TimRegInterface,
201+
timekeeper_tim: TimekeeperTim,
202+
alarm_tim: AlarmTim,
198203
timekeeper_irq: pac::Interrupt,
199204
alarm_irq: pac::Interrupt,
200205
) {
201-
if ALARM_TIM.get().is_some() {
206+
if ALARM_TIM.get().is_some() || TIMEKEEPER_TIM.get().is_some() {
202207
return;
203208
}
204-
ALARM_TIM.set(alarm_tim.tim_id()).ok();
205-
TIMEKEEPER_TIM.set(timekeeper_tim.tim_id()).ok();
209+
ALARM_TIM.set(AlarmTim::TIM_ID).ok();
210+
TIMEKEEPER_TIM.set(TimekeeperTim::TIM_ID).ok();
206211
enable_peripheral_clock(syscfg, PeripheralSelect::Irqsel);
207212
enable_tim_clk(syscfg, timekeeper_tim.tim_id());
208213
let timekeeper_reg_block = timekeeper_tim.reg_block();

0 commit comments

Comments
 (0)