px4_ulog/models/
message.rs

1#[derive(Debug, PartialEq)]
2pub enum MessageType {
3    Unknown,
4    Format,
5    Data,
6    Info,
7    MultipleInfo,
8    Parameter,
9    AddLoggedMessage,
10    RemoveLoggedMessage,
11    Sync,
12    Dropout,
13    Logging,
14    FlagBits,
15}
16
17pub struct ULogMessage {
18    msg_type: u8,
19    msg_size: u16,
20    msg_pos: u64,
21}
22
23impl ULogMessage {
24    pub fn new(msg_type: u8, msg_size: u16, msg_pos: u64) -> Self {
25        Self {
26            msg_type,
27            msg_size,
28            msg_pos,
29        }
30    }
31
32    pub fn msg_type(&self) -> MessageType {
33        match self.msg_type as char {
34            'F' => MessageType::Format,
35            'D' => MessageType::Data,
36            'I' => MessageType::Info,
37            'M' => MessageType::MultipleInfo,
38            'P' => MessageType::Parameter,
39            'A' => MessageType::AddLoggedMessage,
40            'R' => MessageType::RemoveLoggedMessage,
41            'S' => MessageType::Sync,
42            'O' => MessageType::Dropout,
43            'L' => MessageType::Logging,
44            'B' => MessageType::FlagBits,
45            _ => MessageType::Unknown,
46        }
47    }
48
49    pub fn size(&self) -> u16 {
50        self.msg_size
51    }
52
53    pub fn position(&self) -> u64 {
54        self.msg_pos
55    }
56}