canboat_rs/pgns/
nmea_command_group_function.rs1use crate::nmea_option::NmeaOption;
2use crate::pgn_types::PgnType;
3pub const LENGTH: usize = 6usize;
4pub const PGN: u32 = 126208u32;
5#[derive(Debug)]
6pub enum Priority {
7 Zero,
8 One,
9 Two,
10 Three,
11 Four,
12 Five,
13 Six,
14 Seven,
15 Leaveunchanged,
16 Resettodefault,
17}
18impl bitfield::Into<u8> for Priority {
19 fn into(self) -> u8 {
20 match self {
21 Self::Zero => 0u8,
22 Self::One => 1u8,
23 Self::Two => 2u8,
24 Self::Three => 3u8,
25 Self::Four => 4u8,
26 Self::Five => 5u8,
27 Self::Six => 6u8,
28 Self::Seven => 7u8,
29 Self::Leaveunchanged => 8u8,
30 Self::Resettodefault => 9u8,
31 }
32 }
33}
34impl bitfield::Into<NmeaOption<Priority>> for u8 {
35 fn into(self) -> NmeaOption<Priority> {
36 match self {
37 0u8 => NmeaOption::Some(Priority::Zero),
38 1u8 => NmeaOption::Some(Priority::One),
39 2u8 => NmeaOption::Some(Priority::Two),
40 3u8 => NmeaOption::Some(Priority::Three),
41 4u8 => NmeaOption::Some(Priority::Four),
42 5u8 => NmeaOption::Some(Priority::Five),
43 6u8 => NmeaOption::Some(Priority::Six),
44 7u8 => NmeaOption::Some(Priority::Seven),
45 8u8 => NmeaOption::Some(Priority::Leaveunchanged),
46 9u8 => NmeaOption::Some(Priority::Resettodefault),
47 _ => NmeaOption::None,
48 }
49 }
50}
51use bitfield::bitfield;
52bitfield! {
53 #[doc = "NMEA - Command group function"] pub struct NmeaCommandGroupFunction([u8]);
54 impl Debug; u32; pub function_code, _ : 7usize, 0usize; pub pgn, _ : 31usize, 8usize;
55 pub u8, from into NmeaOption < Priority >, priority, _ : 35usize, 32usize; pub
56 reserved, _ : 39usize, 36usize; pub number_of_parameters, _ : 47usize, 40usize; pub
57 parameter, _ : 55usize, 48usize;
58}
59impl NmeaCommandGroupFunction<&[u8]> {
60 pub fn is_match(&self, pgn: u32) -> bool {
61 126208u32 == pgn && self.function_code() == 1u32
62 }
63 pub fn get_pgn() -> u32 {
64 126208u32
65 }
66 pub fn get_message_type() -> PgnType {
67 PgnType::Fast
68 }
69}