canboat_rs/pgns/
library_data_search.rs

1use crate::nmea_option::NmeaOption;
2use crate::pgn_types::PgnType;
3pub const LENGTH: usize = 9usize;
4pub const PGN: u32 = 130572u32;
5#[derive(Debug)]
6pub enum Source {
7    Vesselalarm,
8    AM,
9    FM,
10    Weather,
11    DAB,
12    Aux,
13    USB,
14    CD,
15    MP3,
16    AppleiOS,
17    Android,
18    Bluetooth,
19    SiriusXM,
20    Pandora,
21    Spotify,
22    Slacker,
23    Songza,
24    AppleRadio,
25    LastFM,
26    Ethernet,
27    VideoMP4,
28    VideoDVD,
29    VideoBluRay,
30    HDMI,
31    Video,
32}
33impl bitfield::Into<u8> for Source {
34    fn into(self) -> u8 {
35        match self {
36            Self::Vesselalarm => 0u8,
37            Self::AM => 1u8,
38            Self::FM => 2u8,
39            Self::Weather => 3u8,
40            Self::DAB => 4u8,
41            Self::Aux => 5u8,
42            Self::USB => 6u8,
43            Self::CD => 7u8,
44            Self::MP3 => 8u8,
45            Self::AppleiOS => 9u8,
46            Self::Android => 10u8,
47            Self::Bluetooth => 11u8,
48            Self::SiriusXM => 12u8,
49            Self::Pandora => 13u8,
50            Self::Spotify => 14u8,
51            Self::Slacker => 15u8,
52            Self::Songza => 16u8,
53            Self::AppleRadio => 17u8,
54            Self::LastFM => 18u8,
55            Self::Ethernet => 19u8,
56            Self::VideoMP4 => 20u8,
57            Self::VideoDVD => 21u8,
58            Self::VideoBluRay => 22u8,
59            Self::HDMI => 23u8,
60            Self::Video => 24u8,
61        }
62    }
63}
64impl bitfield::Into<NmeaOption<Source>> for u8 {
65    fn into(self) -> NmeaOption<Source> {
66        match self {
67            0u8 => NmeaOption::Some(Source::Vesselalarm),
68            1u8 => NmeaOption::Some(Source::AM),
69            2u8 => NmeaOption::Some(Source::FM),
70            3u8 => NmeaOption::Some(Source::Weather),
71            4u8 => NmeaOption::Some(Source::DAB),
72            5u8 => NmeaOption::Some(Source::Aux),
73            6u8 => NmeaOption::Some(Source::USB),
74            7u8 => NmeaOption::Some(Source::CD),
75            8u8 => NmeaOption::Some(Source::MP3),
76            9u8 => NmeaOption::Some(Source::AppleiOS),
77            10u8 => NmeaOption::Some(Source::Android),
78            11u8 => NmeaOption::Some(Source::Bluetooth),
79            12u8 => NmeaOption::Some(Source::SiriusXM),
80            13u8 => NmeaOption::Some(Source::Pandora),
81            14u8 => NmeaOption::Some(Source::Spotify),
82            15u8 => NmeaOption::Some(Source::Slacker),
83            16u8 => NmeaOption::Some(Source::Songza),
84            17u8 => NmeaOption::Some(Source::AppleRadio),
85            18u8 => NmeaOption::Some(Source::LastFM),
86            19u8 => NmeaOption::Some(Source::Ethernet),
87            20u8 => NmeaOption::Some(Source::VideoMP4),
88            21u8 => NmeaOption::Some(Source::VideoDVD),
89            22u8 => NmeaOption::Some(Source::VideoBluRay),
90            23u8 => NmeaOption::Some(Source::HDMI),
91            24u8 => NmeaOption::Some(Source::Video),
92            _ => NmeaOption::None,
93        }
94    }
95}
96#[derive(Debug)]
97pub enum GroupType1 {
98    File,
99    PlaylistName,
100    GenreName,
101    AlbumName,
102    ArtistName,
103    TrackName,
104    StationName,
105    StationNumber,
106    FavouriteNumber,
107    PlayQueue,
108    ContentInfo,
109}
110impl bitfield::Into<u8> for GroupType1 {
111    fn into(self) -> u8 {
112        match self {
113            Self::File => 0u8,
114            Self::PlaylistName => 1u8,
115            Self::GenreName => 2u8,
116            Self::AlbumName => 3u8,
117            Self::ArtistName => 4u8,
118            Self::TrackName => 5u8,
119            Self::StationName => 6u8,
120            Self::StationNumber => 7u8,
121            Self::FavouriteNumber => 8u8,
122            Self::PlayQueue => 9u8,
123            Self::ContentInfo => 10u8,
124        }
125    }
126}
127impl bitfield::Into<NmeaOption<GroupType1>> for u8 {
128    fn into(self) -> NmeaOption<GroupType1> {
129        match self {
130            0u8 => NmeaOption::Some(GroupType1::File),
131            1u8 => NmeaOption::Some(GroupType1::PlaylistName),
132            2u8 => NmeaOption::Some(GroupType1::GenreName),
133            3u8 => NmeaOption::Some(GroupType1::AlbumName),
134            4u8 => NmeaOption::Some(GroupType1::ArtistName),
135            5u8 => NmeaOption::Some(GroupType1::TrackName),
136            6u8 => NmeaOption::Some(GroupType1::StationName),
137            7u8 => NmeaOption::Some(GroupType1::StationNumber),
138            8u8 => NmeaOption::Some(GroupType1::FavouriteNumber),
139            9u8 => NmeaOption::Some(GroupType1::PlayQueue),
140            10u8 => NmeaOption::Some(GroupType1::ContentInfo),
141            _ => NmeaOption::None,
142        }
143    }
144}
145#[derive(Debug)]
146pub enum GroupType2 {
147    File,
148    PlaylistName,
149    GenreName,
150    AlbumName,
151    ArtistName,
152    TrackName,
153    StationName,
154    StationNumber,
155    FavouriteNumber,
156    PlayQueue,
157    ContentInfo,
158}
159impl bitfield::Into<u8> for GroupType2 {
160    fn into(self) -> u8 {
161        match self {
162            Self::File => 0u8,
163            Self::PlaylistName => 1u8,
164            Self::GenreName => 2u8,
165            Self::AlbumName => 3u8,
166            Self::ArtistName => 4u8,
167            Self::TrackName => 5u8,
168            Self::StationName => 6u8,
169            Self::StationNumber => 7u8,
170            Self::FavouriteNumber => 8u8,
171            Self::PlayQueue => 9u8,
172            Self::ContentInfo => 10u8,
173        }
174    }
175}
176impl bitfield::Into<NmeaOption<GroupType2>> for u8 {
177    fn into(self) -> NmeaOption<GroupType2> {
178        match self {
179            0u8 => NmeaOption::Some(GroupType2::File),
180            1u8 => NmeaOption::Some(GroupType2::PlaylistName),
181            2u8 => NmeaOption::Some(GroupType2::GenreName),
182            3u8 => NmeaOption::Some(GroupType2::AlbumName),
183            4u8 => NmeaOption::Some(GroupType2::ArtistName),
184            5u8 => NmeaOption::Some(GroupType2::TrackName),
185            6u8 => NmeaOption::Some(GroupType2::StationName),
186            7u8 => NmeaOption::Some(GroupType2::StationNumber),
187            8u8 => NmeaOption::Some(GroupType2::FavouriteNumber),
188            9u8 => NmeaOption::Some(GroupType2::PlayQueue),
189            10u8 => NmeaOption::Some(GroupType2::ContentInfo),
190            _ => NmeaOption::None,
191        }
192    }
193}
194#[derive(Debug)]
195pub enum GroupType3 {
196    File,
197    PlaylistName,
198    GenreName,
199    AlbumName,
200    ArtistName,
201    TrackName,
202    StationName,
203    StationNumber,
204    FavouriteNumber,
205    PlayQueue,
206    ContentInfo,
207}
208impl bitfield::Into<u8> for GroupType3 {
209    fn into(self) -> u8 {
210        match self {
211            Self::File => 0u8,
212            Self::PlaylistName => 1u8,
213            Self::GenreName => 2u8,
214            Self::AlbumName => 3u8,
215            Self::ArtistName => 4u8,
216            Self::TrackName => 5u8,
217            Self::StationName => 6u8,
218            Self::StationNumber => 7u8,
219            Self::FavouriteNumber => 8u8,
220            Self::PlayQueue => 9u8,
221            Self::ContentInfo => 10u8,
222        }
223    }
224}
225impl bitfield::Into<NmeaOption<GroupType3>> for u8 {
226    fn into(self) -> NmeaOption<GroupType3> {
227        match self {
228            0u8 => NmeaOption::Some(GroupType3::File),
229            1u8 => NmeaOption::Some(GroupType3::PlaylistName),
230            2u8 => NmeaOption::Some(GroupType3::GenreName),
231            3u8 => NmeaOption::Some(GroupType3::AlbumName),
232            4u8 => NmeaOption::Some(GroupType3::ArtistName),
233            5u8 => NmeaOption::Some(GroupType3::TrackName),
234            6u8 => NmeaOption::Some(GroupType3::StationName),
235            7u8 => NmeaOption::Some(GroupType3::StationNumber),
236            8u8 => NmeaOption::Some(GroupType3::FavouriteNumber),
237            9u8 => NmeaOption::Some(GroupType3::PlayQueue),
238            10u8 => NmeaOption::Some(GroupType3::ContentInfo),
239            _ => NmeaOption::None,
240        }
241    }
242}
243use bitfield::bitfield;
244bitfield! {
245    #[doc = "Library Data Search"] pub struct LibraryDataSearch([u8]); impl Debug; u32;
246    pub u8, from into NmeaOption < Source >, source, _ : 7usize, 0usize; pub number, _ :
247    15usize, 8usize; pub group_id, _ : 47usize, 16usize; pub u8, from into NmeaOption <
248    GroupType1 >, group_type_1, _ : 55usize, 48usize;
249}
250impl LibraryDataSearch<&[u8]> {
251    pub fn is_match(&self, pgn: u32) -> bool {
252        130572u32 == pgn
253    }
254    pub fn get_pgn() -> u32 {
255        130572u32
256    }
257    pub fn get_message_type() -> PgnType {
258        PgnType::Fast
259    }
260}