Trait smoltcp::phy::Device
[−]
[src]
pub trait Device { type RxBuffer: AsRef<[u8]>; type TxBuffer: AsRef<[u8]> + AsMut<[u8]>; fn mtu(&self) -> usize; fn receive(&mut self) -> Result<Self::RxBuffer, Error>; fn transmit(&mut self, length: usize) -> Result<Self::TxBuffer, Error>; }
An interface for sending and receiving raw network frames.
It is expected that a Device
implementation would allocate memory for both sending
and receiving packets from memory pools; hence, the stack borrows the buffer for a packet
that it is about to receive, as well for a packet that it is about to send, from the device.
Associated Types
Required Methods
fn mtu(&self) -> usize
Get maximum transmission unit.
The network device is unable to send or receive frames larger than the MTU. In practice, MTU will fall between 576 (for IPv4) or 1280 (for IPv6) and 9216 octets.
fn receive(&mut self) -> Result<Self::RxBuffer, Error>
Receive a frame.
It is expected that a receive
implementation, once a packet is written to memory
through DMA, would gain ownership of the underlying buffer, provide it for parsing,
and return it to the network device once it is dropped.
fn transmit(&mut self, length: usize) -> Result<Self::TxBuffer, Error>
Transmit a frame.
It is expected that a transmit
implementation would gain ownership of a buffer with
the requested length, provide it for emission, and schedule it to be read from
memory by the network device once it is dropped.
Implementors
impl<T: Device, U: PrettyPrint> Device for Tracer<T, U>
impl<T: Device> Device for FaultInjector<T> where T::RxBuffer: AsMut<[u8]>
impl Device for RawSocket
impl Device for TapInterface