status and irq flags formatting with defmt
This commit is contained in:
		
							
								
								
									
										147
									
								
								src/consts.rs
									
									
									
									
									
								
							
							
						
						
									
										147
									
								
								src/consts.rs
									
									
									
									
									
								
							| @@ -1,4 +1,5 @@ | |||||||
| #![allow(unused)] | #![allow(unused)] | ||||||
|  |  | ||||||
| pub(crate) const FUNC_BUS: u32 = 0; | pub(crate) const FUNC_BUS: u32 = 0; | ||||||
| pub(crate) const FUNC_BACKPLANE: u32 = 1; | pub(crate) const FUNC_BACKPLANE: u32 = 1; | ||||||
| pub(crate) const FUNC_WLAN: u32 = 2; | pub(crate) const FUNC_WLAN: u32 = 2; | ||||||
| @@ -103,3 +104,149 @@ pub(crate) const WRITE: bool = true; | |||||||
| pub(crate) const READ: bool = false; | pub(crate) const READ: bool = false; | ||||||
| pub(crate) const INC_ADDR: bool = true; | pub(crate) const INC_ADDR: bool = true; | ||||||
| pub(crate) const FIXED_ADDR: bool = false; | pub(crate) const FIXED_ADDR: bool = false; | ||||||
|  |  | ||||||
|  | #[allow(dead_code)] | ||||||
|  | pub(crate) struct FormatStatus(pub u32); | ||||||
|  |  | ||||||
|  | #[cfg(feature = "defmt")] | ||||||
|  | impl defmt::Format for FormatStatus { | ||||||
|  |     fn format(&self, fmt: defmt::Formatter) { | ||||||
|  |         macro_rules! implm { | ||||||
|  |             ($($name:ident),*) => { | ||||||
|  |                 $( | ||||||
|  |                     if self.0 & $name > 0 { | ||||||
|  |                         defmt::write!(fmt, " | {}", &stringify!($name)[7..]); | ||||||
|  |                     } | ||||||
|  |                 )* | ||||||
|  |             }; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         implm!( | ||||||
|  |             STATUS_DATA_NOT_AVAILABLE, | ||||||
|  |             STATUS_UNDERFLOW, | ||||||
|  |             STATUS_OVERFLOW, | ||||||
|  |             STATUS_F2_INTR, | ||||||
|  |             STATUS_F3_INTR, | ||||||
|  |             STATUS_F2_RX_READY, | ||||||
|  |             STATUS_F3_RX_READY, | ||||||
|  |             STATUS_HOST_CMD_DATA_ERR, | ||||||
|  |             STATUS_F2_PKT_AVAILABLE, | ||||||
|  |             STATUS_F3_PKT_AVAILABLE | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[cfg(feature = "log")] | ||||||
|  | impl core::fmt::Debug for FormatStatus { | ||||||
|  |     fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::fmt::Result { | ||||||
|  |         macro_rules! implm { | ||||||
|  |             ($($name:ident),*) => { | ||||||
|  |                 $( | ||||||
|  |                     if self.0 & $name > 0 { | ||||||
|  |                         core::write!(fmt, " | {}", &stringify!($name)[7..])?; | ||||||
|  |                     } | ||||||
|  |                 )* | ||||||
|  |             }; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         implm!( | ||||||
|  |             STATUS_DATA_NOT_AVAILABLE, | ||||||
|  |             STATUS_UNDERFLOW, | ||||||
|  |             STATUS_OVERFLOW, | ||||||
|  |             STATUS_F2_INTR, | ||||||
|  |             STATUS_F3_INTR, | ||||||
|  |             STATUS_F2_RX_READY, | ||||||
|  |             STATUS_F3_RX_READY, | ||||||
|  |             STATUS_HOST_CMD_DATA_ERR, | ||||||
|  |             STATUS_F2_PKT_AVAILABLE, | ||||||
|  |             STATUS_F3_PKT_AVAILABLE | ||||||
|  |         ); | ||||||
|  |         Ok(()) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[cfg(feature = "log")] | ||||||
|  | impl core::fmt::Display for FormatStatus { | ||||||
|  |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { | ||||||
|  |         core::fmt::Debug::fmt(self, f) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[allow(dead_code)] | ||||||
|  | pub(crate) struct FormatInterrupt(pub u16); | ||||||
|  |  | ||||||
|  | #[cfg(feature = "defmt")] | ||||||
|  | impl defmt::Format for FormatInterrupt { | ||||||
|  |     fn format(&self, fmt: defmt::Formatter) { | ||||||
|  |         macro_rules! implm { | ||||||
|  |             ($($name:ident),*) => { | ||||||
|  |                 $( | ||||||
|  |                     if self.0 & $name > 0 { | ||||||
|  |                         defmt::write!(fmt, " | {}", &stringify!($name)[4..]); | ||||||
|  |                     } | ||||||
|  |                 )* | ||||||
|  |             }; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         implm!( | ||||||
|  |             IRQ_DATA_UNAVAILABLE, | ||||||
|  |             IRQ_F2_F3_FIFO_RD_UNDERFLOW, | ||||||
|  |             IRQ_F2_F3_FIFO_WR_OVERFLOW, | ||||||
|  |             IRQ_COMMAND_ERROR, | ||||||
|  |             IRQ_DATA_ERROR, | ||||||
|  |             IRQ_F2_PACKET_AVAILABLE, | ||||||
|  |             IRQ_F3_PACKET_AVAILABLE, | ||||||
|  |             IRQ_F1_OVERFLOW, | ||||||
|  |             IRQ_MISC_INTR0, | ||||||
|  |             IRQ_MISC_INTR1, | ||||||
|  |             IRQ_MISC_INTR2, | ||||||
|  |             IRQ_MISC_INTR3, | ||||||
|  |             IRQ_MISC_INTR4, | ||||||
|  |             IRQ_F1_INTR, | ||||||
|  |             IRQ_F2_INTR, | ||||||
|  |             IRQ_F3_INTR | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[cfg(feature = "log")] | ||||||
|  | impl core::fmt::Debug for FormatInterrupt { | ||||||
|  |     fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::fmt::Result { | ||||||
|  |         macro_rules! implm { | ||||||
|  |             ($($name:ident),*) => { | ||||||
|  |                 $( | ||||||
|  |                     if self.0 & $name > 0 { | ||||||
|  |                         core::write!(fmt, " | {}", &stringify!($name)[7..])?; | ||||||
|  |                     } | ||||||
|  |                 )* | ||||||
|  |             }; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         implm!( | ||||||
|  |             IRQ_DATA_UNAVAILABLE, | ||||||
|  |             IRQ_F2_F3_FIFO_RD_UNDERFLOW, | ||||||
|  |             IRQ_F2_F3_FIFO_WR_OVERFLOW, | ||||||
|  |             IRQ_COMMAND_ERROR, | ||||||
|  |             IRQ_DATA_ERROR, | ||||||
|  |             IRQ_F2_PACKET_AVAILABLE, | ||||||
|  |             IRQ_F3_PACKET_AVAILABLE, | ||||||
|  |             IRQ_F1_OVERFLOW, | ||||||
|  |             IRQ_MISC_INTR0, | ||||||
|  |             IRQ_MISC_INTR1, | ||||||
|  |             IRQ_MISC_INTR2, | ||||||
|  |             IRQ_MISC_INTR3, | ||||||
|  |             IRQ_MISC_INTR4, | ||||||
|  |             IRQ_F1_INTR, | ||||||
|  |             IRQ_F2_INTR, | ||||||
|  |             IRQ_F3_INTR | ||||||
|  |         ); | ||||||
|  |         Ok(()) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[cfg(feature = "log")] | ||||||
|  | impl core::fmt::Display for FormatInterrupt { | ||||||
|  |     fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { | ||||||
|  |         core::fmt::Debug::fmt(self, f) | ||||||
|  |     } | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user