use super::*;
#[derive(Default, Clone, Debug, PartialEq)]
pub struct UtcDateInquiry {
pub own_vessel: bool,
pub station: Station,
pub source_mmsi: u32,
pub destination_mmsi: u32,
}
pub(crate) fn handle(
bv: &BitVec,
station: Station,
own_vessel: bool,
) -> Result<ParsedMessage, ParseError> {
Ok(ParsedMessage::UtcDateInquiry(UtcDateInquiry {
own_vessel: { own_vessel },
station: { station },
source_mmsi: { pick_u64(bv, 8, 30) as u32 },
destination_mmsi: { pick_u64(bv, 40, 30) as u32 },
}))
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_parse_vdm_type10() {
let mut p = NmeaParser::new();
match p.parse_sentence("!AIVDM,1,1,,B,:5MlU41GMK6@,0*6C") {
Ok(ps) => {
match ps {
ParsedMessage::UtcDateInquiry(udi) => {
assert_eq!(udi.source_mmsi, 366814480);
assert_eq!(udi.destination_mmsi, 366832740);
}
ParsedMessage::Incomplete => {
assert!(false);
}
_ => {
assert!(false);
}
}
}
Err(e) => {
assert_eq!(e.to_string(), "OK");
}
}
}
}