pub const GPS_WORD_SIZE: usize = 30;
pub const GPS_MIN_SIZE: usize = GPS_WORD_SIZE * 10;
mod bytes;
mod decoder;
mod errors;
mod frame1;
mod frame2;
mod frame3;
mod frame_id;
mod how;
mod tlm;
pub use bytes::GpsDataByte;
pub use decoder::GpsQzssDecoder;
pub use errors::GpsError;
pub use frame_id::GpsQzssFrameId;
pub use how::GpsQzssHow;
pub use tlm::GpsQzssTelemetry;
pub use frame1::GpsQzssFrame1;
pub use frame2::GpsQzssFrame2;
pub use frame3::GpsQzssFrame3;
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct GpsQzssFrame {
pub how: GpsQzssHow,
pub telemetry: GpsQzssTelemetry,
pub subframe: GpsQzssSubframe,
}
#[derive(Debug, Copy, Clone, PartialEq)]
pub enum GpsQzssSubframe {
Ephemeris1(GpsQzssFrame1),
Ephemeris2(GpsQzssFrame2),
Ephemeris3(GpsQzssFrame3),
}
impl Default for GpsQzssSubframe {
fn default() -> Self {
Self::Ephemeris1(Default::default())
}
}
impl GpsQzssSubframe {
pub fn as_eph1(&self) -> Option<&GpsQzssFrame1> {
match self {
Self::Ephemeris1(frame) => Some(frame),
_ => None,
}
}
pub fn as_mut_eph1(&mut self) -> Option<&mut GpsQzssFrame1> {
match self {
Self::Ephemeris1(frame) => Some(frame),
_ => None,
}
}
pub fn as_eph2(&self) -> Option<&GpsQzssFrame2> {
match self {
Self::Ephemeris2(frame) => Some(frame),
_ => None,
}
}
pub fn as_mut_eph2(&mut self) -> Option<&mut GpsQzssFrame2> {
match self {
Self::Ephemeris2(frame) => Some(frame),
_ => None,
}
}
pub fn as_eph3(&self) -> Option<&GpsQzssFrame3> {
match self {
Self::Ephemeris3(frame) => Some(frame),
_ => None,
}
}
pub fn as_mut_eph3(&mut self) -> Option<&mut GpsQzssFrame3> {
match self {
Self::Ephemeris3(frame) => Some(frame),
_ => None,
}
}
}