All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches

IEEE 802.15.4 header definitions. More...

Detailed Description

IEEE 802.15.4 header definitions.

Author
Hauke Petersen hauke.nosp@m..pet.nosp@m.ersen.nosp@m.@fu-.nosp@m.berli.nosp@m.n.de

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.
 
#define IEEE802154_RADIO_RSSI_OFFSET   (-174)
 value of measured power when RSSI is zero.
 
#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.
 
#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:
 
#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.
 
#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.
 
#define CONFIG_IEEE802154_DSME_MAC_RESPONSE_WAIT_TIME   (244U)
 Set the maximum DSME MAC response wait time.
 
#define CONFIG_IEEE802154_DSME_SCAN_DURATION   (4U)
 Set the scan duration.
 
#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.
 
#define CONFIG_IEEE802154_DSME_MULTISUPERFRAME_ORDER   (3U)
 Set IEEE 802.15.4 DSME Multisuperframe Order (MO)
 
#define CONFIG_IEEE802154_DSME_BEACON_ORDER   (3U)
 Set IEEE 802.15.4 DSME Beacon Order (BO)
 
#define CONFIG_IEEE802154_DSME_STATIC_GTS   0
 Use static GTS allocation.
 
#define CONFIG_IEEE802154_DSME_GTS_EXPIRATION   (16U)
 Set expiration time of DSME GTS slot.
 
#define CONFIG_IEEE802154_DSME_MIN_COORD_LQI   (100U)
 Set the minimum LQI to consider a beacon from a coordinator valid.
 

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.
 
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.
 
size_t ieee802154_get_frame_hdr_len (const uint8_t *mhr)
 Get length of MAC header.
 
int ieee802154_get_src (const uint8_t *mhr, uint8_t *src, le_uint16_t *src_pan)
 Gets source address from MAC header.
 
int ieee802154_get_dst (const uint8_t *mhr, uint8_t *dst, le_uint16_t *dst_pan)
 Gets destination address from MAC header.
 
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.
 
static uint8_t ieee802154_get_seq (const uint8_t *mhr)
 Gets sequence number from MAC header.
 
static eui64_tieee802154_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.
 
static int16_t ieee802154_rssi_to_dbm (uint8_t rssi)
 Convert from RSSI scale to dBm.
 
static uint8_t ieee802154_dbm_to_rssi (int16_t dbm)
 Convert from dBm scale to RSSI.
 
#define IEEE802154_SHORT_ADDRESS_LEN   (2U)
 IEEE 802.15.4 address lengths.
 
#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.
 
#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.
 
#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.
 
#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.