Added module containing new register address representations, added chip mode init/reset

This commit is contained in:
Jonah Dahlquist 2019-08-08 12:11:13 -05:00 committed by Jonah Dahlquist
commit ce36644d9c
7 changed files with 43 additions and 9 deletions

View file

@ -3,6 +3,7 @@ use crate::uninitialized_w5500::UninitializedW5500;
use bus::{ActiveBus, ActiveFourWire, ActiveThreeWire, FourWire, ThreeWire};
use embedded_hal::digital::v2::OutputPin;
use embedded_hal::spi::FullDuplex;
use register;
pub struct W5500<SpiBus: ActiveBus> {
bus: SpiBus,
@ -12,10 +13,19 @@ impl<SpiBus: ActiveBus> W5500<SpiBus> {
pub fn new(bus: SpiBus) -> Self {
W5500 { bus }
}
pub fn reset(self) -> UninitializedW5500<SpiBus> {
// TODO reset chip
UninitializedW5500::new(self.bus)
pub fn reset(mut self) -> Result<UninitializedW5500<SpiBus>, SpiBus::Error> {
// TODO accept all sockets back
self.clear_mode()?;
Ok(UninitializedW5500::new(self.bus))
}
fn clear_mode(&mut self) -> Result<(), SpiBus::Error> {
// reset bit
let mut mode = [0b10000000];
block!(self.bus.transfer_frame(register::COMMON, register::common::MODE, true, &mut mode))?;
Ok(())
}
//TODO open_udp_socket
}