gnss_protos/gps/
frame_id.rs1use crate::gps::GpsError;
2
3#[derive(Debug, Default, PartialEq, Copy, Clone)]
4pub enum GpsQzssFrameId {
5 #[default]
6 Ephemeris1,
8
9 Ephemeris2,
11
12 Ephemeris3,
14}
15
16impl GpsQzssFrameId {
17 pub(crate) fn decode(mask: u8) -> Result<Self, GpsError> {
19 match mask {
20 1 => Ok(Self::Ephemeris1),
21 2 => Ok(Self::Ephemeris2),
22 3 => Ok(Self::Ephemeris3),
23 _ => Err(GpsError::UnknownFrameType),
24 }
25 }
26}
27
28#[cfg(test)]
29mod test {
30 use super::GpsQzssFrameId;
31
32 #[test]
33 fn frame_id_decoding() {
34 for (value, expected) in [
35 (1, GpsQzssFrameId::Ephemeris1),
36 (2, GpsQzssFrameId::Ephemeris2),
37 (3, GpsQzssFrameId::Ephemeris3),
38 ] {
39 let frame_id = GpsQzssFrameId::decode(value).unwrap();
40
41 assert_eq!(frame_id, expected);
42 }
43 }
44}