leodos_libcfs/psp/
time.rs1use crate::ffi;
8use crate::os::time::OsTime;
9use core::mem::MaybeUninit;
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq)]
13pub struct Timebase {
14 pub upper_32: u32,
16 pub lower_32: u32,
18}
19
20impl Timebase {
21 pub fn as_u64(&self) -> u64 {
23 ((self.upper_32 as u64) << 32) | (self.lower_32 as u64)
24 }
25}
26
27pub fn get_timebase() -> Timebase {
29 let mut upper = MaybeUninit::uninit();
30 let mut lower = MaybeUninit::uninit();
31 unsafe { ffi::CFE_PSP_Get_Timebase(upper.as_mut_ptr(), lower.as_mut_ptr()) };
32 Timebase {
33 upper_32: unsafe { upper.assume_init() },
34 lower_32: unsafe { lower.assume_init() },
35 }
36}
37
38pub fn get_time() -> OsTime {
40 let mut time = MaybeUninit::uninit();
41 unsafe { ffi::CFE_PSP_GetTime(time.as_mut_ptr()) };
42 OsTime(unsafe { time.assume_init() })
43}
44
45pub fn get_timer_ticks_per_second() -> u32 {
50 unsafe { ffi::CFE_PSP_GetTimerTicksPerSecond() }
51}
52
53pub fn get_timer_low32_rollover() -> u32 {
57 unsafe { ffi::CFE_PSP_GetTimerLow32Rollover() }
58}