canboat_rs/pgns/
simnet_fluid_level_sensor_configuration.rs

1use crate::nmea_option::NmeaOption;
2use crate::pgn_types::PgnType;
3pub const LENGTH: usize = 14usize;
4pub const PGN: u32 = 130836u32;
5#[derive(Debug)]
6pub enum TankType {
7    Fuel,
8    Water,
9    Graywater,
10    Livewell,
11    Oil,
12    Blackwater,
13}
14impl bitfield::Into<u8> for TankType {
15    fn into(self) -> u8 {
16        match self {
17            Self::Fuel => 0u8,
18            Self::Water => 1u8,
19            Self::Graywater => 2u8,
20            Self::Livewell => 3u8,
21            Self::Oil => 4u8,
22            Self::Blackwater => 5u8,
23        }
24    }
25}
26impl bitfield::Into<NmeaOption<TankType>> for u8 {
27    fn into(self) -> NmeaOption<TankType> {
28        match self {
29            0u8 => NmeaOption::Some(TankType::Fuel),
30            1u8 => NmeaOption::Some(TankType::Water),
31            2u8 => NmeaOption::Some(TankType::Graywater),
32            3u8 => NmeaOption::Some(TankType::Livewell),
33            4u8 => NmeaOption::Some(TankType::Oil),
34            5u8 => NmeaOption::Some(TankType::Blackwater),
35            _ => NmeaOption::None,
36        }
37    }
38}
39use bitfield::bitfield;
40bitfield! {
41    #[doc = "Simnet: Fluid Level Sensor Configuration"] pub struct
42    SimnetFluidLevelSensorConfiguration([u8]); impl Debug; u32; pub manufacturer_code, _
43    : 10usize, 0usize; pub reserved, _ : 12usize, 11usize; pub industry_code, _ :
44    15usize, 13usize; pub c, _ : 23usize, 16usize; pub device, _ : 31usize, 24usize; pub
45    instance, _ : 39usize, 32usize; pub f, _ : 43usize, 40usize; pub u8, from into
46    NmeaOption < TankType >, tank_type, _ : 47usize, 44usize; pub capacity, _ : 79usize,
47    48usize; pub g, _ : 87usize, 80usize; pub h, _ : 103usize, 88usize; pub i, _ :
48    111usize, 104usize;
49}
50impl SimnetFluidLevelSensorConfiguration<&[u8]> {
51    pub fn is_match(&self, pgn: u32) -> bool {
52        130836u32 == pgn && self.manufacturer_code() == 1857u32
53            && self.industry_code() == 4u32
54    }
55    pub fn get_pgn() -> u32 {
56        130836u32
57    }
58    pub fn get_message_type() -> PgnType {
59        PgnType::Fast
60    }
61}