use crate::ParseError;
#[derive(Clone, Debug, PartialEq)]
pub enum RssType {
Frequency(),
Alert(),
}
#[derive(Clone, Debug, PartialEq)]
pub struct Rss {
pub rss_type: RssType,
pub nnn: u8,
}
pub fn is_rss(message: &str) -> bool {
return message.starts_with("SS,");
}
pub fn parse(message: &str) -> Result<Rss, ParseError> {
const RSS_LEN: usize = 8;
if message.len() != RSS_LEN {
return Err(ParseError::SizeNotMatch {
expected: RSS_LEN,
found: message.len(),
});
}
let x = message.as_bytes()[3];
let nnn = message[5..8].parse::<u8>()?;
match x {
b'A' => Ok(Rss {
nnn,
rss_type: RssType::Alert(),
}),
b'1' => Ok(Rss {
nnn,
rss_type: RssType::Frequency(),
}),
_ => Err(ParseError::Invalid),
}
}