use serde_json::Value;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum RadioCodeCalculatorError {
#[error("invalid license")]
InvalidLicense,
#[error("API error: {0:?}")]
ApiError(Value),
#[error("transport error: {0}")]
Transport(String),
}
impl RadioCodeCalculatorError {
pub fn api_error_code(&self) -> Option<i64> {
match self {
RadioCodeCalculatorError::ApiError(v) => v.get("error").and_then(|e| e.as_i64()),
_ => None,
}
}
}
pub struct RadioErrors;
impl RadioErrors {
pub const ERROR_CONNECTION: i32 = -1;
pub const SUCCESS: i32 = 0;
pub const INVALID_INPUT: i32 = 1;
pub const INVALID_COMMAND: i32 = 2;
pub const INVALID_RADIO_MODEL: i32 = 3;
pub const INVALID_SERIAL_LENGTH: i32 = 4;
pub const INVALID_SERIAL_PATTERN: i32 = 5;
pub const INVALID_SERIAL_NOT_SUPPORTED: i32 = 6;
pub const INVALID_EXTRA_LENGTH: i32 = 7;
pub const INVALID_EXTRA_PATTERN: i32 = 8;
pub const INVALID_LICENSE: i32 = 100;
}