agentic_robotics_rt/
lib.rs1pub mod executor;
6pub mod scheduler;
7pub mod latency;
8
9pub use executor::{ROS3Executor, Priority, Deadline};
10pub use scheduler::PriorityScheduler;
11pub use latency::LatencyTracker;
12
13use std::time::Duration;
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
17pub enum RTPriority {
18 Background = 0,
20 Low = 1,
22 Normal = 2,
24 High = 3,
26 Critical = 4,
28}
29
30impl From<u8> for RTPriority {
31 fn from(value: u8) -> Self {
32 match value {
33 0 => RTPriority::Background,
34 1 => RTPriority::Low,
35 2 => RTPriority::Normal,
36 3 => RTPriority::High,
37 _ => RTPriority::Critical,
38 }
39 }
40}
41
42impl From<RTPriority> for u8 {
43 fn from(priority: RTPriority) -> Self {
44 priority as u8
45 }
46}
47
48#[cfg(test)]
49mod tests {
50 use super::*;
51
52 #[test]
53 fn test_priority_conversion() {
54 let priority = RTPriority::High;
55 let value: u8 = priority.into();
56 assert_eq!(value, 3);
57
58 let converted: RTPriority = value.into();
59 assert_eq!(converted, RTPriority::High);
60 }
61}