65 #ifndef FRAME_802154_H 66 #define FRAME_802154_H 71 #ifdef IEEE802154_CONF_PANID 72 #define IEEE802154_PANID IEEE802154_CONF_PANID 74 #define IEEE802154_PANID 0xABCD 77 #ifdef FRAME802154_CONF_VERSION 78 #define FRAME802154_VERSION FRAME802154_CONF_VERSION 82 #if MAC_CONF_WITH_TSCH 83 #define FRAME802154_VERSION FRAME802154_IEEE802154_2015 85 #define FRAME802154_VERSION FRAME802154_IEEE802154_2006 89 #ifdef FRAME802154_CONF_SUPPR_SEQNO 90 #define FRAME802154_SUPPR_SEQNO FRAME802154_CONF_SUPPR_SEQNO 92 #define FRAME802154_SUPPR_SEQNO 0 101 #define FRAME802154_BEACONFRAME (0x00) 102 #define FRAME802154_DATAFRAME (0x01) 103 #define FRAME802154_ACKFRAME (0x02) 104 #define FRAME802154_CMDFRAME (0x03) 106 #define FRAME802154_BEACONREQ (0x07) 108 #define FRAME802154_IEEERESERVED (0x00) 109 #define FRAME802154_NOADDR (0x00) 110 #define FRAME802154_SHORTADDRMODE (0x02) 111 #define FRAME802154_LONGADDRMODE (0x03) 113 #define FRAME802154_NOBEACONS (0x0F) 115 #define FRAME802154_BROADCASTADDR (0xFFFF) 116 #define FRAME802154_BROADCASTPANDID (0xFFFF) 118 #define FRAME802154_IEEE802154_2003 (0x00) 119 #define FRAME802154_IEEE802154_2006 (0x01) 120 #define FRAME802154_IEEE802154_2015 (0x02) 122 #define FRAME802154_SECURITY_LEVEL_NONE (0) 123 #define FRAME802154_SECURITY_LEVEL_MIC_32 (1) 124 #define FRAME802154_SECURITY_LEVEL_MIC_64 (2) 125 #define FRAME802154_SECURITY_LEVEL_MIC_128 (3) 126 #define FRAME802154_SECURITY_LEVEL_ENC (4) 127 #define FRAME802154_SECURITY_LEVEL_ENC_MIC_32 (5) 128 #define FRAME802154_SECURITY_LEVEL_ENC_MIC_64 (6) 129 #define FRAME802154_SECURITY_LEVEL_ENC_MIC_128 (7) 131 #define FRAME802154_IMPLICIT_KEY (0) 132 #define FRAME802154_1_BYTE_KEY_ID_MODE (1) 133 #define FRAME802154_5_BYTE_KEY_ID_MODE (2) 134 #define FRAME802154_9_BYTE_KEY_ID_MODE (3) 179 } frame802154_frame_counter_t;
184 } frame802154_key_source_t;
202 uint8_t dest_addr[8];
222 uint16_t frame802154_get_pan_id(
void);
224 void frame802154_set_pan_id(uint16_t pan_id);
227 void frame802154_has_panid(
frame802154_fcf_t *fcf,
int *has_src_pan_id,
int *has_dest_pan_id);
231 int frame802154_is_broadcast_addr(uint8_t mode, uint8_t *
addr);
233 int frame802154_extract_linkaddr(
frame802154_t *frame, linkaddr_t *source_address, linkaddr_t *dest_address);
frame802154_frame_counter_t frame_counter
Frame counter, used for security.
uint16_t src_pid
Source PAN ID.
frame802154_scf_t security_control
Security control bitfield.
uint8_t dest_addr_mode
2 bit.
uint8_t sequence_number_suppression
< 1 bit.
frame802154_fcf_t fcf
Frame control field.
static uip_ds6_addr_t * addr
Pointer to a nbr cache entry.
802.15.4 security control bitfield.
uint8_t security_level
3 bit.
uint8_t security_enabled
1 bit.
Header file for the link-layer address representation
int frame802154_parse(uint8_t *data, int len, frame802154_t *pf)
Parses an input frame.
int payload_len
Length of payload field.
uint8_t frame_pending
1 bit.
int frame802154_hdrlen(frame802154_t *p)
Calculates the length of the frame header.
frame802154_key_source_t key_source
Key Source subfield.
uint8_t key_id_mode
2 bit.
uint8_t key_index
Key Index subfield.
uint8_t frame_counter_suppression
1 bit.
uint8_t frame_version
2 bit.
The IEEE 802.15.4 frame has a number of constant/fixed fields that can be counted to make frame const...
uint8_t src_addr_mode
2 bit.
uint16_t dest_pid
Destination PAN ID.
Parameters used by the frame802154_create() function.
uint8_t ie_list_present
1 bit.
uint8_t seq
Sequence number.
uint8_t panid_compression
1 bit.
uint8_t * payload
Pointer to 802.15.4 payload.
uint8_t ack_required
1 bit.
802.15.4 Aux security header
uint8_t frame_counter_size
1 bit.
frame802154_aux_hdr_t aux_hdr
Aux security header.
int frame802154_create(frame802154_t *p, uint8_t *buf)
Creates a frame for transmission over the air.