8
8
* @file
9
9
* @brief IEEE 802.15.4 Management interface public header
10
10
*
11
- * All references to the standard in this file cite IEEE 802.15.4-2020.
11
+ * @note All references to the standard in this file cite IEEE 802.15.4-2020.
12
12
*/
13
13
14
14
#ifndef ZEPHYR_INCLUDE_NET_IEEE802154_MGMT_H_
@@ -33,9 +33,15 @@ extern "C" {
33
33
* Most of these commands are also accessible via shell commands. See the
34
34
* shell's help feature (`shell> ieee802154 help`).
35
35
*
36
+ * @note All section, table and figure references are to the IEEE 802.15.4-2020
37
+ * standard.
38
+ *
36
39
* @{
37
40
*/
38
41
42
+ /**
43
+ * @cond INTERNAL_HIDDEN
44
+ */
39
45
40
46
#define _NET_IEEE802154_LAYER NET_MGMT_LAYER_L2
41
47
#define _NET_IEEE802154_CODE 0x154
@@ -44,176 +50,245 @@ extern "C" {
44
50
NET_MGMT_LAYER_CODE(_NET_IEEE802154_CODE))
45
51
#define _NET_IEEE802154_EVENT (_NET_IEEE802154_BASE | NET_MGMT_EVENT_BIT)
46
52
47
- /* All attributes and parameters are given in CPU byte order
48
- * (scalars) or big endian (byte arrays) unless otherwise
49
- * specified.
53
+ enum net_request_ieee802154_cmd {
54
+ NET_REQUEST_IEEE802154_CMD_SET_ACK = 1 ,
55
+ NET_REQUEST_IEEE802154_CMD_UNSET_ACK ,
56
+ NET_REQUEST_IEEE802154_CMD_PASSIVE_SCAN ,
57
+ NET_REQUEST_IEEE802154_CMD_ACTIVE_SCAN ,
58
+ NET_REQUEST_IEEE802154_CMD_CANCEL_SCAN ,
59
+ NET_REQUEST_IEEE802154_CMD_ASSOCIATE ,
60
+ NET_REQUEST_IEEE802154_CMD_DISASSOCIATE ,
61
+ NET_REQUEST_IEEE802154_CMD_SET_CHANNEL ,
62
+ NET_REQUEST_IEEE802154_CMD_GET_CHANNEL ,
63
+ NET_REQUEST_IEEE802154_CMD_SET_PAN_ID ,
64
+ NET_REQUEST_IEEE802154_CMD_GET_PAN_ID ,
65
+ NET_REQUEST_IEEE802154_CMD_SET_EXT_ADDR ,
66
+ NET_REQUEST_IEEE802154_CMD_GET_EXT_ADDR ,
67
+ NET_REQUEST_IEEE802154_CMD_SET_SHORT_ADDR ,
68
+ NET_REQUEST_IEEE802154_CMD_GET_SHORT_ADDR ,
69
+ NET_REQUEST_IEEE802154_CMD_GET_TX_POWER ,
70
+ NET_REQUEST_IEEE802154_CMD_SET_TX_POWER ,
71
+ NET_REQUEST_IEEE802154_CMD_SET_SECURITY_SETTINGS ,
72
+ NET_REQUEST_IEEE802154_CMD_GET_SECURITY_SETTINGS ,
73
+ };
74
+
75
+ /**
76
+ * INTERNAL_HIDDEN @endcond
77
+ */
78
+
79
+ /**
80
+ * @name Command Macros
81
+ *
82
+ * @brief IEEE 802.15.4 net management commands.
83
+ *
84
+ * @details These IEEE 802.15.4 subsystem net management commands can be called
85
+ * by applications via @ref net_mgmt macro.
50
86
*
51
- * The following IEEE 802.15.4 MAC management service primitives
52
- * are referenced below:
87
+ * All attributes and parameters are given in CPU byte order (scalars) or big
88
+ * endian (byte arrays) unless otherwise specified.
89
+ *
90
+ * The following IEEE 802.15.4 MAC management service primitives are referenced
91
+ * in this enumeration:
53
92
* - MLME-ASSOCIATE.request, see section 8.2.3
54
93
* - MLME-DISASSOCIATE.request, see section 8.2.4
55
94
* - MLME-SET/GET.request, see section 8.2.6
56
95
* - MLME-SCAN.request, see section 8.2.11
57
96
*
58
- * The following IEEE 802.15.4 MAC data service primitives
59
- * are referenced below :
97
+ * The following IEEE 802.15.4 MAC data service primitives are referenced in
98
+ * this enumeration :
60
99
* - MLME-DATA.request, see section 8.3.2
61
100
*
62
101
* MAC PIB attributes (mac.../sec...): see sections 8.4.3 and 9.5.
63
102
* PHY PIB attributes (phy...): see section 11.3.
64
103
* Both are accessed through MLME-SET/GET primitives.
104
+ *
105
+ * @{
65
106
*/
66
- enum net_request_ieee802154_cmd {
67
- NET_REQUEST_IEEE802154_CMD_SET_ACK = 1 , /* sets AckTx for all subsequent
68
- * MLME-DATA (aka TX) requests
69
- */
70
- NET_REQUEST_IEEE802154_CMD_UNSET_ACK , /* unsets AckTx for all subsequent
71
- * MLME-DATA requests
72
- */
73
- NET_REQUEST_IEEE802154_CMD_PASSIVE_SCAN , /* MLME-SCAN(PASSIVE, ...) request */
74
- NET_REQUEST_IEEE802154_CMD_ACTIVE_SCAN , /* MLME-SCAN(ACTIVE, ...) request */
75
- NET_REQUEST_IEEE802154_CMD_CANCEL_SCAN , /* not-standard */
76
- NET_REQUEST_IEEE802154_CMD_ASSOCIATE , /* MLME-ASSOCIATE(...) request */
77
- NET_REQUEST_IEEE802154_CMD_DISASSOCIATE , /* MLME-DISASSOCIATE(...) request */
78
- NET_REQUEST_IEEE802154_CMD_SET_CHANNEL , /* MLME-SET(phyCurrentChannel) request */
79
- NET_REQUEST_IEEE802154_CMD_GET_CHANNEL , /* MLME-GET(phyCurrentChannel) request */
80
- NET_REQUEST_IEEE802154_CMD_SET_PAN_ID , /* MLME-SET(macPanId) request */
81
- NET_REQUEST_IEEE802154_CMD_GET_PAN_ID , /* MLME-GET(macPanId) request */
82
- NET_REQUEST_IEEE802154_CMD_SET_EXT_ADDR , /* non-standard, see chapters 7.1 and 8.4.3.1, in
83
- * big endian byte order
84
- */
85
- NET_REQUEST_IEEE802154_CMD_GET_EXT_ADDR , /* like MLME-GET(macExtendedAddress) but in big
86
- * endian byte order
87
- */
88
- NET_REQUEST_IEEE802154_CMD_SET_SHORT_ADDR , /* MLME-SET(macShortAddress) request, only
89
- * allowed for co-ordinators
90
- */
91
- NET_REQUEST_IEEE802154_CMD_GET_SHORT_ADDR , /* MLME-GET(macShortAddress) request */
92
- NET_REQUEST_IEEE802154_CMD_GET_TX_POWER , /* MLME-SET(phyUnicastTxPower/phyBroadcastTxPower)
93
- * request (currently not distinguished)
94
- */
95
- NET_REQUEST_IEEE802154_CMD_SET_TX_POWER , /* MLME-GET(phyUnicastTxPower/phyBroadcastTxPower)
96
- * request
97
- */
98
-
99
- NET_REQUEST_IEEE802154_CMD_SET_SECURITY_SETTINGS , /* implies macSecurityEnabled=true,
100
- * configures basic sec* MAC PIB
101
- * attributes
102
- */
103
- NET_REQUEST_IEEE802154_CMD_GET_SECURITY_SETTINGS , /* gets the configured sec* attributes */
104
- };
105
-
106
107
107
- #define NET_REQUEST_IEEE802154_SET_ACK \
108
- (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_ACK)
108
+ /** Sets AckTx for all subsequent MLME-DATA (aka TX) requests. */
109
+ #define NET_REQUEST_IEEE802154_SET_ACK (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_ACK)
109
110
110
111
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_SET_ACK );
111
112
112
- #define NET_REQUEST_IEEE802154_UNSET_ACK \
113
+ /** Unsets AckTx for all subsequent MLME-DATA requests. */
114
+ #define NET_REQUEST_IEEE802154_UNSET_ACK \
113
115
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_UNSET_ACK)
114
116
115
117
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_UNSET_ACK );
116
118
117
- #define NET_REQUEST_IEEE802154_PASSIVE_SCAN \
119
+ /**
120
+ * MLME-SCAN(PASSIVE, ...) request
121
+ *
122
+ * See @ref ieee802154_req_params for associated command parameters.
123
+ */
124
+ #define NET_REQUEST_IEEE802154_PASSIVE_SCAN \
118
125
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_PASSIVE_SCAN)
119
126
120
127
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_PASSIVE_SCAN );
121
128
122
- #define NET_REQUEST_IEEE802154_ACTIVE_SCAN \
129
+ /**
130
+ * MLME-SCAN(ACTIVE, ...) request
131
+ *
132
+ * See @ref ieee802154_req_params for associated command parameters.
133
+ */
134
+ #define NET_REQUEST_IEEE802154_ACTIVE_SCAN \
123
135
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_ACTIVE_SCAN)
124
136
125
137
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_ACTIVE_SCAN );
126
138
127
- #define NET_REQUEST_IEEE802154_CANCEL_SCAN \
139
+ /** Cancels an ongoing MLME-SCAN(...) command (non-standard). */
140
+ #define NET_REQUEST_IEEE802154_CANCEL_SCAN \
128
141
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_CANCEL_SCAN)
129
142
130
143
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_CANCEL_SCAN );
131
144
132
- #define NET_REQUEST_IEEE802154_ASSOCIATE \
145
+ /** MLME-ASSOCIATE(...) request */
146
+ #define NET_REQUEST_IEEE802154_ASSOCIATE \
133
147
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_ASSOCIATE)
134
148
135
149
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_ASSOCIATE );
136
150
137
- #define NET_REQUEST_IEEE802154_DISASSOCIATE \
151
+ /** MLME-DISASSOCIATE(...) request */
152
+ #define NET_REQUEST_IEEE802154_DISASSOCIATE \
138
153
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_DISASSOCIATE)
139
154
140
155
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_DISASSOCIATE );
141
156
142
- #define NET_REQUEST_IEEE802154_SET_CHANNEL \
157
+ /** MLME-SET(phyCurrentChannel) request */
158
+ #define NET_REQUEST_IEEE802154_SET_CHANNEL \
143
159
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_CHANNEL)
144
160
145
161
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_SET_CHANNEL );
146
162
147
- #define NET_REQUEST_IEEE802154_GET_CHANNEL \
163
+ /** MLME-GET(phyCurrentChannel) request */
164
+ #define NET_REQUEST_IEEE802154_GET_CHANNEL \
148
165
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_CHANNEL)
149
166
150
167
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_GET_CHANNEL );
151
168
152
- #define NET_REQUEST_IEEE802154_SET_PAN_ID \
169
+ /** MLME-SET(macPanId) request */
170
+ #define NET_REQUEST_IEEE802154_SET_PAN_ID \
153
171
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_PAN_ID)
154
172
155
173
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_SET_PAN_ID );
156
174
157
- #define NET_REQUEST_IEEE802154_GET_PAN_ID \
175
+ /** MLME-GET(macPanId) request */
176
+ #define NET_REQUEST_IEEE802154_GET_PAN_ID \
158
177
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_PAN_ID)
159
178
160
179
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_GET_PAN_ID );
161
180
162
- #define NET_REQUEST_IEEE802154_SET_EXT_ADDR \
181
+ /**
182
+ * Sets the extended interface address (non-standard), see sections 7.1
183
+ * and 8.4.3.1, in big endian byte order
184
+ */
185
+ #define NET_REQUEST_IEEE802154_SET_EXT_ADDR \
163
186
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_EXT_ADDR)
164
187
165
188
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_SET_EXT_ADDR );
166
189
167
- #define NET_REQUEST_IEEE802154_GET_EXT_ADDR \
190
+ /** like MLME-GET(macExtendedAddress) but in big endian byte order */
191
+ #define NET_REQUEST_IEEE802154_GET_EXT_ADDR \
168
192
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_EXT_ADDR)
169
193
170
194
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_GET_EXT_ADDR );
171
195
172
- #define NET_REQUEST_IEEE802154_SET_SHORT_ADDR \
196
+ /** MLME-SET(macShortAddress) request, only allowed for co-ordinators */
197
+ #define NET_REQUEST_IEEE802154_SET_SHORT_ADDR \
173
198
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_SHORT_ADDR)
174
199
175
200
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_SET_SHORT_ADDR );
176
201
177
- #define NET_REQUEST_IEEE802154_GET_SHORT_ADDR \
202
+ /** MLME-GET(macShortAddress) request */
203
+ #define NET_REQUEST_IEEE802154_GET_SHORT_ADDR \
178
204
(_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_SHORT_ADDR)
179
205
180
206
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_GET_SHORT_ADDR );
181
207
182
- #define NET_REQUEST_IEEE802154_GET_TX_POWER \
183
- (_NET_IEEE802154_BASE | \
184
- NET_REQUEST_IEEE802154_CMD_GET_TX_POWER)
208
+ /**
209
+ * MLME-SET(phyUnicastTxPower/phyBroadcastTxPower) request (currently
210
+ * not distinguished)
211
+ */
212
+ #define NET_REQUEST_IEEE802154_GET_TX_POWER \
213
+ (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_TX_POWER)
185
214
186
215
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_GET_TX_POWER );
187
216
188
- #define NET_REQUEST_IEEE802154_SET_TX_POWER \
189
- (_NET_IEEE802154_BASE | \
190
- NET_REQUEST_IEEE802154_CMD_SET_TX_POWER)
217
+ /** MLME-GET(phyUnicastTxPower/phyBroadcastTxPower) request */
218
+ #define NET_REQUEST_IEEE802154_SET_TX_POWER \
219
+ (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_TX_POWER)
191
220
192
221
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_SET_TX_POWER );
193
222
194
223
#ifdef CONFIG_NET_L2_IEEE802154_SECURITY
195
224
196
- #define NET_REQUEST_IEEE802154_SET_SECURITY_SETTINGS \
197
- (_NET_IEEE802154_BASE | \
198
- NET_REQUEST_IEEE802154_CMD_SET_SECURITY_SETTINGS)
225
+ /**
226
+ * Configures basic sec* MAC PIB attributes, implies
227
+ * macSecurityEnabled=true.
228
+ *
229
+ * See @ref ieee802154_security_params for associated command parameters.
230
+ */
231
+ #define NET_REQUEST_IEEE802154_SET_SECURITY_SETTINGS \
232
+ (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_SET_SECURITY_SETTINGS)
199
233
200
234
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_SET_SECURITY_SETTINGS );
201
235
202
- #define NET_REQUEST_IEEE802154_GET_SECURITY_SETTINGS \
203
- (_NET_IEEE802154_BASE | \
204
- NET_REQUEST_IEEE802154_CMD_GET_SECURITY_SETTINGS)
236
+ /**
237
+ * Gets the configured sec* attributes.
238
+ *
239
+ * See @ref ieee802154_security_params for associated command parameters.
240
+ */
241
+ #define NET_REQUEST_IEEE802154_GET_SECURITY_SETTINGS \
242
+ (_NET_IEEE802154_BASE | NET_REQUEST_IEEE802154_CMD_GET_SECURITY_SETTINGS)
205
243
206
244
NET_MGMT_DEFINE_REQUEST_HANDLER (NET_REQUEST_IEEE802154_GET_SECURITY_SETTINGS );
207
245
208
246
#endif /* CONFIG_NET_L2_IEEE802154_SECURITY */
209
247
248
+ /**
249
+ * @}
250
+ */
251
+
252
+ /**
253
+ * @cond INTERNAL_HIDDEN
254
+ */
255
+
210
256
enum net_event_ieee802154_cmd {
211
257
NET_EVENT_IEEE802154_CMD_SCAN_RESULT = 1 ,
212
258
};
213
259
260
+ /**
261
+ * INTERNAL_HIDDEN @endcond
262
+ */
263
+
264
+ /**
265
+ * @name Event Macros
266
+ *
267
+ * @brief IEEE 802.15.4 net management events.
268
+ *
269
+ * @details These IEEE 802.15.4 subsystem net management events can be
270
+ * subscribed to by applications via @ref net_mgmt_init_event_callback, @ref
271
+ * net_mgmt_add_event_callback and @ref net_mgmt_del_event_callback.
272
+ *
273
+ * @{
274
+ */
275
+
276
+ /**
277
+ * Signals the result of the @ref NET_REQUEST_IEEE802154_ACTIVE_SCAN or @ref
278
+ * NET_REQUEST_IEEE802154_PASSIVE_SCAN net management commands.
279
+ *
280
+ * See @ref ieee802154_req_params for associated event parameters.
281
+ */
214
282
#define NET_EVENT_IEEE802154_SCAN_RESULT \
215
283
(_NET_IEEE802154_EVENT | NET_EVENT_IEEE802154_CMD_SCAN_RESULT)
216
284
285
+ /**
286
+ * @}
287
+ */
288
+
289
+ /**
290
+ * @cond INTERNAL_HIDDEN
291
+ */
217
292
218
293
#define IEEE802154_IS_CHAN_SCANNED (_channel_set , _chan ) \
219
294
(_channel_set & BIT(_chan - 1))
@@ -222,6 +297,10 @@ enum net_event_ieee802154_cmd {
222
297
223
298
#define IEEE802154_ALL_CHANNELS UINT32_MAX
224
299
300
+ /**
301
+ * INTERNAL_HIDDEN @endcond
302
+ */
303
+
225
304
/**
226
305
* @brief Scanning parameters
227
306
*
0 commit comments