From b01f444822d1aa80435b36c2e272e99b936edca5 Mon Sep 17 00:00:00 2001 From: Kirill Mikhailov <62840029+playfulFence@users.noreply.github.com> Date: Thu, 11 Sep 2025 13:17:29 +0200 Subject: [PATCH] Implement `Error` trait more (#4097) * Implement `Error` trait more fmt * oi * fix --- esp-hal/src/uart/mod.rs | 2 ++ esp-radio/src/ble/controller/mod.rs | 10 ++++++++++ esp-radio/src/lib.rs | 29 +++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/esp-hal/src/uart/mod.rs b/esp-hal/src/uart/mod.rs index 9b559ebf9..f880de0cb 100644 --- a/esp-hal/src/uart/mod.rs +++ b/esp-hal/src/uart/mod.rs @@ -140,6 +140,8 @@ impl core::fmt::Display for TxError { } } +impl core::error::Error for TxError {} + #[instability::unstable] impl embedded_io::Error for TxError { fn kind(&self) -> embedded_io::ErrorKind { diff --git a/esp-radio/src/ble/controller/mod.rs b/esp-radio/src/ble/controller/mod.rs index 8adef84db..50992b526 100644 --- a/esp-radio/src/ble/controller/mod.rs +++ b/esp-radio/src/ble/controller/mod.rs @@ -47,6 +47,16 @@ impl Error for BleConnectorError { } } +impl core::error::Error for BleConnectorError {} + +impl core::fmt::Display for BleConnectorError { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + match self { + BleConnectorError::Unknown => write!(f, "Unknown BLE error occured"), + } + } +} + impl ErrorType for BleConnector<'_> { type Error = BleConnectorError; } diff --git a/esp-radio/src/lib.rs b/esp-radio/src/lib.rs index c437949d8..f214bd31b 100644 --- a/esp-radio/src/lib.rs +++ b/esp-radio/src/lib.rs @@ -354,6 +354,35 @@ pub enum InitializationError { Adc2IsUsed, } +impl core::error::Error for InitializationError {} + +impl core::fmt::Display for InitializationError { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + match self { + InitializationError::General(e) => write!(f, "A general error {e} occurred"), + #[cfg(feature = "wifi")] + InitializationError::WifiError(e) => { + write!(f, "Wi-Fi driver related error occured: {e}") + } + InitializationError::WrongClockConfig => { + write!(f, "The current CPU clock frequency is too low") + } + InitializationError::InterruptsDisabled => write!( + f, + "Attempted to initialize while interrupts are disabled (Unsupported)" + ), + InitializationError::SchedulerNotInitialized => { + write!(f, "The scheduler is not initialized") + } + #[cfg(esp32)] + InitializationError::Adc2IsUsed => write!( + f, + "ADC2 cannot be used with `radio` functionality on `esp32`" + ), + } + } +} + #[cfg(feature = "wifi")] impl From for InitializationError { fn from(value: WifiError) -> Self {