use super::*;
#[derive(Clone, Debug, PartialEq, Serialize)]
pub struct StnData {
pub source: NavigationSystem,
pub talker_id: Option<u8>,
}
pub(crate) fn handle(
sentence: &str,
nav_system: NavigationSystem,
) -> Result<ParsedMessage, ParseError> {
let split: Vec<&str> = sentence.split(',').collect();
Ok(ParsedMessage::Stn(StnData {
source: nav_system,
talker_id: pick_number_field(&split, 1)?,
}))
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_parse_cpstn() {
match NmeaParser::new().parse_sentence("$GPSTN,23") {
Ok(ps) => match ps {
ParsedMessage::Stn(stn) => {
assert_eq!(stn.source, NavigationSystem::Gps);
assert_eq!(stn.talker_id, Some(23));
}
ParsedMessage::Incomplete => {
assert!(false);
}
_ => {
assert!(false);
}
},
Err(e) => {
assert_eq!(e.to_string(), "OK");
}
}
}
}