20 #include <sys/socket.h> 22 #define HCI_MAX_DEV 16 24 #define HCI_MAX_AMP_SIZE (1492 + 4) 25 #define HCI_MAX_ACL_SIZE 1024 26 #define HCI_MAX_SCO_SIZE 255 27 #define HCI_MAX_EVENT_SIZE 260 28 #define HCI_MAX_FRAME_SIZE (HCI_MAX_AMP_SIZE + 4) 32 #define HCI_DEV_UNREG 2 34 #define HCI_DEV_DOWN 4 35 #define HCI_DEV_SUSPEND 5 36 #define HCI_DEV_RESUME 6 52 #define HCI_PRIMARY 0x00 54 #define HCI_BREDR HCI_PRIMARY 73 LE_PUBLIC_ADDRESS = 0x00,
74 LE_RANDOM_ADDRESS = 0x01
78 #define HCIDEVUP _IOW('H', 201, int) 79 #define HCIDEVDOWN _IOW('H', 202, int) 80 #define HCIDEVRESET _IOW('H', 203, int) 81 #define HCIDEVRESTAT _IOW('H', 204, int) 83 #define HCIGETDEVLIST _IOR('H', 210, int) 84 #define HCIGETDEVINFO _IOR('H', 211, int) 85 #define HCIGETCONNLIST _IOR('H', 212, int) 86 #define HCIGETCONNINFO _IOR('H', 213, int) 87 #define HCIGETAUTHINFO _IOR('H', 215, int) 89 #define HCISETRAW _IOW('H', 220, int) 90 #define HCISETSCAN _IOW('H', 221, int) 91 #define HCISETAUTH _IOW('H', 222, int) 92 #define HCISETENCRYPT _IOW('H', 223, int) 93 #define HCISETPTYPE _IOW('H', 224, int) 94 #define HCISETLINKPOL _IOW('H', 225, int) 95 #define HCISETLINKMODE _IOW('H', 226, int) 96 #define HCISETACLMTU _IOW('H', 227, int) 97 #define HCISETSCOMTU _IOW('H', 228, int) 99 #define HCIBLOCKADDR _IOW('H', 230, int) 100 #define HCIUNBLOCKADDR _IOW('H', 231, int) 102 #define HCIINQUIRY _IOR('H', 240, int) 104 #ifndef __NO_HCI_DEFS 107 #define HCI_COMMAND_PKT 0x01 108 #define HCI_ACLDATA_PKT 0x02 109 #define HCI_SCODATA_PKT 0x03 110 #define HCI_EVENT_PKT 0x04 111 #define HCI_ISODATA_PKT 0x05 112 #define HCI_VENDOR_PKT 0xff 115 #define HCI_2DH1 0x0002 116 #define HCI_3DH1 0x0004 117 #define HCI_DM1 0x0008 118 #define HCI_DH1 0x0010 119 #define HCI_2DH3 0x0100 120 #define HCI_3DH3 0x0200 121 #define HCI_DM3 0x0400 122 #define HCI_DH3 0x0800 123 #define HCI_2DH5 0x1000 124 #define HCI_3DH5 0x2000 125 #define HCI_DM5 0x4000 126 #define HCI_DH5 0x8000 128 #define HCI_HV1 0x0020 129 #define HCI_HV2 0x0040 130 #define HCI_HV3 0x0080 132 #define HCI_EV3 0x0008 133 #define HCI_EV4 0x0010 134 #define HCI_EV5 0x0020 135 #define HCI_2EV3 0x0040 136 #define HCI_3EV3 0x0080 137 #define HCI_2EV5 0x0100 138 #define HCI_3EV5 0x0200 140 #define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3) 141 #define ACL_PTYPE_MASK (HCI_DM1 | HCI_DH1 | HCI_DM3 | HCI_DH3 | HCI_DM5 | HCI_DH5) 144 #define HCI_UNKNOWN_COMMAND 0x01 145 #define HCI_NO_CONNECTION 0x02 146 #define HCI_HARDWARE_FAILURE 0x03 147 #define HCI_PAGE_TIMEOUT 0x04 148 #define HCI_AUTHENTICATION_FAILURE 0x05 149 #define HCI_PIN_OR_KEY_MISSING 0x06 150 #define HCI_MEMORY_FULL 0x07 151 #define HCI_CONNECTION_TIMEOUT 0x08 152 #define HCI_MAX_NUMBER_OF_CONNECTIONS 0x09 153 #define HCI_MAX_NUMBER_OF_SCO_CONNECTIONS 0x0a 154 #define HCI_ACL_CONNECTION_EXISTS 0x0b 155 #define HCI_COMMAND_DISALLOWED 0x0c 156 #define HCI_REJECTED_LIMITED_RESOURCES 0x0d 157 #define HCI_REJECTED_SECURITY 0x0e 158 #define HCI_REJECTED_PERSONAL 0x0f 159 #define HCI_HOST_TIMEOUT 0x10 160 #define HCI_UNSUPPORTED_FEATURE 0x11 161 #define HCI_INVALID_PARAMETERS 0x12 162 #define HCI_OE_USER_ENDED_CONNECTION 0x13 163 #define HCI_OE_LOW_RESOURCES 0x14 164 #define HCI_OE_POWER_OFF 0x15 165 #define HCI_CONNECTION_TERMINATED 0x16 166 #define HCI_REPEATED_ATTEMPTS 0x17 167 #define HCI_PAIRING_NOT_ALLOWED 0x18 168 #define HCI_UNKNOWN_LMP_PDU 0x19 169 #define HCI_UNSUPPORTED_REMOTE_FEATURE 0x1a 170 #define HCI_SCO_OFFSET_REJECTED 0x1b 171 #define HCI_SCO_INTERVAL_REJECTED 0x1c 172 #define HCI_AIR_MODE_REJECTED 0x1d 173 #define HCI_INVALID_LMP_PARAMETERS 0x1e 174 #define HCI_UNSPECIFIED_ERROR 0x1f 175 #define HCI_UNSUPPORTED_LMP_PARAMETER_VALUE 0x20 176 #define HCI_ROLE_CHANGE_NOT_ALLOWED 0x21 177 #define HCI_LMP_RESPONSE_TIMEOUT 0x22 178 #define HCI_LMP_ERROR_TRANSACTION_COLLISION 0x23 179 #define HCI_LMP_PDU_NOT_ALLOWED 0x24 180 #define HCI_ENCRYPTION_MODE_NOT_ACCEPTED 0x25 181 #define HCI_UNIT_LINK_KEY_USED 0x26 182 #define HCI_QOS_NOT_SUPPORTED 0x27 183 #define HCI_INSTANT_PASSED 0x28 184 #define HCI_PAIRING_NOT_SUPPORTED 0x29 185 #define HCI_TRANSACTION_COLLISION 0x2a 186 #define HCI_QOS_UNACCEPTABLE_PARAMETER 0x2c 187 #define HCI_QOS_REJECTED 0x2d 188 #define HCI_CLASSIFICATION_NOT_SUPPORTED 0x2e 189 #define HCI_INSUFFICIENT_SECURITY 0x2f 190 #define HCI_PARAMETER_OUT_OF_RANGE 0x30 191 #define HCI_ROLE_SWITCH_PENDING 0x32 192 #define HCI_SLOT_VIOLATION 0x34 193 #define HCI_ROLE_SWITCH_FAILED 0x35 194 #define HCI_EIR_TOO_LARGE 0x36 195 #define HCI_SIMPLE_PAIRING_NOT_SUPPORTED 0x37 196 #define HCI_HOST_BUSY_PAIRING 0x38 199 #define ACL_START_NO_FLUSH 0x00 200 #define ACL_CONT 0x01 201 #define ACL_START 0x02 202 #define ACL_ACTIVE_BCAST 0x04 203 #define ACL_PICO_BCAST 0x08 206 #define SCO_LINK 0x00 207 #define ACL_LINK 0x01 208 #define ESCO_LINK 0x02 211 #define LMP_3SLOT 0x01 212 #define LMP_5SLOT 0x02 213 #define LMP_ENCRYPT 0x04 214 #define LMP_SOFFSET 0x08 215 #define LMP_TACCURACY 0x10 216 #define LMP_RSWITCH 0x20 217 #define LMP_HOLD 0x40 218 #define LMP_SNIFF 0x80 220 #define LMP_PARK 0x01 221 #define LMP_RSSI 0x02 222 #define LMP_QUALITY 0x04 226 #define LMP_ULAW 0x40 227 #define LMP_ALAW 0x80 229 #define LMP_CVSD 0x01 230 #define LMP_PSCHEME 0x02 231 #define LMP_PCONTROL 0x04 232 #define LMP_TRSP_SCO 0x08 233 #define LMP_BCAST_ENC 0x80 235 #define LMP_EDR_ACL_2M 0x02 236 #define LMP_EDR_ACL_3M 0x04 237 #define LMP_ENH_ISCAN 0x08 238 #define LMP_ILACE_ISCAN 0x10 239 #define LMP_ILACE_PSCAN 0x20 240 #define LMP_RSSI_INQ 0x40 241 #define LMP_ESCO 0x80 245 #define LMP_AFH_CAP_SLV 0x08 246 #define LMP_AFH_CLS_SLV 0x10 247 #define LMP_NO_BREDR 0x20 249 #define LMP_EDR_3SLOT 0x80 251 #define LMP_EDR_5SLOT 0x01 252 #define LMP_SNIFF_SUBR 0x02 253 #define LMP_PAUSE_ENC 0x04 254 #define LMP_AFH_CAP_MST 0x08 255 #define LMP_AFH_CLS_MST 0x10 256 #define LMP_EDR_ESCO_2M 0x20 257 #define LMP_EDR_ESCO_3M 0x40 258 #define LMP_EDR_3S_ESCO 0x80 260 #define LMP_EXT_INQ 0x01 261 #define LMP_LE_BREDR 0x02 262 #define LMP_SIMPLE_PAIR 0x08 263 #define LMP_ENCAPS_PDU 0x10 264 #define LMP_ERR_DAT_REP 0x20 265 #define LMP_NFLUSH_PKTS 0x40 267 #define LMP_LSTO 0x01 268 #define LMP_INQ_TX_PWR 0x02 270 #define LMP_EXT_FEAT 0x80 273 #define LMP_HOST_SSP 0x01 274 #define LMP_HOST_LE 0x02 275 #define LMP_HOST_LE_BREDR 0x04 278 #define HCI_LP_RSWITCH 0x0001 279 #define HCI_LP_HOLD 0x0002 280 #define HCI_LP_SNIFF 0x0004 281 #define HCI_LP_PARK 0x0008 284 #define HCI_LM_ACCEPT 0x8000 285 #define HCI_LM_MASTER 0x0001 286 #define HCI_LM_AUTH 0x0002 287 #define HCI_LM_ENCRYPT 0x0004 288 #define HCI_LM_TRUSTED 0x0008 289 #define HCI_LM_RELIABLE 0x0010 290 #define HCI_LM_SECURE 0x0020 293 #define HCI_LK_COMBINATION 0x00 294 #define HCI_LK_LOCAL_UNIT 0x01 295 #define HCI_LK_REMOTE_UNIT 0x02 296 #define HCI_LK_DEBUG_COMBINATION 0x03 297 #define HCI_LK_UNAUTH_COMBINATION 0x04 298 #define HCI_LK_AUTH_COMBINATION 0x05 299 #define HCI_LK_CHANGED_COMBINATION 0x06 300 #define HCI_LK_INVALID 0xFF 305 #define OGF_LINK_CTL 0x01 307 #define OCF_INQUIRY 0x0001 313 #define INQUIRY_CP_SIZE 5 319 #define STATUS_BDADDR_RP_SIZE 7 321 #define OCF_INQUIRY_CANCEL 0x0002 323 #define OCF_PERIODIC_INQUIRY 0x0003 331 #define PERIODIC_INQUIRY_CP_SIZE 9 333 #define OCF_EXIT_PERIODIC_INQUIRY 0x0004 335 #define OCF_CREATE_CONN 0x0005 339 uint8_t pscan_rep_mode;
341 uint16_t clock_offset;
344 #define CREATE_CONN_CP_SIZE 13 346 #define OCF_DISCONNECT 0x0006 351 #define DISCONNECT_CP_SIZE 3 353 #define OCF_ADD_SCO 0x0007 358 #define ADD_SCO_CP_SIZE 4 360 #define OCF_CREATE_CONN_CANCEL 0x0008 364 #define CREATE_CONN_CANCEL_CP_SIZE 6 366 #define OCF_ACCEPT_CONN_REQ 0x0009 371 #define ACCEPT_CONN_REQ_CP_SIZE 7 373 #define OCF_REJECT_CONN_REQ 0x000A 378 #define REJECT_CONN_REQ_CP_SIZE 7 380 #define OCF_LINK_KEY_REPLY 0x000B 383 uint8_t link_key[16];
385 #define LINK_KEY_REPLY_CP_SIZE 22 387 #define OCF_LINK_KEY_NEG_REPLY 0x000C 389 #define OCF_PIN_CODE_REPLY 0x000D 393 uint8_t pin_code[16];
395 #define PIN_CODE_REPLY_CP_SIZE 23 397 #define OCF_PIN_CODE_NEG_REPLY 0x000E 399 #define OCF_SET_CONN_PTYPE 0x000F 404 #define SET_CONN_PTYPE_CP_SIZE 4 406 #define OCF_AUTH_REQUESTED 0x0011 410 #define AUTH_REQUESTED_CP_SIZE 2 412 #define OCF_SET_CONN_ENCRYPT 0x0013 417 #define SET_CONN_ENCRYPT_CP_SIZE 3 419 #define OCF_CHANGE_CONN_LINK_KEY 0x0015 423 #define CHANGE_CONN_LINK_KEY_CP_SIZE 2 425 #define OCF_MASTER_LINK_KEY 0x0017 429 #define MASTER_LINK_KEY_CP_SIZE 1 431 #define OCF_REMOTE_NAME_REQ 0x0019 434 uint8_t pscan_rep_mode;
436 uint16_t clock_offset;
438 #define REMOTE_NAME_REQ_CP_SIZE 10 440 #define OCF_REMOTE_NAME_REQ_CANCEL 0x001A 444 #define REMOTE_NAME_REQ_CANCEL_CP_SIZE 6 446 #define OCF_READ_REMOTE_FEATURES 0x001B 450 #define READ_REMOTE_FEATURES_CP_SIZE 2 452 #define OCF_READ_REMOTE_EXT_FEATURES 0x001C 457 #define READ_REMOTE_EXT_FEATURES_CP_SIZE 3 459 #define OCF_READ_REMOTE_VERSION 0x001D 463 #define READ_REMOTE_VERSION_CP_SIZE 2 465 #define OCF_READ_CLOCK_OFFSET 0x001F 469 #define READ_CLOCK_OFFSET_CP_SIZE 2 471 #define OCF_READ_LMP_HANDLE 0x0020 473 #define OCF_SETUP_SYNC_CONN 0x0028 476 uint32_t tx_bandwith;
477 uint32_t rx_bandwith;
478 uint16_t max_latency;
479 uint16_t voice_setting;
480 uint8_t retrans_effort;
483 #define SETUP_SYNC_CONN_CP_SIZE 17 485 #define OCF_ACCEPT_SYNC_CONN_REQ 0x0029 488 uint32_t tx_bandwith;
489 uint32_t rx_bandwith;
490 uint16_t max_latency;
491 uint16_t voice_setting;
492 uint8_t retrans_effort;
495 #define ACCEPT_SYNC_CONN_REQ_CP_SIZE 21 497 #define OCF_REJECT_SYNC_CONN_REQ 0x002A 502 #define REJECT_SYNC_CONN_REQ_CP_SIZE 7 504 #define OCF_IO_CAPABILITY_REPLY 0x002B 509 uint8_t authentication;
511 #define IO_CAPABILITY_REPLY_CP_SIZE 9 513 #define OCF_USER_CONFIRM_REPLY 0x002C 517 #define USER_CONFIRM_REPLY_CP_SIZE 6 519 #define OCF_USER_CONFIRM_NEG_REPLY 0x002D 521 #define OCF_USER_PASSKEY_REPLY 0x002E 526 #define USER_PASSKEY_REPLY_CP_SIZE 10 528 #define OCF_USER_PASSKEY_NEG_REPLY 0x002F 530 #define OCF_REMOTE_OOB_DATA_REPLY 0x0030 534 uint8_t randomizer[16];
536 #define REMOTE_OOB_DATA_REPLY_CP_SIZE 38 538 #define OCF_REMOTE_OOB_DATA_NEG_REPLY 0x0033 540 #define OCF_IO_CAPABILITY_NEG_REPLY 0x0034 545 #define IO_CAPABILITY_NEG_REPLY_CP_SIZE 7 547 #define OCF_CREATE_PHYSICAL_LINK 0x0035 554 #define CREATE_PHYSICAL_LINK_CP_SIZE 35 556 #define OCF_ACCEPT_PHYSICAL_LINK 0x0036 563 #define ACCEPT_PHYSICAL_LINK_CP_SIZE 35 565 #define OCF_DISCONNECT_PHYSICAL_LINK 0x0037 570 #define DISCONNECT_PHYSICAL_LINK_CP_SIZE 2 572 #define OCF_CREATE_LOGICAL_LINK 0x0038 578 #define CREATE_LOGICAL_LINK_CP_SIZE 33 580 #define OCF_ACCEPT_LOGICAL_LINK 0x0039 582 #define OCF_DISCONNECT_LOGICAL_LINK 0x003A 586 #define DISCONNECT_LOGICAL_LINK_CP_SIZE 2 588 #define OCF_LOGICAL_LINK_CANCEL 0x003B 593 #define LOGICAL_LINK_CANCEL_CP_SIZE 2 599 #define LOGICAL_LINK_CANCEL_RP_SIZE 3 601 #define OCF_FLOW_SPEC_MODIFY 0x003C 604 #define OGF_LINK_POLICY 0x02 606 #define OCF_HOLD_MODE 0x0001 609 uint16_t max_interval;
610 uint16_t min_interval;
612 #define HOLD_MODE_CP_SIZE 6 614 #define OCF_SNIFF_MODE 0x0003 617 uint16_t max_interval;
618 uint16_t min_interval;
622 #define SNIFF_MODE_CP_SIZE 10 624 #define OCF_EXIT_SNIFF_MODE 0x0004 628 #define EXIT_SNIFF_MODE_CP_SIZE 2 630 #define OCF_PARK_MODE 0x0005 633 uint16_t max_interval;
634 uint16_t min_interval;
636 #define PARK_MODE_CP_SIZE 6 638 #define OCF_EXIT_PARK_MODE 0x0006 642 #define EXIT_PARK_MODE_CP_SIZE 2 644 #define OCF_QOS_SETUP 0x0007 646 uint8_t service_type;
648 uint32_t peak_bandwidth;
650 uint32_t delay_variation;
652 #define HCI_QOS_CP_SIZE 17 658 #define QOS_SETUP_CP_SIZE (3 + HCI_QOS_CP_SIZE) 660 #define OCF_ROLE_DISCOVERY 0x0009 664 #define ROLE_DISCOVERY_CP_SIZE 2 670 #define ROLE_DISCOVERY_RP_SIZE 4 672 #define OCF_SWITCH_ROLE 0x000B 677 #define SWITCH_ROLE_CP_SIZE 7 679 #define OCF_READ_LINK_POLICY 0x000C 683 #define READ_LINK_POLICY_CP_SIZE 2 689 #define READ_LINK_POLICY_RP_SIZE 5 691 #define OCF_WRITE_LINK_POLICY 0x000D 696 #define WRITE_LINK_POLICY_CP_SIZE 4 701 #define WRITE_LINK_POLICY_RP_SIZE 3 703 #define OCF_READ_DEFAULT_LINK_POLICY 0x000E 705 #define OCF_WRITE_DEFAULT_LINK_POLICY 0x000F 707 #define OCF_FLOW_SPECIFICATION 0x0010 709 #define OCF_SNIFF_SUBRATING 0x0011 712 uint16_t max_latency;
713 uint16_t min_remote_timeout;
714 uint16_t min_local_timeout;
716 #define SNIFF_SUBRATING_CP_SIZE 8 719 #define OGF_HOST_CTL 0x03 721 #define OCF_SET_EVENT_MASK 0x0001 725 #define SET_EVENT_MASK_CP_SIZE 8 727 #define OCF_RESET 0x0003 729 #define OCF_SET_EVENT_FLT 0x0005 735 #define SET_EVENT_FLT_CP_SIZE 2 738 #define FLT_CLEAR_ALL 0x00 739 #define FLT_INQ_RESULT 0x01 740 #define FLT_CONN_SETUP 0x02 742 #define INQ_RESULT_RETURN_ALL 0x00 743 #define INQ_RESULT_RETURN_CLASS 0x01 744 #define INQ_RESULT_RETURN_BDADDR 0x02 746 #define CONN_SETUP_ALLOW_ALL 0x00 747 #define CONN_SETUP_ALLOW_CLASS 0x01 748 #define CONN_SETUP_ALLOW_BDADDR 0x02 750 #define CONN_SETUP_AUTO_OFF 0x01 751 #define CONN_SETUP_AUTO_ON 0x02 753 #define OCF_FLUSH 0x0008 755 #define OCF_READ_PIN_TYPE 0x0009 760 #define READ_PIN_TYPE_RP_SIZE 2 762 #define OCF_WRITE_PIN_TYPE 0x000A 766 #define WRITE_PIN_TYPE_CP_SIZE 1 768 #define OCF_CREATE_NEW_UNIT_KEY 0x000B 770 #define OCF_READ_STORED_LINK_KEY 0x000D 775 #define READ_STORED_LINK_KEY_CP_SIZE 7 781 #define READ_STORED_LINK_KEY_RP_SIZE 5 783 #define OCF_WRITE_STORED_LINK_KEY 0x0011 788 #define WRITE_STORED_LINK_KEY_CP_SIZE 1 793 #define READ_WRITE_LINK_KEY_RP_SIZE 2 795 #define OCF_DELETE_STORED_LINK_KEY 0x0012 800 #define DELETE_STORED_LINK_KEY_CP_SIZE 7 805 #define DELETE_STORED_LINK_KEY_RP_SIZE 3 807 #define HCI_MAX_NAME_LENGTH 248 809 #define OCF_CHANGE_LOCAL_NAME 0x0013 811 uint8_t name[HCI_MAX_NAME_LENGTH];
813 #define CHANGE_LOCAL_NAME_CP_SIZE 248 815 #define OCF_READ_LOCAL_NAME 0x0014 818 uint8_t name[HCI_MAX_NAME_LENGTH];
820 #define READ_LOCAL_NAME_RP_SIZE 249 822 #define OCF_READ_CONN_ACCEPT_TIMEOUT 0x0015 827 #define READ_CONN_ACCEPT_TIMEOUT_RP_SIZE 3 829 #define OCF_WRITE_CONN_ACCEPT_TIMEOUT 0x0016 833 #define WRITE_CONN_ACCEPT_TIMEOUT_CP_SIZE 2 835 #define OCF_READ_PAGE_TIMEOUT 0x0017 840 #define READ_PAGE_TIMEOUT_RP_SIZE 3 842 #define OCF_WRITE_PAGE_TIMEOUT 0x0018 846 #define WRITE_PAGE_TIMEOUT_CP_SIZE 2 848 #define OCF_READ_SCAN_ENABLE 0x0019 853 #define READ_SCAN_ENABLE_RP_SIZE 2 855 #define OCF_WRITE_SCAN_ENABLE 0x001A 856 #define SCAN_DISABLED 0x00 857 #define SCAN_INQUIRY 0x01 858 #define SCAN_PAGE 0x02 860 #define OCF_READ_PAGE_ACTIVITY 0x001B 866 #define READ_PAGE_ACTIVITY_RP_SIZE 5 868 #define OCF_WRITE_PAGE_ACTIVITY 0x001C 873 #define WRITE_PAGE_ACTIVITY_CP_SIZE 4 875 #define OCF_READ_INQ_ACTIVITY 0x001D 881 #define READ_INQ_ACTIVITY_RP_SIZE 5 883 #define OCF_WRITE_INQ_ACTIVITY 0x001E 888 #define WRITE_INQ_ACTIVITY_CP_SIZE 4 890 #define OCF_READ_AUTH_ENABLE 0x001F 892 #define OCF_WRITE_AUTH_ENABLE 0x0020 893 #define AUTH_DISABLED 0x00 894 #define AUTH_ENABLED 0x01 896 #define OCF_READ_ENCRYPT_MODE 0x0021 898 #define OCF_WRITE_ENCRYPT_MODE 0x0022 899 #define ENCRYPT_DISABLED 0x00 900 #define ENCRYPT_P2P 0x01 901 #define ENCRYPT_BOTH 0x02 903 #define OCF_READ_CLASS_OF_DEV 0x0023 906 uint8_t dev_class[3];
908 #define READ_CLASS_OF_DEV_RP_SIZE 4 910 #define OCF_WRITE_CLASS_OF_DEV 0x0024 912 uint8_t dev_class[3];
914 #define WRITE_CLASS_OF_DEV_CP_SIZE 3 916 #define OCF_READ_VOICE_SETTING 0x0025 919 uint16_t voice_setting;
921 #define READ_VOICE_SETTING_RP_SIZE 3 923 #define OCF_WRITE_VOICE_SETTING 0x0026 925 uint16_t voice_setting;
927 #define WRITE_VOICE_SETTING_CP_SIZE 2 929 #define OCF_READ_AUTOMATIC_FLUSH_TIMEOUT 0x0027 931 #define OCF_WRITE_AUTOMATIC_FLUSH_TIMEOUT 0x0028 933 #define OCF_READ_NUM_BROADCAST_RETRANS 0x0029 935 #define OCF_WRITE_NUM_BROADCAST_RETRANS 0x002A 937 #define OCF_READ_HOLD_MODE_ACTIVITY 0x002B 939 #define OCF_WRITE_HOLD_MODE_ACTIVITY 0x002C 941 #define OCF_READ_TRANSMIT_POWER_LEVEL 0x002D 946 #define READ_TRANSMIT_POWER_LEVEL_CP_SIZE 3 952 #define READ_TRANSMIT_POWER_LEVEL_RP_SIZE 4 954 #define OCF_READ_SYNC_FLOW_ENABLE 0x002E 956 #define OCF_WRITE_SYNC_FLOW_ENABLE 0x002F 958 #define OCF_SET_CONTROLLER_TO_HOST_FC 0x0031 960 #define OCF_HOST_BUFFER_SIZE 0x0033 964 uint16_t acl_max_pkt;
965 uint16_t sco_max_pkt;
967 #define HOST_BUFFER_SIZE_CP_SIZE 7 969 #define OCF_HOST_NUM_COMP_PKTS 0x0035 974 #define HOST_NUM_COMP_PKTS_CP_SIZE 1 976 #define OCF_READ_LINK_SUPERVISION_TIMEOUT 0x0036 982 #define READ_LINK_SUPERVISION_TIMEOUT_RP_SIZE 5 984 #define OCF_WRITE_LINK_SUPERVISION_TIMEOUT 0x0037 988 }
__attribute__ ((packed)) write_link_supervision_timeout_cp;
989 #define WRITE_LINK_SUPERVISION_TIMEOUT_CP_SIZE 4 993 }
__attribute__ ((packed)) write_link_supervision_timeout_rp;
994 #define WRITE_LINK_SUPERVISION_TIMEOUT_RP_SIZE 3 996 #define OCF_READ_NUM_SUPPORTED_IAC 0x0038 998 #define MAX_IAC_LAP 0x40 999 #define OCF_READ_CURRENT_IAC_LAP 0x0039 1002 uint8_t num_current_iac;
1003 uint8_t lap[MAX_IAC_LAP][3];
1005 #define READ_CURRENT_IAC_LAP_RP_SIZE 2+3*MAX_IAC_LAP 1007 #define OCF_WRITE_CURRENT_IAC_LAP 0x003A 1009 uint8_t num_current_iac;
1010 uint8_t lap[MAX_IAC_LAP][3];
1012 #define WRITE_CURRENT_IAC_LAP_CP_SIZE 1+3*MAX_IAC_LAP 1014 #define OCF_READ_PAGE_SCAN_PERIOD_MODE 0x003B 1016 #define OCF_WRITE_PAGE_SCAN_PERIOD_MODE 0x003C 1018 #define OCF_READ_PAGE_SCAN_MODE 0x003D 1020 #define OCF_WRITE_PAGE_SCAN_MODE 0x003E 1022 #define OCF_SET_AFH_CLASSIFICATION 0x003F 1026 #define SET_AFH_CLASSIFICATION_CP_SIZE 10 1030 #define SET_AFH_CLASSIFICATION_RP_SIZE 1 1032 #define OCF_READ_INQUIRY_SCAN_TYPE 0x0042 1037 #define READ_INQUIRY_SCAN_TYPE_RP_SIZE 2 1039 #define OCF_WRITE_INQUIRY_SCAN_TYPE 0x0043 1043 #define WRITE_INQUIRY_SCAN_TYPE_CP_SIZE 1 1047 #define WRITE_INQUIRY_SCAN_TYPE_RP_SIZE 1 1049 #define OCF_READ_INQUIRY_MODE 0x0044 1054 #define READ_INQUIRY_MODE_RP_SIZE 2 1056 #define OCF_WRITE_INQUIRY_MODE 0x0045 1060 #define WRITE_INQUIRY_MODE_CP_SIZE 1 1064 #define WRITE_INQUIRY_MODE_RP_SIZE 1 1066 #define OCF_READ_PAGE_SCAN_TYPE 0x0046 1068 #define OCF_WRITE_PAGE_SCAN_TYPE 0x0047 1069 #define PAGE_SCAN_TYPE_STANDARD 0x00 1070 #define PAGE_SCAN_TYPE_INTERLACED 0x01 1072 #define OCF_READ_AFH_MODE 0x0048 1077 #define READ_AFH_MODE_RP_SIZE 2 1079 #define OCF_WRITE_AFH_MODE 0x0049 1083 #define WRITE_AFH_MODE_CP_SIZE 1 1087 #define WRITE_AFH_MODE_RP_SIZE 1 1089 #define HCI_MAX_EIR_LENGTH 240 1091 #define OCF_READ_EXT_INQUIRY_RESPONSE 0x0051 1095 uint8_t data[HCI_MAX_EIR_LENGTH];
1097 #define READ_EXT_INQUIRY_RESPONSE_RP_SIZE 242 1099 #define OCF_WRITE_EXT_INQUIRY_RESPONSE 0x0052 1102 uint8_t data[HCI_MAX_EIR_LENGTH];
1104 #define WRITE_EXT_INQUIRY_RESPONSE_CP_SIZE 241 1108 #define WRITE_EXT_INQUIRY_RESPONSE_RP_SIZE 1 1110 #define OCF_REFRESH_ENCRYPTION_KEY 0x0053 1114 #define REFRESH_ENCRYPTION_KEY_CP_SIZE 2 1118 #define REFRESH_ENCRYPTION_KEY_RP_SIZE 1 1120 #define OCF_READ_SIMPLE_PAIRING_MODE 0x0055 1125 #define READ_SIMPLE_PAIRING_MODE_RP_SIZE 2 1127 #define OCF_WRITE_SIMPLE_PAIRING_MODE 0x0056 1131 #define WRITE_SIMPLE_PAIRING_MODE_CP_SIZE 1 1135 #define WRITE_SIMPLE_PAIRING_MODE_RP_SIZE 1 1137 #define OCF_READ_LOCAL_OOB_DATA 0x0057 1141 uint8_t randomizer[16];
1143 #define READ_LOCAL_OOB_DATA_RP_SIZE 33 1145 #define OCF_READ_INQ_RESPONSE_TX_POWER_LEVEL 0x0058 1149 }
__attribute__ ((packed)) read_inq_response_tx_power_level_rp;
1150 #define READ_INQ_RESPONSE_TX_POWER_LEVEL_RP_SIZE 2 1152 #define OCF_READ_INQUIRY_TRANSMIT_POWER_LEVEL 0x0058 1156 }
__attribute__ ((packed)) read_inquiry_transmit_power_level_rp;
1157 #define READ_INQUIRY_TRANSMIT_POWER_LEVEL_RP_SIZE 2 1159 #define OCF_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL 0x0059 1162 }
__attribute__ ((packed)) write_inquiry_transmit_power_level_cp;
1163 #define WRITE_INQUIRY_TRANSMIT_POWER_LEVEL_CP_SIZE 1 1166 }
__attribute__ ((packed)) write_inquiry_transmit_power_level_rp;
1167 #define WRITE_INQUIRY_TRANSMIT_POWER_LEVEL_RP_SIZE 1 1169 #define OCF_READ_DEFAULT_ERROR_DATA_REPORTING 0x005A 1173 }
__attribute__ ((packed)) read_default_error_data_reporting_rp;
1174 #define READ_DEFAULT_ERROR_DATA_REPORTING_RP_SIZE 2 1176 #define OCF_WRITE_DEFAULT_ERROR_DATA_REPORTING 0x005B 1179 }
__attribute__ ((packed)) write_default_error_data_reporting_cp;
1180 #define WRITE_DEFAULT_ERROR_DATA_REPORTING_CP_SIZE 1 1183 }
__attribute__ ((packed)) write_default_error_data_reporting_rp;
1184 #define WRITE_DEFAULT_ERROR_DATA_REPORTING_RP_SIZE 1 1186 #define OCF_ENHANCED_FLUSH 0x005F 1191 #define ENHANCED_FLUSH_CP_SIZE 3 1193 #define OCF_SEND_KEYPRESS_NOTIFY 0x0060 1198 #define SEND_KEYPRESS_NOTIFY_CP_SIZE 7 1202 #define SEND_KEYPRESS_NOTIFY_RP_SIZE 1 1204 #define OCF_READ_LOGICAL_LINK_ACCEPT_TIMEOUT 0x0061 1209 #define READ_LOGICAL_LINK_ACCEPT_TIMEOUT_RP_SIZE 3 1211 #define OCF_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT 0x0062 1214 }
__attribute__ ((packed)) write_log_link_accept_timeout_cp;
1215 #define WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_CP_SIZE 2 1217 #define OCF_SET_EVENT_MASK_PAGE_2 0x0063 1219 #define OCF_READ_LOCATION_DATA 0x0064 1221 #define OCF_WRITE_LOCATION_DATA 0x0065 1223 #define OCF_READ_FLOW_CONTROL_MODE 0x0066 1225 #define OCF_WRITE_FLOW_CONTROL_MODE 0x0067 1227 #define OCF_READ_ENHANCED_TRANSMIT_POWER_LEVEL 0x0068 1234 }
__attribute__ ((packed)) read_enhanced_transmit_power_level_rp;
1235 #define READ_ENHANCED_TRANSMIT_POWER_LEVEL_RP_SIZE 6 1237 #define OCF_READ_BEST_EFFORT_FLUSH_TIMEOUT 0x0069 1241 }
__attribute__ ((packed)) read_best_effort_flush_timeout_rp;
1242 #define READ_BEST_EFFORT_FLUSH_TIMEOUT_RP_SIZE 5 1244 #define OCF_WRITE_BEST_EFFORT_FLUSH_TIMEOUT 0x006A 1248 }
__attribute__ ((packed)) write_best_effort_flush_timeout_cp;
1249 #define WRITE_BEST_EFFORT_FLUSH_TIMEOUT_CP_SIZE 6 1252 }
__attribute__ ((packed)) write_best_effort_flush_timeout_rp;
1253 #define WRITE_BEST_EFFORT_FLUSH_TIMEOUT_RP_SIZE 1 1255 #define OCF_READ_LE_HOST_SUPPORTED 0x006C 1261 #define READ_LE_HOST_SUPPORTED_RP_SIZE 3 1263 #define OCF_WRITE_LE_HOST_SUPPORTED 0x006D 1268 #define WRITE_LE_HOST_SUPPORTED_CP_SIZE 2 1271 #define OGF_INFO_PARAM 0x04 1273 #define OCF_READ_LOCAL_VERSION 0x0001 1279 uint16_t manufacturer;
1280 uint16_t lmp_subver;
1282 #define READ_LOCAL_VERSION_RP_SIZE 9 1284 #define OCF_READ_LOCAL_COMMANDS 0x0002 1287 uint8_t commands[64];
1289 #define READ_LOCAL_COMMANDS_RP_SIZE 65 1291 #define OCF_READ_LOCAL_FEATURES 0x0003 1294 uint8_t features[8];
1296 #define READ_LOCAL_FEATURES_RP_SIZE 9 1298 #define OCF_READ_LOCAL_EXT_FEATURES 0x0004 1302 #define READ_LOCAL_EXT_FEATURES_CP_SIZE 1 1306 uint8_t max_page_num;
1307 uint8_t features[8];
1309 #define READ_LOCAL_EXT_FEATURES_RP_SIZE 11 1311 #define OCF_READ_BUFFER_SIZE 0x0005 1316 uint16_t acl_max_pkt;
1317 uint16_t sco_max_pkt;
1319 #define READ_BUFFER_SIZE_RP_SIZE 8 1321 #define OCF_READ_COUNTRY_CODE 0x0007 1323 #define OCF_READ_BD_ADDR 0x0009 1328 #define READ_BD_ADDR_RP_SIZE 7 1330 #define OCF_READ_DATA_BLOCK_SIZE 0x000A 1333 uint16_t max_acl_len;
1334 uint16_t data_block_len;
1335 uint16_t num_blocks;
1339 #define OGF_STATUS_PARAM 0x05 1341 #define OCF_READ_FAILED_CONTACT_COUNTER 0x0001 1347 #define READ_FAILED_CONTACT_COUNTER_RP_SIZE 4 1349 #define OCF_RESET_FAILED_CONTACT_COUNTER 0x0002 1354 #define RESET_FAILED_CONTACT_COUNTER_RP_SIZE 3 1356 #define OCF_READ_LINK_QUALITY 0x0003 1360 uint8_t link_quality;
1362 #define READ_LINK_QUALITY_RP_SIZE 4 1364 #define OCF_READ_RSSI 0x0005 1370 #define READ_RSSI_RP_SIZE 4 1372 #define OCF_READ_AFH_MAP 0x0006 1379 #define READ_AFH_MAP_RP_SIZE 14 1381 #define OCF_READ_CLOCK 0x0007 1384 uint8_t which_clock;
1386 #define READ_CLOCK_CP_SIZE 3 1393 #define READ_CLOCK_RP_SIZE 9 1395 #define OCF_READ_LOCAL_AMP_INFO 0x0009 1399 uint32_t total_bandwidth;
1400 uint32_t max_guaranteed_bandwidth;
1401 uint32_t min_latency;
1402 uint32_t max_pdu_size;
1403 uint8_t controller_type;
1405 uint16_t max_amp_assoc_length;
1406 uint32_t max_flush_timeout;
1407 uint32_t best_effort_flush_timeout;
1409 #define READ_LOCAL_AMP_INFO_RP_SIZE 31 1411 #define OCF_READ_LOCAL_AMP_ASSOC 0x000A 1414 uint16_t length_so_far;
1415 uint16_t assoc_length;
1417 #define READ_LOCAL_AMP_ASSOC_CP_SIZE 5 1422 uint8_t fragment[HCI_MAX_NAME_LENGTH];
1424 #define READ_LOCAL_AMP_ASSOC_RP_SIZE 252 1426 #define OCF_WRITE_REMOTE_AMP_ASSOC 0x000B 1429 uint16_t length_so_far;
1430 uint16_t remaining_length;
1431 uint8_t fragment[HCI_MAX_NAME_LENGTH];
1433 #define WRITE_REMOTE_AMP_ASSOC_CP_SIZE 253 1438 #define WRITE_REMOTE_AMP_ASSOC_RP_SIZE 2 1441 #define OGF_TESTING_CMD 0x3e 1443 #define OCF_READ_LOOPBACK_MODE 0x0001 1445 #define OCF_WRITE_LOOPBACK_MODE 0x0002 1447 #define OCF_ENABLE_DEVICE_UNDER_TEST_MODE 0x0003 1449 #define OCF_WRITE_SIMPLE_PAIRING_DEBUG_MODE 0x0004 1452 }
__attribute__ ((packed)) write_simple_pairing_debug_mode_cp;
1453 #define WRITE_SIMPLE_PAIRING_DEBUG_MODE_CP_SIZE 1 1456 }
__attribute__ ((packed)) write_simple_pairing_debug_mode_rp;
1457 #define WRITE_SIMPLE_PAIRING_DEBUG_MODE_RP_SIZE 1 1460 #define OGF_LE_CTL 0x08 1462 #define OCF_LE_SET_EVENT_MASK 0x0001 1466 #define LE_SET_EVENT_MASK_CP_SIZE 8 1468 #define OCF_LE_READ_BUFFER_SIZE 0x0002 1474 #define LE_READ_BUFFER_SIZE_RP_SIZE 4 1476 #define OCF_LE_READ_LOCAL_SUPPORTED_FEATURES 0x0003 1479 uint8_t features[8];
1480 }
__attribute__ ((packed)) le_read_local_supported_features_rp;
1481 #define LE_READ_LOCAL_SUPPORTED_FEATURES_RP_SIZE 9 1483 #define OCF_LE_SET_RANDOM_ADDRESS 0x0005 1487 #define LE_SET_RANDOM_ADDRESS_CP_SIZE 6 1489 #define OCF_LE_SET_ADVERTISING_PARAMETERS 0x0006 1491 uint16_t min_interval;
1492 uint16_t max_interval;
1494 uint8_t own_bdaddr_type;
1495 uint8_t direct_bdaddr_type;
1496 bdaddr_t direct_bdaddr;
1499 }
__attribute__ ((packed)) le_set_advertising_parameters_cp;
1500 #define LE_SET_ADVERTISING_PARAMETERS_CP_SIZE 15 1502 #define OCF_LE_READ_ADVERTISING_CHANNEL_TX_POWER 0x0007 1506 }
__attribute__ ((packed)) le_read_advertising_channel_tx_power_rp;
1507 #define LE_READ_ADVERTISING_CHANNEL_TX_POWER_RP_SIZE 2 1509 #define OCF_LE_SET_ADVERTISING_DATA 0x0008 1514 #define LE_SET_ADVERTISING_DATA_CP_SIZE 32 1516 #define OCF_LE_SET_SCAN_RESPONSE_DATA 0x0009 1521 #define LE_SET_SCAN_RESPONSE_DATA_CP_SIZE 32 1523 #define OCF_LE_SET_ADVERTISE_ENABLE 0x000A 1527 #define LE_SET_ADVERTISE_ENABLE_CP_SIZE 1 1529 #define OCF_LE_SET_SCAN_PARAMETERS 0x000B 1534 uint8_t own_bdaddr_type;
1537 #define LE_SET_SCAN_PARAMETERS_CP_SIZE 7 1539 #define OCF_LE_SET_SCAN_ENABLE 0x000C 1544 #define LE_SET_SCAN_ENABLE_CP_SIZE 2 1546 #define OCF_LE_CREATE_CONN 0x000D 1550 uint8_t initiator_filter;
1551 uint8_t peer_bdaddr_type;
1552 bdaddr_t peer_bdaddr;
1553 uint8_t own_bdaddr_type;
1554 uint16_t min_interval;
1555 uint16_t max_interval;
1557 uint16_t supervision_timeout;
1558 uint16_t min_ce_length;
1559 uint16_t max_ce_length;
1561 #define LE_CREATE_CONN_CP_SIZE 25 1563 #define OCF_LE_CREATE_CONN_CANCEL 0x000E 1565 #define OCF_LE_READ_WHITE_LIST_SIZE 0x000F 1570 #define LE_READ_WHITE_LIST_SIZE_RP_SIZE 2 1572 #define OCF_LE_CLEAR_WHITE_LIST 0x0010 1574 #define OCF_LE_ADD_DEVICE_TO_WHITE_LIST 0x0011 1576 uint8_t bdaddr_type;
1579 #define LE_ADD_DEVICE_TO_WHITE_LIST_CP_SIZE 7 1581 #define OCF_LE_REMOVE_DEVICE_FROM_WHITE_LIST 0x0012 1583 uint8_t bdaddr_type;
1585 }
__attribute__ ((packed)) le_remove_device_from_white_list_cp;
1586 #define LE_REMOVE_DEVICE_FROM_WHITE_LIST_CP_SIZE 7 1588 #define OCF_LE_CONN_UPDATE 0x0013 1591 uint16_t min_interval;
1592 uint16_t max_interval;
1594 uint16_t supervision_timeout;
1595 uint16_t min_ce_length;
1596 uint16_t max_ce_length;
1598 #define LE_CONN_UPDATE_CP_SIZE 14 1600 #define OCF_LE_SET_HOST_CHANNEL_CLASSIFICATION 0x0014 1603 }
__attribute__ ((packed)) le_set_host_channel_classification_cp;
1604 #define LE_SET_HOST_CHANNEL_CLASSIFICATION_CP_SIZE 5 1606 #define OCF_LE_READ_CHANNEL_MAP 0x0015 1610 #define LE_READ_CHANNEL_MAP_CP_SIZE 2 1616 #define LE_READ_CHANNEL_MAP_RP_SIZE 8 1618 #define OCF_LE_READ_REMOTE_USED_FEATURES 0x0016 1622 #define LE_READ_REMOTE_USED_FEATURES_CP_SIZE 2 1624 #define OCF_LE_ENCRYPT 0x0017 1627 uint8_t plaintext[16];
1629 #define LE_ENCRYPT_CP_SIZE 32 1634 #define LE_ENCRYPT_RP_SIZE 17 1636 #define OCF_LE_RAND 0x0018 1641 #define LE_RAND_RP_SIZE 9 1643 #define OCF_LE_START_ENCRYPTION 0x0019 1647 uint16_t diversifier;
1650 #define LE_START_ENCRYPTION_CP_SIZE 28 1652 #define OCF_LE_LTK_REPLY 0x001A 1657 #define LE_LTK_REPLY_CP_SIZE 18 1662 #define LE_LTK_REPLY_RP_SIZE 3 1664 #define OCF_LE_LTK_NEG_REPLY 0x001B 1668 #define LE_LTK_NEG_REPLY_CP_SIZE 2 1673 #define LE_LTK_NEG_REPLY_RP_SIZE 3 1675 #define OCF_LE_READ_SUPPORTED_STATES 0x001C 1680 #define LE_READ_SUPPORTED_STATES_RP_SIZE 9 1682 #define OCF_LE_RECEIVER_TEST 0x001D 1686 #define LE_RECEIVER_TEST_CP_SIZE 1 1688 #define OCF_LE_TRANSMITTER_TEST 0x001E 1694 #define LE_TRANSMITTER_TEST_CP_SIZE 3 1696 #define OCF_LE_TEST_END 0x001F 1701 #define LE_TEST_END_RP_SIZE 3 1703 #define OCF_LE_ADD_DEVICE_TO_RESOLV_LIST 0x0027 1705 uint8_t bdaddr_type;
1707 uint8_t peer_irk[16];
1708 uint8_t local_irk[16];
1710 #define LE_ADD_DEVICE_TO_RESOLV_LIST_CP_SIZE 39 1712 #define OCF_LE_REMOVE_DEVICE_FROM_RESOLV_LIST 0x0028 1714 uint8_t bdaddr_type;
1716 }
__attribute__ ((packed)) le_remove_device_from_resolv_list_cp;
1717 #define LE_REMOVE_DEVICE_FROM_RESOLV_LIST_CP_SIZE 7 1719 #define OCF_LE_CLEAR_RESOLV_LIST 0x0029 1721 #define OCF_LE_READ_RESOLV_LIST_SIZE 0x002A 1726 #define LE_READ_RESOLV_LIST_SIZE_RP_SIZE 2 1728 #define OCF_LE_SET_ADDRESS_RESOLUTION_ENABLE 0x002D 1731 }
__attribute__ ((packed)) le_set_address_resolution_enable_cp;
1732 #define LE_SET_ADDRESS_RESOLUTION_ENABLE_CP_SIZE 1 1735 #define OGF_VENDOR_CMD 0x3f 1739 #define EVT_INQUIRY_COMPLETE 0x01 1741 #define EVT_INQUIRY_RESULT 0x02 1744 uint8_t pscan_rep_mode;
1745 uint8_t pscan_period_mode;
1747 uint8_t dev_class[3];
1748 uint16_t clock_offset;
1750 #define INQUIRY_INFO_SIZE 14 1752 #define EVT_CONN_COMPLETE 0x03 1760 #define EVT_CONN_COMPLETE_SIZE 11 1762 #define EVT_CONN_REQUEST 0x04 1765 uint8_t dev_class[3];
1768 #define EVT_CONN_REQUEST_SIZE 10 1770 #define EVT_DISCONN_COMPLETE 0x05 1776 #define EVT_DISCONN_COMPLETE_SIZE 4 1778 #define EVT_AUTH_COMPLETE 0x06 1783 #define EVT_AUTH_COMPLETE_SIZE 3 1785 #define EVT_REMOTE_NAME_REQ_COMPLETE 0x07 1789 uint8_t name[HCI_MAX_NAME_LENGTH];
1791 #define EVT_REMOTE_NAME_REQ_COMPLETE_SIZE 255 1793 #define EVT_ENCRYPT_CHANGE 0x08 1799 #define EVT_ENCRYPT_CHANGE_SIZE 4 1801 #define EVT_CHANGE_CONN_LINK_KEY_COMPLETE 0x09 1805 }
__attribute__ ((packed)) evt_change_conn_link_key_complete;
1806 #define EVT_CHANGE_CONN_LINK_KEY_COMPLETE_SIZE 3 1808 #define EVT_MASTER_LINK_KEY_COMPLETE 0x0A 1814 #define EVT_MASTER_LINK_KEY_COMPLETE_SIZE 4 1816 #define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B 1820 uint8_t features[8];
1821 }
__attribute__ ((packed)) evt_read_remote_features_complete;
1822 #define EVT_READ_REMOTE_FEATURES_COMPLETE_SIZE 11 1824 #define EVT_READ_REMOTE_VERSION_COMPLETE 0x0C 1829 uint16_t manufacturer;
1830 uint16_t lmp_subver;
1831 }
__attribute__ ((packed)) evt_read_remote_version_complete;
1832 #define EVT_READ_REMOTE_VERSION_COMPLETE_SIZE 8 1834 #define EVT_QOS_SETUP_COMPLETE 0x0D 1841 #define EVT_QOS_SETUP_COMPLETE_SIZE (4 + HCI_QOS_CP_SIZE) 1843 #define EVT_CMD_COMPLETE 0x0E 1848 #define EVT_CMD_COMPLETE_SIZE 3 1850 #define EVT_CMD_STATUS 0x0F 1856 #define EVT_CMD_STATUS_SIZE 4 1858 #define EVT_HARDWARE_ERROR 0x10 1862 #define EVT_HARDWARE_ERROR_SIZE 1 1864 #define EVT_FLUSH_OCCURRED 0x11 1868 #define EVT_FLUSH_OCCURRED_SIZE 2 1870 #define EVT_ROLE_CHANGE 0x12 1876 #define EVT_ROLE_CHANGE_SIZE 8 1878 #define EVT_NUM_COMP_PKTS 0x13 1883 #define EVT_NUM_COMP_PKTS_SIZE 1 1885 #define EVT_MODE_CHANGE 0x14 1892 #define EVT_MODE_CHANGE_SIZE 6 1894 #define EVT_RETURN_LINK_KEYS 0x15 1899 #define EVT_RETURN_LINK_KEYS_SIZE 1 1901 #define EVT_PIN_CODE_REQ 0x16 1905 #define EVT_PIN_CODE_REQ_SIZE 6 1907 #define EVT_LINK_KEY_REQ 0x17 1911 #define EVT_LINK_KEY_REQ_SIZE 6 1913 #define EVT_LINK_KEY_NOTIFY 0x18 1916 uint8_t link_key[16];
1919 #define EVT_LINK_KEY_NOTIFY_SIZE 23 1921 #define EVT_LOOPBACK_COMMAND 0x19 1923 #define EVT_DATA_BUFFER_OVERFLOW 0x1A 1927 #define EVT_DATA_BUFFER_OVERFLOW_SIZE 1 1929 #define EVT_MAX_SLOTS_CHANGE 0x1B 1934 #define EVT_MAX_SLOTS_CHANGE_SIZE 3 1936 #define EVT_READ_CLOCK_OFFSET_COMPLETE 0x1C 1940 uint16_t clock_offset;
1942 #define EVT_READ_CLOCK_OFFSET_COMPLETE_SIZE 5 1944 #define EVT_CONN_PTYPE_CHANGED 0x1D 1950 #define EVT_CONN_PTYPE_CHANGED_SIZE 5 1952 #define EVT_QOS_VIOLATION 0x1E 1956 #define EVT_QOS_VIOLATION_SIZE 2 1958 #define EVT_PSCAN_REP_MODE_CHANGE 0x20 1961 uint8_t pscan_rep_mode;
1963 #define EVT_PSCAN_REP_MODE_CHANGE_SIZE 7 1965 #define EVT_FLOW_SPEC_COMPLETE 0x21 1973 #define EVT_FLOW_SPEC_COMPLETE_SIZE (5 + HCI_QOS_CP_SIZE) 1975 #define EVT_INQUIRY_RESULT_WITH_RSSI 0x22 1978 uint8_t pscan_rep_mode;
1979 uint8_t pscan_period_mode;
1980 uint8_t dev_class[3];
1981 uint16_t clock_offset;
1984 #define INQUIRY_INFO_WITH_RSSI_SIZE 14 1987 uint8_t pscan_rep_mode;
1988 uint8_t pscan_period_mode;
1990 uint8_t dev_class[3];
1991 uint16_t clock_offset;
1993 }
__attribute__ ((packed)) inquiry_info_with_rssi_and_pscan_mode;
1994 #define INQUIRY_INFO_WITH_RSSI_AND_PSCAN_MODE_SIZE 15 1996 #define EVT_READ_REMOTE_EXT_FEATURES_COMPLETE 0x23 2001 uint8_t max_page_num;
2002 uint8_t features[8];
2003 }
__attribute__ ((packed)) evt_read_remote_ext_features_complete;
2004 #define EVT_READ_REMOTE_EXT_FEATURES_COMPLETE_SIZE 13 2006 #define EVT_SYNC_CONN_COMPLETE 0x2C 2012 uint8_t trans_interval;
2013 uint8_t retrans_window;
2014 uint16_t rx_pkt_len;
2015 uint16_t tx_pkt_len;
2018 #define EVT_SYNC_CONN_COMPLETE_SIZE 17 2020 #define EVT_SYNC_CONN_CHANGED 0x2D 2024 uint8_t trans_interval;
2025 uint8_t retrans_window;
2026 uint16_t rx_pkt_len;
2027 uint16_t tx_pkt_len;
2029 #define EVT_SYNC_CONN_CHANGED_SIZE 9 2031 #define EVT_SNIFF_SUBRATING 0x2E 2035 uint16_t max_tx_latency;
2036 uint16_t max_rx_latency;
2037 uint16_t min_remote_timeout;
2038 uint16_t min_local_timeout;
2040 #define EVT_SNIFF_SUBRATING_SIZE 11 2042 #define EVT_EXTENDED_INQUIRY_RESULT 0x2F 2045 uint8_t pscan_rep_mode;
2046 uint8_t pscan_period_mode;
2047 uint8_t dev_class[3];
2048 uint16_t clock_offset;
2050 uint8_t data[HCI_MAX_EIR_LENGTH];
2052 #define EXTENDED_INQUIRY_INFO_SIZE 254 2054 #define EVT_ENCRYPTION_KEY_REFRESH_COMPLETE 0x30 2058 }
__attribute__ ((packed)) evt_encryption_key_refresh_complete;
2059 #define EVT_ENCRYPTION_KEY_REFRESH_COMPLETE_SIZE 3 2061 #define EVT_IO_CAPABILITY_REQUEST 0x31 2065 #define EVT_IO_CAPABILITY_REQUEST_SIZE 6 2067 #define EVT_IO_CAPABILITY_RESPONSE 0x32 2072 uint8_t authentication;
2074 #define EVT_IO_CAPABILITY_RESPONSE_SIZE 9 2076 #define EVT_USER_CONFIRM_REQUEST 0x33 2081 #define EVT_USER_CONFIRM_REQUEST_SIZE 10 2083 #define EVT_USER_PASSKEY_REQUEST 0x34 2087 #define EVT_USER_PASSKEY_REQUEST_SIZE 6 2089 #define EVT_REMOTE_OOB_DATA_REQUEST 0x35 2093 #define EVT_REMOTE_OOB_DATA_REQUEST_SIZE 6 2095 #define EVT_SIMPLE_PAIRING_COMPLETE 0x36 2100 #define EVT_SIMPLE_PAIRING_COMPLETE_SIZE 7 2102 #define EVT_LINK_SUPERVISION_TIMEOUT_CHANGED 0x38 2106 }
__attribute__ ((packed)) evt_link_supervision_timeout_changed;
2107 #define EVT_LINK_SUPERVISION_TIMEOUT_CHANGED_SIZE 4 2109 #define EVT_ENHANCED_FLUSH_COMPLETE 0x39 2113 #define EVT_ENHANCED_FLUSH_COMPLETE_SIZE 2 2115 #define EVT_USER_PASSKEY_NOTIFY 0x3B 2120 #define EVT_USER_PASSKEY_NOTIFY_SIZE 10 2122 #define EVT_KEYPRESS_NOTIFY 0x3C 2127 #define EVT_KEYPRESS_NOTIFY_SIZE 7 2129 #define EVT_REMOTE_HOST_FEATURES_NOTIFY 0x3D 2132 uint8_t features[8];
2134 #define EVT_REMOTE_HOST_FEATURES_NOTIFY_SIZE 14 2136 #define EVT_LE_META_EVENT 0x3E 2141 #define EVT_LE_META_EVENT_SIZE 1 2143 #define EVT_LE_CONN_COMPLETE 0x01 2148 uint8_t peer_bdaddr_type;
2149 bdaddr_t peer_bdaddr;
2152 uint16_t supervision_timeout;
2153 uint8_t master_clock_accuracy;
2155 #define EVT_LE_CONN_COMPLETE_SIZE 18 2157 #define EVT_LE_ADVERTISING_REPORT 0x02 2160 uint8_t bdaddr_type;
2165 #define LE_ADVERTISING_INFO_SIZE 9 2167 #define EVT_LE_CONN_UPDATE_COMPLETE 0x03 2173 uint16_t supervision_timeout;
2174 }
__attribute__ ((packed)) evt_le_connection_update_complete;
2175 #define EVT_LE_CONN_UPDATE_COMPLETE_SIZE 9 2177 #define EVT_LE_READ_REMOTE_USED_FEATURES_COMPLETE 0x04 2181 uint8_t features[8];
2182 }
__attribute__ ((packed)) evt_le_read_remote_used_features_complete;
2183 #define EVT_LE_READ_REMOTE_USED_FEATURES_COMPLETE_SIZE 11 2185 #define EVT_LE_LTK_REQUEST 0x05 2189 uint16_t diversifier;
2191 #define EVT_LE_LTK_REQUEST_SIZE 12 2193 #define EVT_PHYSICAL_LINK_COMPLETE 0x40 2198 #define EVT_PHYSICAL_LINK_COMPLETE_SIZE 2 2200 #define EVT_CHANNEL_SELECTED 0x41 2202 #define EVT_DISCONNECT_PHYSICAL_LINK_COMPLETE 0x42 2207 }
__attribute__ ((packed)) evt_disconn_physical_link_complete;
2208 #define EVT_DISCONNECT_PHYSICAL_LINK_COMPLETE_SIZE 3 2210 #define EVT_PHYSICAL_LINK_LOSS_EARLY_WARNING 0x43 2215 #define EVT_PHYSICAL_LINK_LOSS_WARNING_SIZE 2 2217 #define EVT_PHYSICAL_LINK_RECOVERY 0x44 2221 #define EVT_PHYSICAL_LINK_RECOVERY_SIZE 1 2223 #define EVT_LOGICAL_LINK_COMPLETE 0x45 2226 uint16_t log_handle;
2230 #define EVT_LOGICAL_LINK_COMPLETE_SIZE 5 2232 #define EVT_DISCONNECT_LOGICAL_LINK_COMPLETE 0x46 2234 #define EVT_FLOW_SPEC_MODIFY_COMPLETE 0x47 2239 #define EVT_FLOW_SPEC_MODIFY_COMPLETE_SIZE 3 2241 #define EVT_NUMBER_COMPLETED_BLOCKS 0x48 2244 uint16_t num_cmplt_pkts;
2245 uint16_t num_cmplt_blks;
2248 uint16_t total_num_blocks;
2249 uint8_t num_handles;
2250 cmplt_handle handles[];
2253 #define EVT_AMP_STATUS_CHANGE 0x4D 2258 #define EVT_AMP_STATUS_CHANGE_SIZE 2 2260 #define EVT_TESTING 0xFE 2262 #define EVT_VENDOR 0xFF 2265 #define EVT_STACK_INTERNAL 0xFD 2270 #define EVT_STACK_INTERNAL_SIZE 2 2272 #define EVT_SI_DEVICE 0x01 2277 #define EVT_SI_DEVICE_SIZE 4 2280 #define HCI_TYPE_LEN 1 2286 #define HCI_COMMAND_HDR_SIZE 3 2292 #define HCI_EVENT_HDR_SIZE 2 2298 #define HCI_ACL_HDR_SIZE 4 2304 #define HCI_SCO_HDR_SIZE 3 2311 #define HCI_MSG_HDR_SIZE 6 2314 #define cmd_opcode_pack(ogf, ocf) (uint16_t)((ocf & 0x03ff)|(ogf << 10)) 2315 #define cmd_opcode_ogf(op) (op >> 10) 2316 #define cmd_opcode_ocf(op) (op & 0x03ff) 2319 #define acl_handle_pack(h, f) (uint16_t)((h & 0x0fff)|(f << 12)) 2320 #define acl_handle(h) (h & 0x0fff) 2321 #define acl_flags(h) (h >> 12) 2326 #define HCI_DATA_DIR 1 2327 #define HCI_FILTER 2 2328 #define HCI_TIME_STAMP 3 2331 #define HCI_CMSG_DIR 0x0001 2332 #define HCI_CMSG_TSTAMP 0x0002 2335 sa_family_t hci_family;
2336 unsigned short hci_dev;
2337 unsigned short hci_channel;
2339 #define HCI_DEV_NONE 0xffff 2341 #define HCI_CHANNEL_RAW 0 2342 #define HCI_CHANNEL_USER 1 2343 #define HCI_CHANNEL_MONITOR 2 2344 #define HCI_CHANNEL_CONTROL 3 2345 #define HCI_CHANNEL_LOGGING 4 2349 uint32_t event_mask[2];
2353 #define HCI_FLT_TYPE_BITS 31 2354 #define HCI_FLT_EVENT_BITS 63 2355 #define HCI_FLT_OGF_BITS 63 2356 #define HCI_FLT_OCF_BITS 127 2381 uint8_t features[8];
2384 uint32_t link_policy;
2438 #define IREQ_CACHE_FLUSH 0x0001