diff --git a/src/socket/mod.rs b/src/socket/mod.rs index 6abd085..1cd9ce2 100644 --- a/src/socket/mod.rs +++ b/src/socket/mod.rs @@ -168,6 +168,17 @@ pub trait Socket { } } } + + fn dump_register(&self, bus: &mut SpiBus) -> Result<[u8; 0x30], SpiBus::Error> { + let mut register = [0u8; 0x30]; + block!(bus.transfer_frame( + self.register(), + 0u16, + false, + &mut register + ))?; + Ok(register) + } } pub type OwnedSockets = ( diff --git a/src/udp/mod.rs b/src/udp/mod.rs index 351ecd5..a192f4e 100644 --- a/src/udp/mod.rs +++ b/src/udp/mod.rs @@ -34,6 +34,10 @@ impl Ok(UdpSocket { w5500, socket }) } + pub fn dump_register(&mut self) -> Result<[u8; 0x30], SpiBus::Error> { + Ok(self.socket.dump_register(&mut self.w5500.bus)?) + } + /// Returns a UDP packet if one is available. Will return `None` if no UDP packets are in the socket's buffer pub fn receive(mut self) -> Result>, SpiBus::Error> { if !self