use thiserror::Error as ThisError;
#[derive(Debug, ThisError)]
pub enum Storm32Error {
#[error("Serial port error: {0}")]
SerialError(#[from] serialport::Error),
#[error("I/O error: {0}")]
IoError(#[from] std::io::Error),
#[error("Invalid response: {0}")]
ProtocolError(String),
#[error("CRC check failed: expected valid CRC, got 0x{0:04X}")]
CrcError(u16),
#[error("Invalid input: {0}")]
ValidationError(String),
#[error("Device error: {0}")]
DeviceError(String),
}
pub type Result<T> = std::result::Result<T, Storm32Error>;