netopt.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Freie Universität Berlin
3  * 2015 Kaspar Schleiser <kaspar@schleiser.de>
4  *
5  * This file is subject to the terms and conditions of the GNU Lesser
6  * General Public License v2.1. See the file LICENSE in the top level
7  * directory for more details.
8  */
9 
25 #ifndef NET_NETOPT_H
26 #define NET_NETOPT_H
27 
28 #include <stdint.h>
29 #include <stdbool.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
45 typedef enum {
70 
97 
102 
121 
255 
268 
278 
292 
301 
311 
320 
331 
340 
349 
359 
368 
375 
380 
397 
405 
415 
420 
427 
445 
456 
467 
476 
481 
486 
495 
500 
505 
512 
519 
526 
531 
536 
541 
546 
551 
558 
565 
574 
581 
588 
596 
601 
606 
611 
616 
621 
626 
633 
640 
647 
653 
659 
664 
669 
675 
680 
685 
690 
695 
702 
707 
712 
717 
722 
727 
732 
737 
742 
747 
752 
759 
764 
765  /* add more options if needed */
766 
771 
776 
781 
789 
800 
809 
819 
829 
839 
855 
860 
865 
873 
880 } netopt_t;
881 
885 typedef enum {
889 
894 typedef enum {
911  /* add other states if needed */
913 
917 typedef enum {
923 
927 typedef uint16_t netopt_channel_t;
928 
932 typedef int16_t netopt_rssi_t;
933 
937 #define NETOPT_SCAN_REQ_ALL_CH ((netopt_channel_t)(-1))
938 
942 typedef struct netopt_scan_result {
946 
953 #define NETOPT_SCAN_RESULT_INITIALIZER(ch, str) \
954  (netopt_scan_result_t) { \
955  .channel = ch, \
956  .strength = str, \
957  }
958 
964 struct l2scan_list;
965 
969 typedef void (*netopt_on_scan_result_t) (void *netif, const struct l2scan_list *res);
970 
974 typedef struct netopt_scan_request {
978 
985 #define NETOPT_SCAN_REQUEST_INITIALIZER(ch, cb) \
986  (netopt_scan_request_t) { \
987  .channel = ch, \
988  .scan_cb = (netopt_on_scan_result_t)cb, \
989  }
990 
994 typedef struct netopt_connect_result {
997 
1003 #define NETOPT_CONNECT_RESULT_INITIALIZER(ch) \
1004  (netopt_connect_result_t) { \
1005  .channel = ch, \
1006  }
1007 
1014 
1020 #define NETOPT_DISCONNECT_RESULT_INITIALIZER(ch) \
1021  (netopt_disconnect_result_t) { \
1022  .channel = ch, \
1023  }
1024 
1028 typedef void (*netopt_on_connect_result_t) (void *netif, const struct netopt_connect_result *res);
1029 
1033 typedef void (*netopt_on_disconnect_result_t) (void *netif, const struct netopt_disconnect_result *res);
1034 
1038 typedef struct netopt_connect_request {
1043 
1051 #define NETOPT_CONNECT_REQUEST_INITIALIZER(ch, ccb, dcb) \
1052  (netopt_connect_request_t) { \
1053  .disconn_cb = (netopt_on_disconnect_result_t)dcb, \
1054  .conn_cb = (netopt_on_connect_result_t)ccb, \
1055  .channel = ch, \
1056  }
1057 
1064 
1070 #define NETOPT_DISCONNECT_REQUEST_INITIALIZER(dcb) \
1071  (netopt_disconnect_request_t) { \
1072  .disconn_cb = (netopt_on_disconnect_result_t)dcb, \
1073  }
1074 
1082 const char *netopt2str(netopt_t opt);
1083 
1084 #ifdef __cplusplus
1085 }
1086 #endif
1087 
1088 #endif /* NET_NETOPT_H */
struct netopt_scan_request netopt_scan_request_t
Basic network scan request.
netopt_enable_t
Binary parameter for enabling and disabling options.
Definition: netopt.h:885
struct netopt_disconnect_result netopt_disconnect_result_t
Basic disconnect result.
netopt_t
Global list of configuration options available throughout the network stack, e.g.
Definition: netopt.h:45
int16_t netopt_rssi_t
Netopt RSSI type.
Definition: netopt.h:932
netopt_rf_testmode_t
Option parameter to be used with NETOPT_RF_TESTMODE.
Definition: netopt.h:917
void(* netopt_on_connect_result_t)(void *netif, const struct netopt_connect_result *res)
Basic callback type on network connection NETOPT_CONNECT.
Definition: netopt.h:1028
netopt_state_t
Option parameter to be used with NETOPT_STATE to set or get the state of a network device or protocol...
Definition: netopt.h:894
const char * netopt2str(netopt_t opt)
Get a string ptr corresponding to opt, for debugging.
struct netopt_connect_request netopt_connect_request_t
Basic network connect request.
struct netopt_connect_result netopt_connect_result_t
Basic network connect result.
uint16_t netopt_channel_t
Netopt RF channel type.
Definition: netopt.h:927
struct netopt_disconnect_request netopt_disconnect_request_t
Basic network disconnect request.
struct netopt_scan_result netopt_scan_result_t
Basic network scan result.
void(* netopt_on_disconnect_result_t)(void *netif, const struct netopt_disconnect_result *res)
Basic callback type on network disconnection NETOPT_CONNECT.
Definition: netopt.h:1033
void(* netopt_on_scan_result_t)(void *netif, const struct l2scan_list *res)
Basic callback type on network scan NETOPT_CONNECT.
Definition: netopt.h:969
@ NETOPT_DISABLE
disable a given option
Definition: netopt.h:886
@ NETOPT_ENABLE
enable a given option
Definition: netopt.h:887
@ NETOPT_LORAWAN_ADR
(netopt_enable_t) LoRaWAN adaptive datarate
Definition: netopt.h:663
@ NETOPT_L2_GROUP
(array of byte array) get link layer multicast groups as array of byte arrays (length of each byte ar...
Definition: netopt.h:850
@ NETOPT_CHANNEL_HOP_PERIOD
(uint8_t) channel hopping period
Definition: netopt.h:504
@ NETOPT_RETRANS
(uint8_t) maximum number of retransmissions
Definition: netopt.h:233
@ NETOPT_GTS_ALLOC
(ieee802154_dsme_alloc_t) Allocate DSME GTS slot
Definition: netopt.h:864
@ NETOPT_CSMA_RETRIES
(uint8_t) maximum number of CSMA retries
Definition: netopt.h:330
@ NETOPT_L2FILTER
(l2filter_t) add an address to a link layer filter list
Definition: netopt.h:455
@ NETOPT_MR_OFDM_MCS
(uint8_t) MR-OFDM PHY Modulation and Coding Scheme (Values: 0-6)
Definition: netopt.h:721
@ NETOPT_BATMON
(uint16_t) Set the battery monitor voltage (in mV).
Definition: netopt.h:838
@ NETOPT_OQPSK_RATE
(uint8_t) legacy O-QPSK proprietary mode Allows to select higher data rates than standard 250 kbit/s ...
Definition: netopt.h:701
@ NETOPT_LORAWAN_APPSKEY
(uint8_t*) LoRaWAN application session key (16 bytes length)
Definition: netopt.h:625
@ NETOPT_IPV6_GROUP
(ipv6_addr_t) get IPv6 multicast groups of an interface as array of ipv6_addr_t or join an IPv6 multi...
Definition: netopt.h:164
@ NETOPT_IEEE802154_PHY
(uint8_t) 802.15.4 PHY mode
Definition: netopt.h:694
@ NETOPT_ADDRESS
(byte array, see below) link layer address in network byte order
Definition: netopt.h:69
@ NETOPT_DEVICE_TYPE
(uint16_t) device type
Definition: netopt.h:374
@ NETOPT_MR_FSK_SRATE
(uint8_t) MR-FSK PHY Symbol Rate (kHz)
Definition: netopt.h:736
@ NETOPT_ACTIVE
(netopt_enable_t) network interface status.
Definition: netopt.h:310
@ NETOPT_CHECKSUM
(netopt_enable_t) enable hardware checksumming
Definition: netopt.h:587
@ NETOPT_CHANNEL_PAGE
(uint16_t) channel page as defined by IEEE 802.15.4
Definition: netopt.h:379
@ NETOPT_MAX_PDU_SIZE
(uint16_t) maximum protocol data unit
Definition: netopt.h:184
@ NETOPT_OTAA
(netopt_enable_t) Enable or disable OTAA activation (LoRaWAN)
Definition: netopt.h:770
@ NETOPT_6LO
(netopt_enable_t) 6Lo support
Definition: netopt.h:557
@ NETOPT_NUM_GATEWAYS
(uint8_t) Get the number of gateways of the last Link Check request.
Definition: netopt.h:780
@ NETOPT_CHANNEL_HOP
(netopt_enable_t) channel hopping
Definition: netopt.h:499
@ NETOPT_RAWMODE
(netopt_enable_t) when enabled, bypass protocol processing of incoming frames
Definition: netopt.h:245
@ NETOPT_PROTO
(gnrc_nettype_t) the protocol for the layer
Definition: netopt.h:237
@ NETOPT_LORAWAN_SNWKSINTKEY
(uint8_t*) LoRaWAN serving network session integrity key (16 bytes length)
Definition: netopt.h:639
@ NETOPT_LORAWAN_PUBLIC_NETWORK
(netopt_enable_t) LoRaWAN public network
Definition: netopt.h:668
@ NETOPT_LINK_CHECK
(netopt_enable_t) Perform a Link Check request (LoRaWAN)
Definition: netopt.h:788
@ NETOPT_AUTOCCA
(netopt_enable_t) perform channel clear assessment before transmitting
Definition: netopt.h:291
@ NETOPT_ADDRESS_LONG
(byte array, see below) long link layer address in network byte order
Definition: netopt.h:81
@ NETOPT_ADDR_LEN
(uint16_t) get the default address length a network device expects
Definition: netopt.h:85
@ NETOPT_RSSI
(int16_t) Received Signal Strength Indicator (RSSI)
Definition: netopt.h:799
@ NETOPT_CSMA_MAXBE
(uint8_t) maximum backoff exponent for the CSMA-CA algorithm
Definition: netopt.h:339
@ NETOPT_IPV6_GROUP_LEAVE
(ipv6_addr_t) Leave an IPv6 multicast group on an interface
Definition: netopt.h:168
@ NETOPT_DEMOD_MARGIN
(uint8_t) Get the demodulation margin of the last Link Check request.
Definition: netopt.h:775
@ NETOPT_INTEGRITY_CHECK
(netopt_enable_t) frame integrity check (e.g CRC)
Definition: netopt.h:485
@ NETOPT_LORAWAN_RX2_FREQ
(uint32_t) LoRaWAN frequency used for second RX window
Definition: netopt.h:679
@ NETOPT_MR_OQPSK_RATE
(uint8_t) MR-O-QPSK Rate Mode
Definition: netopt.h:711
@ NETOPT_SCAN
(netopt_scan_request_t) Instruct the interface to do a network scan
Definition: netopt.h:808
@ NETOPT_MR_OFDM_OPTION
(uint8_t) MR-OFDM PHY Option (Values: 1-4)
Definition: netopt.h:716
@ NETOPT_NID
(uint16_t) network ID
Definition: netopt.h:96
@ NETOPT_CSMA
(netopt_enable_t) CSMA/CA support
Definition: netopt.h:319
@ NETOPT_MR_FSK_MODULATION_INDEX
(uint8_t) MR-FSK PHY Modulation Index (x 64)
Definition: netopt.h:726
@ NETOPT_IQ_INVERT
(netopt_enable_t) IQ inverted
Definition: netopt.h:550
@ NETOPT_L2FILTER_RM
(l2filter_t) remove an address from a link layer filter list
Definition: netopt.h:466
@ NETOPT_LORAWAN_MIN_RX_SYMBOL
(uint8_t) LoRaWAN maximum system overall timing error (symbols)
Definition: netopt.h:689
@ NETOPT_IS_WIRED
(netopt_enable_t) read-only check for a wired interface.
Definition: netopt.h:367
@ NETOPT_RF_TESTMODE
(netopt_rf_testmode_t) Test mode for the radio, e.g.
Definition: netopt.h:444
@ NETOPT_CODING_RATE
(uint8_t) radio coding rate
Definition: netopt.h:540
@ NETOPT_MR_FSK_FEC
(uint8_t) MR-FSK PHY Forward Error Correction
Definition: netopt.h:741
@ NETOPT_PROMISCUOUSMODE
(netopt_enable_t) promiscuous mode
Definition: netopt.h:211
@ NETOPT_LORAWAN_APPEUI
(uint8_t*) LoRaWAN application EUI (8 bytes length)
Definition: netopt.h:600
@ NETOPT_LAST_ED_LEVEL
(int8_t) Energy level during the last performed CCA or RX frame
Definition: netopt.h:475
@ NETOPT_LINK
(netopt_enable_t) network interface link status.
Definition: netopt.h:300
@ NETOPT_IPV6_IID
(eui64_t) get the IPv6 interface identifier of a network interface
Definition: netopt.h:120
@ NETOPT_TX_START_IRQ
(netopt_enable_t) Used to check if the driver generates NETDEV_EVENT_TX_STARTED events
Definition: netopt.h:267
@ NETOPT_LORAWAN_JOINEUI
(uint8_t*) LoRaWAN join EUI (8 bytes length)
Definition: netopt.h:605
@ NETOPT_BANDWIDTH
(uint8_t) radio modulation bandwidth
Definition: netopt.h:530
@ NETOPT_IPV6_FORWARDING
(netopt_enable_t) IPv6 forwarding state
Definition: netopt.h:172
@ NETOPT_STATS
(netstats_t) get statistics about sent and received packets and data of the device or protocol
Definition: netopt.h:414
@ NETOPT_PDU_SIZE
(uint16_t) protocol data unit size
Definition: netopt.h:200
@ NETOPT_TX_RETRIES_NEEDED
(uint8_t) retry amount from missing ACKs of the last transmission
Definition: netopt.h:573
@ NETOPT_CSMA_MINBE
(uint8_t) minimum backoff exponent for the CSMA-CA algorithm
Definition: netopt.h:348
@ NETOPT_CCA_MODE
(uint8_t) CCA mode for the radio transceiver
Definition: netopt.h:404
@ NETOPT_TX_POWER
(int16_t) transmit power for radio devices in dBm
Definition: netopt.h:180
@ NETOPT_STATE
(netopt_state_t) state of network device
Definition: netopt.h:241
@ NETOPT_SRC_LEN
(uint16_t) address length to use for the link layer source address
Definition: netopt.h:89
@ NETOPT_IPV6_ADDR
(ipv6_addr_t[]) get IPv6 addresses of an interface as array of ipv6_addr_t or add an IPv6 address as ...
Definition: netopt.h:136
@ NETOPT_CCA_THRESHOLD
(int8_t) CCA threshold for the radio transceiver
Definition: netopt.h:396
@ NETOPT_ENCRYPTION
(netopt_enable_t) link layer encryption.
Definition: netopt.h:419
@ NETOPT_MAC_NO_SLEEP
(netopt_enable_t) block transceiver sleep
Definition: netopt.h:358
@ NETOPT_ACK_REQ
(netopt_enable_t) acknowledgement request on outgoing frames
Definition: netopt.h:229
@ NETOPT_LORAWAN_NWKKEY
(uint8_t*) LoRaWAN network key (16 bytes length)
Definition: netopt.h:615
@ NETOPT_ENCRYPTION_KEY
(byte array) set encryption key
Definition: netopt.h:426
@ NETOPT_RX_SYMBOL_TIMEOUT
(uint16_t) Get or set the number of PHY symbols before assuming there's no data
Definition: netopt.h:763
@ NETOPT_CONNECT
(netopt_connect_request_t) Instructs the interface to connect to a network
Definition: netopt.h:818
@ NETOPT_SINGLE_RECEIVE
(netopt_enable_t) single frame reception
Definition: netopt.h:511
@ NETOPT_PRELOADING
(netopt_enable_t) frame preloading
Definition: netopt.h:207
@ NETOPT_AUTOACK
(netopt_enable_t) automatic link layer ACKs
Definition: netopt.h:215
@ NETOPT_LORAWAN_DEVICE_CLASS
(uint8_t) LoRaWAN device class (A, B, C)
Definition: netopt.h:652
@ NETOPT_PAN_COORD
(netopt_enable_t) Set/Get PAN coordinator role
Definition: netopt.h:859
@ NETOPT_NUMOF
maximum number of options defined here.
Definition: netopt.h:879
@ NETOPT_ACK_PENDING
(netopt_enable_t) frame pending bit of ACKs
Definition: netopt.h:222
@ NETOPT_RX_TIMEOUT
(uint32_t) reception timeout of a frame
Definition: netopt.h:518
@ NETOPT_FIXED_HEADER
(netopt_enable_t) fixed header mode
Definition: netopt.h:545
@ NETOPT_MR_OQPSK_CHIPS
(uint8_t) MR-O-QPSK Chip Rate (kchip/s)
Definition: netopt.h:706
@ NETOPT_PHY_BUSY
(netopt_enable_t) enable busy mode
Definition: netopt.h:595
@ NETOPT_LORAWAN_MAX_RX_ERROR
(uint32_t) LoRaWAN maximum system overall timing error (ms)
Definition: netopt.h:684
@ NETOPT_GTS_TX
(netopt_enable_t) Transmit frames using GTS transmission
Definition: netopt.h:872
@ NETOPT_TX_END_IRQ
(netopt_enable_t) Used to check if the driver generates NETDEV_EVENT_TX_COMPLETE events
Definition: netopt.h:277
@ NETOPT_SPREADING_FACTOR
(uint8_t) radio spreading factor
Definition: netopt.h:535
@ NETOPT_L2_GROUP_LEAVE
(array of byte arrays) Leave an link layer multicast group
Definition: netopt.h:854
@ NETOPT_CHANNEL
(uint16_t) channel number
Definition: netopt.h:49
@ NETOPT_LORAWAN_RX2_DR
(loramac_dr_idx_t) LoRaWAN datarate for second RX window
Definition: netopt.h:674
@ NETOPT_6LO_IPHC
(netopt_enable_t) header compression
Definition: netopt.h:564
@ NETOPT_MR_FSK_MODULATION_ORDER
(uint8_t) MR-FSK Modulation Order
Definition: netopt.h:731
@ NETOPT_PREAMBLE_LENGTH
(uint16_t) preamble length
Definition: netopt.h:480
@ NETOPT_IS_CHANNEL_CLR
(netopt_enable_t) check whether the network medium is clear
Definition: netopt.h:56
@ NETOPT_TX_TIMEOUT
(uint32_t) transmission timeout of a frame
Definition: netopt.h:525
@ NETOPT_RX_START_IRQ
(netopt_enable_t) Used to check if the driver generates NETDEV_EVENT_RX_STARTED events
Definition: netopt.h:254
@ NETOPT_IPV6_ADDR_REMOVE
(ipv6_addr_t) Removes an IPv6 address from an interface
Definition: netopt.h:140
@ NETOPT_DISCONNECT
(netopt_disconnect_request_t) Instructs the interface to disconnect from a network
Definition: netopt.h:828
@ NETOPT_SYNCWORD
(uint8_t*) phy layer syncword
Definition: netopt.h:751
@ NETOPT_LORAWAN_APPKEY
(uint8_t*) LoRaWAN application key (16 bytes length)
Definition: netopt.h:610
@ NETOPT_IPV6_SND_RTR_ADV
(netopt_enable_t) sending of IPv6 router advertisements
Definition: netopt.h:176
@ NETOPT_CHANNEL_SPACING
(uint8_t) PHY Channel Spacing (kHz)
Definition: netopt.h:746
@ NETOPT_CHANNEL_FREQUENCY
(uint32_t) channel center frequency
Definition: netopt.h:494
@ NETOPT_IPV6_ADDR_FLAGS
(array of uint8_t) get the flags to the addresses returned by NETOPT_IPV6_ADDR as array
Definition: netopt.h:149
@ NETOPT_RANDOM
(uint32_t) Get a random value from the device
Definition: netopt.h:758
@ NETOPT_LORAWAN_DR
(uint8_t) LoRaWAN datarate
Definition: netopt.h:658
@ NETOPT_LORAWAN_NWKSENCKEY
(uint8_t*) LoRaWAN network session encryption key buffer (16 bytes length)
Definition: netopt.h:646
@ NETOPT_BLE_CTX
(netdev_ble_ctx_t) set BLE radio context (channel, CRC, AA)
Definition: netopt.h:580
@ NETOPT_HOP_LIMIT
(uint8_t) hop limit
Definition: netopt.h:101
@ NETOPT_LORAWAN_FNWKSINTKEY
(uint8_t*) LoRaWAN forwarding network session integrity key (16 bytes length)
Definition: netopt.h:632
@ NETOPT_LORAWAN_NWKSKEY
(uint8_t*) LoRaWAN network session key (16 bytes length)
Definition: netopt.h:620
@ NETOPT_RF_TESTMODE_CTX_PRBS9
PRBS9 continuous tx mode.
Definition: netopt.h:921
@ NETOPT_RF_TESTMODE_IDLE
idle mode, radio off
Definition: netopt.h:918
@ NETOPT_RF_TESTMODE_CTX_CW
carrier wave continuous tx mode
Definition: netopt.h:920
@ NETOPT_RF_TESTMODE_CRX
continuous rx mode
Definition: netopt.h:919
@ NETOPT_STATE_IDLE
idle mode, the device listens to receive packets
Definition: netopt.h:897
@ NETOPT_STATE_OFF
powered off
Definition: netopt.h:895
@ NETOPT_STATE_RX
receive mode, the device currently receives a packet
Definition: netopt.h:899
@ NETOPT_STATE_STANDBY
standby mode.
Definition: netopt.h:909
@ NETOPT_STATE_TX
transmit mode, set: triggers transmission of a preloaded packet (see NETOPT_PRELOADING*).
Definition: netopt.h:901
@ NETOPT_STATE_RESET
triggers a hardware reset.
Definition: netopt.h:907
@ NETOPT_STATE_SLEEP
sleep mode
Definition: netopt.h:896
Type of a Link Layer scan list.
Definition: l2scan_list.h:37
Basic network connect request.
Definition: netopt.h:1038
netopt_on_connect_result_t conn_cb
On connect callback.
Definition: netopt.h:1040
netopt_on_disconnect_result_t disconn_cb
On disconnect callback.
Definition: netopt.h:1039
netopt_channel_t channel
Channel of the network to connect to.
Definition: netopt.h:1041
Basic network connect result.
Definition: netopt.h:994
netopt_channel_t channel
Connected channel.
Definition: netopt.h:995
Basic network disconnect request.
Definition: netopt.h:1061
netopt_on_disconnect_result_t disconn_cb
On disconnect callback.
Definition: netopt.h:1062
Basic disconnect result.
Definition: netopt.h:1011
netopt_channel_t channel
Channel of the disconnected AP.
Definition: netopt.h:1012
Basic network scan request.
Definition: netopt.h:974
netopt_on_scan_result_t scan_cb
Scan result callback.
Definition: netopt.h:975
netopt_channel_t channel
Channel to scan.
Definition: netopt.h:976
Basic network scan result.
Definition: netopt.h:942
netopt_channel_t channel
Scanned channel.
Definition: netopt.h:943
netopt_rssi_t strength
Received signal strength.
Definition: netopt.h:944