px4_ulog/models/
message.rs1#[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}