diff --git a/src/bus/four_wire.rs b/src/bus/four_wire.rs index a55c55f..f33f5d5 100644 --- a/src/bus/four_wire.rs +++ b/src/bus/four_wire.rs @@ -9,6 +9,8 @@ use crate::bus::Bus; const WRITE_MODE_MASK: u8 = 0b00000_1_00; // TODO This name is not ideal, should be renamed to VDM +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct FourWire + Write, ChipSelect: OutputPin> { cs: ChipSelect, spi: Spi, diff --git a/src/bus/four_wire_ref.rs b/src/bus/four_wire_ref.rs index af3265b..0a653a5 100644 --- a/src/bus/four_wire_ref.rs +++ b/src/bus/four_wire_ref.rs @@ -9,6 +9,8 @@ use crate::bus::{Bus, FourWire, FourWireError}; // TODO This name is not ideal, should be renamed to VDM /// This is just like [crate::bus::FourWire] but takes references instead of ownership /// for the SPI bus and the ChipSelect pin +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct FourWireRef<'a, Spi: Transfer + Write, ChipSelect: OutputPin>( FourWire, OutputPinRef<'a, ChipSelect>>, ); @@ -43,6 +45,7 @@ impl + Write, ChipSelect: OutputPin> Bus } #[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct SpiRef<'a, Spi: Transfer + Write>(pub &'a mut Spi); impl<'a, Spi: Transfer + Write> Transfer for SpiRef<'a, Spi> { @@ -64,6 +67,7 @@ impl<'a, Spi: Transfer + Write> Write for SpiRef<'a, Spi> { } #[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct OutputPinRef<'a, P: OutputPin>(pub &'a mut P); impl<'a, P: OutputPin> OutputPin for OutputPinRef<'a, P> { diff --git a/src/bus/three_wire.rs b/src/bus/three_wire.rs index fe55615..1a21f82 100644 --- a/src/bus/three_wire.rs +++ b/src/bus/three_wire.rs @@ -12,6 +12,8 @@ const FIXED_DATA_LENGTH_MODE_2: u8 = 0b000000_10; const FIXED_DATA_LENGTH_MODE_4: u8 = 0b000000_11; // TODO This name is not ideal, should be renamed to FDM +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct ThreeWire + Write> { spi: Spi, } diff --git a/src/device.rs b/src/device.rs index 107a600..bf41a7c 100644 --- a/src/device.rs +++ b/src/device.rs @@ -19,6 +19,8 @@ impl From for ResetError { } } +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub(crate) struct DeviceState { host: HostImpl, sockets: [u8; 1], @@ -104,6 +106,8 @@ impl Device { } } +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct InactiveDevice(DeviceState); impl InactiveDevice { diff --git a/src/host/dhcp.rs b/src/host/dhcp.rs index 521a831..b8a933b 100644 --- a/src/host/dhcp.rs +++ b/src/host/dhcp.rs @@ -2,6 +2,8 @@ use crate::bus::Bus; use crate::host::Host; use crate::MacAddress; +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct Dhcp { // settings: HostConfig, // current: HostConfig, diff --git a/src/host/manual.rs b/src/host/manual.rs index 0f61022..5b0b32c 100644 --- a/src/host/manual.rs +++ b/src/host/manual.rs @@ -3,6 +3,8 @@ use crate::host::{Host, HostConfig}; use crate::MacAddress; use embedded_nal::Ipv4Addr; +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct Manual { is_setup: bool, settings: HostConfig, diff --git a/src/host/mod.rs b/src/host/mod.rs index 206ec91..8aa1b79 100644 --- a/src/host/mod.rs +++ b/src/host/mod.rs @@ -8,10 +8,15 @@ use crate::register; use crate::MacAddress; use embedded_nal::Ipv4Addr; +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct HostConfig { mac: MacAddress, + #[cfg_attr(feature = "defmt", defmt(Display2Format))] ip: Ipv4Addr, + #[cfg_attr(feature = "defmt", defmt(Display2Format))] gateway: Ipv4Addr, + #[cfg_attr(feature = "defmt", defmt(Display2Format))] subnet: Ipv4Addr, } diff --git a/src/lib.rs b/src/lib.rs index ac237a7..cbe9761 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,7 +22,8 @@ pub use uninitialized_device::UninitializedDevice; /// Settings for wake on LAN. Allows the W5500 to optionally emit an interrupt upon receiving a packet #[repr(u8)] -#[derive(Copy, Clone, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub enum OnWakeOnLan { InvokeInterrupt = 0b00100000, Ignore = 0b00000000, @@ -30,7 +31,8 @@ pub enum OnWakeOnLan { /// Settings for ping. Allows the W5500 to respond to or ignore network ping requests #[repr(u8)] -#[derive(Copy, Clone, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub enum OnPingRequest { Respond = 0b00000000, Ignore = 0b00010000, @@ -39,20 +41,23 @@ pub enum OnPingRequest { /// Use [ConnectionType::PPoE] when talking /// to an ADSL modem. Otherwise use [ConnectionType::Ethernet] #[repr(u8)] -#[derive(Copy, Clone, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub enum ConnectionType { PPoE = 0b00001000, Ethernet = 0b00000000, } -#[derive(Copy, Clone, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[repr(u8)] pub enum ArpResponses { Cache = 0b00000000, DropAfterUse = 0b00000010, } -#[derive(Copy, Clone, PartialEq)] +#[derive(Copy, Clone, Debug, PartialEq)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct Mode { pub on_wake_on_lan: OnWakeOnLan, pub on_ping_request: OnPingRequest, diff --git a/src/net.rs b/src/net.rs index c77cef2..b504bdd 100644 --- a/src/net.rs +++ b/src/net.rs @@ -18,6 +18,7 @@ pub use embedded_nal::Ipv4Addr; /// /// This is an EUI-48 MAC address (previously called MAC-48). #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Hash, Default)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct MacAddress { /// Octets of the MAC address. pub octets: [u8; 6], diff --git a/src/raw_device.rs b/src/raw_device.rs index fe80a6d..25413fc 100644 --- a/src/raw_device.rs +++ b/src/raw_device.rs @@ -1,6 +1,8 @@ use crate::{bus::Bus, register, socket::Socket, uninitialized_device::InitializeError}; /// The W5500 operating in MACRAW mode to send and receive ethernet frames. +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct RawDevice { bus: SpiBus, raw_socket: Socket, diff --git a/src/tcp.rs b/src/tcp.rs index 99ecc11..14e7c57 100644 --- a/src/tcp.rs +++ b/src/tcp.rs @@ -11,11 +11,12 @@ use embedded_nal::{nb, IpAddr, Ipv4Addr, SocketAddr, SocketAddrV4, TcpClientStac use core::convert::TryFrom; #[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub enum TcpSocketError { NoMoreSockets, NotReady, UnsupportedAddress, - Other(E), + Other(#[cfg_attr(feature = "defmt", defmt(Debug2Format))] E), UnsupportedMode, } @@ -25,6 +26,8 @@ impl From for TcpSocketError { } } +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct TcpSocket { socket: Socket, } diff --git a/src/uninitialized_device.rs b/src/uninitialized_device.rs index 30c7975..ae230a3 100644 --- a/src/uninitialized_device.rs +++ b/src/uninitialized_device.rs @@ -9,6 +9,8 @@ use crate::raw_device::RawDevice; use crate::register; use crate::{MacAddress, Mode}; +#[derive(Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub struct UninitializedDevice { bus: SpiBus, }