72#ifdef IEEE802154_CONF_PANID
73#define IEEE802154_PANID IEEE802154_CONF_PANID
75#define IEEE802154_PANID 0xABCD
78#ifdef FRAME802154_CONF_VERSION
79#define FRAME802154_VERSION FRAME802154_CONF_VERSION
84#define FRAME802154_VERSION FRAME802154_IEEE802154_2015
86#define FRAME802154_VERSION FRAME802154_IEEE802154_2006
90#ifdef FRAME802154_CONF_SUPPR_SEQNO
91#define FRAME802154_SUPPR_SEQNO FRAME802154_CONF_SUPPR_SEQNO
93#define FRAME802154_SUPPR_SEQNO 0
102#define FRAME802154_BEACONFRAME (0x00)
103#define FRAME802154_DATAFRAME (0x01)
104#define FRAME802154_ACKFRAME (0x02)
105#define FRAME802154_CMDFRAME (0x03)
107#define FRAME802154_BEACONREQ (0x07)
109#define FRAME802154_IEEERESERVED (0x00)
110#define FRAME802154_NOADDR (0x00)
111#define FRAME802154_SHORTADDRMODE (0x02)
112#define FRAME802154_LONGADDRMODE (0x03)
114#define FRAME802154_NOBEACONS (0x0F)
116#define FRAME802154_BROADCASTADDR (0xFFFF)
117#define FRAME802154_BROADCASTPANDID (0xFFFF)
119#define FRAME802154_IEEE802154_2003 (0x00)
120#define FRAME802154_IEEE802154_2006 (0x01)
121#define FRAME802154_IEEE802154_2015 (0x02)
123#define FRAME802154_SECURITY_LEVEL_NONE (0)
124#define FRAME802154_SECURITY_LEVEL_MIC_32 (1)
125#define FRAME802154_SECURITY_LEVEL_MIC_64 (2)
126#define FRAME802154_SECURITY_LEVEL_MIC_128 (3)
127#define FRAME802154_SECURITY_LEVEL_ENC (4)
128#define FRAME802154_SECURITY_LEVEL_ENC_MIC_32 (5)
129#define FRAME802154_SECURITY_LEVEL_ENC_MIC_64 (6)
130#define FRAME802154_SECURITY_LEVEL_ENC_MIC_128 (7)
132#define FRAME802154_IMPLICIT_KEY (0)
133#define FRAME802154_1_BYTE_KEY_ID_MODE (1)
134#define FRAME802154_5_BYTE_KEY_ID_MODE (2)
135#define FRAME802154_9_BYTE_KEY_ID_MODE (3)
180} frame802154_frame_counter_t;
185} frame802154_key_source_t;
203 uint8_t dest_addr[8];
223uint16_t frame802154_get_pan_id(
void);
225void frame802154_set_pan_id(uint16_t pan_id);
228void frame802154_has_panid(
frame802154_fcf_t *fcf,
int *has_src_pan_id,
int *has_dest_pan_id);
232bool frame802154_is_broadcast_addr(uint8_t mode,
const uint8_t *
addr);
234int frame802154_extract_linkaddr(
frame802154_t *frame, linkaddr_t *source_address, linkaddr_t *dest_address);
int frame802154_parse(uint8_t *data, int len, frame802154_t *pf)
Parses an input frame.
int frame802154_create(frame802154_t *p, uint8_t *buf)
Creates a frame for transmission over the air.
int frame802154_hdrlen(frame802154_t *p)
Calculates the length of the frame header.
Header file for the link-layer address representation.
802.15.4 Aux security header
frame802154_scf_t security_control
Security control bitfield.
frame802154_frame_counter_t frame_counter
Frame counter, used for security.
uint8_t key_index
Key Index subfield.
frame802154_key_source_t key_source
Key Source subfield.
The IEEE 802.15.4 frame has a number of constant/fixed fields that can be counted to make frame const...
uint8_t frame_version
2 bit.
uint8_t ie_list_present
1 bit.
uint8_t security_enabled
1 bit.
uint8_t sequence_number_suppression
< 1 bit.
uint8_t src_addr_mode
2 bit.
uint8_t panid_compression
1 bit.
uint8_t ack_required
1 bit.
uint8_t dest_addr_mode
2 bit.
uint8_t frame_pending
1 bit.
802.15.4 security control bitfield.
uint8_t key_id_mode
2 bit.
uint8_t frame_counter_size
1 bit.
uint8_t frame_counter_suppression
1 bit.
uint8_t security_level
3 bit.
Parameters used by the frame802154_create() function.
uint8_t seq
Sequence number.
frame802154_aux_hdr_t aux_hdr
Aux security header.
uint8_t * payload
Pointer to 802.15.4 payload.
uint16_t src_pid
Source PAN ID.
frame802154_fcf_t fcf
Frame control field
uint16_t dest_pid
Destination PAN ID.
int payload_len
Length of payload field.
static uip_ds6_addr_t * addr
Pointer to a nbr cache entry.