pub struct Ethernet<'d, T: Instance, P: PHY> { /* private fields */ }
Expand description
Ethernet driver.
Implementations§
source§impl<'d, T: Instance, P: PHY> Ethernet<'d, T, P>
impl<'d, T: Instance, P: PHY> Ethernet<'d, T, P>
sourcepub fn new<const TX: usize, const RX: usize>(
queue: &'d mut PacketQueue<TX, RX>,
peri: impl Peripheral<P = T> + 'd,
irq: impl Binding<ETH, InterruptHandler> + 'd,
ref_clk: impl Peripheral<P = impl RefClkPin<T>> + 'd,
mdio: impl Peripheral<P = impl MDIOPin<T>> + 'd,
mdc: impl Peripheral<P = impl MDCPin<T>> + 'd,
crs: impl Peripheral<P = impl CRSPin<T>> + 'd,
rx_d0: impl Peripheral<P = impl RXD0Pin<T>> + 'd,
rx_d1: impl Peripheral<P = impl RXD1Pin<T>> + 'd,
tx_d0: impl Peripheral<P = impl TXD0Pin<T>> + 'd,
tx_d1: impl Peripheral<P = impl TXD1Pin<T>> + 'd,
tx_en: impl Peripheral<P = impl TXEnPin<T>> + 'd,
phy: P,
mac_addr: [u8; 6],
) -> Self
pub fn new<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: impl Peripheral<P = T> + 'd, irq: impl Binding<ETH, InterruptHandler> + 'd, ref_clk: impl Peripheral<P = impl RefClkPin<T>> + 'd, mdio: impl Peripheral<P = impl MDIOPin<T>> + 'd, mdc: impl Peripheral<P = impl MDCPin<T>> + 'd, crs: impl Peripheral<P = impl CRSPin<T>> + 'd, rx_d0: impl Peripheral<P = impl RXD0Pin<T>> + 'd, rx_d1: impl Peripheral<P = impl RXD1Pin<T>> + 'd, tx_d0: impl Peripheral<P = impl TXD0Pin<T>> + 'd, tx_d1: impl Peripheral<P = impl TXD1Pin<T>> + 'd, tx_en: impl Peripheral<P = impl TXEnPin<T>> + 'd, phy: P, mac_addr: [u8; 6], ) -> Self
Create a new RMII ethernet driver using 9 pins.
sourcepub fn new_mii<const TX: usize, const RX: usize>(
queue: &'d mut PacketQueue<TX, RX>,
peri: impl Peripheral<P = T> + 'd,
irq: impl Binding<ETH, InterruptHandler> + 'd,
rx_clk: impl Peripheral<P = impl RXClkPin<T>> + 'd,
tx_clk: impl Peripheral<P = impl TXClkPin<T>> + 'd,
mdio: impl Peripheral<P = impl MDIOPin<T>> + 'd,
mdc: impl Peripheral<P = impl MDCPin<T>> + 'd,
rxdv: impl Peripheral<P = impl RXDVPin<T>> + 'd,
rx_d0: impl Peripheral<P = impl RXD0Pin<T>> + 'd,
rx_d1: impl Peripheral<P = impl RXD1Pin<T>> + 'd,
rx_d2: impl Peripheral<P = impl RXD2Pin<T>> + 'd,
rx_d3: impl Peripheral<P = impl RXD3Pin<T>> + 'd,
tx_d0: impl Peripheral<P = impl TXD0Pin<T>> + 'd,
tx_d1: impl Peripheral<P = impl TXD1Pin<T>> + 'd,
tx_d2: impl Peripheral<P = impl TXD2Pin<T>> + 'd,
tx_d3: impl Peripheral<P = impl TXD3Pin<T>> + 'd,
tx_en: impl Peripheral<P = impl TXEnPin<T>> + 'd,
phy: P,
mac_addr: [u8; 6],
) -> Self
pub fn new_mii<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: impl Peripheral<P = T> + 'd, irq: impl Binding<ETH, InterruptHandler> + 'd, rx_clk: impl Peripheral<P = impl RXClkPin<T>> + 'd, tx_clk: impl Peripheral<P = impl TXClkPin<T>> + 'd, mdio: impl Peripheral<P = impl MDIOPin<T>> + 'd, mdc: impl Peripheral<P = impl MDCPin<T>> + 'd, rxdv: impl Peripheral<P = impl RXDVPin<T>> + 'd, rx_d0: impl Peripheral<P = impl RXD0Pin<T>> + 'd, rx_d1: impl Peripheral<P = impl RXD1Pin<T>> + 'd, rx_d2: impl Peripheral<P = impl RXD2Pin<T>> + 'd, rx_d3: impl Peripheral<P = impl RXD3Pin<T>> + 'd, tx_d0: impl Peripheral<P = impl TXD0Pin<T>> + 'd, tx_d1: impl Peripheral<P = impl TXD1Pin<T>> + 'd, tx_d2: impl Peripheral<P = impl TXD2Pin<T>> + 'd, tx_d3: impl Peripheral<P = impl TXD3Pin<T>> + 'd, tx_en: impl Peripheral<P = impl TXEnPin<T>> + 'd, phy: P, mac_addr: [u8; 6], ) -> Self
Create a new MII ethernet driver using 14 pins.
source§impl<'d, T: Instance, P: PHY> Ethernet<'d, T, P>
impl<'d, T: Instance, P: PHY> Ethernet<'d, T, P>
sourcepub unsafe fn station_management(&mut self) -> &mut impl StationManagement
pub unsafe fn station_management(&mut self) -> &mut impl StationManagement
Directly expose the SMI interface used by the Ethernet driver.
This can be used to for example configure special PHY registers for compliance testing.
§Safety
Revert any temporary PHY register changes such as to enable test modes before handing the Ethernet device over to the networking stack otherwise things likely won’t work.
Trait Implementations§
source§impl<'d, T: Instance, P: PHY> Driver for Ethernet<'d, T, P>
impl<'d, T: Instance, P: PHY> Driver for Ethernet<'d, T, P>
source§type TxToken<'a> = TxToken<'a, 'd>
where
Self: 'a
type TxToken<'a> = TxToken<'a, 'd> where Self: 'a
A token to transmit a single network packet.
source§fn receive(
&mut self,
cx: &mut Context<'_>,
) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)>
fn receive( &mut self, cx: &mut Context<'_>, ) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)>
Construct a token pair consisting of one receive token and one transmit token. Read more
source§fn transmit(&mut self, cx: &mut Context<'_>) -> Option<Self::TxToken<'_>>
fn transmit(&mut self, cx: &mut Context<'_>) -> Option<Self::TxToken<'_>>
Construct a transmit token. Read more
source§fn capabilities(&self) -> Capabilities
fn capabilities(&self) -> Capabilities
Get a description of device capabilities.
source§fn hardware_address(&self) -> HardwareAddress
fn hardware_address(&self) -> HardwareAddress
Get the device’s hardware address. Read more
Auto Trait Implementations§
impl<'d, T, P> Freeze for Ethernet<'d, T, P>
impl<'d, T, P> !RefUnwindSafe for Ethernet<'d, T, P>
impl<'d, T, P> Send for Ethernet<'d, T, P>where
P: Send,
impl<'d, T, P> !Sync for Ethernet<'d, T, P>
impl<'d, T, P> Unpin for Ethernet<'d, T, P>
impl<'d, T, P> !UnwindSafe for Ethernet<'d, T, P>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more