1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//! Implementation of embedded hal delay traits using busy waiting
use crate::units::{MicroSeconds, MilliSeconds};
use embedded_hal::blocking::delay::{DelayMs, DelayUs};

#[derive(Clone)]
pub struct Delay {}

impl Delay {
    pub fn new() -> Delay {
        Delay {}
    }
}

/// Delay in ms
///
/// *Note: Maximum duration is 2e32-1 ns ~ 4.29s *
impl<UXX: Into<u32>> DelayMs<UXX> for Delay {
    fn delay_ms(&mut self, ms: UXX) {
        crate::clock_control::sleep(MilliSeconds(ms.into()))
    }
}

/// Delay in us
///
/// *Note: Maximum duration is 2e32-1 ns ~ 4.29s *
impl<UXX: Into<u32>> DelayUs<UXX> for Delay {
    fn delay_us(&mut self, us: UXX) {
        crate::clock_control::sleep(MicroSeconds(us.into()))
    }
}