204#ifdef MODULE_L2FILTER
219 NETDEV_TYPE_ETHERNET,
220 NETDEV_TYPE_IEEE802154,
225 NETDEV_TYPE_NRF24L01P_NG,
344#define NETDEV_INDEX_ANY (0xFF)
351#define CONFIG_NETDEV_REGISTER_SIGNAL 0
367#ifdef MODULE_NETDEV_LAYER
370#ifdef MODULE_L2FILTER
373#ifdef MODULE_NETDEV_REGISTER
404#ifdef MODULE_NETDEV_REGISTER
575 void *value,
size_t max_len);
601 const void *value,
size_t value_len);
615 void *value,
size_t max_len)
635 const void *value,
size_t value_len)
#define ENOTSUP
Not supported (may be the same value as [EOPNOTSUPP]).
static void netdev_trigger_event_isr(netdev_t *netdev)
Informs netdev there was an interrupt request from the network device.
void netdev_register_signal(struct netdev *dev, netdev_type_t type, uint8_t index)
Signal that the netdev_register function registered the device.
static int netdev_get_notsup(netdev_t *dev, netopt_t opt, void *value, size_t max_len)
Convenience function for declaring get() as not supported in general.
#define CONFIG_NETDEV_REGISTER_SIGNAL
Call netdev_register_signal when the netdev device is registered.
static void netdev_register(struct netdev *dev, netdev_type_t type, uint8_t index)
Register a device with netdev.
netdev_type_t
Driver types for netdev.
struct netdev_driver netdev_driver_t
Structure to hold driver interface -> function mapping.
void(* netdev_event_cb_t)(netdev_t *dev, netdev_event_t event)
Event callback for signaling event to upper layers.
static int netdev_set_notsup(netdev_t *dev, netopt_t opt, const void *value, size_t value_len)
Convenience function for declaring set() as not supported in general.
netdev_event_t
Possible event types that are send from the device driver to the upper layer.
@ NETDEV_ANY
Will match any device type.
@ NETDEV_EVENT_TX_STARTED
started to transfer a frame
@ NETDEV_EVENT_ISR
driver needs it's ISR handled
@ NETDEV_EVENT_LINK_UP
link established
@ NETDEV_EVENT_TX_NOACK
ACK requested but not received.
@ NETDEV_EVENT_RX_COMPLETE
finished receiving a frame
@ NETDEV_EVENT_CRC_ERROR
wrong CRC
@ NETDEV_EVENT_TX_MEDIUM_BUSY
couldn't transfer frame
@ NETDEV_EVENT_TX_TIMEOUT
timeout when sending
@ NETDEV_EVENT_FHSS_CHANGE_CHANNEL
channel changed
@ NETDEV_EVENT_RX_STARTED
started to receive a frame
@ NETDEV_EVENT_TX_COMPLETE_DATA_PENDING
transfer frame complete and data pending flag
@ NETDEV_EVENT_TX_COMPLETE
transfer frame complete
@ NETDEV_EVENT_RX_TIMEOUT
timeout when receiving
@ NETDEV_EVENT_LINK_DOWN
link gone
@ NETDEV_EVENT_CAD_DONE
channel activity detection done
#define CONFIG_L2FILTER_LISTSIZE
Number of slots in each filter list (filter entries per device)
netopt_t
Global list of configuration options available throughout the network stack, e.g.
iolist scatter / gather IO
Common macros and compiler attributes/pragmas configuration.
Link layer address filter interface definition.
#define IS_ACTIVE(macro)
Allows to verify a macro definition outside the preprocessor.
Definition of global configuration options.
iolist structure definition
Structure to hold driver interface -> function mapping.
int(* get)(netdev_t *dev, netopt_t opt, void *value, size_t max_len)
Get an option value from a given network device.
int(* send)(netdev_t *dev, const iolist_t *iolist)
Start transmission of the given frame and return directly.
int(* confirm_send)(netdev_t *dev, void *info)
Fetch the status of a transmission and perform any potential cleanup.
int(* set)(netdev_t *dev, netopt_t opt, const void *value, size_t value_len)
Set an option value for a given network device.
int(* recv)(netdev_t *dev, void *buf, size_t len, void *info)
Drop a received frame, OR get the length of a received frame, OR get a received frame.
int(* init)(netdev_t *dev)
the driver's initialization function
void(* isr)(netdev_t *dev)
a driver's user-space ISR handler
Received frame status information for most radios.
uint8_t lqi
LQI of a received frame.
int16_t rssi
RSSI of a received frame in dBm.
Structure to hold driver state.
const struct netdev_driver * driver
ptr to that driver's interface.
void * context
ptr to network stack context
netdev_event_cb_t event_callback
callback for device events