38 #define IEEE802154_SFD                      (0xa7) 
   44 #define IEEE802154_SHORT_ADDRESS_LEN        (2U)     
   45 #define IEEE802154_LONG_ADDRESS_LEN         (8U)     
   54 #define IEEE802154_MAX_HDR_LEN              (23U) 
   55 #define IEEE802154_MIN_FRAME_LEN            (IEEE802154_FCF_LEN + sizeof(uint8_t)) 
   57 #define IEEE802154_FCF_LEN                  (2U) 
   58 #define IEEE802154_FCS_LEN                  (2U) 
   60 #define IEEE802154_FCF_TYPE_MASK            (0x07) 
   61 #define IEEE802154_FCF_TYPE_BEACON          (0x00) 
   62 #define IEEE802154_FCF_TYPE_DATA            (0x01) 
   63 #define IEEE802154_FCF_TYPE_ACK             (0x02) 
   64 #define IEEE802154_FCF_TYPE_MACCMD          (0x03) 
   66 #define IEEE802154_FCF_SECURITY_EN          (0x08)   
   67 #define IEEE802154_FCF_FRAME_PEND           (0x10)   
   68 #define IEEE802154_FCF_ACK_REQ              (0x20)   
   69 #define IEEE802154_FCF_PAN_COMP             (0x40)   
   71 #define IEEE802154_FCF_DST_ADDR_MASK        (0x0c) 
   72 #define IEEE802154_FCF_DST_ADDR_VOID        (0x00)   
   73 #define IEEE802154_FCF_DST_ADDR_RESV        (0x04)   
   74 #define IEEE802154_FCF_DST_ADDR_SHORT       (0x08)   
   75 #define IEEE802154_FCF_DST_ADDR_LONG        (0x0c)   
   77 #define IEEE802154_FCF_VERS_MASK            (0x30) 
   78 #define IEEE802154_FCF_VERS_V0              (0x00) 
   79 #define IEEE802154_FCF_VERS_V1              (0x10) 
   81 #define IEEE802154_FCF_SRC_ADDR_MASK        (0xc0) 
   82 #define IEEE802154_FCF_SRC_ADDR_VOID        (0x00)   
   83 #define IEEE802154_FCF_SRC_ADDR_RESV        (0x40)   
   84 #define IEEE802154_FCF_SRC_ADDR_SHORT       (0x80)   
   85 #define IEEE802154_FCF_SRC_ADDR_LONG        (0xc0)   
   92 #define IEEE802154_CHANNEL_MIN_SUBGHZ   (0U)     
   93 #define IEEE802154_CHANNEL_MAX_SUBGHZ   (10U)    
   94 #define IEEE802154_CHANNEL_MIN          (11U)    
   95 #define IEEE802154_CHANNEL_MAX          (26U)    
   98 #define IEEE802154_FRAME_LEN_MAX        (127U)   
   99 #define IEEE802154G_FRAME_LEN_MAX      (2047U)   
  100 #define IEEE802154_ACK_FRAME_LEN          (5U)   
  105 #define IEEE802154_LIFS_SYMS            (40U) 
  110 #define IEEE802154_SIFS_SYMS            (12U) 
  115 #define IEEE802154_SIFS_MAX_FRAME_SIZE  (18U) 
  120 #define IEEE802154_ACK_TIMEOUT_SYMS     (54) 
  125 #define IEEE802154_MR_OFDM_SYMBOL_TIME_US   (120) 
  132 #define IEEE802154_MR_FSK_SYMBOL_TIME_US    (20) 
  139 #define IEEE802154_RADIO_RSSI_OFFSET        (-174) 
  141 #define IEEE802154_PHY_MR_FSK_PHR_LEN      (2)   
  142 #define IEEE802154_PHY_MR_FSK_2FSK_SFD_LEN (2)   
  152 #define IEEE802154_PHY_MR_FSK_2FSK_CODED_SFD_0      (0x6F4E) 
  153 #define IEEE802154_PHY_MR_FSK_2FSK_CODED_SFD_1      (0x632D) 
  154 #define IEEE802154_PHY_MR_FSK_2FSK_UNCODED_SFD_0    (0x90E4) 
  155 #define IEEE802154_PHY_MR_FSK_2FSK_UNCODED_SFD_1    (0x7A0E) 
  164 #define IEEE802154G_ATURNAROUNDTIME_US          (1 * US_PER_MS) 
  170 #define IEEE802154_ATURNAROUNDTIME_IN_SYMBOLS   (12) 
  181 #define IEEE802154_SYMBOL_TIME_US               (16) 
  190 #define IEEE802154_CCA_DURATION_IN_SYMBOLS      (8) 
  271 #define IEEE802154_ADDR_BCAST               { 0xff, 0xff } 
  276 #define IEEE802154_ADDR_BCAST_LEN           (IEEE802154_SHORT_ADDRESS_LEN) 
  293 #if IS_ACTIVE(CONFIG_IEEE802154_DEFAULT_PHY_BPSK) 
  294 #define CONFIG_IEEE802154_DEFAULT_PHY_MODE          IEEE802154_PHY_BPSK 
  295 #elif IS_ACTIVE(CONFIG_IEEE802154_DEFAULT_PHY_ASK) 
  296 #define CONFIG_IEEE802154_DEFAULT_PHY_MODE          IEEE802154_PHY_ASK 
  297 #elif IS_ACTIVE(CONFIG_IEEE802154_DEFAULT_PHY_OQPSK) 
  298 #define CONFIG_IEEE802154_DEFAULT_PHY_MODE          IEEE802154_PHY_OQPSK 
  299 #elif IS_ACTIVE(CONFIG_IEEE802154_DEFAULT_PHY_MR_OQPSK) 
  300 #define CONFIG_IEEE802154_DEFAULT_PHY_MODE          IEEE802154_PHY_MR_OQPSK 
  301 #elif IS_ACTIVE(CONFIG_IEEE802154_DEFAULT_PHY_MR_OFDM) 
  302 #define CONFIG_IEEE802154_DEFAULT_PHY_MODE          IEEE802154_PHY_MR_OFDM 
  303 #elif IS_ACTIVE(CONFIG_IEEE802154_DEFAULT_PHY_MR_FSK) 
  304 #define CONFIG_IEEE802154_DEFAULT_PHY_MODE          IEEE802154_PHY_MR_FSK 
  307 #ifndef CONFIG_IEEE802154_DEFAULT_PHY_MODE 
  308 #define CONFIG_IEEE802154_DEFAULT_PHY_MODE          IEEE802154_PHY_OQPSK 
  314 #ifndef CONFIG_IEEE802154_DEFAULT_SUBGHZ_CHANNEL 
  315 #define CONFIG_IEEE802154_DEFAULT_SUBGHZ_CHANNEL   (5U) 
  321 #ifndef CONFIG_IEEE802154_DEFAULT_CHANNEL 
  322 #define CONFIG_IEEE802154_DEFAULT_CHANNEL          (26U) 
  328 #ifndef CONFIG_IEEE802154_DEFAULT_SUBGHZ_PAGE 
  329 #define CONFIG_IEEE802154_DEFAULT_SUBGHZ_PAGE      (2U) 
  335 #ifndef CONFIG_IEEE802154_MR_OQPSK_DEFAULT_CHIPS 
  336 #define CONFIG_IEEE802154_MR_OQPSK_DEFAULT_CHIPS    IEEE802154_MR_OQPSK_CHIPS_1000 
  342 #ifndef CONFIG_IEEE802154_MR_OQPSK_DEFAULT_RATE 
  343 #define CONFIG_IEEE802154_MR_OQPSK_DEFAULT_RATE     (2U) 
  349 #ifndef CONFIG_IEEE802154_MR_OFDM_DEFAULT_OPTION 
  350 #define CONFIG_IEEE802154_MR_OFDM_DEFAULT_OPTION    (2U) 
  356 #ifndef CONFIG_IEEE802154_MR_OFDM_DEFAULT_SCHEME 
  357 #define CONFIG_IEEE802154_MR_OFDM_DEFAULT_SCHEME    (2U) 
  363 #ifndef CONFIG_IEEE802154_MR_FSK_DEFAULT_SRATE 
  364 #define CONFIG_IEEE802154_MR_FSK_DEFAULT_SRATE      IEEE802154_MR_FSK_SRATE_200K 
  370 #ifndef CONFIG_IEEE802154_MR_FSK_DEFAULT_MOD_IDX 
  371 #define CONFIG_IEEE802154_MR_FSK_DEFAULT_MOD_IDX    (64U) 
  377 #ifndef CONFIG_IEEE802154_MR_FSK_DEFAULT_MOD_ORD 
  378 #define CONFIG_IEEE802154_MR_FSK_DEFAULT_MOD_ORD    (2U) 
  384 #ifndef CONFIG_IEEE802154_MR_FSK_DEFAULT_FEC 
  385 #define CONFIG_IEEE802154_MR_FSK_DEFAULT_FEC        IEEE802154_FEC_NONE 
  391 #ifndef CONFIG_IEEE802154_DEFAULT_PANID 
  392 #define CONFIG_IEEE802154_DEFAULT_PANID            (0x0023U) 
  398 #ifndef IEEE802154_PANID_BCAST 
  399 #define IEEE802154_PANID_BCAST              { 0xff, 0xff } 
  405 #ifndef CONFIG_IEEE802154_DEFAULT_TXPOWER 
  406 #define CONFIG_IEEE802154_DEFAULT_TXPOWER          (0) 
  413 #ifndef CONFIG_IEEE802154_DEFAULT_CSMA_CA_MIN_BE 
  414 #define CONFIG_IEEE802154_DEFAULT_CSMA_CA_MIN_BE   (3U) 
  420 #ifndef CONFIG_IEEE802154_DEFAULT_CSMA_CA_RETRIES 
  421 #define CONFIG_IEEE802154_DEFAULT_CSMA_CA_RETRIES  (4U) 
  427 #ifndef CONFIG_IEEE802154_DEFAULT_CSMA_CA_MAX_BE 
  428 #define CONFIG_IEEE802154_DEFAULT_CSMA_CA_MAX_BE   (5U) 
  434 #ifndef CONFIG_IEEE802154_CCA_THRESH_DEFAULT 
  435 #define CONFIG_IEEE802154_CCA_THRESH_DEFAULT       (-70) 
  441 #ifndef CONFIG_IEEE802154_DEFAULT_MAX_FRAME_RETRANS 
  442 #define CONFIG_IEEE802154_DEFAULT_MAX_FRAME_RETRANS     (4U) 
  449 #define CONFIG_IEEE802154_AUTO_ACK_DISABLE 0 
  455 #ifndef CONFIG_IEEE802154_DEFAULT_ACK_REQ 
  456 #define CONFIG_IEEE802154_DEFAULT_ACK_REQ          1 
  464 #ifndef CONFIG_IEEE802154_DSME_CAP_REDUCTION 
  465 #define CONFIG_IEEE802154_DSME_CAP_REDUCTION             0 
  477 #ifndef CONFIG_IEEE802154_DSME_MAC_RESPONSE_WAIT_TIME 
  478 #define CONFIG_IEEE802154_DSME_MAC_RESPONSE_WAIT_TIME    (244U) 
  489 #ifndef CONFIG_IEEE802154_DSME_SCAN_DURATION 
  490 #define CONFIG_IEEE802154_DSME_SCAN_DURATION    (4U) 
  504 #ifndef CONFIG_IEEE802154_DSME_SUPERFRAME_ORDER 
  505 #define CONFIG_IEEE802154_DSME_SUPERFRAME_ORDER      (3U) 
  517 #ifndef CONFIG_IEEE802154_DSME_MULTISUPERFRAME_ORDER 
  518 #define CONFIG_IEEE802154_DSME_MULTISUPERFRAME_ORDER (3U) 
  530 #ifndef CONFIG_IEEE802154_DSME_BEACON_ORDER 
  531 #define CONFIG_IEEE802154_DSME_BEACON_ORDER          (3U) 
  545 #define CONFIG_IEEE802154_DSME_STATIC_GTS            0 
  556 #ifndef CONFIG_IEEE802154_DSME_GTS_EXPIRATION 
  557 #define CONFIG_IEEE802154_DSME_GTS_EXPIRATION         (16U) 
  565 #ifndef CONFIG_IEEE802154_DSME_MIN_COORD_LQI 
  566 #define CONFIG_IEEE802154_DSME_MIN_COORD_LQI         (100U) 
  613                                 const uint8_t *dst, 
