Added module containing new register address representations, added chip mode init/reset
This commit is contained in:
parent
3177bad09f
commit
ce36644d9c
7 changed files with 43 additions and 9 deletions
|
|
@ -2,19 +2,36 @@ use bus::{ActiveBus, ActiveFourWire, ActiveThreeWire};
|
|||
use embedded_hal::digital::v2::OutputPin;
|
||||
use embedded_hal::spi::FullDuplex;
|
||||
use w5500::W5500;
|
||||
use crate::Settings;
|
||||
use register;
|
||||
|
||||
pub struct UninitializedW5500<SpiBus: ActiveBus> {
|
||||
bus: SpiBus,
|
||||
}
|
||||
|
||||
impl<SpiBus: ActiveBus> UninitializedW5500<SpiBus> {
|
||||
pub fn initialize(self) -> W5500<SpiBus> {
|
||||
// TODO actually initialize chip
|
||||
W5500::new(self.bus)
|
||||
pub fn initialize(mut self, settings: Settings) -> Result<W5500<SpiBus>, SpiBus::Error> {
|
||||
self.set_mode(settings)?;
|
||||
// TODO set up IP/etc
|
||||
// TODO give ownership of all sockets
|
||||
Ok(W5500::new(self.bus))
|
||||
}
|
||||
pub fn new(bus: SpiBus) -> UninitializedW5500<SpiBus> {
|
||||
UninitializedW5500 { bus: bus }
|
||||
}
|
||||
|
||||
fn set_mode(
|
||||
&mut self,
|
||||
settings: Settings,
|
||||
) -> Result<(), SpiBus::Error> {
|
||||
let mut mode = [0];
|
||||
mode[0] |= settings.on_wake_on_lan as u8;
|
||||
mode[0] |= settings.on_ping_request as u8;
|
||||
mode[0] |= settings.connection_type as u8;
|
||||
mode[0] |= settings.arp_responses as u8;
|
||||
block!(self.bus.transfer_frame(register::COMMON, register::common::MODE, true, &mut mode))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl<Spi: FullDuplex<u8>, ChipSelect: OutputPin>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue