netopt.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2015 Freie Universität Berlin
3  * SPDX-FileCopyrightText: 2015 Kaspar Schleiser <kaspar@schleiser.de>
4  * SPDX-License-Identifier: LGPL-2.1-only
5  */
6 
7 #pragma once
8 
24 #include <stdint.h>
25 #include <stdbool.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
41 typedef enum {
66 
93 
98 
117 
251 
264 
274 
288 
297 
307 
316 
327 
336 
345 
355 
364 
371 
376 
393 
401 
411 
416 
423 
441 
452 
463 
472 
477 
482 
491 
496 
501 
508 
515 
522 
527 
532 
537 
542 
547 
554 
561 
570 
577 
584 
592 
597 
602 
607 
612 
617 
622 
629 
636 
643 
649 
655 
660 
665 
671 
676 
681 
686 
691 
698 
703 
708 
713 
718 
723 
728 
733 
738 
743 
748 
755 
760 
761  /* add more options if needed */
762 
767 
772 
777 
785 
796 
805 
815 
825 
835 
851 
856 
861 
869 
876 } netopt_t;
877 
881 typedef enum {
885 
890 typedef enum {
907  /* add other states if needed */
909 
913 typedef enum {
919 
923 typedef uint16_t netopt_channel_t;
924 
928 typedef int16_t netopt_rssi_t;
929 
933 #define NETOPT_SCAN_REQ_ALL_CH ((netopt_channel_t)(-1))
934 
938 typedef struct netopt_scan_result {
942 
949 #define NETOPT_SCAN_RESULT_INITIALIZER(ch, str) \
950  (netopt_scan_result_t) { \
951  .channel = ch, \
952  .strength = str, \
953  }
954 
960 struct l2scan_list;
961 
965 typedef void (*netopt_on_scan_result_t) (void *netif, const struct l2scan_list *res);
966 
970 typedef struct netopt_scan_request {
974 
981 #define NETOPT_SCAN_REQUEST_INITIALIZER(ch, cb) \
982  (netopt_scan_request_t) { \
983  .channel = ch, \
984  .scan_cb = (netopt_on_scan_result_t)cb, \
985  }
986 
990 typedef struct netopt_connect_result {
993 
999 #define NETOPT_CONNECT_RESULT_INITIALIZER(ch) \
1000  (netopt_connect_result_t) { \
1001  .channel = ch, \
1002  }
1003 
1010 
1016 #define NETOPT_DISCONNECT_RESULT_INITIALIZER(ch) \
1017  (netopt_disconnect_result_t) { \
1018  .channel = ch, \
1019  }
1020 
1024 typedef void (*netopt_on_connect_result_t) (void *netif, const struct netopt_connect_result *res);
1025 
1029 typedef void (*netopt_on_disconnect_result_t) (void *netif, const struct netopt_disconnect_result *res);
1030 
1034 typedef struct netopt_connect_request {
1039 
1047 #define NETOPT_CONNECT_REQUEST_INITIALIZER(ch, ccb, dcb) \
1048  (netopt_connect_request_t) { \
1049  .disconn_cb = (netopt_on_disconnect_result_t)dcb, \
1050  .conn_cb = (netopt_on_connect_result_t)ccb, \
1051  .channel = ch, \
1052  }
1053 
1060 
1066 #define NETOPT_DISCONNECT_REQUEST_INITIALIZER(dcb) \
1067  (netopt_disconnect_request_t) { \
1068  .disconn_cb = (netopt_on_disconnect_result_t)dcb, \
1069  }
1070 
1078 const char *netopt2str(netopt_t opt);
1079 
1080 #ifdef __cplusplus
1081 }
1082 #endif
1083 
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:881
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:41
int16_t netopt_rssi_t
Netopt RSSI type.
Definition: netopt.h:928
netopt_rf_testmode_t
Option parameter to be used with NETOPT_RF_TESTMODE.
Definition: netopt.h:913
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:1024
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:890
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:923
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:1029
void(* netopt_on_scan_result_t)(void *netif, const struct l2scan_list *res)
Basic callback type on network scan NETOPT_CONNECT.
Definition: netopt.h:965
@ NETOPT_DISABLE
disable a given option
Definition: netopt.h:882
@ NETOPT_ENABLE
enable a given option
Definition: netopt.h:883
@ NETOPT_LORAWAN_ADR
(netopt_enable_t) LoRaWAN adaptive datarate
Definition: netopt.h:659
@ 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:846
@ NETOPT_CHANNEL_HOP_PERIOD
(uint8_t) channel hopping period
Definition: netopt.h:500
@ NETOPT_RETRANS
(uint8_t) maximum number of retransmissions
Definition: netopt.h:229
@ NETOPT_GTS_ALLOC
(ieee802154_dsme_alloc_t) Allocate DSME GTS slot
Definition: netopt.h:860
@ NETOPT_CSMA_RETRIES
(uint8_t) maximum number of CSMA retries
Definition: netopt.h:326
@ NETOPT_L2FILTER
(l2filter_t) add an address to a link layer filter list
Definition: netopt.h:451
@ NETOPT_MR_OFDM_MCS
(uint8_t) MR-OFDM PHY Modulation and Coding Scheme (Values: 0-6)
Definition: netopt.h:717
@ NETOPT_BATMON
(uint16_t) Set the battery monitor voltage (in mV).
Definition: netopt.h:834
@ NETOPT_OQPSK_RATE
(uint8_t) legacy O-QPSK proprietary mode Allows to select higher data rates than standard 250 kbit/s ...
Definition: netopt.h:697
@ NETOPT_LORAWAN_APPSKEY
(uint8_t*) LoRaWAN application session key (16 bytes length)
Definition: netopt.h:621
@ 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:160
@ NETOPT_IEEE802154_PHY
(uint8_t) 802.15.4 PHY mode
Definition: netopt.h:690
@ NETOPT_ADDRESS
(byte array, see below) link layer address in network byte order
Definition: netopt.h:65
@ NETOPT_DEVICE_TYPE
(uint16_t) device type
Definition: netopt.h:370
@ NETOPT_MR_FSK_SRATE
(uint8_t) MR-FSK PHY Symbol Rate (kHz)
Definition: netopt.h:732
@ NETOPT_ACTIVE
(netopt_enable_t) network interface status.
Definition: netopt.h:306
@ NETOPT_CHECKSUM
(netopt_enable_t) enable hardware checksumming
Definition: netopt.h:583
@ NETOPT_CHANNEL_PAGE
(uint16_t) channel page as defined by IEEE 802.15.4
Definition: netopt.h:375
@ NETOPT_MAX_PDU_SIZE
(uint16_t) maximum protocol data unit
Definition: netopt.h:180
@ NETOPT_OTAA
(netopt_enable_t) Enable or disable OTAA activation (LoRaWAN)
Definition: netopt.h:766
@ NETOPT_6LO
(netopt_enable_t) 6Lo support
Definition: netopt.h:553
@ NETOPT_NUM_GATEWAYS
(uint8_t) Get the number of gateways of the last Link Check request.
Definition: netopt.h:776
@ NETOPT_CHANNEL_HOP
(netopt_enable_t) channel hopping
Definition: netopt.h:495
@ NETOPT_RAWMODE
(netopt_enable_t) when enabled, bypass protocol processing of incoming frames
Definition: netopt.h:241
@ NETOPT_PROTO
(gnrc_nettype_t) the protocol for the layer
Definition: netopt.h:233
@ NETOPT_LORAWAN_SNWKSINTKEY
(uint8_t*) LoRaWAN serving network session integrity key (16 bytes length)
Definition: netopt.h:635
@ NETOPT_LORAWAN_PUBLIC_NETWORK
(netopt_enable_t) LoRaWAN public network
Definition: netopt.h:664
@ NETOPT_LINK_CHECK
(netopt_enable_t) Perform a Link Check request (LoRaWAN)
Definition: netopt.h:784
@ NETOPT_AUTOCCA
(netopt_enable_t) perform channel clear assessment before transmitting
Definition: netopt.h:287
@ NETOPT_ADDRESS_LONG
(byte array, see below) long link layer address in network byte order
Definition: netopt.h:77
@ NETOPT_ADDR_LEN
(uint16_t) get the default address length a network device expects
Definition: netopt.h:81
@ NETOPT_RSSI
(int16_t) Received Signal Strength Indicator (RSSI)
Definition: netopt.h:795
@ NETOPT_CSMA_MAXBE
(uint8_t) maximum backoff exponent for the CSMA-CA algorithm
Definition: netopt.h:335
@ NETOPT_IPV6_GROUP_LEAVE
(ipv6_addr_t) Leave an IPv6 multicast group on an interface
Definition: netopt.h:164
@ NETOPT_DEMOD_MARGIN
(uint8_t) Get the demodulation margin of the last Link Check request.
Definition: netopt.h:771
@ NETOPT_INTEGRITY_CHECK
(netopt_enable_t) frame integrity check (e.g CRC)
Definition: netopt.h:481
@ NETOPT_LORAWAN_RX2_FREQ
(uint32_t) LoRaWAN frequency used for second RX window
Definition: netopt.h:675
@ NETOPT_MR_OQPSK_RATE
(uint8_t) MR-O-QPSK Rate Mode
Definition: netopt.h:707
@ NETOPT_SCAN
(netopt_scan_request_t) Instruct the interface to do a network scan
Definition: netopt.h:804
@ NETOPT_MR_OFDM_OPTION
(uint8_t) MR-OFDM PHY Option (Values: 1-4)
Definition: netopt.h:712
@ NETOPT_NID
(uint16_t) network ID
Definition: netopt.h:92
@ NETOPT_CSMA
(netopt_enable_t) CSMA/CA support
Definition: netopt.h:315
@ NETOPT_MR_FSK_MODULATION_INDEX
(uint8_t) MR-FSK PHY Modulation Index (x 64)
Definition: netopt.h:722
@ NETOPT_IQ_INVERT
(netopt_enable_t) IQ inverted
Definition: netopt.h:546
@ NETOPT_L2FILTER_RM
(l2filter_t) remove an address from a link layer filter list
Definition: netopt.h:462
@ NETOPT_LORAWAN_MIN_RX_SYMBOL
(uint8_t) LoRaWAN maximum system overall timing error (symbols)
Definition: netopt.h:685
@ NETOPT_IS_WIRED
(netopt_enable_t) read-only check for a wired interface.
Definition: netopt.h:363
@ NETOPT_RF_TESTMODE
(netopt_rf_testmode_t) Test mode for the radio, e.g.
Definition: netopt.h:440
@ NETOPT_CODING_RATE
(uint8_t) radio coding rate
Definition: netopt.h:536
@ NETOPT_MR_FSK_FEC
(uint8_t) MR-FSK PHY Forward Error Correction
Definition: netopt.h:737
@ NETOPT_PROMISCUOUSMODE
(netopt_enable_t) promiscuous mode
Definition: netopt.h:207
@ NETOPT_LORAWAN_APPEUI
(uint8_t*) LoRaWAN application EUI (8 bytes length)
Definition: netopt.h:596
@ NETOPT_LAST_ED_LEVEL
(int8_t) Energy level during the last performed CCA or RX frame
Definition: netopt.h:471
@ NETOPT_LINK
(netopt_enable_t) network interface link status.
Definition: netopt.h:296
@ NETOPT_IPV6_IID
(eui64_t) get the IPv6 interface identifier of a network interface
Definition: netopt.h:116
@ NETOPT_TX_START_IRQ
(netopt_enable_t) Used to check if the driver generates NETDEV_EVENT_TX_STARTED events
Definition: netopt.h:263
@ NETOPT_LORAWAN_JOINEUI
(uint8_t*) LoRaWAN join EUI (8 bytes length)
Definition: netopt.h:601
@ NETOPT_BANDWIDTH
(uint8_t) radio modulation bandwidth
Definition: netopt.h:526
@ NETOPT_IPV6_FORWARDING
(netopt_enable_t) IPv6 forwarding state
Definition: netopt.h:168
@ NETOPT_STATS
(netstats_t) get statistics about sent and received packets and data of the device or protocol
Definition: netopt.h:410
@ NETOPT_PDU_SIZE
(uint16_t) protocol data unit size
Definition: netopt.h:196
@ NETOPT_TX_RETRIES_NEEDED
(uint8_t) retry amount from missing ACKs of the last transmission
Definition: netopt.h:569
@ NETOPT_CSMA_MINBE
(uint8_t) minimum backoff exponent for the CSMA-CA algorithm
Definition: netopt.h:344
@ NETOPT_CCA_MODE
(uint8_t) CCA mode for the radio transceiver
Definition: netopt.h:400
@ NETOPT_TX_POWER
(int16_t) transmit power for radio devices in dBm
Definition: netopt.h:176
@ NETOPT_STATE
(netopt_state_t) state of network device
Definition: netopt.h:237
@ NETOPT_SRC_LEN
(uint16_t) address length to use for the link layer source address
Definition: netopt.h:85
@ 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:132
@ NETOPT_CCA_THRESHOLD
(int8_t) CCA threshold for the radio transceiver
Definition: netopt.h:392
@ NETOPT_ENCRYPTION
(netopt_enable_t) link layer encryption.
Definition: netopt.h:415
@ NETOPT_MAC_NO_SLEEP
(netopt_enable_t) block transceiver sleep
Definition: netopt.h:354
@ NETOPT_ACK_REQ
(netopt_enable_t) acknowledgement request on outgoing frames
Definition: netopt.h:225
@ NETOPT_LORAWAN_NWKKEY
(uint8_t*) LoRaWAN network key (16 bytes length)
Definition: netopt.h:611
@ NETOPT_ENCRYPTION_KEY
(byte array) set encryption key
Definition: netopt.h:422
@ NETOPT_RX_SYMBOL_TIMEOUT
(uint16_t) Get or set the number of PHY symbols before assuming there's no data
Definition: netopt.h:759
@ NETOPT_CONNECT
(netopt_connect_request_t) Instructs the interface to connect to a network
Definition: netopt.h:814
@ NETOPT_SINGLE_RECEIVE
(netopt_enable_t) single frame reception
Definition: netopt.h:507
@ NETOPT_PRELOADING
(netopt_enable_t) frame preloading
Definition: netopt.h:203
@ NETOPT_AUTOACK
(netopt_enable_t) automatic link layer ACKs
Definition: netopt.h:211
@ NETOPT_LORAWAN_DEVICE_CLASS
(uint8_t) LoRaWAN device class (A, B, C)
Definition: netopt.h:648
@ NETOPT_PAN_COORD
(netopt_enable_t) Set/Get PAN coordinator role
Definition: netopt.h:855
@ NETOPT_NUMOF
maximum number of options defined here.
Definition: netopt.h:875
@ NETOPT_ACK_PENDING
(netopt_enable_t) frame pending bit of ACKs
Definition: netopt.h:218
@ NETOPT_RX_TIMEOUT
(uint32_t) reception timeout of a frame
Definition: netopt.h:514
@ NETOPT_FIXED_HEADER
(netopt_enable_t) fixed header mode
Definition: netopt.h:541
@ NETOPT_MR_OQPSK_CHIPS
(uint8_t) MR-O-QPSK Chip Rate (kchip/s)
Definition: netopt.h:702
@ NETOPT_PHY_BUSY
(netopt_enable_t) enable busy mode
Definition: netopt.h:591
@ NETOPT_LORAWAN_MAX_RX_ERROR
(uint32_t) LoRaWAN maximum system overall timing error (ms)
Definition: netopt.h:680
@ NETOPT_GTS_TX
(netopt_enable_t) Transmit frames using GTS transmission
Definition: netopt.h:868
@ NETOPT_TX_END_IRQ
(netopt_enable_t) Used to check if the driver generates NETDEV_EVENT_TX_COMPLETE events
Definition: netopt.h:273
@ NETOPT_SPREADING_FACTOR
(uint8_t) radio spreading factor
Definition: netopt.h:531
@ NETOPT_L2_GROUP_LEAVE
(array of byte arrays) Leave an link layer multicast group
Definition: netopt.h:850
@ NETOPT_CHANNEL
(uint16_t) channel number
Definition: netopt.h:45
@ NETOPT_LORAWAN_RX2_DR
(loramac_dr_idx_t) LoRaWAN datarate for second RX window
Definition: netopt.h:670
@ NETOPT_6LO_IPHC
(netopt_enable_t) header compression
Definition: netopt.h:560
@ NETOPT_MR_FSK_MODULATION_ORDER
(uint8_t) MR-FSK Modulation Order
Definition: netopt.h:727
@ NETOPT_PREAMBLE_LENGTH
(uint16_t) preamble length
Definition: netopt.h:476
@ NETOPT_IS_CHANNEL_CLR
(netopt_enable_t) check whether the network medium is clear
Definition: netopt.h:52
@ NETOPT_TX_TIMEOUT
(uint32_t) transmission timeout of a frame
Definition: netopt.h:521
@ NETOPT_RX_START_IRQ
(netopt_enable_t) Used to check if the driver generates NETDEV_EVENT_RX_STARTED events
Definition: netopt.h:250
@ NETOPT_IPV6_ADDR_REMOVE
(ipv6_addr_t) Removes an IPv6 address from an interface
Definition: netopt.h:136
@ NETOPT_DISCONNECT
(netopt_disconnect_request_t) Instructs the interface to disconnect from a network
Definition: netopt.h:824
@ NETOPT_SYNCWORD
(uint8_t*) phy layer syncword
Definition: netopt.h:747
@ NETOPT_LORAWAN_APPKEY
(uint8_t*) LoRaWAN application key (16 bytes length)
Definition: netopt.h:606
@ NETOPT_IPV6_SND_RTR_ADV
(netopt_enable_t) sending of IPv6 router advertisements
Definition: netopt.h:172
@ NETOPT_CHANNEL_SPACING
(uint8_t) PHY Channel Spacing (kHz)
Definition: netopt.h:742
@ NETOPT_CHANNEL_FREQUENCY
(uint32_t) channel center frequency
Definition: netopt.h:490
@ NETOPT_IPV6_ADDR_FLAGS
(array of uint8_t) get the flags to the addresses returned by NETOPT_IPV6_ADDR as array
Definition: netopt.h:145
@ NETOPT_RANDOM
(uint32_t) Get a random value from the device
Definition: netopt.h:754
@ NETOPT_LORAWAN_DR
(uint8_t) LoRaWAN datarate
Definition: netopt.h:654
@ NETOPT_LORAWAN_NWKSENCKEY
(uint8_t*) LoRaWAN network session encryption key buffer (16 bytes length)
Definition: netopt.h:642
@ NETOPT_BLE_CTX
(netdev_ble_ctx_t) set BLE radio context (channel, CRC, AA)
Definition: netopt.h:576
@ NETOPT_HOP_LIMIT
(uint8_t) hop limit
Definition: netopt.h:97
@ NETOPT_LORAWAN_FNWKSINTKEY
(uint8_t*) LoRaWAN forwarding network session integrity key (16 bytes length)
Definition: netopt.h:628
@ NETOPT_LORAWAN_NWKSKEY
(uint8_t*) LoRaWAN network session key (16 bytes length)
Definition: netopt.h:616
@ NETOPT_RF_TESTMODE_CTX_PRBS9
PRBS9 continuous tx mode.
Definition: netopt.h:917
@ NETOPT_RF_TESTMODE_IDLE
idle mode, radio off
Definition: netopt.h:914
@ NETOPT_RF_TESTMODE_CTX_CW
carrier wave continuous tx mode
Definition: netopt.h:916
@ NETOPT_RF_TESTMODE_CRX
continuous rx mode
Definition: netopt.h:915
@ NETOPT_STATE_IDLE
idle mode, the device listens to receive packets
Definition: netopt.h:893
@ NETOPT_STATE_OFF
powered off
Definition: netopt.h:891
@ NETOPT_STATE_RX
receive mode, the device currently receives a packet
Definition: netopt.h:895
@ NETOPT_STATE_STANDBY
standby mode.
Definition: netopt.h:905
@ NETOPT_STATE_TX
transmit mode, set: triggers transmission of a preloaded packet (see NETOPT_PRELOADING*).
Definition: netopt.h:897
@ NETOPT_STATE_RESET
triggers a hardware reset.
Definition: netopt.h:903
@ NETOPT_STATE_SLEEP
sleep mode
Definition: netopt.h:892
Type of a Link Layer scan list.
Definition: l2scan_list.h:33
Basic network connect request.
Definition: netopt.h:1034
netopt_on_connect_result_t conn_cb
On connect callback.
Definition: netopt.h:1036
netopt_on_disconnect_result_t disconn_cb
On disconnect callback.
Definition: netopt.h:1035
netopt_channel_t channel
Channel of the network to connect to.
Definition: netopt.h:1037
Basic network connect result.
Definition: netopt.h:990
netopt_channel_t channel
Connected channel.
Definition: netopt.h:991
Basic network disconnect request.
Definition: netopt.h:1057
netopt_on_disconnect_result_t disconn_cb
On disconnect callback.
Definition: netopt.h:1058
Basic disconnect result.
Definition: netopt.h:1007
netopt_channel_t channel
Channel of the disconnected AP.
Definition: netopt.h:1008
Basic network scan request.
Definition: netopt.h:970
netopt_on_scan_result_t scan_cb
Scan result callback.
Definition: netopt.h:971
netopt_channel_t channel
Channel to scan.
Definition: netopt.h:972
Basic network scan result.
Definition: netopt.h:938
netopt_channel_t channel
Scanned channel.
Definition: netopt.h:939
netopt_rssi_t strength
Received signal strength.
Definition: netopt.h:940