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

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.

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.

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