1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum SbfError {
8 #[error("Invalid sync bytes")]
10 InvalidSync,
11
12 #[error("CRC mismatch: expected {expected:#06x}, got {actual:#06x}")]
14 CrcMismatch { expected: u16, actual: u16 },
15
16 #[error("Incomplete block: need {needed} bytes, have {have}")]
18 IncompleteBlock { needed: usize, have: usize },
19
20 #[error("Invalid block length: {0}")]
22 InvalidLength(u16),
23
24 #[error("Unknown block ID: {0}")]
26 UnknownBlockId(u16),
27
28 #[error("Parse error: {0}")]
30 ParseError(String),
31
32 #[error("I/O error: {0}")]
34 Io(#[from] std::io::Error),
35
36 #[error("End of stream")]
38 EndOfStream,
39}
40
41pub type SbfResult<T> = Result<T, SbfError>;