libexail 0.1.0

A rust library for communicating with Exail devices through their binary protocol
Documentation
//! Error types for the Exail binary protocol parser.

pub type Result<T> = std::result::Result<T, Error>;

#[derive(thiserror::Error, Debug)]
pub enum Error {
    #[error("Invalid sync bytes: 0x{0:02X} 0x{1:02X}")]
    InvalidSync(u8, u8),

    #[error("Invalid checksum: expected 0x{expected:08X}, got 0x{actual:08X}")]
    InvalidChecksum { expected: u32, actual: u32 },

    #[error("Invalid length: expected {expected}, got {actual}")]
    InvalidLength { expected: usize, actual: usize },

    #[error("Unsupported protocol version: {0}")]
    UnsupportedVersion(u8),

    #[error("Invalid block: {0}")]
    InvalidBlock(binrw::Error),

    #[error("Network error: {0}")]
    Network(std::io::Error),

    #[error("Incomplete data: {0}")]
    Incomplete(std::io::Error),
}