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 fn station_management(&mut self) -> &mut impl StationManagement
pub 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.
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