netdev.h¶
Definitions low-level network driver interface.
-
enum
@143
¶ - NETDEV_TYPE_UNKNOWN
- NETDEV_TYPE_RAW
- NETDEV_TYPE_ETHERNET
- NETDEV_TYPE_IEEE802154
- NETDEV_TYPE_BLE
- NETDEV_TYPE_CC110X
- NETDEV_TYPE_LORA
- NETDEV_TYPE_NRFMIN
- NETDEV_TYPE_SLIP
- NETDEV_TYPE_ESP_NOW
-
enum
netdev_event_t
¶ - NETDEV_EVENT_ISR
- driver needs it’s ISR handled
- NETDEV_EVENT_RX_STARTED
- started to receive a packet
- NETDEV_EVENT_RX_COMPLETE
- finished receiving a packet
- NETDEV_EVENT_TX_STARTED
- started to transfer a packet
- NETDEV_EVENT_TX_COMPLETE
- transfer packet complete
- NETDEV_EVENT_TX_COMPLETE_DATA_PENDING
- transfer packet complete and data pending flag
- NETDEV_EVENT_TX_NOACK
- ACK requested but not received.
- NETDEV_EVENT_TX_MEDIUM_BUSY
- couldn’t transfer packet
- NETDEV_EVENT_LINK_UP
- link established
- NETDEV_EVENT_LINK_DOWN
- link gone
- NETDEV_EVENT_TX_TIMEOUT
- timeout when sending
- NETDEV_EVENT_RX_TIMEOUT
- timeout when receiving
- NETDEV_EVENT_CRC_ERROR
- wrong CRC
- NETDEV_EVENT_FHSS_CHANGE_CHANNEL
- channel changed
- NETDEV_EVENT_CAD_DONE
- channel activity detection done
-
void(*
netdev_event_cb_t
()¶ Event callback for signaling event to upper layers.
Parameters
type: type of the event
-
struct netdev_driver
netdev_driver_t
¶ Structure to hold driver interface -> function mapping.
The send/receive functions expect/return a full ethernet frame (dst mac, src mac, ethertype, payload, no checksum).
-
int
netdev_get_notsup
(netdev.h::netdev_t
* dev,netopt.h::netopt_t
opt, void * value,msp430_types.h::size_t
max_len)¶ Convenience function for declaring get() as not supported in general.
Parameters
dev: ignored opt: ignored value: ignored max_len: ignored Return values
- always returns
-ENOTSUP
- always returns
-
int
netdev_set_notsup
(netdev.h::netdev_t
* dev,netopt.h::netopt_t
opt, const void * value,msp430_types.h::size_t
value_len)¶ Convenience function for declaring set() as not supported in general.
Parameters
dev: ignored opt: ignored value: ignored value_len: ignored Return values
- always returns
-ENOTSUP
- always returns
-
struct
netdev_radio_rx_info
¶ Received packet status information for most radios.
May be different for certain radios.
-
int16_t
rssi
¶ RSSI of a received packet in dBm.
-
uint8_t
lqi
¶ LQI of a received packet.
-
int16_t
-
struct
netdev
¶ Structure to hold driver state.
Supposed to be extended by driver implementations. The extended structure should contain all variable driver state.
Contains a field
context
which is not used by the drivers, but supposed to be used by upper layers to store reference information.-
const struct netdev_driver *
driver
¶ ptr to that driver’s interface.
-
netdev.h::netdev_event_cb_t
event_callback
¶ callback for device events
-
void *
context
¶ ptr to network stack context
-
const struct netdev_driver *
-
struct
netdev_driver
¶ Structure to hold driver interface -> function mapping.
The send/receive functions expect/return a full ethernet frame (dst mac, src mac, ethertype, payload, no checksum).
-
int(*
send
()¶ Send frame.
Parameters
dev: Network device descriptor. Must not be NULL. iolist: io vector list to send Return values
- negative errno on error
- number of bytes sent
-
int(*
recv
()¶ Get a received frame.
Supposed to be called from
netdev.h::netdev::event_callback
If
buf
== NULL andlen
== 0, returns the packet size without dropping it. Ifbuf
== NULL andlen
> 0, drops the packet and returns the packet size.Parameters
dev: network device descriptor. Must not be NULL. buf: buffer to write into or NULL to return the packet size. len: maximum number of bytes to read. If buf
is NULL the currently buffered packet is dropped whenlen
> 0. Must not be 0 whenbuf
!= NULL.info: status information for the received packet. Might be of different type for different netdev devices. May be NULL if not needed or applicable. Return values
-ENOBUFS
if supplied buffer is too small- number of bytes read if buf != NULL
- packet size if buf == NULL
-
int(*
init
()¶ the driver’s initialization function
Parameters
dev: network device descriptor. Must not be NULL. Return values
< 0
on error- 0 on success
-
void(*
isr
()¶ a driver’s user-space ISR handler
This function will be called from a network stack’s loop when being notified by netdev_isr.
It is supposed to call
netdev.h::netdev::event_callback
for each occurring event.See receive packet flow description for details.
Parameters
dev: network device descriptor. Must not be NULL.
-
int(*
get
()¶ Get an option value from a given network device.
Parameters
dev: network device descriptor opt: option type value: pointer to store the option’s value in max_len: maximal amount of byte that fit into value
Return values
- number of bytes written to
value
-ENOTSUP
ifopt
is not provided by the device
- number of bytes written to
-
int(*
set
()¶ Set an option value for a given network device.
Parameters
dev: network device descriptor opt: option type value: value to set value_len: the length of value
Return values
- number of bytes written to
value
-ENOTSUP
ifopt
is not configurable for the device-EINVAL
ifvalue
is an invalid value with regards toopt
- number of bytes written to
-
int(*