size_t dst_len,
 
  615                                 uint8_t flags, uint8_t seq);
 
  718             eui64->
uint8[0] = addr[i++] ^ 0x02;
 
  719             eui64->
uint8[1] = addr[i++];
 
  720             eui64->
uint8[2] = addr[i++];
 
  721             eui64->
uint8[3] = addr[i++];
 
  722             eui64->
uint8[4] = addr[i++];
 
  723             eui64->
uint8[5] = addr[i++];
 
  724             eui64->
uint8[6] = addr[i++];
 
  725             eui64->
uint8[7] = addr[i++];
 
  729             eui64->
uint8[0] = addr[i++] ^ 0x02;
 
  730             eui64->
uint8[1] = addr[i++];
 
  735             eui64->
uint8[3] = 0xff;
 
  736             eui64->
uint8[4] = 0xfe;
 
  738             eui64->
uint8[6] = addr[i++];
 
  739             eui64->
uint8[7] = addr[i++];
 
  786     const int max = min + (UINT8_MAX - 1);
 
  788     int val = dbm <= min ? min : (dbm >= max ? max : dbm);
 
Functions to work with different byte orders.
 
EUI-64 data type definition.
 
Common macros and compiler attributes/pragmas configuration.
 
Utility header providing time unit defines.
 
A 16 bit integer in big endian aka network byte order.
 
Data type to represent an EUI-64.
 
uint8_t uint8[8]
split into 8 8-bit words.
 
A 16 bit integer in little endian.