pub struct Ethernet<'d, T: Instance, P: Phy> { /* private fields */ }Expand description
Ethernet driver.
Implementations§
Source§impl<'d, T: Instance, SMA: Instance> Ethernet<'d, T, GenericPhy<Sma<'d, SMA>>>
impl<'d, T: Instance, SMA: Instance> Ethernet<'d, T, GenericPhy<Sma<'d, SMA>>>
Sourcepub fn new<const TX: usize, const RX: usize>(
queue: &'d mut PacketQueue<TX, RX>,
peri: Peri<'d, T>,
irq: impl Binding<ETH, InterruptHandler> + 'd,
ref_clk: Peri<'d, impl RefClkPin<T>>,
crs: Peri<'d, impl CRSPin<T>>,
rx_d0: Peri<'d, impl RXD0Pin<T>>,
rx_d1: Peri<'d, impl RXD1Pin<T>>,
tx_d0: Peri<'d, impl TXD0Pin<T>>,
tx_d1: Peri<'d, impl TXD1Pin<T>>,
tx_en: Peri<'d, impl TXEnPin<T>>,
mac_addr: [u8; 6],
sma: Peri<'d, SMA>,
mdio: Peri<'d, impl MDIOPin<SMA>>,
mdc: Peri<'d, impl MDCPin<SMA>>,
) -> Self
pub fn new<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: Peri<'d, T>, irq: impl Binding<ETH, InterruptHandler> + 'd, ref_clk: Peri<'d, impl RefClkPin<T>>, crs: Peri<'d, impl CRSPin<T>>, rx_d0: Peri<'d, impl RXD0Pin<T>>, rx_d1: Peri<'d, impl RXD1Pin<T>>, tx_d0: Peri<'d, impl TXD0Pin<T>>, tx_d1: Peri<'d, impl TXD1Pin<T>>, tx_en: Peri<'d, impl TXEnPin<T>>, mac_addr: [u8; 6], sma: Peri<'d, SMA>, mdio: Peri<'d, impl MDIOPin<SMA>>, mdc: Peri<'d, impl MDCPin<SMA>>, ) -> Self
Create a new RMII ethernet driver using 7 pins.
This function uses a GenericPhy::new_auto as PHY, created using the
provided SMA, and MDIO and MDC pins.
See Ethernet::new_with_phy for creating an RMII ethernet
river with a non-standard PHY.
Sourcepub fn new_mii<const TX: usize, const RX: usize>(
queue: &'d mut PacketQueue<TX, RX>,
peri: Peri<'d, T>,
irq: impl Binding<ETH, InterruptHandler> + 'd,
rx_clk: Peri<'d, impl RXClkPin<T>>,
tx_clk: Peri<'d, impl TXClkPin<T>>,
rxdv: Peri<'d, impl RXDVPin<T>>,
rx_d0: Peri<'d, impl RXD0Pin<T>>,
rx_d1: Peri<'d, impl RXD1Pin<T>>,
rx_d2: Peri<'d, impl RXD2Pin<T>>,
rx_d3: Peri<'d, impl RXD3Pin<T>>,
tx_d0: Peri<'d, impl TXD0Pin<T>>,
tx_d1: Peri<'d, impl TXD1Pin<T>>,
tx_d2: Peri<'d, impl TXD2Pin<T>>,
tx_d3: Peri<'d, impl TXD3Pin<T>>,
tx_en: Peri<'d, impl TXEnPin<T>>,
mac_addr: [u8; 6],
sma: Peri<'d, SMA>,
mdio: Peri<'d, impl MDIOPin<SMA>>,
mdc: Peri<'d, impl MDCPin<SMA>>,
) -> Self
pub fn new_mii<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: Peri<'d, T>, irq: impl Binding<ETH, InterruptHandler> + 'd, rx_clk: Peri<'d, impl RXClkPin<T>>, tx_clk: Peri<'d, impl TXClkPin<T>>, rxdv: Peri<'d, impl RXDVPin<T>>, rx_d0: Peri<'d, impl RXD0Pin<T>>, rx_d1: Peri<'d, impl RXD1Pin<T>>, rx_d2: Peri<'d, impl RXD2Pin<T>>, rx_d3: Peri<'d, impl RXD3Pin<T>>, tx_d0: Peri<'d, impl TXD0Pin<T>>, tx_d1: Peri<'d, impl TXD1Pin<T>>, tx_d2: Peri<'d, impl TXD2Pin<T>>, tx_d3: Peri<'d, impl TXD3Pin<T>>, tx_en: Peri<'d, impl TXEnPin<T>>, mac_addr: [u8; 6], sma: Peri<'d, SMA>, mdio: Peri<'d, impl MDIOPin<SMA>>, mdc: Peri<'d, impl MDCPin<SMA>>, ) -> Self
Create a new MII ethernet driver using 14 pins.
This function uses a GenericPhy::new_auto as PHY, created using the
provided SMA, and MDIO and MDC pins.
See Ethernet::new_mii_with_phy for creating an RMII ethernet
river with a non-standard PHY.
Source§impl<'d, T: Instance, P: Phy> Ethernet<'d, T, P>
impl<'d, T: Instance, P: Phy> Ethernet<'d, T, P>
Sourcepub fn new_with_phy<const TX: usize, const RX: usize>(
queue: &'d mut PacketQueue<TX, RX>,
peri: Peri<'d, T>,
irq: impl Binding<ETH, InterruptHandler> + 'd,
ref_clk: Peri<'d, impl RefClkPin<T>>,
crs: Peri<'d, impl CRSPin<T>>,
rx_d0: Peri<'d, impl RXD0Pin<T>>,
rx_d1: Peri<'d, impl RXD1Pin<T>>,
tx_d0: Peri<'d, impl TXD0Pin<T>>,
tx_d1: Peri<'d, impl TXD1Pin<T>>,
tx_en: Peri<'d, impl TXEnPin<T>>,
mac_addr: [u8; 6],
phy: P,
) -> Self
pub fn new_with_phy<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: Peri<'d, T>, irq: impl Binding<ETH, InterruptHandler> + 'd, ref_clk: Peri<'d, impl RefClkPin<T>>, crs: Peri<'d, impl CRSPin<T>>, rx_d0: Peri<'d, impl RXD0Pin<T>>, rx_d1: Peri<'d, impl RXD1Pin<T>>, tx_d0: Peri<'d, impl TXD0Pin<T>>, tx_d1: Peri<'d, impl TXD1Pin<T>>, tx_en: Peri<'d, impl TXEnPin<T>>, mac_addr: [u8; 6], phy: P, ) -> Self
Create a new RMII ethernet driver using 7 pins.
Sourcepub fn new_mii_with_phy<const TX: usize, const RX: usize>(
queue: &'d mut PacketQueue<TX, RX>,
peri: Peri<'d, T>,
irq: impl Binding<ETH, InterruptHandler> + 'd,
rx_clk: Peri<'d, impl RXClkPin<T>>,
tx_clk: Peri<'d, impl TXClkPin<T>>,
rxdv: Peri<'d, impl RXDVPin<T>>,
rx_d0: Peri<'d, impl RXD0Pin<T>>,
rx_d1: Peri<'d, impl RXD1Pin<T>>,
rx_d2: Peri<'d, impl RXD2Pin<T>>,
rx_d3: Peri<'d, impl RXD3Pin<T>>,
tx_d0: Peri<'d, impl TXD0Pin<T>>,
tx_d1: Peri<'d, impl TXD1Pin<T>>,
tx_d2: Peri<'d, impl TXD2Pin<T>>,
tx_d3: Peri<'d, impl TXD3Pin<T>>,
tx_en: Peri<'d, impl TXEnPin<T>>,
mac_addr: [u8; 6],
phy: P,
) -> Self
pub fn new_mii_with_phy<const TX: usize, const RX: usize>( queue: &'d mut PacketQueue<TX, RX>, peri: Peri<'d, T>, irq: impl Binding<ETH, InterruptHandler> + 'd, rx_clk: Peri<'d, impl RXClkPin<T>>, tx_clk: Peri<'d, impl TXClkPin<T>>, rxdv: Peri<'d, impl RXDVPin<T>>, rx_d0: Peri<'d, impl RXD0Pin<T>>, rx_d1: Peri<'d, impl RXD1Pin<T>>, rx_d2: Peri<'d, impl RXD2Pin<T>>, rx_d3: Peri<'d, impl RXD3Pin<T>>, tx_d0: Peri<'d, impl TXD0Pin<T>>, tx_d1: Peri<'d, impl TXD1Pin<T>>, tx_d2: Peri<'d, impl TXD2Pin<T>>, tx_d3: Peri<'d, impl TXD3Pin<T>>, tx_en: Peri<'d, impl TXEnPin<T>>, mac_addr: [u8; 6], phy: P, ) -> Self
Create a new MII ethernet driver using 12 pins.
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