#[derive(Debug, thiserror::Error, PartialEq)]
pub enum TleError {
#[error("line {line} length is {got}, expected 69")]
BadLength {
line: u8,
got: usize,
},
#[error("line {line} starts with {found:?}, expected leading marker {expected:?}")]
BadLeadingChar {
line: u8,
expected: char,
found: char,
},
#[error("line {line} checksum mismatch: stated {stated}, computed {computed}")]
BadChecksum {
line: u8,
stated: u8,
computed: u8,
},
#[error("NORAD catalog id mismatch between line 1 ({l1}) and line 2 ({l2})")]
MismatchedSatelliteNumber {
l1: u32,
l2: u32,
},
#[error("invalid number in field {field:?}: {raw:?}")]
InvalidNumber {
field: &'static str,
raw: String,
},
#[error("invalid Alpha-5 catalog id {raw:?}")]
InvalidAlpha5 {
raw: String,
},
#[error("invalid epoch (year {year}, doy {day_of_year}): {reason}")]
InvalidEpoch {
year: i32,
day_of_year: f64,
reason: &'static str,
},
#[error("epoch conversion to UTC failed: {0}")]
EpochConversion(String),
#[error("invalid classification {raw:?}; expected U/C/S")]
InvalidClassification {
raw: char,
},
#[error("OMM is missing required field {0:?}")]
OmmMissingField(&'static str),
#[error("invalid OMM epoch {raw:?}: {reason}")]
OmmInvalidEpoch {
raw: String,
reason: &'static str,
},
#[error("unsupported MEAN_ELEMENT_THEORY {0:?}; only \"SGP4\" is supported")]
OmmUnsupportedTheory(String),
#[error("malformed OMM document ({format}): {reason}")]
OmmMalformed {
format: &'static str,
reason: String,
},
#[error("OMM JSON error: {0}")]
OmmJson(String),
#[error("TleBuilder is missing required field {0:?}")]
BuilderMissingField(&'static str),
}