1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//! Furi Kernel API.

use core::time::Duration;

/// Convert [`Duration`] to ticks.
#[inline]
pub fn duration_to_ticks(duration: Duration) -> u32 {
    // This maxes out at about 50 days
    let duration_ms: u32 = duration.as_millis().try_into().unwrap_or(u32::MAX);

    unsafe { ms_to_ticks(duration_ms) }
}

extern "C" {
    #[link_name = "furi_ms_to_ticks"]
    pub fn ms_to_ticks(milliseconds: u32) -> u32;
    #[link_name = "furi_delay_ms"]
    pub fn delay_ms(msec: u32);
    #[link_name = "furi_delay_us"]
    pub fn delay_us(usec: u32);
}