Remove unnecessary prefixes/suffixes from Error and TxEvent enums (#2898)

* Remove unnecessary prefixes/suffixes from Error and TxEvent enums

* Remove #[allow(clippy::enum_variant_names ...)

* Use object+verb naming in Error enum variant

* Migration guide entry

* Remove ZeroLengthBufferPassed variant

* docs
This commit is contained in:
Juraj Sadel 2025-01-07 17:08:10 +01:00 committed by GitHub
parent bb406cec6b
commit f1276f7d1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 33 deletions

View File

@ -372,7 +372,7 @@ The `Config` struct's setters are now prefixed with `with_`. `parity_none`, `par
The `DataBits`, `Parity`, and `StopBits` enum variants are no longer prefixed with the name of the enum. The `DataBits`, `Parity`, and `StopBits` enum variants are no longer prefixed with the name of the enum.
e.g.) e.g.
```diff ```diff
- DataBits::DataBits8 - DataBits::DataBits8
@ -387,6 +387,15 @@ The previous blocking implementation of `read_bytes` has been removed, and the n
Any code which was previously using `read_bytes` to fill a buffer in a blocking manner will now need to implement the necessary logic to block until the buffer is filled in their application instead. Any code which was previously using `read_bytes` to fill a buffer in a blocking manner will now need to implement the necessary logic to block until the buffer is filled in their application instead.
The `Error` enum variant uses object+verb naming.
e.g.
```diff
- RxGlichDetected
+ GlitchOccurred
```
## Spi `with_miso` has been split ## Spi `with_miso` has been split
Previously, `with_miso` set up the provided pin as an input and output, which was necessary for half duplex. Previously, `with_miso` set up the provided pin as an input and output, which was necessary for half duplex.

View File

