Skip to main content

wireband_edge/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum WireBandError {
5    #[error("HTTP request failed: {0}")]
6    Http(#[from] reqwest::Error),
7
8    #[error("JSON error: {0}")]
9    Json(#[from] serde_json::Error),
10
11    #[error("Connection error: {0}")]
12    Connection(String),
13
14    #[error("Frame too short (len={0}, need ≥2)")]
15    FrameTooShort(usize),
16
17    #[error("Frame payload is not valid UTF-8: {0}")]
18    FrameEncoding(#[from] std::str::Utf8Error),
19
20    #[cfg(feature = "mqtt")]
21    #[error("MQTT error: {0}")]
22    Mqtt(String),
23
24    #[cfg(feature = "modbus")]
25    #[error("Modbus error: {0}")]
26    Modbus(String),
27
28    #[cfg(feature = "serial")]
29    #[error("Serial error: {0}")]
30    Serial(String),
31
32    #[cfg(feature = "ble")]
33    #[error("BLE error: {0}")]
34    Ble(String),
35
36    #[cfg(feature = "coap")]
37    #[error("CoAP error: {0}")]
38    Coap(String),
39
40    #[cfg(feature = "crypto")]
41    #[error("Crypto error: {0}")]
42    Crypto(#[from] crate::crypto::CryptoError),
43}
44
45pub type Result<T> = std::result::Result<T, WireBandError>;