IEEE 802.15.4 header definitions. More...
IEEE 802.15.4 header definitions.
Definition in file ieee802154.h.
#include <stdint.h>#include <stdlib.h>#include "byteorder.h"#include "modules.h"#include "net/eui64.h"#include "time_units.h"
 Include dependency graph for ieee802154.h:
 This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Macros | |
| #define | IEEE802154_SFD (0xa7) | 
| Default start frame delimiter.  | |
| #define | IEEE802154_FRAME_LEN_MAX (127U) | 
| maximum 802.15.4 frame length  | |
| #define | IEEE802154G_FRAME_LEN_MAX (2047U) | 
| maximum 802.15.4g-2012 frame length  | |
| #define | IEEE802154_ACK_FRAME_LEN (5U) | 
| ACK frame length.  | |
| #define | IEEE802154_LIFS_SYMS (40U) | 
| Number of symbols to wait during Long Inter Frame Spacing.  | |
| #define | IEEE802154_SIFS_SYMS (12U) | 
| Number of symbols to wait during Short Inter Frame Spacing.  | |
| #define | IEEE802154_SIFS_MAX_FRAME_SIZE (18U) | 
| Maximum frame size to consider a frame as short.  | |
| #define | IEEE802154_ACK_TIMEOUT_SYMS (54) | 
| ACK Timeout period in symbols.  | |
| #define | IEEE802154_MR_OFDM_SYMBOL_TIME_US (120) | 
| Symbol time for IEEE 802.15.4 MR-OFDM in µs.  | |
| #define | IEEE802154_MR_FSK_SYMBOL_TIME_US (20) | 
| Symbol time for IEEE 802.15.4 MR-FSK in µs.  More... | |
| #define | IEEE802154_RADIO_RSSI_OFFSET (-174) | 
| value of measured power when RSSI is zero.  More... | |
| #define | IEEE802154_PHY_MR_FSK_PHR_LEN (2) | 
| MR-FSK PHY header length.  | |
| #define | IEEE802154_PHY_MR_FSK_2FSK_SFD_LEN (2) | 
| MR-FSK SFD length on Filtered 2-FSK.  | |
| #define | IEEE802154G_ATURNAROUNDTIME_US (1 * US_PER_MS) | 
| For the SUN PHYs, the value is 1 ms expressed in symbol periods, rounded up to the next integer number of symbol periods using the ceiling() function.  More... | |
| #define | IEEE802154_ATURNAROUNDTIME_IN_SYMBOLS (12) | 
| IEEE Std 802.15.4-2020 Table 11-1—PHY constants: The value is 12 for all other PHYs.  | |
| #define | IEEE802154_SYMBOL_TIME_US (16) | 
| O-QPSK Symbol time for 2.4 GHz:  More... | |
| #define | IEEE802154_CCA_DURATION_IN_SYMBOLS (8) | 
| IEEE Std 802.15.4-2020 Table 11-1—PHY constants: For all other PHYs¹, the duration of 8 symbol periods.  More... | |
| #define | CONFIG_IEEE802154_DEFAULT_SUBGHZ_CHANNEL (5U) | 
| IEEE802.15.4 default sub-GHZ channel.  | |
| #define | CONFIG_IEEE802154_DEFAULT_CHANNEL (26U) | 
| IEEE802.15.4 default channel.  | |
| #define | CONFIG_IEEE802154_DEFAULT_SUBGHZ_PAGE (2U) | 
| IEEE802.15.4 default sub-GHZ page.  | |
| #define | CONFIG_IEEE802154_MR_OQPSK_DEFAULT_CHIPS IEEE802154_MR_OQPSK_CHIPS_1000 | 
| IEEE802.15.4 MR-OQPSK default chip rate.  | |
| #define | CONFIG_IEEE802154_MR_OQPSK_DEFAULT_RATE (2U) | 
| IEEE802.15.4 MR-OQPSK default rate mode.  | |
| #define | CONFIG_IEEE802154_MR_OFDM_DEFAULT_OPTION (2U) | 
| IEEE802.15.4 MR-OFDM default modulation option.  | |
| #define | CONFIG_IEEE802154_MR_OFDM_DEFAULT_SCHEME (2U) | 
| IEEE802.15.4 MR-OFDM default Modulation & Coding Scheme.  | |
| #define | CONFIG_IEEE802154_MR_FSK_DEFAULT_SRATE IEEE802154_MR_FSK_SRATE_200K | 
| IEEE802.15.4 MR-FSK default symbol rate.  | |
| #define | CONFIG_IEEE802154_MR_FSK_DEFAULT_MOD_IDX (64U) | 
| IEEE802.15.4 MR-FSK default modulation index, fraction of 64.  | |
| #define | CONFIG_IEEE802154_MR_FSK_DEFAULT_MOD_ORD (2U) | 
| IEEE802.15.4 MR-FSK default modulation order.  | |
| #define | CONFIG_IEEE802154_MR_FSK_DEFAULT_FEC IEEE802154_FEC_NONE | 
| IEEE802.15.4 MR-FSK default error correction mode.  | |
| #define | CONFIG_IEEE802154_DEFAULT_PANID (0x0023U) | 
| IEEE802.15.4 default PANID.  | |
| #define | IEEE802154_PANID_BCAST { 0xff, 0xff } | 
| IEEE802.15.4 Broadcast PANID.  | |
| #define | CONFIG_IEEE802154_DEFAULT_TXPOWER (0) | 
| IEEE802.15.4 default TX power (in dBm)  | |
| #define | CONFIG_IEEE802154_DEFAULT_CSMA_CA_MIN_BE (3U) | 
| IEEE802.15.4 default value for minimum backoff exponent.  | |
| #define | CONFIG_IEEE802154_DEFAULT_CSMA_CA_RETRIES (4U) | 
| IEEE802.15.4 default value for maximum number of CSMA-CA retries.  | |
| #define | CONFIG_IEEE802154_DEFAULT_CSMA_CA_MAX_BE (5U) | 
| IEEE802.15.4 default value for maximum backoff exponent.  | |
| #define | CONFIG_IEEE802154_CCA_THRESH_DEFAULT (-70) | 
| IEEE802.15.4 default value for CCA threshold (in dBm)  | |
| #define | CONFIG_IEEE802154_DEFAULT_MAX_FRAME_RETRANS (4U) | 
| IEEE802.15.4 default value for maximum frame retries.  | |
| #define | CONFIG_IEEE802154_AUTO_ACK_DISABLE 0 | 
| Disable Auto ACK support.  | |
| #define | CONFIG_IEEE802154_DEFAULT_ACK_REQ 1 | 
| Request ACKs by default.  | |
| #define | CONFIG_IEEE802154_DSME_CAP_REDUCTION 0 | 
| Enable DSME CAP reduction.  More... | |
| #define | CONFIG_IEEE802154_DSME_MAC_RESPONSE_WAIT_TIME (244U) | 
| Set the maximum DSME MAC response wait time.  More... | |
| #define | CONFIG_IEEE802154_DSME_SCAN_DURATION (4U) | 
| Set the scan duration.  More... | |
| #define | CONFIG_IEEE802154_DSME_SUPERFRAME_ORDER (3U) | 
Set IEEE 802.15.4 DSME Superframe Order (SO) The SO sets the slot duration to 60 * symbol_time_us * 2^SO usecs.  More... | |
| #define | CONFIG_IEEE802154_DSME_MULTISUPERFRAME_ORDER (3U) | 
| Set IEEE 802.15.4 DSME Multisuperframe Order (MO)  More... | |
| #define | CONFIG_IEEE802154_DSME_BEACON_ORDER (3U) | 
| Set IEEE 802.15.4 DSME Beacon Order (BO)  More... | |
| #define | CONFIG_IEEE802154_DSME_STATIC_GTS 0 | 
| Use static GTS allocation.  More... | |
| #define | CONFIG_IEEE802154_DSME_GTS_EXPIRATION (16U) | 
| Set expiration time of DSME GTS slot.  More... | |
| #define | CONFIG_IEEE802154_DSME_MIN_COORD_LQI (100U) | 
| Set the minimum LQI to consider a beacon from a coordinator valid.  More... | |
Enumerations | |
| enum | ieee802154_phy_mode_t {  IEEE802154_PHY_DISABLED , IEEE802154_PHY_BPSK , IEEE802154_PHY_ASK , IEEE802154_PHY_OQPSK , IEEE802154_PHY_MR_OQPSK , IEEE802154_PHY_MR_OFDM , IEEE802154_PHY_MR_FSK , IEEE802154_PHY_NO_OP }  | 
| 802.15.4 PHY modes  More... | |
| enum | ieee802154_mr_fsk_fec_t { IEEE802154_FEC_NONE , IEEE802154_FEC_NRNSC , IEEE802154_FEC_RSC } | 
| 802.15.4 forward error correction schemes  More... | |
| enum | ieee802154_mr_fsk_srate_t {  IEEE802154_MR_FSK_SRATE_50K , IEEE802154_MR_FSK_SRATE_100K , IEEE802154_MR_FSK_SRATE_150K , IEEE802154_MR_FSK_SRATE_200K , IEEE802154_MR_FSK_SRATE_300K , IEEE802154_MR_FSK_SRATE_400K }  | 
| 802.15.4 MR-FSK symbol rates  More... | |
| enum | ieee802154_mr_oqpsk_chips_t { IEEE802154_MR_OQPSK_CHIPS_100 , IEEE802154_MR_OQPSK_CHIPS_200 , IEEE802154_MR_OQPSK_CHIPS_1000 , IEEE802154_MR_OQPSK_CHIPS_2000 } | 
| 802.15.4 MR-OQPSK chip rates  More... | |
Functions | |
| static uint8_t | ieee802154_mr_fsk_plen (ieee802154_mr_fsk_srate_t srate) | 
| Get the minimum preamble length for a given symbol rate.  More... | |
| size_t | ieee802154_set_frame_hdr (uint8_t *buf, const uint8_t *src, size_t src_len, const uint8_t *dst, size_t dst_len, le_uint16_t src_pan, le_uint16_t dst_pan, uint8_t flags, uint8_t seq) | 
Initializes an IEEE 802.15.4 MAC frame header in buf.  More... | |
| size_t | ieee802154_get_frame_hdr_len (const uint8_t *mhr) | 
| Get length of MAC header.  More... | |
| int | ieee802154_get_src (const uint8_t *mhr, uint8_t *src, le_uint16_t *src_pan) | 
| Gets source address from MAC header.  More... | |
| int | ieee802154_get_dst (const uint8_t *mhr, uint8_t *dst, le_uint16_t *dst_pan) | 
| Gets destination address from MAC header.  More... | |
| int | ieee802154_dst_filter (const uint8_t *mhr, uint16_t pan, network_uint16_t short_addr, const eui64_t *ext_addr) | 
| Check whether a frame pass the IEEE 802.15.4 frame filter.  More... | |
| static uint8_t | ieee802154_get_seq (const uint8_t *mhr) | 
| Gets sequence number from MAC header.  More... | |
| static eui64_t * | ieee802154_get_iid (eui64_t *eui64, const uint8_t *addr, size_t addr_len) | 
| Generates an IPv6 interface identifier from an IEEE 802.15.4 address.  More... | |
| static int16_t | ieee802154_rssi_to_dbm (uint8_t rssi) | 
| Convert from RSSI scale to dBm.  More... | |
| static uint8_t | ieee802154_dbm_to_rssi (int16_t dbm) | 
| Convert from dBm scale to RSSI.  More... | |
| #define | IEEE802154_SHORT_ADDRESS_LEN (2U) | 
| IEEE 802.15.4 address lengths.  More... | |
| #define | IEEE802154_LONG_ADDRESS_LEN (8U) | 
| long address (EUI-64)  | |
| #define | IEEE802154_MAX_HDR_LEN (23U) | 
| IEEE802.15.4 FCF field definitions.  | |
| #define | IEEE802154_MIN_FRAME_LEN (IEEE802154_FCF_LEN + sizeof(uint8_t)) | 
| #define | IEEE802154_FCF_LEN (2U) | 
| #define | IEEE802154_FCS_LEN (2U) | 
| #define | IEEE802154_FCF_TYPE_MASK (0x07) | 
| #define | IEEE802154_FCF_TYPE_BEACON (0x00) | 
| #define | IEEE802154_FCF_TYPE_DATA (0x01) | 
| #define | IEEE802154_FCF_TYPE_ACK (0x02) | 
| #define | IEEE802154_FCF_TYPE_MACCMD (0x03) | 
| #define | IEEE802154_FCF_SECURITY_EN (0x08) | 
| enable security  | |
| #define | IEEE802154_FCF_FRAME_PEND (0x10) | 
| follow-up frame is pending  | |
| #define | IEEE802154_FCF_ACK_REQ (0x20) | 
| acknowledgement requested from receiver  | |
| #define | IEEE802154_FCF_PAN_COMP (0x40) | 
| compress source PAN ID  | |
| #define | IEEE802154_FCF_DST_ADDR_MASK (0x0c) | 
| #define | IEEE802154_FCF_DST_ADDR_VOID (0x00) | 
| no destination address  | |
| #define | IEEE802154_FCF_DST_ADDR_RESV (0x04) | 
| reserved address mode  | |
| #define | IEEE802154_FCF_DST_ADDR_SHORT (0x08) | 
| destination address length is 2  | |
| #define | IEEE802154_FCF_DST_ADDR_LONG (0x0c) | 
| destination address length is 8  | |
| #define | IEEE802154_FCF_VERS_MASK (0x30) | 
| #define | IEEE802154_FCF_VERS_V0 (0x00) | 
| #define | IEEE802154_FCF_VERS_V1 (0x10) | 
| #define | IEEE802154_FCF_SRC_ADDR_MASK (0xc0) | 
| #define | IEEE802154_FCF_SRC_ADDR_VOID (0x00) | 
| no source address  | |
| #define | IEEE802154_FCF_SRC_ADDR_RESV (0x40) | 
| reserved address mode  | |
| #define | IEEE802154_FCF_SRC_ADDR_SHORT (0x80) | 
| source address length is 2  | |
| #define | IEEE802154_FCF_SRC_ADDR_LONG (0xc0) | 
| source address length is 8  | |
| #define | IEEE802154_CHANNEL_MIN_SUBGHZ (0U) | 
| Channel ranges.  More... | |
| #define | IEEE802154_CHANNEL_MAX_SUBGHZ (10U) | 
| Maximum channel for sub-GHz band.  | |
| #define | IEEE802154_CHANNEL_MIN (11U) | 
| Minimum channel for 2.4 GHz band.  | |
| #define | IEEE802154_CHANNEL_MAX (26U) | 
| Maximum channel for 2.4 GHz band.  | |
| #define | IEEE802154_PHY_MR_FSK_2FSK_CODED_SFD_0 (0x6F4E) | 
| For the MR-FSK PHY, the SFD value when PHR + PSDU are coded/uncoded and with phyMRFSKSFD = 0 or 1 respectively.  More... | |
| #define | IEEE802154_PHY_MR_FSK_2FSK_CODED_SFD_1 (0x632D) | 
| #define | IEEE802154_PHY_MR_FSK_2FSK_UNCODED_SFD_0 (0x90E4) | 
| #define | IEEE802154_PHY_MR_FSK_2FSK_UNCODED_SFD_1 (0x7A0E) | 
| #define | IEEE802154_ADDR_BCAST { 0xff, 0xff } | 
| Special address definitions.  More... | |
| #define | IEEE802154_ADDR_BCAST_LEN (IEEE802154_SHORT_ADDRESS_LEN) | 
| Length in byte of IEEE802154_ADDR_BCAST.  | |
| const uint8_t | ieee802154_addr_bcast [IEEE802154_ADDR_BCAST_LEN] | 
| Broadcast address.  | |
| #define | CONFIG_IEEE802154_DEFAULT_PHY_MODE IEEE802154_PHY_OQPSK | 
| IEEE802.15.4 default PHY mode.  | |