Go to the documentation of this file.
28 #define HCI_MAX_ACL_SIZE 1024
29 #define HCI_MAX_SCO_SIZE 255
30 #define HCI_MAX_EVENT_SIZE 260
31 #define HCI_MAX_FRAME_SIZE (HCI_MAX_ACL_SIZE + 4)
33 #define HCI_LINK_KEY_SIZE 16
34 #define HCI_AMP_LINK_KEY_SIZE (2 * HCI_LINK_KEY_SIZE)
38 #define HCI_DEV_UNREG 2
40 #define HCI_DEV_DOWN 4
41 #define HCI_DEV_SUSPEND 5
42 #define HCI_DEV_RESUME 6
45 #define HCI_NOTIFY_CONN_ADD 1
46 #define HCI_NOTIFY_CONN_DEL 2
47 #define HCI_NOTIFY_VOICE_SETTING 3
59 #define HCI_BREDR 0x00
63 #define HCI_BREDR_ID 0
66 #define AMP_CTRL_POWERED_DOWN 0x00
67 #define AMP_CTRL_BLUETOOTH_ONLY 0x01
68 #define AMP_CTRL_NO_CAPACITY 0x02
69 #define AMP_CTRL_LOW_CAPACITY 0x03
70 #define AMP_CTRL_MEDIUM_CAPACITY 0x04
71 #define AMP_CTRL_HIGH_CAPACITY 0x05
72 #define AMP_CTRL_FULL_CAPACITY 0x06
124 #define HCIDEVUP _IOW('H', 201, int)
125 #define HCIDEVDOWN _IOW('H', 202, int)
126 #define HCIDEVRESET _IOW('H', 203, int)
127 #define HCIDEVRESTAT _IOW('H', 204, int)
129 #define HCIGETDEVLIST _IOR('H', 210, int)
130 #define HCIGETDEVINFO _IOR('H', 211, int)
131 #define HCIGETCONNLIST _IOR('H', 212, int)
132 #define HCIGETCONNINFO _IOR('H', 213, int)
133 #define HCIGETAUTHINFO _IOR('H', 215, int)
135 #define HCISETRAW _IOW('H', 220, int)
136 #define HCISETSCAN _IOW('H', 221, int)
137 #define HCISETAUTH _IOW('H', 222, int)
138 #define HCISETENCRYPT _IOW('H', 223, int)
139 #define HCISETPTYPE _IOW('H', 224, int)
140 #define HCISETLINKPOL _IOW('H', 225, int)
141 #define HCISETLINKMODE _IOW('H', 226, int)
142 #define HCISETACLMTU _IOW('H', 227, int)
143 #define HCISETSCOMTU _IOW('H', 228, int)
145 #define HCIBLOCKADDR _IOW('H', 230, int)
146 #define HCIUNBLOCKADDR _IOW('H', 231, int)
148 #define HCIINQUIRY _IOR('H', 240, int)
151 #define HCI_DISCONN_TIMEOUT msecs_to_jiffies(2000)
152 #define HCI_PAIRING_TIMEOUT msecs_to_jiffies(60000)
153 #define HCI_INIT_TIMEOUT msecs_to_jiffies(10000)
154 #define HCI_CMD_TIMEOUT msecs_to_jiffies(1000)
155 #define HCI_ACL_TX_TIMEOUT msecs_to_jiffies(45000)
156 #define HCI_AUTO_OFF_TIMEOUT msecs_to_jiffies(2000)
159 #define HCI_COMMAND_PKT 0x01
160 #define HCI_ACLDATA_PKT 0x02
161 #define HCI_SCODATA_PKT 0x03
162 #define HCI_EVENT_PKT 0x04
163 #define HCI_VENDOR_PKT 0xff
166 #define HCI_DM1 0x0008
167 #define HCI_DM3 0x0400
168 #define HCI_DM5 0x4000
169 #define HCI_DH1 0x0010
170 #define HCI_DH3 0x0800
171 #define HCI_DH5 0x8000
173 #define HCI_HV1 0x0020
174 #define HCI_HV2 0x0040
175 #define HCI_HV3 0x0080
177 #define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3)
178 #define ACL_PTYPE_MASK (~SCO_PTYPE_MASK)
181 #define ESCO_HV1 0x0001
182 #define ESCO_HV2 0x0002
183 #define ESCO_HV3 0x0004
184 #define ESCO_EV3 0x0008
185 #define ESCO_EV4 0x0010
186 #define ESCO_EV5 0x0020
187 #define ESCO_2EV3 0x0040
188 #define ESCO_3EV3 0x0080
189 #define ESCO_2EV5 0x0100
190 #define ESCO_3EV5 0x0200
192 #define SCO_ESCO_MASK (ESCO_HV1 | ESCO_HV2 | ESCO_HV3)
193 #define EDR_ESCO_MASK (ESCO_2EV3 | ESCO_3EV3 | ESCO_2EV5 | ESCO_3EV5)
196 #define ACL_START_NO_FLUSH 0x00
197 #define ACL_CONT 0x01
198 #define ACL_START 0x02
199 #define ACL_ACTIVE_BCAST 0x04
200 #define ACL_PICO_BCAST 0x08
203 #define SCO_LINK 0x00
204 #define ACL_LINK 0x01
205 #define ESCO_LINK 0x02
210 #define LMP_3SLOT 0x01
211 #define LMP_5SLOT 0x02
212 #define LMP_ENCRYPT 0x04
213 #define LMP_SOFFSET 0x08
214 #define LMP_TACCURACY 0x10
215 #define LMP_RSWITCH 0x20
216 #define LMP_HOLD 0x40
217 #define LMP_SNIFF 0x80
219 #define LMP_PARK 0x01
220 #define LMP_RSSI 0x02
221 #define LMP_QUALITY 0x04
225 #define LMP_ULAW 0x40
226 #define LMP_ALAW 0x80
228 #define LMP_CVSD 0x01
229 #define LMP_PSCHEME 0x02
230 #define LMP_PCONTROL 0x04
232 #define LMP_RSSI_INQ 0x40
233 #define LMP_ESCO 0x80
237 #define LMP_NO_BREDR 0x20
240 #define LMP_SNIFF_SUBR 0x02
241 #define LMP_PAUSE_ENC 0x04
242 #define LMP_EDR_ESCO_2M 0x20
243 #define LMP_EDR_ESCO_3M 0x40
244 #define LMP_EDR_3S_ESCO 0x80
246 #define LMP_EXT_INQ 0x01
247 #define LMP_SIMUL_LE_BR 0x02
248 #define LMP_SIMPLE_PAIR 0x08
249 #define LMP_NO_FLUSH 0x40
251 #define LMP_LSTO 0x01
252 #define LMP_INQ_TX_PWR 0x02
253 #define LMP_EXTFEATURES 0x80
256 #define LMP_HOST_SSP 0x01
257 #define LMP_HOST_LE 0x02
258 #define LMP_HOST_LE_BREDR 0x04
261 #define HCI_CM_ACTIVE 0x0000
262 #define HCI_CM_HOLD 0x0001
263 #define HCI_CM_SNIFF 0x0002
264 #define HCI_CM_PARK 0x0003
267 #define HCI_LP_RSWITCH 0x0001
268 #define HCI_LP_HOLD 0x0002
269 #define HCI_LP_SNIFF 0x0004
270 #define HCI_LP_PARK 0x0008
273 #define HCI_LM_ACCEPT 0x8000
274 #define HCI_LM_MASTER 0x0001
275 #define HCI_LM_AUTH 0x0002
276 #define HCI_LM_ENCRYPT 0x0004
277 #define HCI_LM_TRUSTED 0x0008
278 #define HCI_LM_RELIABLE 0x0010
279 #define HCI_LM_SECURE 0x0020
282 #define HCI_AT_NO_BONDING 0x00
283 #define HCI_AT_NO_BONDING_MITM 0x01
284 #define HCI_AT_DEDICATED_BONDING 0x02
285 #define HCI_AT_DEDICATED_BONDING_MITM 0x03
286 #define HCI_AT_GENERAL_BONDING 0x04
287 #define HCI_AT_GENERAL_BONDING_MITM 0x05
290 #define HCI_LK_COMBINATION 0x00
291 #define HCI_LK_LOCAL_UNIT 0x01
292 #define HCI_LK_REMOTE_UNIT 0x02
293 #define HCI_LK_DEBUG_COMBINATION 0x03
294 #define HCI_LK_UNAUTH_COMBINATION 0x04
295 #define HCI_LK_AUTH_COMBINATION 0x05
296 #define HCI_LK_CHANGED_COMBINATION 0x06
298 #define HCI_SMP_STK 0x80
299 #define HCI_SMP_STK_SLAVE 0x81
300 #define HCI_SMP_LTK 0x82
301 #define HCI_SMP_LTK_SLAVE 0x83
304 #define HCI_ERROR_AUTH_FAILURE 0x05
305 #define HCI_ERROR_CONNECTION_TIMEOUT 0x08
306 #define HCI_ERROR_REJ_BAD_ADDR 0x0f
307 #define HCI_ERROR_REMOTE_USER_TERM 0x13
308 #define HCI_ERROR_REMOTE_LOW_RESOURCES 0x14
309 #define HCI_ERROR_REMOTE_POWER_OFF 0x15
310 #define HCI_ERROR_LOCAL_HOST_TERM 0x16
311 #define HCI_ERROR_PAIRING_NOT_ALLOWED 0x18
314 #define HCI_FLOW_CTL_MODE_PACKET_BASED 0x00
315 #define HCI_FLOW_CTL_MODE_BLOCK_BASED 0x01
318 #define EIR_FLAGS 0x01
319 #define EIR_UUID16_SOME 0x02
320 #define EIR_UUID16_ALL 0x03
321 #define EIR_UUID32_SOME 0x04
322 #define EIR_UUID32_ALL 0x05
323 #define EIR_UUID128_SOME 0x06
324 #define EIR_UUID128_ALL 0x07
325 #define EIR_NAME_SHORT 0x08
326 #define EIR_NAME_COMPLETE 0x09
327 #define EIR_TX_POWER 0x0A
328 #define EIR_CLASS_OF_DEV 0x0D
329 #define EIR_SSP_HASH_C 0x0E
330 #define EIR_SSP_RAND_R 0x0F
331 #define EIR_DEVICE_ID 0x10
334 #define HCI_OP_NOP 0x0000
336 #define HCI_OP_INQUIRY 0x0401
343 #define HCI_OP_INQUIRY_CANCEL 0x0402
345 #define HCI_OP_PERIODIC_INQ 0x0403
347 #define HCI_OP_EXIT_PERIODIC_INQ 0x0404
349 #define HCI_OP_CREATE_CONN 0x0405
359 #define HCI_OP_DISCONNECT 0x0406
365 #define HCI_OP_ADD_SCO 0x0407
371 #define HCI_OP_CREATE_CONN_CANCEL 0x0408
376 #define HCI_OP_ACCEPT_CONN_REQ 0x0409
382 #define HCI_OP_REJECT_CONN_REQ 0x040a
388 #define HCI_OP_LINK_KEY_REPLY 0x040b
394 #define HCI_OP_LINK_KEY_NEG_REPLY 0x040c
399 #define HCI_OP_PIN_CODE_REPLY 0x040d
410 #define HCI_OP_PIN_CODE_NEG_REPLY 0x040e
419 #define HCI_OP_CHANGE_CONN_PTYPE 0x040f
425 #define HCI_OP_AUTH_REQUESTED 0x0411
430 #define HCI_OP_SET_CONN_ENCRYPT 0x0413
436 #define HCI_OP_CHANGE_CONN_LINK_KEY 0x0415
441 #define HCI_OP_REMOTE_NAME_REQ 0x0419
449 #define HCI_OP_REMOTE_NAME_REQ_CANCEL 0x041a
454 #define HCI_OP_READ_REMOTE_FEATURES 0x041b
459 #define HCI_OP_READ_REMOTE_EXT_FEATURES 0x041c
465 #define HCI_OP_READ_REMOTE_VERSION 0x041d
470 #define HCI_OP_SETUP_SYNC_CONN 0x0428
481 #define HCI_OP_ACCEPT_SYNC_CONN_REQ 0x0429
492 #define HCI_OP_REJECT_SYNC_CONN_REQ 0x042a
498 #define HCI_OP_IO_CAPABILITY_REPLY 0x042b
506 #define HCI_OP_USER_CONFIRM_REPLY 0x042c
515 #define HCI_OP_USER_CONFIRM_NEG_REPLY 0x042d
517 #define HCI_OP_USER_PASSKEY_REPLY 0x042e
523 #define HCI_OP_USER_PASSKEY_NEG_REPLY 0x042f
525 #define HCI_OP_REMOTE_OOB_DATA_REPLY 0x0430
532 #define HCI_OP_REMOTE_OOB_DATA_NEG_REPLY 0x0433
537 #define HCI_OP_IO_CAPABILITY_NEG_REPLY 0x0434
543 #define HCI_OP_CREATE_PHY_LINK 0x0435
551 #define HCI_OP_ACCEPT_PHY_LINK 0x0436
559 #define HCI_OP_DISCONN_PHY_LINK 0x0437
565 #define HCI_OP_SNIFF_MODE 0x0803
574 #define HCI_OP_EXIT_SNIFF_MODE 0x0804
579 #define HCI_OP_ROLE_DISCOVERY 0x0809
589 #define HCI_OP_SWITCH_ROLE 0x080b
595 #define HCI_OP_READ_LINK_POLICY 0x080c
605 #define HCI_OP_WRITE_LINK_POLICY 0x080d
615 #define HCI_OP_READ_DEF_LINK_POLICY 0x080e
621 #define HCI_OP_WRITE_DEF_LINK_POLICY 0x080f
626 #define HCI_OP_SNIFF_SUBRATE 0x0811
634 #define HCI_OP_SET_EVENT_MASK 0x0c01
639 #define HCI_OP_RESET 0x0c03
641 #define HCI_OP_SET_EVENT_FLT 0x0c05
649 #define HCI_FLT_CLEAR_ALL 0x00
650 #define HCI_FLT_INQ_RESULT 0x01
651 #define HCI_FLT_CONN_SETUP 0x02
654 #define HCI_CONN_SETUP_ALLOW_ALL 0x00
655 #define HCI_CONN_SETUP_ALLOW_CLASS 0x01
656 #define HCI_CONN_SETUP_ALLOW_BDADDR 0x02
659 #define HCI_CONN_SETUP_AUTO_OFF 0x01
660 #define HCI_CONN_SETUP_AUTO_ON 0x02
662 #define HCI_OP_DELETE_STORED_LINK_KEY 0x0c12
668 #define HCI_MAX_NAME_LENGTH 248
670 #define HCI_OP_WRITE_LOCAL_NAME 0x0c13
675 #define HCI_OP_READ_LOCAL_NAME 0x0c14
681 #define HCI_OP_WRITE_CA_TIMEOUT 0x0c16
683 #define HCI_OP_WRITE_PG_TIMEOUT 0x0c18
685 #define HCI_OP_WRITE_SCAN_ENABLE 0x0c1a
686 #define SCAN_DISABLED 0x00
687 #define SCAN_INQUIRY 0x01
688 #define SCAN_PAGE 0x02
690 #define HCI_OP_READ_AUTH_ENABLE 0x0c1f
692 #define HCI_OP_WRITE_AUTH_ENABLE 0x0c20
693 #define AUTH_DISABLED 0x00
694 #define AUTH_ENABLED 0x01
696 #define HCI_OP_READ_ENCRYPT_MODE 0x0c21
698 #define HCI_OP_WRITE_ENCRYPT_MODE 0x0c22
699 #define ENCRYPT_DISABLED 0x00
700 #define ENCRYPT_P2P 0x01
701 #define ENCRYPT_BOTH 0x02
703 #define HCI_OP_READ_CLASS_OF_DEV 0x0c23
709 #define HCI_OP_WRITE_CLASS_OF_DEV 0x0c24
714 #define HCI_OP_READ_VOICE_SETTING 0x0c25
720 #define HCI_OP_WRITE_VOICE_SETTING 0x0c26
725 #define HCI_OP_HOST_BUFFER_SIZE 0x0c33
733 #define HCI_OP_WRITE_INQUIRY_MODE 0x0c45
735 #define HCI_MAX_EIR_LENGTH 240
737 #define HCI_OP_WRITE_EIR 0x0c52
743 #define HCI_OP_READ_SSP_MODE 0x0c55
749 #define HCI_OP_WRITE_SSP_MODE 0x0c56
754 #define HCI_OP_READ_LOCAL_OOB_DATA 0x0c57
761 #define HCI_OP_READ_INQ_RSP_TX_POWER 0x0c58
767 #define HCI_OP_READ_FLOW_CONTROL_MODE 0x0c66
773 #define HCI_OP_WRITE_LE_HOST_SUPPORTED 0x0c6d
779 #define HCI_OP_READ_LOCAL_VERSION 0x1001
789 #define HCI_OP_READ_LOCAL_COMMANDS 0x1002
795 #define HCI_OP_READ_LOCAL_FEATURES 0x1003
801 #define HCI_OP_READ_LOCAL_EXT_FEATURES 0x1004
812 #define HCI_OP_READ_BUFFER_SIZE 0x1005
821 #define HCI_OP_READ_BD_ADDR 0x1009
827 #define HCI_OP_READ_DATA_BLOCK_SIZE 0x100a
835 #define HCI_OP_WRITE_PAGE_SCAN_ACTIVITY 0x0c1c
841 #define HCI_OP_WRITE_PAGE_SCAN_TYPE 0x0c47
842 #define PAGE_SCAN_TYPE_STANDARD 0x00
843 #define PAGE_SCAN_TYPE_INTERLACED 0x01
845 #define HCI_OP_READ_LOCAL_AMP_INFO 0x1409
860 #define HCI_OP_READ_LOCAL_AMP_ASSOC 0x140a
873 #define HCI_OP_WRITE_REMOTE_AMP_ASSOC 0x140b
885 #define HCI_OP_LE_SET_EVENT_MASK 0x2001
890 #define HCI_OP_LE_READ_BUFFER_SIZE 0x2002
897 #define HCI_OP_LE_SET_SCAN_PARAM 0x200b
906 #define LE_SCANNING_DISABLED 0x00
907 #define LE_SCANNING_ENABLED 0x01
909 #define HCI_OP_LE_SET_SCAN_ENABLE 0x200c
915 #define HCI_OP_LE_CREATE_CONN 0x200d
931 #define HCI_OP_LE_CREATE_CONN_CANCEL 0x200e
933 #define HCI_OP_LE_CONN_UPDATE 0x2013
944 #define HCI_OP_LE_START_ENC 0x2019
952 #define HCI_OP_LE_LTK_REPLY 0x201a
962 #define HCI_OP_LE_LTK_NEG_REPLY 0x201b
972 #define HCI_EV_INQUIRY_COMPLETE 0x01
974 #define HCI_EV_INQUIRY_RESULT 0x02
984 #define HCI_EV_CONN_COMPLETE 0x03
993 #define HCI_EV_CONN_REQUEST 0x04
1000 #define HCI_EV_DISCONN_COMPLETE 0x05
1007 #define HCI_EV_AUTH_COMPLETE 0x06
1013 #define HCI_EV_REMOTE_NAME 0x07
1020 #define HCI_EV_ENCRYPT_CHANGE 0x08
1027 #define HCI_EV_CHANGE_LINK_KEY_COMPLETE 0x09
1033 #define HCI_EV_REMOTE_FEATURES 0x0b
1040 #define HCI_EV_REMOTE_VERSION 0x0c
1049 #define HCI_EV_QOS_SETUP_COMPLETE 0x0d
1063 #define HCI_EV_CMD_COMPLETE 0x0e
1069 #define HCI_EV_CMD_STATUS 0x0f
1076 #define HCI_EV_ROLE_CHANGE 0x12
1083 #define HCI_EV_NUM_COMP_PKTS 0x13
1094 #define HCI_EV_MODE_CHANGE 0x14
1102 #define HCI_EV_PIN_CODE_REQ 0x16
1107 #define HCI_EV_LINK_KEY_REQ 0x17
1112 #define HCI_EV_LINK_KEY_NOTIFY 0x18
1119 #define HCI_EV_CLOCK_OFFSET 0x1c
1126 #define HCI_EV_PKT_TYPE_CHANGE 0x1d
1133 #define HCI_EV_PSCAN_REP_MODE 0x20
1139 #define HCI_EV_INQUIRY_RESULT_WITH_RSSI 0x22
1158 #define HCI_EV_REMOTE_EXT_FEATURES 0x23
1167 #define HCI_EV_SYNC_CONN_COMPLETE 0x2c
1180 #define HCI_EV_SYNC_CONN_CHANGED 0x2d
1190 #define HCI_EV_SNIFF_SUBRATE 0x2e
1200 #define HCI_EV_EXTENDED_INQUIRY_RESULT 0x2f
1211 #define HCI_EV_KEY_REFRESH_COMPLETE 0x30
1217 #define HCI_EV_IO_CAPA_REQUEST 0x31
1222 #define HCI_EV_IO_CAPA_REPLY 0x32
1230 #define HCI_EV_USER_CONFIRM_REQUEST 0x33
1236 #define HCI_EV_USER_PASSKEY_REQUEST 0x34
1241 #define HCI_EV_REMOTE_OOB_DATA_REQUEST 0x35
1246 #define HCI_EV_SIMPLE_PAIR_COMPLETE 0x36
1252 #define HCI_EV_USER_PASSKEY_NOTIFY 0x3b
1258 #define HCI_KEYPRESS_STARTED 0
1259 #define HCI_KEYPRESS_ENTERED 1
1260 #define HCI_KEYPRESS_ERASED 2
1261 #define HCI_KEYPRESS_CLEARED 3
1262 #define HCI_KEYPRESS_COMPLETED 4
1264 #define HCI_EV_KEYPRESS_NOTIFY 0x3c
1270 #define HCI_EV_REMOTE_HOST_FEATURES 0x3d
1276 #define HCI_EV_LE_META 0x3e
1281 #define HCI_EV_PHY_LINK_COMPLETE 0x40
1287 #define HCI_EV_CHANNEL_SELECTED 0x41
1292 #define HCI_EV_DISCONN_PHY_LINK_COMPLETE 0x42
1299 #define HCI_EV_LOGICAL_LINK_COMPLETE 0x45
1307 #define HCI_EV_DISCONN_LOGICAL_LINK_COMPLETE 0x46
1314 #define HCI_EV_NUM_COMP_BLOCKS 0x48
1328 #define LE_CONN_ROLE_MASTER 0x00
1330 #define HCI_EV_LE_CONN_COMPLETE 0x01
1343 #define HCI_EV_LE_LTK_REQ 0x05
1351 #define ADV_IND 0x00
1352 #define ADV_DIRECT_IND 0x01
1353 #define ADV_SCAN_IND 0x02
1354 #define ADV_NONCONN_IND 0x03
1355 #define ADV_SCAN_RSP 0x04
1357 #define ADDR_LE_DEV_PUBLIC 0x00
1358 #define ADDR_LE_DEV_RANDOM 0x01
1360 #define HCI_EV_LE_ADVERTISING_REPORT 0x02
1370 #define HCI_EV_STACK_INTERNAL 0xfd
1376 #define HCI_EV_SI_DEVICE 0x01
1382 #define HCI_EV_SI_SECURITY 0x02
1391 #define HCI_COMMAND_HDR_SIZE 3
1392 #define HCI_EVENT_HDR_SIZE 2
1393 #define HCI_ACL_HDR_SIZE 4
1394 #define HCI_SCO_HDR_SIZE 3
1432 #define hci_opcode_pack(ogf, ocf) ((__u16) ((ocf & 0x03ff)|(ogf << 10)))
1433 #define hci_opcode_ogf(op) (op >> 10)
1434 #define hci_opcode_ocf(op) (op & 0x03ff)
1437 #define hci_handle_pack(h, f) ((__u16) ((h & 0x0fff)|(f << 12)))
1438 #define hci_handle(h) (h & 0x0fff)
1439 #define hci_flags(h) (h >> 12)
1444 #define HCI_DATA_DIR 1
1445 #define HCI_FILTER 2
1446 #define HCI_TIME_STAMP 3
1449 #define HCI_CMSG_DIR 0x0001
1450 #define HCI_CMSG_TSTAMP 0x0002
1457 #define HCI_DEV_NONE 0xffff
1459 #define HCI_CHANNEL_RAW 0
1460 #define HCI_CHANNEL_MONITOR 2
1461 #define HCI_CHANNEL_CONTROL 3
1475 #define HCI_FLT_TYPE_BITS 31
1476 #define HCI_FLT_EVENT_BITS 63
1477 #define HCI_FLT_OGF_BITS 63
1478 #define HCI_FLT_OCF_BITS 127
1560 #define IREQ_CACHE_FLUSH 0x0001