1 | /* |
---|---|
2 | BlueZ - Bluetooth protocol stack for Linux |
3 | |
4 | Copyright (C) 2010 Nokia Corporation |
5 | Copyright (C) 2011-2012 Intel Corporation |
6 | |
7 | This program is free software; you can redistribute it and/or modify |
8 | it under the terms of the GNU General Public License version 2 as |
9 | published by the Free Software Foundation; |
10 | |
11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
12 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. |
14 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY |
15 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES |
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
19 | |
20 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, |
21 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS |
22 | SOFTWARE IS DISCLAIMED. |
23 | */ |
24 | |
25 | #define MGMT_INDEX_NONE 0xFFFF |
26 | |
27 | #define MGMT_STATUS_SUCCESS 0x00 |
28 | #define MGMT_STATUS_UNKNOWN_COMMAND 0x01 |
29 | #define MGMT_STATUS_NOT_CONNECTED 0x02 |
30 | #define MGMT_STATUS_FAILED 0x03 |
31 | #define MGMT_STATUS_CONNECT_FAILED 0x04 |
32 | #define MGMT_STATUS_AUTH_FAILED 0x05 |
33 | #define MGMT_STATUS_NOT_PAIRED 0x06 |
34 | #define MGMT_STATUS_NO_RESOURCES 0x07 |
35 | #define MGMT_STATUS_TIMEOUT 0x08 |
36 | #define MGMT_STATUS_ALREADY_CONNECTED 0x09 |
37 | #define MGMT_STATUS_BUSY 0x0a |
38 | #define MGMT_STATUS_REJECTED 0x0b |
39 | #define MGMT_STATUS_NOT_SUPPORTED 0x0c |
40 | #define MGMT_STATUS_INVALID_PARAMS 0x0d |
41 | #define MGMT_STATUS_DISCONNECTED 0x0e |
42 | #define MGMT_STATUS_NOT_POWERED 0x0f |
43 | #define MGMT_STATUS_CANCELLED 0x10 |
44 | #define MGMT_STATUS_INVALID_INDEX 0x11 |
45 | #define MGMT_STATUS_RFKILLED 0x12 |
46 | #define MGMT_STATUS_ALREADY_PAIRED 0x13 |
47 | #define MGMT_STATUS_PERMISSION_DENIED 0x14 |
48 | |
49 | struct mgmt_hdr { |
50 | __le16 opcode; |
51 | __le16 index; |
52 | __le16 len; |
53 | } __packed; |
54 | |
55 | struct mgmt_tlv { |
56 | __le16 type; |
57 | __u8 length; |
58 | __u8 value[]; |
59 | } __packed; |
60 | |
61 | struct mgmt_addr_info { |
62 | bdaddr_t bdaddr; |
63 | __u8 type; |
64 | } __packed; |
65 | #define MGMT_ADDR_INFO_SIZE 7 |
66 | |
67 | #define MGMT_OP_READ_VERSION 0x0001 |
68 | #define MGMT_READ_VERSION_SIZE 0 |
69 | struct mgmt_rp_read_version { |
70 | __u8 version; |
71 | __le16 revision; |
72 | } __packed; |
73 | |
74 | #define MGMT_OP_READ_COMMANDS 0x0002 |
75 | #define MGMT_READ_COMMANDS_SIZE 0 |
76 | struct mgmt_rp_read_commands { |
77 | __le16 num_commands; |
78 | __le16 num_events; |
79 | __le16 opcodes[]; |
80 | } __packed; |
81 | |
82 | #define MGMT_OP_READ_INDEX_LIST 0x0003 |
83 | #define MGMT_READ_INDEX_LIST_SIZE 0 |
84 | struct mgmt_rp_read_index_list { |
85 | __le16 num_controllers; |
86 | __le16 index[]; |
87 | } __packed; |
88 | |
89 | /* Reserve one extra byte for names in management messages so that they |
90 | * are always guaranteed to be nul-terminated */ |
91 | #define MGMT_MAX_NAME_LENGTH (HCI_MAX_NAME_LENGTH + 1) |
92 | #define MGMT_MAX_SHORT_NAME_LENGTH (HCI_MAX_SHORT_NAME_LENGTH + 1) |
93 | |
94 | #define MGMT_SETTING_POWERED BIT(0) |
95 | #define MGMT_SETTING_CONNECTABLE BIT(1) |
96 | #define MGMT_SETTING_FAST_CONNECTABLE BIT(2) |
97 | #define MGMT_SETTING_DISCOVERABLE BIT(3) |
98 | #define MGMT_SETTING_BONDABLE BIT(4) |
99 | #define MGMT_SETTING_LINK_SECURITY BIT(5) |
100 | #define MGMT_SETTING_SSP BIT(6) |
101 | #define MGMT_SETTING_BREDR BIT(7) |
102 | #define MGMT_SETTING_HS BIT(8) |
103 | #define MGMT_SETTING_LE BIT(9) |
104 | #define MGMT_SETTING_ADVERTISING BIT(10) |
105 | #define MGMT_SETTING_SECURE_CONN BIT(11) |
106 | #define MGMT_SETTING_DEBUG_KEYS BIT(12) |
107 | #define MGMT_SETTING_PRIVACY BIT(13) |
108 | #define MGMT_SETTING_CONFIGURATION BIT(14) |
109 | #define MGMT_SETTING_STATIC_ADDRESS BIT(15) |
110 | #define MGMT_SETTING_PHY_CONFIGURATION BIT(16) |
111 | #define MGMT_SETTING_WIDEBAND_SPEECH BIT(17) |
112 | #define MGMT_SETTING_CIS_CENTRAL BIT(18) |
113 | #define MGMT_SETTING_CIS_PERIPHERAL BIT(19) |
114 | #define MGMT_SETTING_ISO_BROADCASTER BIT(20) |
115 | #define MGMT_SETTING_ISO_SYNC_RECEIVER BIT(21) |
116 | #define MGMT_SETTING_LL_PRIVACY BIT(22) |
117 | |
118 | #define MGMT_OP_READ_INFO 0x0004 |
119 | #define MGMT_READ_INFO_SIZE 0 |
120 | struct mgmt_rp_read_info { |
121 | bdaddr_t bdaddr; |
122 | __u8 version; |
123 | __le16 manufacturer; |
124 | __le32 supported_settings; |
125 | __le32 current_settings; |
126 | __u8 dev_class[3]; |
127 | __u8 name[MGMT_MAX_NAME_LENGTH]; |
128 | __u8 short_name[MGMT_MAX_SHORT_NAME_LENGTH]; |
129 | } __packed; |
130 | |
131 | struct mgmt_mode { |
132 | __u8 val; |
133 | } __packed; |
134 | |
135 | #define MGMT_SETTING_SIZE 1 |
136 | |
137 | #define MGMT_OP_SET_POWERED 0x0005 |
138 | |
139 | #define MGMT_OP_SET_DISCOVERABLE 0x0006 |
140 | struct mgmt_cp_set_discoverable { |
141 | __u8 val; |
142 | __le16 timeout; |
143 | } __packed; |
144 | #define MGMT_SET_DISCOVERABLE_SIZE 3 |
145 | |
146 | #define MGMT_OP_SET_CONNECTABLE 0x0007 |
147 | |
148 | #define MGMT_OP_SET_FAST_CONNECTABLE 0x0008 |
149 | |
150 | #define MGMT_OP_SET_BONDABLE 0x0009 |
151 | |
152 | #define MGMT_OP_SET_LINK_SECURITY 0x000A |
153 | |
154 | #define MGMT_OP_SET_SSP 0x000B |
155 | |
156 | #define MGMT_OP_SET_HS 0x000C |
157 | |
158 | #define MGMT_OP_SET_LE 0x000D |
159 | #define MGMT_OP_SET_DEV_CLASS 0x000E |
160 | struct mgmt_cp_set_dev_class { |
161 | __u8 major; |
162 | __u8 minor; |
163 | } __packed; |
164 | #define MGMT_SET_DEV_CLASS_SIZE 2 |
165 | |
166 | #define MGMT_OP_SET_LOCAL_NAME 0x000F |
167 | struct mgmt_cp_set_local_name { |
168 | __u8 name[MGMT_MAX_NAME_LENGTH]; |
169 | __u8 short_name[MGMT_MAX_SHORT_NAME_LENGTH]; |
170 | } __packed; |
171 | #define MGMT_SET_LOCAL_NAME_SIZE 260 |
172 | |
173 | #define MGMT_OP_ADD_UUID 0x0010 |
174 | struct mgmt_cp_add_uuid { |
175 | __u8 uuid[16]; |
176 | __u8 svc_hint; |
177 | } __packed; |
178 | #define MGMT_ADD_UUID_SIZE 17 |
179 | |
180 | #define MGMT_OP_REMOVE_UUID 0x0011 |
181 | struct mgmt_cp_remove_uuid { |
182 | __u8 uuid[16]; |
183 | } __packed; |
184 | #define MGMT_REMOVE_UUID_SIZE 16 |
185 | |
186 | struct mgmt_link_key_info { |
187 | struct mgmt_addr_info addr; |
188 | __u8 type; |
189 | __u8 val[16]; |
190 | __u8 pin_len; |
191 | } __packed; |
192 | |
193 | #define MGMT_OP_LOAD_LINK_KEYS 0x0012 |
194 | struct mgmt_cp_load_link_keys { |
195 | __u8 debug_keys; |
196 | __le16 key_count; |
197 | struct mgmt_link_key_info keys[]; |
198 | } __packed; |
199 | #define MGMT_LOAD_LINK_KEYS_SIZE 3 |
200 | |
201 | #define MGMT_LTK_UNAUTHENTICATED 0x00 |
202 | #define MGMT_LTK_AUTHENTICATED 0x01 |
203 | #define MGMT_LTK_P256_UNAUTH 0x02 |
204 | #define MGMT_LTK_P256_AUTH 0x03 |
205 | #define MGMT_LTK_P256_DEBUG 0x04 |
206 | |
207 | struct mgmt_ltk_info { |
208 | struct mgmt_addr_info addr; |
209 | __u8 type; |
210 | __u8 initiator; |
211 | __u8 enc_size; |
212 | __le16 ediv; |
213 | __le64 rand; |
214 | __u8 val[16]; |
215 | } __packed; |
216 | |
217 | #define MGMT_OP_LOAD_LONG_TERM_KEYS 0x0013 |
218 | struct mgmt_cp_load_long_term_keys { |
219 | __le16 key_count; |
220 | struct mgmt_ltk_info keys[]; |
221 | } __packed; |
222 | #define MGMT_LOAD_LONG_TERM_KEYS_SIZE 2 |
223 | |
224 | #define MGMT_OP_DISCONNECT 0x0014 |
225 | struct mgmt_cp_disconnect { |
226 | struct mgmt_addr_info addr; |
227 | } __packed; |
228 | #define MGMT_DISCONNECT_SIZE MGMT_ADDR_INFO_SIZE |
229 | struct mgmt_rp_disconnect { |
230 | struct mgmt_addr_info addr; |
231 | } __packed; |
232 | |
233 | #define MGMT_OP_GET_CONNECTIONS 0x0015 |
234 | #define MGMT_GET_CONNECTIONS_SIZE 0 |
235 | struct mgmt_rp_get_connections { |
236 | __le16 conn_count; |
237 | struct mgmt_addr_info addr[]; |
238 | } __packed; |
239 | |
240 | #define MGMT_OP_PIN_CODE_REPLY 0x0016 |
241 | struct mgmt_cp_pin_code_reply { |
242 | struct mgmt_addr_info addr; |
243 | __u8 pin_len; |
244 | __u8 pin_code[16]; |
245 | } __packed; |
246 | #define MGMT_PIN_CODE_REPLY_SIZE (MGMT_ADDR_INFO_SIZE + 17) |
247 | struct mgmt_rp_pin_code_reply { |
248 | struct mgmt_addr_info addr; |
249 | } __packed; |
250 | |
251 | #define MGMT_OP_PIN_CODE_NEG_REPLY 0x0017 |
252 | struct mgmt_cp_pin_code_neg_reply { |
253 | struct mgmt_addr_info addr; |
254 | } __packed; |
255 | #define MGMT_PIN_CODE_NEG_REPLY_SIZE MGMT_ADDR_INFO_SIZE |
256 | |
257 | #define MGMT_OP_SET_IO_CAPABILITY 0x0018 |
258 | struct mgmt_cp_set_io_capability { |
259 | __u8 io_capability; |
260 | } __packed; |
261 | #define MGMT_SET_IO_CAPABILITY_SIZE 1 |
262 | |
263 | #define MGMT_OP_PAIR_DEVICE 0x0019 |
264 | struct mgmt_cp_pair_device { |
265 | struct mgmt_addr_info addr; |
266 | __u8 io_cap; |
267 | } __packed; |
268 | #define MGMT_PAIR_DEVICE_SIZE (MGMT_ADDR_INFO_SIZE + 1) |
269 | struct mgmt_rp_pair_device { |
270 | struct mgmt_addr_info addr; |
271 | } __packed; |
272 | |
273 | #define MGMT_OP_CANCEL_PAIR_DEVICE 0x001A |
274 | #define MGMT_CANCEL_PAIR_DEVICE_SIZE MGMT_ADDR_INFO_SIZE |
275 | |
276 | #define MGMT_OP_UNPAIR_DEVICE 0x001B |
277 | struct mgmt_cp_unpair_device { |
278 | struct mgmt_addr_info addr; |
279 | __u8 disconnect; |
280 | } __packed; |
281 | #define MGMT_UNPAIR_DEVICE_SIZE (MGMT_ADDR_INFO_SIZE + 1) |
282 | struct mgmt_rp_unpair_device { |
283 | struct mgmt_addr_info addr; |
284 | }; |
285 | |
286 | #define MGMT_OP_USER_CONFIRM_REPLY 0x001C |
287 | struct mgmt_cp_user_confirm_reply { |
288 | struct mgmt_addr_info addr; |
289 | } __packed; |
290 | #define MGMT_USER_CONFIRM_REPLY_SIZE MGMT_ADDR_INFO_SIZE |
291 | struct mgmt_rp_user_confirm_reply { |
292 | struct mgmt_addr_info addr; |
293 | } __packed; |
294 | |
295 | #define MGMT_OP_USER_CONFIRM_NEG_REPLY 0x001D |
296 | struct mgmt_cp_user_confirm_neg_reply { |
297 | struct mgmt_addr_info addr; |
298 | } __packed; |
299 | #define MGMT_USER_CONFIRM_NEG_REPLY_SIZE MGMT_ADDR_INFO_SIZE |
300 | |
301 | #define MGMT_OP_USER_PASSKEY_REPLY 0x001E |
302 | struct mgmt_cp_user_passkey_reply { |
303 | struct mgmt_addr_info addr; |
304 | __le32 passkey; |
305 | } __packed; |
306 | #define MGMT_USER_PASSKEY_REPLY_SIZE (MGMT_ADDR_INFO_SIZE + 4) |
307 | struct mgmt_rp_user_passkey_reply { |
308 | struct mgmt_addr_info addr; |
309 | } __packed; |
310 | |
311 | #define MGMT_OP_USER_PASSKEY_NEG_REPLY 0x001F |
312 | struct mgmt_cp_user_passkey_neg_reply { |
313 | struct mgmt_addr_info addr; |
314 | } __packed; |
315 | #define MGMT_USER_PASSKEY_NEG_REPLY_SIZE MGMT_ADDR_INFO_SIZE |
316 | |
317 | #define MGMT_OP_READ_LOCAL_OOB_DATA 0x0020 |
318 | #define MGMT_READ_LOCAL_OOB_DATA_SIZE 0 |
319 | struct mgmt_rp_read_local_oob_data { |
320 | __u8 hash192[16]; |
321 | __u8 rand192[16]; |
322 | __u8 hash256[16]; |
323 | __u8 rand256[16]; |
324 | } __packed; |
325 | |
326 | #define MGMT_OP_ADD_REMOTE_OOB_DATA 0x0021 |
327 | struct mgmt_cp_add_remote_oob_data { |
328 | struct mgmt_addr_info addr; |
329 | __u8 hash[16]; |
330 | __u8 rand[16]; |
331 | } __packed; |
332 | #define MGMT_ADD_REMOTE_OOB_DATA_SIZE (MGMT_ADDR_INFO_SIZE + 32) |
333 | struct mgmt_cp_add_remote_oob_ext_data { |
334 | struct mgmt_addr_info addr; |
335 | __u8 hash192[16]; |
336 | __u8 rand192[16]; |
337 | __u8 hash256[16]; |
338 | __u8 rand256[16]; |
339 | } __packed; |
340 | #define MGMT_ADD_REMOTE_OOB_EXT_DATA_SIZE (MGMT_ADDR_INFO_SIZE + 64) |
341 | |
342 | #define MGMT_OP_REMOVE_REMOTE_OOB_DATA 0x0022 |
343 | struct mgmt_cp_remove_remote_oob_data { |
344 | struct mgmt_addr_info addr; |
345 | } __packed; |
346 | #define MGMT_REMOVE_REMOTE_OOB_DATA_SIZE MGMT_ADDR_INFO_SIZE |
347 | |
348 | #define MGMT_OP_START_DISCOVERY 0x0023 |
349 | struct mgmt_cp_start_discovery { |
350 | __u8 type; |
351 | } __packed; |
352 | #define MGMT_START_DISCOVERY_SIZE 1 |
353 | |
354 | #define MGMT_OP_STOP_DISCOVERY 0x0024 |
355 | struct mgmt_cp_stop_discovery { |
356 | __u8 type; |
357 | } __packed; |
358 | #define MGMT_STOP_DISCOVERY_SIZE 1 |
359 | |
360 | #define MGMT_OP_CONFIRM_NAME 0x0025 |
361 | struct mgmt_cp_confirm_name { |
362 | struct mgmt_addr_info addr; |
363 | __u8 name_known; |
364 | } __packed; |
365 | #define MGMT_CONFIRM_NAME_SIZE (MGMT_ADDR_INFO_SIZE + 1) |
366 | struct mgmt_rp_confirm_name { |
367 | struct mgmt_addr_info addr; |
368 | } __packed; |
369 | |
370 | #define MGMT_OP_BLOCK_DEVICE 0x0026 |
371 | struct mgmt_cp_block_device { |
372 | struct mgmt_addr_info addr; |
373 | } __packed; |
374 | #define MGMT_BLOCK_DEVICE_SIZE MGMT_ADDR_INFO_SIZE |
375 | |
376 | #define MGMT_OP_UNBLOCK_DEVICE 0x0027 |
377 | struct mgmt_cp_unblock_device { |
378 | struct mgmt_addr_info addr; |
379 | } __packed; |
380 | #define MGMT_UNBLOCK_DEVICE_SIZE MGMT_ADDR_INFO_SIZE |
381 | |
382 | #define MGMT_OP_SET_DEVICE_ID 0x0028 |
383 | struct mgmt_cp_set_device_id { |
384 | __le16 source; |
385 | __le16 vendor; |
386 | __le16 product; |
387 | __le16 version; |
388 | } __packed; |
389 | #define MGMT_SET_DEVICE_ID_SIZE 8 |
390 | |
391 | #define MGMT_OP_SET_ADVERTISING 0x0029 |
392 | |
393 | #define MGMT_OP_SET_BREDR 0x002A |
394 | |
395 | #define MGMT_OP_SET_STATIC_ADDRESS 0x002B |
396 | struct mgmt_cp_set_static_address { |
397 | bdaddr_t bdaddr; |
398 | } __packed; |
399 | #define MGMT_SET_STATIC_ADDRESS_SIZE 6 |
400 | |
401 | #define MGMT_OP_SET_SCAN_PARAMS 0x002C |
402 | struct mgmt_cp_set_scan_params { |
403 | __le16 interval; |
404 | __le16 window; |
405 | } __packed; |
406 | #define MGMT_SET_SCAN_PARAMS_SIZE 4 |
407 | |
408 | #define MGMT_OP_SET_SECURE_CONN 0x002D |
409 | |
410 | #define MGMT_OP_SET_DEBUG_KEYS 0x002E |
411 | |
412 | #define MGMT_OP_SET_PRIVACY 0x002F |
413 | struct mgmt_cp_set_privacy { |
414 | __u8 privacy; |
415 | __u8 irk[16]; |
416 | } __packed; |
417 | #define MGMT_SET_PRIVACY_SIZE 17 |
418 | |
419 | struct mgmt_irk_info { |
420 | struct mgmt_addr_info addr; |
421 | __u8 val[16]; |
422 | } __packed; |
423 | |
424 | #define MGMT_OP_LOAD_IRKS 0x0030 |
425 | struct mgmt_cp_load_irks { |
426 | __le16 irk_count; |
427 | struct mgmt_irk_info irks[]; |
428 | } __packed; |
429 | #define MGMT_LOAD_IRKS_SIZE 2 |
430 | |
431 | #define MGMT_OP_GET_CONN_INFO 0x0031 |
432 | struct mgmt_cp_get_conn_info { |
433 | struct mgmt_addr_info addr; |
434 | } __packed; |
435 | #define MGMT_GET_CONN_INFO_SIZE MGMT_ADDR_INFO_SIZE |
436 | struct mgmt_rp_get_conn_info { |
437 | struct mgmt_addr_info addr; |
438 | __s8 rssi; |
439 | __s8 tx_power; |
440 | __s8 max_tx_power; |
441 | } __packed; |
442 | |
443 | #define MGMT_OP_GET_CLOCK_INFO 0x0032 |
444 | struct mgmt_cp_get_clock_info { |
445 | struct mgmt_addr_info addr; |
446 | } __packed; |
447 | #define MGMT_GET_CLOCK_INFO_SIZE MGMT_ADDR_INFO_SIZE |
448 | struct mgmt_rp_get_clock_info { |
449 | struct mgmt_addr_info addr; |
450 | __le32 local_clock; |
451 | __le32 piconet_clock; |
452 | __le16 accuracy; |
453 | } __packed; |
454 | |
455 | #define MGMT_OP_ADD_DEVICE 0x0033 |
456 | struct mgmt_cp_add_device { |
457 | struct mgmt_addr_info addr; |
458 | __u8 action; |
459 | } __packed; |
460 | #define MGMT_ADD_DEVICE_SIZE (MGMT_ADDR_INFO_SIZE + 1) |
461 | |
462 | #define MGMT_OP_REMOVE_DEVICE 0x0034 |
463 | struct mgmt_cp_remove_device { |
464 | struct mgmt_addr_info addr; |
465 | } __packed; |
466 | #define MGMT_REMOVE_DEVICE_SIZE MGMT_ADDR_INFO_SIZE |
467 | |
468 | struct mgmt_conn_param { |
469 | struct mgmt_addr_info addr; |
470 | __le16 min_interval; |
471 | __le16 max_interval; |
472 | __le16 latency; |
473 | __le16 timeout; |
474 | } __packed; |
475 | |
476 | #define MGMT_OP_LOAD_CONN_PARAM 0x0035 |
477 | struct mgmt_cp_load_conn_param { |
478 | __le16 param_count; |
479 | struct mgmt_conn_param params[]; |
480 | } __packed; |
481 | #define MGMT_LOAD_CONN_PARAM_SIZE 2 |
482 | |
483 | #define MGMT_OP_READ_UNCONF_INDEX_LIST 0x0036 |
484 | #define MGMT_READ_UNCONF_INDEX_LIST_SIZE 0 |
485 | struct mgmt_rp_read_unconf_index_list { |
486 | __le16 num_controllers; |
487 | __le16 index[]; |
488 | } __packed; |
489 | |
490 | #define MGMT_OPTION_EXTERNAL_CONFIG 0x00000001 |
491 | #define MGMT_OPTION_PUBLIC_ADDRESS 0x00000002 |
492 | |
493 | #define MGMT_OP_READ_CONFIG_INFO 0x0037 |
494 | #define MGMT_READ_CONFIG_INFO_SIZE 0 |
495 | struct mgmt_rp_read_config_info { |
496 | __le16 manufacturer; |
497 | __le32 supported_options; |
498 | __le32 missing_options; |
499 | } __packed; |
500 | |
501 | #define MGMT_OP_SET_EXTERNAL_CONFIG 0x0038 |
502 | struct mgmt_cp_set_external_config { |
503 | __u8 config; |
504 | } __packed; |
505 | #define MGMT_SET_EXTERNAL_CONFIG_SIZE 1 |
506 | |
507 | #define MGMT_OP_SET_PUBLIC_ADDRESS 0x0039 |
508 | struct mgmt_cp_set_public_address { |
509 | bdaddr_t bdaddr; |
510 | } __packed; |
511 | #define MGMT_SET_PUBLIC_ADDRESS_SIZE 6 |
512 | |
513 | #define MGMT_OP_START_SERVICE_DISCOVERY 0x003A |
514 | struct mgmt_cp_start_service_discovery { |
515 | __u8 type; |
516 | __s8 rssi; |
517 | __le16 uuid_count; |
518 | __u8 uuids[][16]; |
519 | } __packed; |
520 | #define MGMT_START_SERVICE_DISCOVERY_SIZE 4 |
521 | |
522 | #define MGMT_OP_READ_LOCAL_OOB_EXT_DATA 0x003B |
523 | struct mgmt_cp_read_local_oob_ext_data { |
524 | __u8 type; |
525 | } __packed; |
526 | #define MGMT_READ_LOCAL_OOB_EXT_DATA_SIZE 1 |
527 | struct mgmt_rp_read_local_oob_ext_data { |
528 | __u8 type; |
529 | __le16 eir_len; |
530 | __u8 eir[]; |
531 | } __packed; |
532 | |
533 | #define MGMT_OP_READ_EXT_INDEX_LIST 0x003C |
534 | #define MGMT_READ_EXT_INDEX_LIST_SIZE 0 |
535 | struct mgmt_rp_read_ext_index_list { |
536 | __le16 num_controllers; |
537 | struct { |
538 | __le16 index; |
539 | __u8 type; |
540 | __u8 bus; |
541 | } entry[]; |
542 | } __packed; |
543 | |
544 | #define MGMT_OP_READ_ADV_FEATURES 0x0003D |
545 | #define MGMT_READ_ADV_FEATURES_SIZE 0 |
546 | struct mgmt_rp_read_adv_features { |
547 | __le32 supported_flags; |
548 | __u8 max_adv_data_len; |
549 | __u8 max_scan_rsp_len; |
550 | __u8 max_instances; |
551 | __u8 num_instances; |
552 | __u8 instance[]; |
553 | } __packed; |
554 | |
555 | #define MGMT_OP_ADD_ADVERTISING 0x003E |
556 | struct mgmt_cp_add_advertising { |
557 | __u8 instance; |
558 | __le32 flags; |
559 | __le16 duration; |
560 | __le16 timeout; |
561 | __u8 adv_data_len; |
562 | __u8 scan_rsp_len; |
563 | __u8 data[]; |
564 | } __packed; |
565 | #define MGMT_ADD_ADVERTISING_SIZE 11 |
566 | struct mgmt_rp_add_advertising { |
567 | __u8 instance; |
568 | } __packed; |
569 | |
570 | #define MGMT_ADV_FLAG_CONNECTABLE BIT(0) |
571 | #define MGMT_ADV_FLAG_DISCOV BIT(1) |
572 | #define MGMT_ADV_FLAG_LIMITED_DISCOV BIT(2) |
573 | #define MGMT_ADV_FLAG_MANAGED_FLAGS BIT(3) |
574 | #define MGMT_ADV_FLAG_TX_POWER BIT(4) |
575 | #define MGMT_ADV_FLAG_APPEARANCE BIT(5) |
576 | #define MGMT_ADV_FLAG_LOCAL_NAME BIT(6) |
577 | #define MGMT_ADV_FLAG_SEC_1M BIT(7) |
578 | #define MGMT_ADV_FLAG_SEC_2M BIT(8) |
579 | #define MGMT_ADV_FLAG_SEC_CODED BIT(9) |
580 | #define MGMT_ADV_FLAG_CAN_SET_TX_POWER BIT(10) |
581 | #define MGMT_ADV_FLAG_HW_OFFLOAD BIT(11) |
582 | #define MGMT_ADV_PARAM_DURATION BIT(12) |
583 | #define MGMT_ADV_PARAM_TIMEOUT BIT(13) |
584 | #define MGMT_ADV_PARAM_INTERVALS BIT(14) |
585 | #define MGMT_ADV_PARAM_TX_POWER BIT(15) |
586 | #define MGMT_ADV_PARAM_SCAN_RSP BIT(16) |
587 | |
588 | #define MGMT_ADV_FLAG_SEC_MASK (MGMT_ADV_FLAG_SEC_1M | MGMT_ADV_FLAG_SEC_2M | \ |
589 | MGMT_ADV_FLAG_SEC_CODED) |
590 | |
591 | #define MGMT_OP_REMOVE_ADVERTISING 0x003F |
592 | struct mgmt_cp_remove_advertising { |
593 | __u8 instance; |
594 | } __packed; |
595 | #define MGMT_REMOVE_ADVERTISING_SIZE 1 |
596 | struct mgmt_rp_remove_advertising { |
597 | __u8 instance; |
598 | } __packed; |
599 | |
600 | #define MGMT_OP_GET_ADV_SIZE_INFO 0x0040 |
601 | struct mgmt_cp_get_adv_size_info { |
602 | __u8 instance; |
603 | __le32 flags; |
604 | } __packed; |
605 | #define MGMT_GET_ADV_SIZE_INFO_SIZE 5 |
606 | struct mgmt_rp_get_adv_size_info { |
607 | __u8 instance; |
608 | __le32 flags; |
609 | __u8 max_adv_data_len; |
610 | __u8 max_scan_rsp_len; |
611 | } __packed; |
612 | |
613 | #define MGMT_OP_START_LIMITED_DISCOVERY 0x0041 |
614 | |
615 | #define MGMT_OP_READ_EXT_INFO 0x0042 |
616 | #define MGMT_READ_EXT_INFO_SIZE 0 |
617 | struct mgmt_rp_read_ext_info { |
618 | bdaddr_t bdaddr; |
619 | __u8 version; |
620 | __le16 manufacturer; |
621 | __le32 supported_settings; |
622 | __le32 current_settings; |
623 | __le16 eir_len; |
624 | __u8 eir[]; |
625 | } __packed; |
626 | |
627 | #define MGMT_OP_SET_APPEARANCE 0x0043 |
628 | struct mgmt_cp_set_appearance { |
629 | __le16 appearance; |
630 | } __packed; |
631 | #define MGMT_SET_APPEARANCE_SIZE 2 |
632 | |
633 | #define MGMT_OP_GET_PHY_CONFIGURATION 0x0044 |
634 | struct mgmt_rp_get_phy_configuration { |
635 | __le32 supported_phys; |
636 | __le32 configurable_phys; |
637 | __le32 selected_phys; |
638 | } __packed; |
639 | #define MGMT_GET_PHY_CONFIGURATION_SIZE 0 |
640 | |
641 | #define MGMT_PHY_BR_1M_1SLOT BIT(0) |
642 | #define MGMT_PHY_BR_1M_3SLOT BIT(1) |
643 | #define MGMT_PHY_BR_1M_5SLOT BIT(2) |
644 | #define MGMT_PHY_EDR_2M_1SLOT BIT(3) |
645 | #define MGMT_PHY_EDR_2M_3SLOT BIT(4) |
646 | #define MGMT_PHY_EDR_2M_5SLOT BIT(5) |
647 | #define MGMT_PHY_EDR_3M_1SLOT BIT(6) |
648 | #define MGMT_PHY_EDR_3M_3SLOT BIT(7) |
649 | #define MGMT_PHY_EDR_3M_5SLOT BIT(8) |
650 | #define MGMT_PHY_LE_1M_TX BIT(9) |
651 | #define MGMT_PHY_LE_1M_RX BIT(10) |
652 | #define MGMT_PHY_LE_2M_TX BIT(11) |
653 | #define MGMT_PHY_LE_2M_RX BIT(12) |
654 | #define MGMT_PHY_LE_CODED_TX BIT(13) |
655 | #define MGMT_PHY_LE_CODED_RX BIT(14) |
656 | |
657 | #define MGMT_PHY_BREDR_MASK (MGMT_PHY_BR_1M_1SLOT | MGMT_PHY_BR_1M_3SLOT | \ |
658 | MGMT_PHY_BR_1M_5SLOT | MGMT_PHY_EDR_2M_1SLOT | \ |
659 | MGMT_PHY_EDR_2M_3SLOT | MGMT_PHY_EDR_2M_5SLOT | \ |
660 | MGMT_PHY_EDR_3M_1SLOT | MGMT_PHY_EDR_3M_3SLOT | \ |
661 | MGMT_PHY_EDR_3M_5SLOT) |
662 | #define MGMT_PHY_LE_MASK (MGMT_PHY_LE_1M_TX | MGMT_PHY_LE_1M_RX | \ |
663 | MGMT_PHY_LE_2M_TX | MGMT_PHY_LE_2M_RX | \ |
664 | MGMT_PHY_LE_CODED_TX | MGMT_PHY_LE_CODED_RX) |
665 | #define MGMT_PHY_LE_TX_MASK (MGMT_PHY_LE_1M_TX | MGMT_PHY_LE_2M_TX | \ |
666 | MGMT_PHY_LE_CODED_TX) |
667 | #define MGMT_PHY_LE_RX_MASK (MGMT_PHY_LE_1M_RX | MGMT_PHY_LE_2M_RX | \ |
668 | MGMT_PHY_LE_CODED_RX) |
669 | |
670 | #define MGMT_OP_SET_PHY_CONFIGURATION 0x0045 |
671 | struct mgmt_cp_set_phy_configuration { |
672 | __le32 selected_phys; |
673 | } __packed; |
674 | #define MGMT_SET_PHY_CONFIGURATION_SIZE 4 |
675 | |
676 | #define MGMT_OP_SET_BLOCKED_KEYS 0x0046 |
677 | |
678 | #define HCI_BLOCKED_KEY_TYPE_LINKKEY 0x00 |
679 | #define HCI_BLOCKED_KEY_TYPE_LTK 0x01 |
680 | #define HCI_BLOCKED_KEY_TYPE_IRK 0x02 |
681 | |
682 | struct mgmt_blocked_key_info { |
683 | __u8 type; |
684 | __u8 val[16]; |
685 | } __packed; |
686 | |
687 | struct mgmt_cp_set_blocked_keys { |
688 | __le16 key_count; |
689 | struct mgmt_blocked_key_info keys[]; |
690 | } __packed; |
691 | #define MGMT_OP_SET_BLOCKED_KEYS_SIZE 2 |
692 | |
693 | #define MGMT_OP_SET_WIDEBAND_SPEECH 0x0047 |
694 | |
695 | #define MGMT_CAP_SEC_FLAGS 0x01 |
696 | #define MGMT_CAP_MAX_ENC_KEY_SIZE 0x02 |
697 | #define MGMT_CAP_SMP_MAX_ENC_KEY_SIZE 0x03 |
698 | #define MGMT_CAP_LE_TX_PWR 0x04 |
699 | |
700 | #define MGMT_OP_READ_CONTROLLER_CAP 0x0048 |
701 | #define MGMT_READ_CONTROLLER_CAP_SIZE 0 |
702 | struct mgmt_rp_read_controller_cap { |
703 | __le16 cap_len; |
704 | __u8 cap[]; |
705 | } __packed; |
706 | |
707 | #define MGMT_OP_READ_EXP_FEATURES_INFO 0x0049 |
708 | #define MGMT_READ_EXP_FEATURES_INFO_SIZE 0 |
709 | struct mgmt_rp_read_exp_features_info { |
710 | __le16 feature_count; |
711 | struct { |
712 | __u8 uuid[16]; |
713 | __le32 flags; |
714 | } features[]; |
715 | } __packed; |
716 | |
717 | #define MGMT_OP_SET_EXP_FEATURE 0x004a |
718 | struct mgmt_cp_set_exp_feature { |
719 | __u8 uuid[16]; |
720 | __u8 param[]; |
721 | } __packed; |
722 | #define MGMT_SET_EXP_FEATURE_SIZE 16 |
723 | struct mgmt_rp_set_exp_feature { |
724 | __u8 uuid[16]; |
725 | __le32 flags; |
726 | } __packed; |
727 | |
728 | #define MGMT_OP_READ_DEF_SYSTEM_CONFIG 0x004b |
729 | #define MGMT_READ_DEF_SYSTEM_CONFIG_SIZE 0 |
730 | |
731 | #define MGMT_OP_SET_DEF_SYSTEM_CONFIG 0x004c |
732 | #define MGMT_SET_DEF_SYSTEM_CONFIG_SIZE 0 |
733 | |
734 | #define MGMT_OP_READ_DEF_RUNTIME_CONFIG 0x004d |
735 | #define MGMT_READ_DEF_RUNTIME_CONFIG_SIZE 0 |
736 | |
737 | #define MGMT_OP_SET_DEF_RUNTIME_CONFIG 0x004e |
738 | #define MGMT_SET_DEF_RUNTIME_CONFIG_SIZE 0 |
739 | |
740 | #define MGMT_OP_GET_DEVICE_FLAGS 0x004F |
741 | #define MGMT_GET_DEVICE_FLAGS_SIZE 7 |
742 | struct mgmt_cp_get_device_flags { |
743 | struct mgmt_addr_info addr; |
744 | } __packed; |
745 | struct mgmt_rp_get_device_flags { |
746 | struct mgmt_addr_info addr; |
747 | __le32 supported_flags; |
748 | __le32 current_flags; |
749 | } __packed; |
750 | |
751 | #define MGMT_OP_SET_DEVICE_FLAGS 0x0050 |
752 | #define MGMT_SET_DEVICE_FLAGS_SIZE 11 |
753 | struct mgmt_cp_set_device_flags { |
754 | struct mgmt_addr_info addr; |
755 | __le32 current_flags; |
756 | } __packed; |
757 | struct mgmt_rp_set_device_flags { |
758 | struct mgmt_addr_info addr; |
759 | } __packed; |
760 | |
761 | #define MGMT_ADV_MONITOR_FEATURE_MASK_OR_PATTERNS BIT(0) |
762 | |
763 | #define MGMT_OP_READ_ADV_MONITOR_FEATURES 0x0051 |
764 | #define MGMT_READ_ADV_MONITOR_FEATURES_SIZE 0 |
765 | struct mgmt_rp_read_adv_monitor_features { |
766 | __le32 supported_features; |
767 | __le32 enabled_features; |
768 | __le16 max_num_handles; |
769 | __u8 max_num_patterns; |
770 | __le16 num_handles; |
771 | __le16 handles[]; |
772 | } __packed; |
773 | |
774 | struct mgmt_adv_pattern { |
775 | __u8 ad_type; |
776 | __u8 offset; |
777 | __u8 length; |
778 | __u8 value[31]; |
779 | } __packed; |
780 | |
781 | #define MGMT_OP_ADD_ADV_PATTERNS_MONITOR 0x0052 |
782 | struct mgmt_cp_add_adv_patterns_monitor { |
783 | __u8 pattern_count; |
784 | struct mgmt_adv_pattern patterns[]; |
785 | } __packed; |
786 | #define MGMT_ADD_ADV_PATTERNS_MONITOR_SIZE 1 |
787 | struct mgmt_rp_add_adv_patterns_monitor { |
788 | __le16 monitor_handle; |
789 | } __packed; |
790 | |
791 | #define MGMT_OP_REMOVE_ADV_MONITOR 0x0053 |
792 | struct mgmt_cp_remove_adv_monitor { |
793 | __le16 monitor_handle; |
794 | } __packed; |
795 | #define MGMT_REMOVE_ADV_MONITOR_SIZE 2 |
796 | struct mgmt_rp_remove_adv_monitor { |
797 | __le16 monitor_handle; |
798 | } __packed; |
799 | |
800 | #define MGMT_OP_ADD_EXT_ADV_PARAMS 0x0054 |
801 | struct mgmt_cp_add_ext_adv_params { |
802 | __u8 instance; |
803 | __le32 flags; |
804 | __le16 duration; |
805 | __le16 timeout; |
806 | __le32 min_interval; |
807 | __le32 max_interval; |
808 | __s8 tx_power; |
809 | } __packed; |
810 | #define MGMT_ADD_EXT_ADV_PARAMS_MIN_SIZE 18 |
811 | struct mgmt_rp_add_ext_adv_params { |
812 | __u8 instance; |
813 | __s8 tx_power; |
814 | __u8 max_adv_data_len; |
815 | __u8 max_scan_rsp_len; |
816 | } __packed; |
817 | |
818 | #define MGMT_OP_ADD_EXT_ADV_DATA 0x0055 |
819 | struct mgmt_cp_add_ext_adv_data { |
820 | __u8 instance; |
821 | __u8 adv_data_len; |
822 | __u8 scan_rsp_len; |
823 | __u8 data[]; |
824 | } __packed; |
825 | #define MGMT_ADD_EXT_ADV_DATA_SIZE 3 |
826 | struct mgmt_rp_add_ext_adv_data { |
827 | __u8 instance; |
828 | } __packed; |
829 | |
830 | struct mgmt_adv_rssi_thresholds { |
831 | __s8 high_threshold; |
832 | __le16 high_threshold_timeout; |
833 | __s8 low_threshold; |
834 | __le16 low_threshold_timeout; |
835 | __u8 sampling_period; |
836 | } __packed; |
837 | |
838 | #define MGMT_OP_ADD_ADV_PATTERNS_MONITOR_RSSI 0x0056 |
839 | struct mgmt_cp_add_adv_patterns_monitor_rssi { |
840 | struct mgmt_adv_rssi_thresholds rssi; |
841 | __u8 pattern_count; |
842 | struct mgmt_adv_pattern patterns[]; |
843 | } __packed; |
844 | #define MGMT_ADD_ADV_PATTERNS_MONITOR_RSSI_SIZE 8 |
845 | #define MGMT_OP_SET_MESH_RECEIVER 0x0057 |
846 | struct mgmt_cp_set_mesh { |
847 | __u8 enable; |
848 | __le16 window; |
849 | __le16 period; |
850 | __u8 num_ad_types; |
851 | __u8 ad_types[]; |
852 | } __packed; |
853 | #define MGMT_SET_MESH_RECEIVER_SIZE 6 |
854 | |
855 | #define MGMT_OP_MESH_READ_FEATURES 0x0058 |
856 | #define MGMT_MESH_READ_FEATURES_SIZE 0 |
857 | #define MESH_HANDLES_MAX 3 |
858 | struct mgmt_rp_mesh_read_features { |
859 | __le16 index; |
860 | __u8 max_handles; |
861 | __u8 used_handles; |
862 | __u8 handles[MESH_HANDLES_MAX]; |
863 | } __packed; |
864 | |
865 | #define MGMT_OP_MESH_SEND 0x0059 |
866 | struct mgmt_cp_mesh_send { |
867 | struct mgmt_addr_info addr; |
868 | __le64 instant; |
869 | __le16 delay; |
870 | __u8 cnt; |
871 | __u8 adv_data_len; |
872 | __u8 adv_data[]; |
873 | } __packed; |
874 | #define MGMT_MESH_SEND_SIZE 19 |
875 | |
876 | #define MGMT_OP_MESH_SEND_CANCEL 0x005A |
877 | struct mgmt_cp_mesh_send_cancel { |
878 | __u8 handle; |
879 | } __packed; |
880 | #define MGMT_MESH_SEND_CANCEL_SIZE 1 |
881 | |
882 | #define MGMT_OP_HCI_CMD_SYNC 0x005B |
883 | struct mgmt_cp_hci_cmd_sync { |
884 | __le16 opcode; |
885 | __u8 event; |
886 | __u8 timeout; |
887 | __le16 params_len; |
888 | __u8 params[]; |
889 | } __packed; |
890 | #define MGMT_HCI_CMD_SYNC_SIZE 6 |
891 | |
892 | #define MGMT_EV_CMD_COMPLETE 0x0001 |
893 | struct mgmt_ev_cmd_complete { |
894 | __le16 opcode; |
895 | __u8 status; |
896 | __u8 data[]; |
897 | } __packed; |
898 | |
899 | #define MGMT_EV_CMD_STATUS 0x0002 |
900 | struct mgmt_ev_cmd_status { |
901 | __le16 opcode; |
902 | __u8 status; |
903 | } __packed; |
904 | |
905 | #define MGMT_EV_CONTROLLER_ERROR 0x0003 |
906 | struct mgmt_ev_controller_error { |
907 | __u8 error_code; |
908 | } __packed; |
909 | |
910 | #define MGMT_EV_INDEX_ADDED 0x0004 |
911 | |
912 | #define MGMT_EV_INDEX_REMOVED 0x0005 |
913 | |
914 | #define MGMT_EV_NEW_SETTINGS 0x0006 |
915 | |
916 | #define MGMT_EV_CLASS_OF_DEV_CHANGED 0x0007 |
917 | struct mgmt_ev_class_of_dev_changed { |
918 | __u8 dev_class[3]; |
919 | }; |
920 | |
921 | #define MGMT_EV_LOCAL_NAME_CHANGED 0x0008 |
922 | struct mgmt_ev_local_name_changed { |
923 | __u8 name[MGMT_MAX_NAME_LENGTH]; |
924 | __u8 short_name[MGMT_MAX_SHORT_NAME_LENGTH]; |
925 | } __packed; |
926 | |
927 | #define MGMT_EV_NEW_LINK_KEY 0x0009 |
928 | struct mgmt_ev_new_link_key { |
929 | __u8 store_hint; |
930 | struct mgmt_link_key_info key; |
931 | } __packed; |
932 | |
933 | #define MGMT_EV_NEW_LONG_TERM_KEY 0x000A |
934 | struct mgmt_ev_new_long_term_key { |
935 | __u8 store_hint; |
936 | struct mgmt_ltk_info key; |
937 | } __packed; |
938 | |
939 | #define MGMT_EV_DEVICE_CONNECTED 0x000B |
940 | struct mgmt_ev_device_connected { |
941 | struct mgmt_addr_info addr; |
942 | __le32 flags; |
943 | __le16 eir_len; |
944 | __u8 eir[]; |
945 | } __packed; |
946 | |
947 | #define MGMT_DEV_DISCONN_UNKNOWN 0x00 |
948 | #define MGMT_DEV_DISCONN_TIMEOUT 0x01 |
949 | #define MGMT_DEV_DISCONN_LOCAL_HOST 0x02 |
950 | #define MGMT_DEV_DISCONN_REMOTE 0x03 |
951 | #define MGMT_DEV_DISCONN_AUTH_FAILURE 0x04 |
952 | #define MGMT_DEV_DISCONN_LOCAL_HOST_SUSPEND 0x05 |
953 | |
954 | #define MGMT_EV_DEVICE_DISCONNECTED 0x000C |
955 | struct mgmt_ev_device_disconnected { |
956 | struct mgmt_addr_info addr; |
957 | __u8 reason; |
958 | } __packed; |
959 | |
960 | #define MGMT_EV_CONNECT_FAILED 0x000D |
961 | struct mgmt_ev_connect_failed { |
962 | struct mgmt_addr_info addr; |
963 | __u8 status; |
964 | } __packed; |
965 | |
966 | #define MGMT_EV_PIN_CODE_REQUEST 0x000E |
967 | struct mgmt_ev_pin_code_request { |
968 | struct mgmt_addr_info addr; |
969 | __u8 secure; |
970 | } __packed; |
971 | |
972 | #define MGMT_EV_USER_CONFIRM_REQUEST 0x000F |
973 | struct mgmt_ev_user_confirm_request { |
974 | struct mgmt_addr_info addr; |
975 | __u8 confirm_hint; |
976 | __le32 value; |
977 | } __packed; |
978 | |
979 | #define MGMT_EV_USER_PASSKEY_REQUEST 0x0010 |
980 | struct mgmt_ev_user_passkey_request { |
981 | struct mgmt_addr_info addr; |
982 | } __packed; |
983 | |
984 | #define MGMT_EV_AUTH_FAILED 0x0011 |
985 | struct mgmt_ev_auth_failed { |
986 | struct mgmt_addr_info addr; |
987 | __u8 status; |
988 | } __packed; |
989 | |
990 | #define MGMT_DEV_FOUND_CONFIRM_NAME BIT(0) |
991 | #define MGMT_DEV_FOUND_LEGACY_PAIRING BIT(1) |
992 | #define MGMT_DEV_FOUND_NOT_CONNECTABLE BIT(2) |
993 | #define MGMT_DEV_FOUND_INITIATED_CONN BIT(3) |
994 | #define MGMT_DEV_FOUND_NAME_REQUEST_FAILED BIT(4) |
995 | #define MGMT_DEV_FOUND_SCAN_RSP BIT(5) |
996 | |
997 | #define MGMT_EV_DEVICE_FOUND 0x0012 |
998 | struct mgmt_ev_device_found { |
999 | struct mgmt_addr_info addr; |
1000 | __s8 rssi; |
1001 | __le32 flags; |
1002 | __le16 eir_len; |
1003 | __u8 eir[]; |
1004 | } __packed; |
1005 | |
1006 | #define MGMT_EV_DISCOVERING 0x0013 |
1007 | struct mgmt_ev_discovering { |
1008 | __u8 type; |
1009 | __u8 discovering; |
1010 | } __packed; |
1011 | |
1012 | #define MGMT_EV_DEVICE_BLOCKED 0x0014 |
1013 | struct mgmt_ev_device_blocked { |
1014 | struct mgmt_addr_info addr; |
1015 | } __packed; |
1016 | |
1017 | #define MGMT_EV_DEVICE_UNBLOCKED 0x0015 |
1018 | struct mgmt_ev_device_unblocked { |
1019 | struct mgmt_addr_info addr; |
1020 | } __packed; |
1021 | |
1022 | #define MGMT_EV_DEVICE_UNPAIRED 0x0016 |
1023 | struct mgmt_ev_device_unpaired { |
1024 | struct mgmt_addr_info addr; |
1025 | } __packed; |
1026 | |
1027 | #define MGMT_EV_PASSKEY_NOTIFY 0x0017 |
1028 | struct mgmt_ev_passkey_notify { |
1029 | struct mgmt_addr_info addr; |
1030 | __le32 passkey; |
1031 | __u8 entered; |
1032 | } __packed; |
1033 | |
1034 | #define MGMT_EV_NEW_IRK 0x0018 |
1035 | struct mgmt_ev_new_irk { |
1036 | __u8 store_hint; |
1037 | bdaddr_t rpa; |
1038 | struct mgmt_irk_info irk; |
1039 | } __packed; |
1040 | |
1041 | #define MGMT_CSRK_LOCAL_UNAUTHENTICATED 0x00 |
1042 | #define MGMT_CSRK_REMOTE_UNAUTHENTICATED 0x01 |
1043 | #define MGMT_CSRK_LOCAL_AUTHENTICATED 0x02 |
1044 | #define MGMT_CSRK_REMOTE_AUTHENTICATED 0x03 |
1045 | |
1046 | struct mgmt_csrk_info { |
1047 | struct mgmt_addr_info addr; |
1048 | __u8 type; |
1049 | __u8 val[16]; |
1050 | } __packed; |
1051 | |
1052 | #define MGMT_EV_NEW_CSRK 0x0019 |
1053 | struct mgmt_ev_new_csrk { |
1054 | __u8 store_hint; |
1055 | struct mgmt_csrk_info key; |
1056 | } __packed; |
1057 | |
1058 | #define MGMT_EV_DEVICE_ADDED 0x001a |
1059 | struct mgmt_ev_device_added { |
1060 | struct mgmt_addr_info addr; |
1061 | __u8 action; |
1062 | } __packed; |
1063 | |
1064 | #define MGMT_EV_DEVICE_REMOVED 0x001b |
1065 | struct mgmt_ev_device_removed { |
1066 | struct mgmt_addr_info addr; |
1067 | } __packed; |
1068 | |
1069 | #define MGMT_EV_NEW_CONN_PARAM 0x001c |
1070 | struct mgmt_ev_new_conn_param { |
1071 | struct mgmt_addr_info addr; |
1072 | __u8 store_hint; |
1073 | __le16 min_interval; |
1074 | __le16 max_interval; |
1075 | __le16 latency; |
1076 | __le16 timeout; |
1077 | } __packed; |
1078 | |
1079 | #define MGMT_EV_UNCONF_INDEX_ADDED 0x001d |
1080 | |
1081 | #define MGMT_EV_UNCONF_INDEX_REMOVED 0x001e |
1082 | |
1083 | #define MGMT_EV_NEW_CONFIG_OPTIONS 0x001f |
1084 | |
1085 | struct mgmt_ev_ext_index { |
1086 | __u8 type; |
1087 | __u8 bus; |
1088 | } __packed; |
1089 | |
1090 | #define MGMT_EV_EXT_INDEX_ADDED 0x0020 |
1091 | |
1092 | #define MGMT_EV_EXT_INDEX_REMOVED 0x0021 |
1093 | |
1094 | #define MGMT_EV_LOCAL_OOB_DATA_UPDATED 0x0022 |
1095 | struct mgmt_ev_local_oob_data_updated { |
1096 | __u8 type; |
1097 | __le16 eir_len; |
1098 | __u8 eir[]; |
1099 | } __packed; |
1100 | |
1101 | #define MGMT_EV_ADVERTISING_ADDED 0x0023 |
1102 | struct mgmt_ev_advertising_added { |
1103 | __u8 instance; |
1104 | } __packed; |
1105 | |
1106 | #define MGMT_EV_ADVERTISING_REMOVED 0x0024 |
1107 | struct mgmt_ev_advertising_removed { |
1108 | __u8 instance; |
1109 | } __packed; |
1110 | |
1111 | #define MGMT_EV_EXT_INFO_CHANGED 0x0025 |
1112 | struct mgmt_ev_ext_info_changed { |
1113 | __le16 eir_len; |
1114 | __u8 eir[]; |
1115 | } __packed; |
1116 | |
1117 | #define MGMT_EV_PHY_CONFIGURATION_CHANGED 0x0026 |
1118 | struct mgmt_ev_phy_configuration_changed { |
1119 | __le32 selected_phys; |
1120 | } __packed; |
1121 | |
1122 | #define MGMT_EV_EXP_FEATURE_CHANGED 0x0027 |
1123 | struct mgmt_ev_exp_feature_changed { |
1124 | __u8 uuid[16]; |
1125 | __le32 flags; |
1126 | } __packed; |
1127 | |
1128 | #define MGMT_EV_DEVICE_FLAGS_CHANGED 0x002a |
1129 | struct mgmt_ev_device_flags_changed { |
1130 | struct mgmt_addr_info addr; |
1131 | __le32 supported_flags; |
1132 | __le32 current_flags; |
1133 | } __packed; |
1134 | |
1135 | #define MGMT_EV_ADV_MONITOR_ADDED 0x002b |
1136 | struct mgmt_ev_adv_monitor_added { |
1137 | __le16 monitor_handle; |
1138 | } __packed; |
1139 | |
1140 | #define MGMT_EV_ADV_MONITOR_REMOVED 0x002c |
1141 | struct mgmt_ev_adv_monitor_removed { |
1142 | __le16 monitor_handle; |
1143 | } __packed; |
1144 | |
1145 | #define MGMT_EV_CONTROLLER_SUSPEND 0x002d |
1146 | struct mgmt_ev_controller_suspend { |
1147 | __u8 suspend_state; |
1148 | } __packed; |
1149 | |
1150 | #define MGMT_EV_CONTROLLER_RESUME 0x002e |
1151 | struct mgmt_ev_controller_resume { |
1152 | __u8 wake_reason; |
1153 | struct mgmt_addr_info addr; |
1154 | } __packed; |
1155 | |
1156 | #define MGMT_WAKE_REASON_NON_BT_WAKE 0x0 |
1157 | #define MGMT_WAKE_REASON_UNEXPECTED 0x1 |
1158 | #define MGMT_WAKE_REASON_REMOTE_WAKE 0x2 |
1159 | |
1160 | #define MGMT_EV_ADV_MONITOR_DEVICE_FOUND 0x002f |
1161 | struct mgmt_ev_adv_monitor_device_found { |
1162 | __le16 monitor_handle; |
1163 | struct mgmt_addr_info addr; |
1164 | __s8 rssi; |
1165 | __le32 flags; |
1166 | __le16 eir_len; |
1167 | __u8 eir[]; |
1168 | } __packed; |
1169 | |
1170 | #define MGMT_EV_ADV_MONITOR_DEVICE_LOST 0x0030 |
1171 | struct mgmt_ev_adv_monitor_device_lost { |
1172 | __le16 monitor_handle; |
1173 | struct mgmt_addr_info addr; |
1174 | } __packed; |
1175 | |
1176 | #define MGMT_EV_MESH_DEVICE_FOUND 0x0031 |
1177 | struct mgmt_ev_mesh_device_found { |
1178 | struct mgmt_addr_info addr; |
1179 | __s8 rssi; |
1180 | __le64 instant; |
1181 | __le32 flags; |
1182 | __le16 eir_len; |
1183 | __u8 eir[]; |
1184 | } __packed; |
1185 | |
1186 | |
1187 | #define MGMT_EV_MESH_PACKET_CMPLT 0x0032 |
1188 | struct mgmt_ev_mesh_pkt_cmplt { |
1189 | __u8 handle; |
1190 | } __packed; |
1191 |
Definitions
- mgmt_hdr
- mgmt_tlv
- mgmt_addr_info
- mgmt_rp_read_version
- mgmt_rp_read_commands
- mgmt_rp_read_index_list
- mgmt_rp_read_info
- mgmt_mode
- mgmt_cp_set_discoverable
- mgmt_cp_set_dev_class
- mgmt_cp_set_local_name
- mgmt_cp_add_uuid
- mgmt_cp_remove_uuid
- mgmt_link_key_info
- mgmt_cp_load_link_keys
- mgmt_ltk_info
- mgmt_cp_load_long_term_keys
- mgmt_cp_disconnect
- mgmt_rp_disconnect
- mgmt_rp_get_connections
- mgmt_cp_pin_code_reply
- mgmt_rp_pin_code_reply
- mgmt_cp_pin_code_neg_reply
- mgmt_cp_set_io_capability
- mgmt_cp_pair_device
- mgmt_rp_pair_device
- mgmt_cp_unpair_device
- mgmt_rp_unpair_device
- mgmt_cp_user_confirm_reply
- mgmt_rp_user_confirm_reply
- mgmt_cp_user_confirm_neg_reply
- mgmt_cp_user_passkey_reply
- mgmt_rp_user_passkey_reply
- mgmt_cp_user_passkey_neg_reply
- mgmt_rp_read_local_oob_data
- mgmt_cp_add_remote_oob_data
- mgmt_cp_add_remote_oob_ext_data
- mgmt_cp_remove_remote_oob_data
- mgmt_cp_start_discovery
- mgmt_cp_stop_discovery
- mgmt_cp_confirm_name
- mgmt_rp_confirm_name
- mgmt_cp_block_device
- mgmt_cp_unblock_device
- mgmt_cp_set_device_id
- mgmt_cp_set_static_address
- mgmt_cp_set_scan_params
- mgmt_cp_set_privacy
- mgmt_irk_info
- mgmt_cp_load_irks
- mgmt_cp_get_conn_info
- mgmt_rp_get_conn_info
- mgmt_cp_get_clock_info
- mgmt_rp_get_clock_info
- mgmt_cp_add_device
- mgmt_cp_remove_device
- mgmt_conn_param
- mgmt_cp_load_conn_param
- mgmt_rp_read_unconf_index_list
- mgmt_rp_read_config_info
- mgmt_cp_set_external_config
- mgmt_cp_set_public_address
- mgmt_cp_start_service_discovery
- mgmt_cp_read_local_oob_ext_data
- mgmt_rp_read_local_oob_ext_data
- mgmt_rp_read_ext_index_list
- mgmt_rp_read_adv_features
- mgmt_cp_add_advertising
- mgmt_rp_add_advertising
- mgmt_cp_remove_advertising
- mgmt_rp_remove_advertising
- mgmt_cp_get_adv_size_info
- mgmt_rp_get_adv_size_info
- mgmt_rp_read_ext_info
- mgmt_cp_set_appearance
- mgmt_rp_get_phy_configuration
- mgmt_cp_set_phy_configuration
- mgmt_blocked_key_info
- mgmt_cp_set_blocked_keys
- mgmt_rp_read_controller_cap
- mgmt_rp_read_exp_features_info
- mgmt_cp_set_exp_feature
- mgmt_rp_set_exp_feature
- mgmt_cp_get_device_flags
- mgmt_rp_get_device_flags
- mgmt_cp_set_device_flags
- mgmt_rp_set_device_flags
- mgmt_rp_read_adv_monitor_features
- mgmt_adv_pattern
- mgmt_cp_add_adv_patterns_monitor
- mgmt_rp_add_adv_patterns_monitor
- mgmt_cp_remove_adv_monitor
- mgmt_rp_remove_adv_monitor
- mgmt_cp_add_ext_adv_params
- mgmt_rp_add_ext_adv_params
- mgmt_cp_add_ext_adv_data
- mgmt_rp_add_ext_adv_data
- mgmt_adv_rssi_thresholds
- mgmt_cp_add_adv_patterns_monitor_rssi
- mgmt_cp_set_mesh
- mgmt_rp_mesh_read_features
- mgmt_cp_mesh_send
- mgmt_cp_mesh_send_cancel
- mgmt_cp_hci_cmd_sync
- mgmt_ev_cmd_complete
- mgmt_ev_cmd_status
- mgmt_ev_controller_error
- mgmt_ev_class_of_dev_changed
- mgmt_ev_local_name_changed
- mgmt_ev_new_link_key
- mgmt_ev_new_long_term_key
- mgmt_ev_device_connected
- mgmt_ev_device_disconnected
- mgmt_ev_connect_failed
- mgmt_ev_pin_code_request
- mgmt_ev_user_confirm_request
- mgmt_ev_user_passkey_request
- mgmt_ev_auth_failed
- mgmt_ev_device_found
- mgmt_ev_discovering
- mgmt_ev_device_blocked
- mgmt_ev_device_unblocked
- mgmt_ev_device_unpaired
- mgmt_ev_passkey_notify
- mgmt_ev_new_irk
- mgmt_csrk_info
- mgmt_ev_new_csrk
- mgmt_ev_device_added
- mgmt_ev_device_removed
- mgmt_ev_new_conn_param
- mgmt_ev_ext_index
- mgmt_ev_local_oob_data_updated
- mgmt_ev_advertising_added
- mgmt_ev_advertising_removed
- mgmt_ev_ext_info_changed
- mgmt_ev_phy_configuration_changed
- mgmt_ev_exp_feature_changed
- mgmt_ev_device_flags_changed
- mgmt_ev_adv_monitor_added
- mgmt_ev_adv_monitor_removed
- mgmt_ev_controller_suspend
- mgmt_ev_controller_resume
- mgmt_ev_adv_monitor_device_found
- mgmt_ev_adv_monitor_device_lost
- mgmt_ev_mesh_device_found
Improve your Profiling and Debugging skills
Find out more