Zephyr Project API  3.4.0
A Scalable Open Source RTOS
ieee802154_mgmt.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017 Intel Corporation.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
14#ifndef ZEPHYR_INCLUDE_NET_IEEE802154_MGMT_H_
15#define ZEPHYR_INCLUDE_NET_IEEE802154_MGMT_H_
16
18#include <zephyr/net/net_mgmt.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
32#define _NET_IEEE802154_LAYER NET_MGMT_LAYER_L2
33#define _NET_IEEE802154_CODE 0x154
34#define _NET_IEEE802154_BASE (NET_MGMT_IFACE_BIT | \
35 NET_MGMT_LAYER(_NET_IEEE802154_LAYER) |\
36 NET_MGMT_LAYER_CODE(_NET_IEEE802154_CODE))
37#define _NET_IEEE802154_EVENT (_NET_IEEE802154_BASE | NET_MGMT_EVENT_BIT)
38
39/* All attributes and parameters are given in CPU byte order
40 * (scalars) or big endian (byte arrays) unless otherwise
41 * specified.
42 *
43 * The following IEEE 802.15.4 MAC management service primitives
44 * are referenced below:
45 * - MLME-ASSOCIATE.request, see section 8.2.3
46 * - MLME-DISASSOCIATE.request, see section 8.2.4
47 * - MLME-SET/GET.request, see section 8.2.6
48 * - MLME-SCAN.request, see section 8.2.11
49 *
50 * The following IEEE 802.15.4 MAC data service primitives
51 * are referenced below:
52 * - MLME-DATA.request, see section 8.3.2
53 *
54 * MAC PIB attributes (mac.../sec...): see sections 8.4.3 and 9.5.
55 * PHY PIB attributes (phy...): see section 11.3.
56 * Both are accessed through MLME-SET/GET primitives.
57 */
59 NET_REQUEST_IEEE802154_CMD_SET_ACK = 1, /* sets AckTx for all subsequent
60 * MLME-DATA (aka TX) requests
61 */
62 NET_REQUEST_IEEE802154_CMD_UNSET_ACK, /* unsets AckTx for all subsequent
63 * MLME-DATA requests
64 */
65 NET_REQUEST_IEEE802154_CMD_PASSIVE_SCAN, /* MLME-SCAN(PASSIVE, ...) request */
66 NET_REQUEST_IEEE802154_CMD_ACTIVE_SCAN, /* MLME-SCAN(ACTIVE, ...) request */
68 NET_REQUEST_IEEE802154_CMD_ASSOCIATE, /* MLME-ASSOCIATE(...) request */
69 NET_REQUEST_IEEE802154_CMD_DISASSOCIATE, /* MLME-DISASSOCIATE(...) request */
70 NET_REQUEST_IEEE802154_CMD_SET_CHANNEL, /* MLME-SET(phyCurrentChannel) request */
71 NET_REQUEST_IEEE802154_CMD_GET_CHANNEL, /* MLME-GET(phyCurrentChannel) request */
72 NET_REQUEST_IEEE802154_CMD_SET_PAN_ID, /* MLME-SET(macPanId) request */
73 NET_REQUEST_IEEE802154_CMD_GET_PAN_ID, /* MLME-GET(macPanId) request */
74 NET_REQUEST_IEEE802154_CMD_SET_EXT_ADDR, /* non-standard, see chapters 7.1 and 8.4.3.1, in
75 * big endian byte order
76 */
77 NET_REQUEST_IEEE802154_CMD_GET_EXT_ADDR, /* like MLME-GET(macExtendedAddress) but in big
78 * endian byte order
79 */
80 NET_REQUEST_IEEE802154_CMD_SET_SHORT_ADDR, /* MLME-SET(macShortAddress) request, only
81 * allowed for co-ordinators
82 */
83 NET_REQUEST_IEEE802154_CMD_GET_SHORT_ADDR, /* MLME-GET(macShortAddress) request */
84 NET_REQUEST_IEEE802154_CMD_GET_TX_POWER, /* MLME-SET(phyUnicastTxPower/phyBroadcastTxPower)
85 * request (currently not distinguished)
86 */
87 NET_REQUEST_IEEE802154_CMD_SET_TX_POWER, /* MLME-GET(phyUnicastTxPower/phyBroadcastTxPower)
88 * request
89 */
90
91 NET_REQUEST_IEEE802154_CMD_SET_SECURITY_SETTINGS, /* implies macSecurityEnabled=true,
92 * configures basic sec* MAC PIB
93 * attributes
94 */
95 NET_REQUEST_IEEE802154_CMD_GET_SECURITY_SETTINGS, /* gets the configured sec* attributes */
96};
97
98
99#define NET_REQUEST_IEEE802154_SET_ACK \
100 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_ACK)
101
103
104#define NET_REQUEST_IEEE802154_UNSET_ACK \
105 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_UNSET_ACK)
106
108
109#define NET_REQUEST_IEEE802154_PASSIVE_SCAN \
110 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_PASSIVE_SCAN)
111
113
114#define NET_REQUEST_IEEE802154_ACTIVE_SCAN \
115 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_ACTIVE_SCAN)
116
118
119#define NET_REQUEST_IEEE802154_CANCEL_SCAN \
120 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_CANCEL_SCAN)
121
123
124#define NET_REQUEST_IEEE802154_ASSOCIATE \
125 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_ASSOCIATE)
126
128
129#define NET_REQUEST_IEEE802154_DISASSOCIATE \
130 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_DISASSOCIATE)
131
133
134#define NET_REQUEST_IEEE802154_SET_CHANNEL \
135 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_CHANNEL)
136
138
139#define NET_REQUEST_IEEE802154_GET_CHANNEL \
140 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_CHANNEL)
141
143
144#define NET_REQUEST_IEEE802154_SET_PAN_ID \
145 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_PAN_ID)
146
148
149#define NET_REQUEST_IEEE802154_GET_PAN_ID \
150 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_PAN_ID)
151
153
154#define NET_REQUEST_IEEE802154_SET_EXT_ADDR \
155 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_EXT_ADDR)
156
158
159#define NET_REQUEST_IEEE802154_GET_EXT_ADDR \
160 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_EXT_ADDR)
161
163
164#define NET_REQUEST_IEEE802154_SET_SHORT_ADDR \
165 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_SHORT_ADDR)
166
168
169#define NET_REQUEST_IEEE802154_GET_SHORT_ADDR \
170 (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_SHORT_ADDR)
171
173
174#define NET_REQUEST_IEEE802154_GET_TX_POWER \
175 (_NET_IEEE802154_BASE | \
176 NET_REQUEST_IEEE802154_CMD_GET_TX_POWER)
177
179
180#define NET_REQUEST_IEEE802154_SET_TX_POWER \
181 (_NET_IEEE802154_BASE | \
182 NET_REQUEST_IEEE802154_CMD_SET_TX_POWER)
183
185
186#ifdef CONFIG_NET_L2_IEEE802154_SECURITY
187
188#define NET_REQUEST_IEEE802154_SET_SECURITY_SETTINGS \
189 (_NET_IEEE802154_BASE | \
190 NET_REQUEST_IEEE802154_CMD_SET_SECURITY_SETTINGS)
191
192NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_IEEE802154_SET_SECURITY_SETTINGS);
193
194#define NET_REQUEST_IEEE802154_GET_SECURITY_SETTINGS \
195 (_NET_IEEE802154_BASE | \
196 NET_REQUEST_IEEE802154_CMD_GET_SECURITY_SETTINGS)
197
198NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_IEEE802154_GET_SECURITY_SETTINGS);
199
200#endif /* CONFIG_NET_L2_IEEE802154_SECURITY */
201
204};
205
206#define NET_EVENT_IEEE802154_SCAN_RESULT \
207 (_NET_IEEE802154_EVENT | NET_EVENT_IEEE802154_CMD_SCAN_RESULT)
208
209
210#define IEEE802154_IS_CHAN_SCANNED(_channel_set, _chan) \
211 (_channel_set & BIT(_chan - 1))
212#define IEEE802154_IS_CHAN_UNSCANNED(_channel_set, _chan) \
213 (!IEEE802154_IS_CHAN_SCANNED(_channel_set, _chan))
214
215/* Useful define to request all 16 channels of channel page zero
216 * in the 2450 MHz band to be scanned, from 11 to 26 included.
217 */
218#define IEEE802154_ALL_CHANNELS (0x03FFFC00)
219
228
231
233 uint16_t channel; /* in CPU byte order */
235 uint16_t pan_id; /* in CPU byte order */
236
238 union {
239 uint16_t short_addr; /* in CPU byte order */
241 };
242
247};
248
256 uint8_t key[16]; /* secKeyDescriptor.secKey */
257 uint8_t key_len; /* a key length of 16 bytes is mandatory for standards conformance */
258 uint8_t key_mode : 2; /* secKeyIdMode */
259 uint8_t level : 3; /* Used instead of a frame-specific SecurityLevel parameter when
260 * constructing the auxiliary security header
261 */
262 uint8_t _unused : 3;
263};
264
265#ifdef __cplusplus
266}
267#endif
268
273#endif /* ZEPHYR_INCLUDE_NET_IEEE802154_MGMT_H_ */
#define NET_REQUEST_IEEE802154_ASSOCIATE
Definition: ieee802154_mgmt.h:124
#define NET_REQUEST_IEEE802154_GET_TX_POWER
Definition: ieee802154_mgmt.h:174
#define NET_REQUEST_IEEE802154_SET_TX_POWER
Definition: ieee802154_mgmt.h:180
#define NET_REQUEST_IEEE802154_SET_CHANNEL
Definition: ieee802154_mgmt.h:134
#define NET_REQUEST_IEEE802154_GET_SHORT_ADDR
Definition: ieee802154_mgmt.h:169
#define NET_REQUEST_IEEE802154_PASSIVE_SCAN
Definition: ieee802154_mgmt.h:109
net_request_ieee802154_cmd
Definition: ieee802154_mgmt.h:58
#define NET_REQUEST_IEEE802154_GET_PAN_ID
Definition: ieee802154_mgmt.h:149
#define NET_REQUEST_IEEE802154_SET_PAN_ID
Definition: ieee802154_mgmt.h:144
#define NET_REQUEST_IEEE802154_SET_SHORT_ADDR
Definition: ieee802154_mgmt.h:164
#define NET_REQUEST_IEEE802154_SET_ACK
Definition: ieee802154_mgmt.h:99
#define NET_REQUEST_IEEE802154_ACTIVE_SCAN
Definition: ieee802154_mgmt.h:114
#define NET_REQUEST_IEEE802154_DISASSOCIATE
Definition: ieee802154_mgmt.h:129
#define NET_REQUEST_IEEE802154_GET_CHANNEL
Definition: ieee802154_mgmt.h:139
net_event_ieee802154_cmd
Definition: ieee802154_mgmt.h:202
#define NET_REQUEST_IEEE802154_SET_EXT_ADDR
Definition: ieee802154_mgmt.h:154
#define NET_REQUEST_IEEE802154_CANCEL_SCAN
Definition: ieee802154_mgmt.h:119
#define NET_REQUEST_IEEE802154_GET_EXT_ADDR
Definition: ieee802154_mgmt.h:159
#define NET_REQUEST_IEEE802154_UNSET_ACK
Definition: ieee802154_mgmt.h:104
@ NET_REQUEST_IEEE802154_CMD_SET_EXT_ADDR
Definition: ieee802154_mgmt.h:74
@ NET_REQUEST_IEEE802154_CMD_GET_SHORT_ADDR
Definition: ieee802154_mgmt.h:83
@ NET_REQUEST_IEEE802154_CMD_SET_TX_POWER
Definition: ieee802154_mgmt.h:87
@ NET_REQUEST_IEEE802154_CMD_SET_PAN_ID
Definition: ieee802154_mgmt.h:72
@ NET_REQUEST_IEEE802154_CMD_PASSIVE_SCAN
Definition: ieee802154_mgmt.h:65
@ NET_REQUEST_IEEE802154_CMD_SET_CHANNEL
Definition: ieee802154_mgmt.h:70
@ NET_REQUEST_IEEE802154_CMD_GET_PAN_ID
Definition: ieee802154_mgmt.h:73
@ NET_REQUEST_IEEE802154_CMD_GET_TX_POWER
Definition: ieee802154_mgmt.h:84
@ NET_REQUEST_IEEE802154_CMD_GET_SECURITY_SETTINGS
Definition: ieee802154_mgmt.h:95
@ NET_REQUEST_IEEE802154_CMD_GET_EXT_ADDR
Definition: ieee802154_mgmt.h:77
@ NET_REQUEST_IEEE802154_CMD_ASSOCIATE
Definition: ieee802154_mgmt.h:68
@ NET_REQUEST_IEEE802154_CMD_SET_ACK
Definition: ieee802154_mgmt.h:59
@ NET_REQUEST_IEEE802154_CMD_CANCEL_SCAN
Definition: ieee802154_mgmt.h:67
@ NET_REQUEST_IEEE802154_CMD_UNSET_ACK
Definition: ieee802154_mgmt.h:62
@ NET_REQUEST_IEEE802154_CMD_SET_SECURITY_SETTINGS
Definition: ieee802154_mgmt.h:91
@ NET_REQUEST_IEEE802154_CMD_DISASSOCIATE
Definition: ieee802154_mgmt.h:69
@ NET_REQUEST_IEEE802154_CMD_GET_CHANNEL
Definition: ieee802154_mgmt.h:71
@ NET_REQUEST_IEEE802154_CMD_SET_SHORT_ADDR
Definition: ieee802154_mgmt.h:80
@ NET_REQUEST_IEEE802154_CMD_ACTIVE_SCAN
Definition: ieee802154_mgmt.h:66
@ NET_EVENT_IEEE802154_CMD_SCAN_RESULT
Definition: ieee802154_mgmt.h:203
#define IEEE802154_MAX_ADDR_LENGTH
Definition: ieee802154.h:39
#define NET_MGMT_DEFINE_REQUEST_HANDLER(_mgmt_request)
Definition: net_mgmt.h:95
IEEE 802.15.4 L2 stack public header.
Network Management API public header.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
Scanning parameters.
Definition: ieee802154_mgmt.h:225
uint32_t duration
Definition: ieee802154_mgmt.h:230
uint16_t channel
Definition: ieee802154_mgmt.h:233
uint8_t len
Definition: ieee802154_mgmt.h:244
uint16_t short_addr
Definition: ieee802154_mgmt.h:239
uint16_t pan_id
Definition: ieee802154_mgmt.h:235
uint32_t channel_set
Definition: ieee802154_mgmt.h:227
uint8_t lqi
Definition: ieee802154_mgmt.h:246
uint8_t addr[IEEE802154_MAX_ADDR_LENGTH]
Definition: ieee802154_mgmt.h:240
Security parameters.
Definition: ieee802154_mgmt.h:255
uint8_t key_len
Definition: ieee802154_mgmt.h:257
uint8_t level
Definition: ieee802154_mgmt.h:259
uint8_t key_mode
Definition: ieee802154_mgmt.h:258
uint8_t key[16]
Definition: ieee802154_mgmt.h:256