@ -257,36 +257,29 @@ const CMD_CHAR_DEFAULT: u8 = 0x2b;
#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[non_exhaustive] #[non_exhaustive]
pub enum Error { pub enum Error {
/// An invalid configuration argument was provided. /// The RX FIFO overflow happened.
/// ///
/// This error occurs when an incorrect or invalid argument is passed during /// This error occurs when RX FIFO is full and a new byte is received.
/// the configuration of the UART peripheral. FifoOverflowed,
InvalidArgument,
/// The RX FIFO overflowed.
RxFifoOvf,
/// A glitch was detected on the RX line. /// A glitch was detected on the RX line.
/// ///
/// This error occurs when an unexpected or erroneous signal (glitch) is /// This error occurs when an unexpected or erroneous signal (glitch) is
/// detected on the UART RX line, which could lead to incorrect data /// detected on the UART RX line, which could lead to incorrect data
/// reception. /// reception.
RxGlitchDetected, GlitchOccurred,
/// A framing error was detected on the RX line. /// A framing error was detected on the RX line.
/// ///
/// This error occurs when the received data does not conform to the /// This error occurs when the received data does not conform to the
/// expected UART frame format. /// expected UART frame format.
#[allow(clippy::enum_variant_names, reason = "Frame error is a common term")] FrameFormatViolated,
RxFrameError,
/// A parity error was detected on the RX line. /// A parity error was detected on the RX line.
/// ///
/// This error occurs when the parity bit in the received data does not /// This error occurs when the parity bit in the received data does not
/// match the expected parity configuration. /// match the expected parity configuration.
/// with the `async` feature. ParityMismatch,
#[allow(clippy::enum_variant_names, reason = "Parity error is a common term")]
RxParityError,
} }
impl core::error::Error for Error {} impl core::error::Error for Error {}
@ -294,11 +287,10 @@ impl core::error::Error for Error {}
impl core::fmt::Display for Error { impl core::fmt::Display for Error {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self { match self {
Error::InvalidArgument => write!(f, "An invalid configuration argument was provided"), Error::FifoOverflowed => write!(f, "The RX FIFO overflowed"),
Error::RxFifoOvf => write!(f, "The RX FIFO overflowed"), Error::GlitchOccurred => write!(f, "A glitch was detected on the RX line"),
Error::RxGlitchDetected => write!(f, "A glitch was detected on the RX line"), Error::FrameFormatViolated => write!(f, "A framing error was detected on the RX line"),
Error::RxFrameError => write!(f, "A framing error was detected on the RX line"), Error::ParityMismatch => write!(f, "A parity error was detected on the RX line"),
Error::RxParityError => write!(f, "A parity error was detected on the RX line"),
} }
} }
} }
@ -1527,8 +1519,8 @@ where
#[derive(Debug, EnumSetType)] #[derive(Debug, EnumSetType)]
pub(crate) enum TxEvent { pub(crate) enum TxEvent {
TxDone, Done,
TxFiFoEmpty, FiFoEmpty,
} }
#[derive(Debug, EnumSetType)] #[derive(Debug, EnumSetType)]
@ -1659,8 +1651,8 @@ impl UartTxFuture {
let mut event_triggered = false; let mut event_triggered = false;
for event in self.events { for event in self.events {
event_triggered |= match event { event_triggered |= match event {
TxEvent::TxDone => interrupts_enabled.tx_done().bit_is_clear(), TxEvent::Done => interrupts_enabled.tx_done().bit_is_clear(),
TxEvent::TxFiFoEmpty => interrupts_enabled.txfifo_empty().bit_is_clear(), TxEvent::FiFoEmpty => interrupts_enabled.txfifo_empty().bit_is_clear(),
} }
} }
event_triggered event_triggered
@ -1670,8 +1662,8 @@ impl UartTxFuture {
self.uart.register_block().int_ena().modify(|_, w| { self.uart.register_block().int_ena().modify(|_, w| {
for event in self.events { for event in self.events {
match event { match event {
TxEvent::TxDone => w.tx_done().bit(enable), TxEvent::Done => w.tx_done().bit(enable),
TxEvent::TxFiFoEmpty => w.txfifo_empty().bit(enable), TxEvent::FiFoEmpty => w.txfifo_empty().bit(enable),
}; };
} }
w w
@ -1759,7 +1751,7 @@ where
} }
offset = next_offset; offset = next_offset;
UartTxFuture::new(self.uart.reborrow(), TxEvent::TxFiFoEmpty).await; UartTxFuture::new(self.uart.reborrow(), TxEvent::FiFoEmpty).await;
} }
Ok(count) Ok(count)
@ -1773,7 +1765,7 @@ where
pub async fn flush_async(&mut self) -> Result<(), Error> { pub async fn flush_async(&mut self) -> Result<(), Error> {
let count = self.tx_fifo_count(); let count = self.tx_fifo_count();
if count > 0 { if count > 0 {
UartTxFuture::new(self.uart.reborrow(), TxEvent::TxDone).await; UartTxFuture::new(self.uart.reborrow(), TxEvent::Done).await;
} }
Ok(()) Ok(())
@ -1803,10 +1795,10 @@ where
/// ///
/// # Ok /// # Ok
/// When successful, returns the number of bytes written to buf. /// When successful, returns the number of bytes written to buf.
/// This method will never return Ok(0) /// If the passed in buffer is of length 0, Ok(0) is returned.
pub async fn read_async(&mut self, buf: &mut [u8]) -> Result<usize, Error> { pub async fn read_async(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
if buf.is_empty() { if buf.is_empty() {
return Err(Error::InvalidArgument); return Ok(0);
} }
loop { loop {
@ -1838,10 +1830,10 @@ where
// check error events // check error events
for event_happened in events_happened { for event_happened in events_happened {
match event_happened { match event_happened {
RxEvent::FifoOvf => return Err(Error::RxFifoOvf), RxEvent::FifoOvf => return Err(Error::FifoOverflowed),
RxEvent::GlitchDetected => return Err(Error::RxGlitchDetected), RxEvent::GlitchDetected => return Err(Error::GlitchOccurred),
RxEvent::FrameError => return Err(Error::RxFrameError), RxEvent::FrameError => return Err(Error::FrameFormatViolated),
RxEvent::ParityError => return Err(Error::RxParityError), RxEvent::ParityError => return Err(Error::ParityMismatch),
RxEvent::FifoFull | RxEvent::CmdCharDetected | RxEvent::FifoTout => continue, RxEvent::FifoFull | RxEvent::CmdCharDetected | RxEvent::FifoTout => continue,
} }
} }