# Copyright 2020 syzkaller project authors. All rights reserved. # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. include include include include syz_emit_vhci(data ptr[in, vhci_pkt], size bytesize[data]) # Matches HCI_HANDLE_1/HCI_HANDLE_2 in executor/common_linux.h. hci_handles = 200, 201 type hci_conn_handle flags[hci_handles, int16] type hci_phy_handle flags[hci_handles, int8] vhci_pkt [ HCI_EVENT_PKT vhci_event_pkt HCI_ACLDATA_PKT vhci_acldata_pkt HCI_SCODATA_PKT vhci_scodata_pkt HCI_VENDOR_PKT vhci_vendor_pkt ] [varlen] vhci_command_pkt { cmd const[HCI_COMMAND_PKT, int8] hdr hci_command_hdr_un } vhci_event_pkt { cmd const[HCI_EVENT_PKT, int8] hdr hci_event_hdr_un } vhci_acldata_pkt { cmd const[HCI_ACLDATA_PKT, int8] acl_hdr hci_acl_hdr[vhci_acldata_pkt:l2cap_hdr] l2cap_hdr l2cap_hdr_un } vhci_scodata_pkt { cmd const[HCI_SCODATA_PKT, int8] sco_hdr hci_sco_hdr[vhci_scodata_pkt:data] data array[int8] } vhci_vendor_pkt { cmd const[HCI_VENDOR_PKT, int8] opcode flags[vhci_vendor_pkt_opcode, int8] } define HCI_PRIMARY 0x00 define HCI_AMP 0x01 vhci_vendor_pkt_opcode = HCI_PRIMARY, HCI_AMP, HCI_EXTERNAL_CONFIG, HCI_RAW_DEVICE type hci_acl_hdr[DATA] { handle flags[hci_handles, int16:12] pb int16:2 bc int16:2 dlen bytesize[DATA, int16] } [packed] type hci_sco_hdr[DATA] { handle hci_conn_handle dlen bytesize[DATA, int8] } [packed] ext_flow_spec { id int8 stype int8 msdu int16 sdu_itime int32 acc_lat int32 flush_to int32 } [packed] hci_cis { cis_handle int16 acl_handle int16 } [packed] hci_cis_params { cis_id int8 m_sdu int16 s_sdu int16 m_phy int8 s_phy int8 m_rtn int8 s_rtn int8 } [packed] # TODO: remove these definitions when they are no more present in LTS kernels. define HCI_OP_CREATE_PHY_LINK 0x0435 define HCI_OP_ACCEPT_PHY_LINK 0x0436 define HCI_OP_DISCONN_PHY_LINK 0x0437 define HCI_OP_CREATE_LOGICAL_LINK 0x0438 define HCI_OP_ACCEPT_LOGICAL_LINK 0x0439 define HCI_OP_DISCONN_LOGICAL_LINK 0x043a define HCI_OP_LOGICAL_LINK_CANCEL 0x043b define HCI_OP_READ_LOCAL_AMP_INFO 0x1409 define HCI_OP_READ_LOCAL_AMP_ASSOC 0x140a define HCI_OP_WRITE_REMOTE_AMP_ASSOC 0x140b hci_command_hdr_un [ accept_conn_req hci_command_packet_t[HCI_OP_ACCEPT_CONN_REQ, hci_cp_accept_conn_req] accept_phy_link hci_command_packet_t[HCI_OP_ACCEPT_PHY_LINK, hci_cp_accept_phy_link] accept_sync_conn_req hci_command_packet_t[HCI_OP_ACCEPT_SYNC_CONN_REQ, hci_cp_accept_sync_conn_req] add_sco hci_command_packet_t[HCI_OP_ADD_SCO, hci_cp_add_sco] auth_requested hci_command_packet_t[HCI_OP_AUTH_REQUESTED, hci_cp_auth_requested] change_conn_link_key hci_command_packet_t[HCI_OP_CHANGE_CONN_LINK_KEY, hci_cp_change_conn_link_key] change_conn_ptype hci_command_packet_t[HCI_OP_CHANGE_CONN_PTYPE, hci_cp_change_conn_ptype] create_logical_link hci_command_packet_t[HCI_OP_CREATE_LOGICAL_LINK, hci_cp_create_accept_logical_link] accept_logical_link hci_command_packet_t[HCI_OP_ACCEPT_LOGICAL_LINK, hci_cp_create_accept_logical_link] create_conn hci_command_packet_t[HCI_OP_CREATE_CONN, hci_cp_create_conn] create_conn_cancel hci_command_packet_t[HCI_OP_CREATE_CONN_CANCEL, hci_cp_create_conn_cancel] create_phy_link hci_command_packet_t[HCI_OP_CREATE_PHY_LINK, hci_cp_create_phy_link] delete_reserved_lt_addr hci_command_packet_t[HCI_OP_DELETE_RESERVED_LT_ADDR, hci_cp_delete_reserved_lt_addr] delete_stored_link_key hci_command_packet_t[HCI_OP_DELETE_STORED_LINK_KEY, hci_cp_delete_stored_link_key] disconn_logical_link hci_command_packet_t[HCI_OP_DISCONN_LOGICAL_LINK, hci_cp_disconn_logical_link] disconn_phy_link hci_command_packet_t[HCI_OP_DISCONN_PHY_LINK, hci_cp_disconn_phy_link] disconnect hci_command_packet_t[HCI_OP_DISCONNECT, hci_cp_disconnect] exit_sniff_mode hci_command_packet_t[HCI_OP_EXIT_SNIFF_MODE, hci_cp_exit_sniff_mode] host_buffer_size hci_command_packet_t[HCI_OP_HOST_BUFFER_SIZE, hci_cp_host_buffer_size] inquiry hci_command_packet_t[HCI_OP_INQUIRY, hci_cp_inquiry] io_capability_neg_reply hci_command_packet_t[HCI_OP_IO_CAPABILITY_NEG_REPLY, hci_cp_io_capability_neg_reply] io_capability_reply hci_command_packet_t[HCI_OP_IO_CAPABILITY_REPLY, hci_cp_io_capability_reply] le_accept_cis hci_command_packet_t[HCI_OP_LE_ACCEPT_CIS, hci_cp_le_accept_cis] le_add_to_resolv_list hci_command_packet_t[HCI_OP_LE_ADD_TO_RESOLV_LIST, hci_cp_le_add_to_resolv_list] le_add_to_accept_list hci_command_packet_t[HCI_OP_LE_ADD_TO_ACCEPT_LIST, hci_cp_le_add_to_accept_list] le_conn_param_req_neg_reply hci_command_packet_t[HCI_OP_LE_CONN_PARAM_REQ_NEG_REPLY, hci_cp_le_conn_param_req_neg_reply] le_conn_param_req_reply hci_command_packet_t[HCI_OP_LE_CONN_PARAM_REQ_REPLY, hci_cp_le_conn_param_req_reply] le_conn_update hci_command_packet_t[HCI_OP_LE_CONN_UPDATE, hci_cp_le_conn_update] le_create_cis hci_command_packet_t[HCI_OP_LE_CREATE_CIS, hci_cp_le_create_cis] le_create_conn hci_command_packet_t[HCI_OP_LE_CREATE_CONN, hci_cp_le_create_conn] le_del_from_resolv_list hci_command_packet_t[HCI_OP_LE_DEL_FROM_RESOLV_LIST, hci_cp_le_del_from_resolv_list] le_del_from_accept_list hci_command_packet_t[HCI_OP_LE_DEL_FROM_ACCEPT_LIST, hci_cp_le_del_from_accept_list] le_ext_create_conn hci_command_packet_t[HCI_OP_LE_EXT_CREATE_CONN, hci_cp_le_ext_create_conn] le_ltk_neg_reply hci_command_packet_t[HCI_OP_LE_LTK_NEG_REPLY, hci_cp_le_ltk_neg_reply] le_ltk_reply hci_command_packet_t[HCI_OP_LE_LTK_REPLY, hci_cp_le_ltk_reply] le_read_iso_tx_sync hci_command_packet_t[HCI_OP_LE_READ_ISO_TX_SYNC, hci_cp_le_read_iso_tx_sync] le_read_remote_features hci_command_packet_t[HCI_OP_LE_READ_REMOTE_FEATURES, hci_cp_le_read_remote_features] le_reject_cis hci_command_packet_t[HCI_OP_LE_REJECT_CIS, hci_cp_le_reject_cis] le_remove_cig hci_command_packet_t[HCI_OP_LE_REMOVE_CIG, hci_cp_le_remove_cig] le_set_adv_data hci_command_packet_t[HCI_OP_LE_SET_ADV_DATA, hci_cp_le_set_adv_data] le_set_adv_param hci_command_packet_t[HCI_OP_LE_SET_ADV_PARAM, hci_cp_le_set_adv_param] le_set_adv_set_rand_addr hci_command_packet_t[HCI_OP_LE_SET_ADV_SET_RAND_ADDR, hci_cp_le_set_adv_set_rand_addr] le_set_cig_params hci_command_packet_t[HCI_OP_LE_SET_CIG_PARAMS, hci_cp_le_set_cig_params] le_set_data_len hci_command_packet_t[HCI_OP_LE_SET_DATA_LEN, hci_cp_le_set_data_len] le_set_default_phy hci_command_packet_t[HCI_OP_LE_SET_DEFAULT_PHY, hci_cp_le_set_default_phy] le_set_event_mask hci_command_packet_t[HCI_OP_LE_SET_EVENT_MASK, hci_cp_le_set_event_mask] le_set_ext_adv_data hci_command_packet_t[HCI_OP_LE_SET_EXT_ADV_DATA, hci_cp_le_set_ext_adv_data] le_set_ext_adv_enable hci_command_packet_t[HCI_OP_LE_SET_EXT_ADV_ENABLE, hci_cp_le_set_ext_adv_enable] le_set_ext_adv_params hci_command_packet_t[HCI_OP_LE_SET_EXT_ADV_PARAMS, hci_cp_le_set_ext_adv_params] le_set_ext_scan_enable hci_command_packet_t[HCI_OP_LE_SET_EXT_SCAN_ENABLE, hci_cp_le_set_ext_scan_enable] le_set_ext_scan_params hci_command_packet_t[HCI_OP_LE_SET_EXT_SCAN_PARAMS, hci_cp_le_set_ext_scan_params] le_set_ext_scan_rsp_data hci_command_packet_t[HCI_OP_LE_SET_EXT_SCAN_RSP_DATA, hci_cp_le_set_ext_scan_rsp_data] le_set_scan_enable hci_command_packet_t[HCI_OP_LE_SET_SCAN_ENABLE, hci_cp_le_set_scan_enable] le_set_scan_param hci_command_packet_t[HCI_OP_LE_SET_SCAN_PARAM, hci_cp_le_set_scan_param] le_set_scan_rsp_data hci_command_packet_t[HCI_OP_LE_SET_SCAN_RSP_DATA, hci_cp_le_set_scan_rsp_data] le_start_enc hci_command_packet_t[HCI_OP_LE_START_ENC, hci_cp_le_start_enc] le_write_def_data_len hci_command_packet_t[HCI_OP_LE_WRITE_DEF_DATA_LEN, hci_cp_le_write_def_data_len] link_key_neg_reply hci_command_packet_t[HCI_OP_LINK_KEY_NEG_REPLY, hci_cp_link_key_neg_reply] link_key_reply hci_command_packet_t[HCI_OP_LINK_KEY_REPLY, hci_cp_link_key_reply] logical_link_cancel hci_command_packet_t[HCI_OP_LOGICAL_LINK_CANCEL, hci_cp_logical_link_cancel] pin_code_neg_reply hci_command_packet_t[HCI_OP_PIN_CODE_NEG_REPLY, hci_cp_pin_code_neg_reply] pin_code_reply hci_command_packet_t[HCI_OP_PIN_CODE_REPLY, hci_cp_pin_code_reply] read_auth_payload_to hci_command_packet_t[HCI_OP_READ_AUTH_PAYLOAD_TO, hci_cp_read_auth_payload_to] read_clock hci_command_packet_t[HCI_OP_READ_CLOCK, hci_cp_read_clock] read_clock_offset hci_command_packet_t[HCI_OP_READ_CLOCK_OFFSET, hci_cp_read_clock_offset] read_enc_key_size hci_command_packet_t[HCI_OP_READ_ENC_KEY_SIZE, hci_cp_read_enc_key_size] read_link_policy hci_command_packet_t[HCI_OP_READ_LINK_POLICY, hci_cp_read_link_policy] read_local_amp_assoc hci_command_packet_t[HCI_OP_READ_LOCAL_AMP_ASSOC, hci_cp_read_local_amp_assoc] read_local_ext_features hci_command_packet_t[HCI_OP_READ_LOCAL_EXT_FEATURES, hci_cp_read_local_ext_features] read_remote_ext_features hci_command_packet_t[HCI_OP_READ_REMOTE_EXT_FEATURES, hci_cp_read_remote_ext_features] read_remote_features hci_command_packet_t[HCI_OP_READ_REMOTE_FEATURES, hci_cp_read_remote_features] read_remote_version hci_command_packet_t[HCI_OP_READ_REMOTE_VERSION, hci_cp_read_remote_version] read_rssi hci_command_packet_t[HCI_OP_READ_RSSI, hci_cp_read_rssi] read_stored_link_key hci_command_packet_t[HCI_OP_READ_STORED_LINK_KEY, hci_cp_read_stored_link_key] read_tx_power hci_command_packet_t[HCI_OP_READ_TX_POWER, hci_cp_read_tx_power] reject_conn_req hci_command_packet_t[HCI_OP_REJECT_CONN_REQ, hci_cp_reject_conn_req] reject_sync_conn_req hci_command_packet_t[HCI_OP_REJECT_SYNC_CONN_REQ, hci_cp_reject_sync_conn_req] remote_name_req hci_command_packet_t[HCI_OP_REMOTE_NAME_REQ, hci_cp_remote_name_req] remote_name_req_cancel hci_command_packet_t[HCI_OP_REMOTE_NAME_REQ_CANCEL, hci_cp_remote_name_req_cancel] remote_oob_data_neg_reply hci_command_packet_t[HCI_OP_REMOTE_OOB_DATA_NEG_REPLY, hci_cp_remote_oob_data_neg_reply] remote_oob_data_reply hci_command_packet_t[HCI_OP_REMOTE_OOB_DATA_REPLY, hci_cp_remote_oob_data_reply] remote_oob_ext_data_reply hci_command_packet_t[HCI_OP_REMOTE_OOB_EXT_DATA_REPLY, hci_cp_remote_oob_ext_data_reply] role_discovery hci_command_packet_t[HCI_OP_ROLE_DISCOVERY, hci_cp_role_discovery] set_conn_encrypt hci_command_packet_t[HCI_OP_SET_CONN_ENCRYPT, hci_cp_set_conn_encrypt] set_cpb hci_command_packet_t[HCI_OP_SET_CPB, hci_cp_set_cpb] set_cpb_data hci_command_packet_t[HCI_OP_SET_CPB_DATA, hci_cp_set_cpb_data] set_reserved_lt_addr hci_command_packet_t[HCI_OP_SET_RESERVED_LT_ADDR, hci_cp_set_reserved_lt_addr] setup_sync_conn hci_command_packet_t[HCI_OP_SETUP_SYNC_CONN, hci_cp_setup_sync_conn] sniff_mode hci_command_packet_t[HCI_OP_SNIFF_MODE, hci_cp_sniff_mode] sniff_subrate hci_command_packet_t[HCI_OP_SNIFF_SUBRATE, hci_cp_sniff_subrate] switch_role hci_command_packet_t[HCI_OP_SWITCH_ROLE, hci_cp_switch_role] user_confirm_reply hci_command_packet_t[HCI_OP_USER_CONFIRM_REPLY, hci_cp_user_confirm_reply] user_passkey_reply hci_command_packet_t[HCI_OP_USER_PASSKEY_REPLY, hci_cp_user_passkey_reply] write_auth_payload_to hci_command_packet_t[HCI_OP_WRITE_AUTH_PAYLOAD_TO, hci_cp_write_auth_payload_to] write_class_of_dev hci_command_packet_t[HCI_OP_WRITE_CLASS_OF_DEV, hci_cp_write_class_of_dev] write_current_iac_lap hci_command_packet_t[HCI_OP_WRITE_CURRENT_IAC_LAP, hci_cp_write_current_iac_lap] write_def_err_data_reporting hci_command_packet_t[HCI_OP_WRITE_DEF_ERR_DATA_REPORTING, hci_cp_write_def_err_data_reporting] write_def_link_policy hci_command_packet_t[HCI_OP_WRITE_DEF_LINK_POLICY, hci_cp_write_def_link_policy] write_eir hci_command_packet_t[HCI_OP_WRITE_EIR, hci_cp_write_eir] write_le_host_supported hci_command_packet_t[HCI_OP_WRITE_LE_HOST_SUPPORTED, hci_cp_write_le_host_supported] write_link_policy hci_command_packet_t[HCI_OP_WRITE_LINK_POLICY, hci_cp_write_link_policy] write_local_name hci_command_packet_t[HCI_OP_WRITE_LOCAL_NAME, hci_cp_write_local_name] write_page_scan_activity hci_command_packet_t[HCI_OP_WRITE_PAGE_SCAN_ACTIVITY, hci_cp_write_page_scan_activity] write_remote_amp_assoc hci_command_packet_t[HCI_OP_WRITE_REMOTE_AMP_ASSOC, hci_cp_write_remote_amp_assoc] write_sc_support hci_command_packet_t[HCI_OP_WRITE_SC_SUPPORT, hci_cp_write_sc_support] write_ssp_mode hci_command_packet_t[HCI_OP_WRITE_SSP_MODE, hci_cp_write_ssp_mode] write_sync_train_params hci_command_packet_t[HCI_OP_WRITE_SYNC_TRAIN_PARAMS, hci_cp_write_sync_train_params] write_voice_setting hci_command_packet_t[HCI_OP_WRITE_VOICE_SETTING, hci_cp_write_voice_setting] ] [varlen] type hci_command_packet_t[OPCODE, PAYLOAD] { hdr hci_command_packet[OPCODE] payload PAYLOAD } [packed] type hci_command_packet[OPCODE] { opcode const[OPCODE, int16] plen bytesize[hci_command_packet_t:payload, int8] } [packed] hci_cp_accept_conn_req { bdaddr bdaddr_t role int8 } [packed] hci_cp_accept_phy_link { phy_handle hci_phy_handle key_len int8 key_type int8 key array[int8] } [packed] hci_cp_accept_sync_conn_req { bdaddr bdaddr_t tx_bandwidth int32 rx_bandwidth int32 max_latency int16 content_format int16 retrans_effort int8 pkt_type int16 } [packed] hci_cp_add_sco { handle hci_conn_handle pkt_type int16 } [packed] hci_cp_auth_requested { handle hci_conn_handle } [packed] hci_cp_change_conn_link_key { handle hci_conn_handle } [packed] hci_cp_change_conn_ptype { handle hci_conn_handle pkt_type int16 } [packed] hci_cp_create_accept_logical_link { phy_handle hci_phy_handle tx_flow_spec ext_flow_spec rx_flow_spec ext_flow_spec } [packed] hci_cp_create_conn { bdaddr bdaddr_t pkt_type int16 pscan_rep_mode int8 pscan_mode int8 clock_offset int16 role_switch int8 } [packed] hci_cp_create_conn_cancel { bdaddr bdaddr_t } [packed] hci_cp_create_phy_link { phy_handle hci_phy_handle key_len int8 key_type int8 key array[int8] } [packed] hci_cp_delete_reserved_lt_addr { lt_addr int8 } [packed] hci_cp_delete_stored_link_key { bdaddr bdaddr_t delete_all int8 } [packed] hci_cp_disconn_logical_link { log_handle int16 } [packed] hci_cp_disconn_phy_link { phy_handle hci_phy_handle reason int8 } [packed] hci_cp_disconnect { handle hci_conn_handle reason int8 } [packed] hci_cp_exit_sniff_mode { handle hci_conn_handle } [packed] hci_cp_host_buffer_size { acl_mtu int16 sco_mtu int8 acl_max_pkt int16 sco_max_pkt int16 } [packed] hci_cp_inquiry { lap array[int8, 3] length int8 num_rsp int8 } [packed] hci_cp_io_capability_neg_reply { bdaddr bdaddr_t reason int8 } [packed] hci_cp_io_capability_reply { bdaddr bdaddr_t capability int8 oob_data int8 authentication int8 } [packed] hci_cp_le_accept_cis { handle hci_conn_handle } [packed] hci_cp_le_add_to_resolv_list { bdaddr_type int8 bdaddr bdaddr_t peer_irk array[int8, 16] local_irk array[int8, 16] } [packed] hci_cp_le_add_to_accept_list { bdaddr_type int8 bdaddr bdaddr_t } [packed] hci_cp_le_conn_param_req_neg_reply { handle hci_conn_handle reason int8 } [packed] hci_cp_le_conn_param_req_reply { handle hci_conn_handle interval_min int16 interval_max int16 latency int16 timeout int16 min_ce_len int16 max_ce_len int16 } [packed] hci_cp_le_conn_update { handle hci_conn_handle conn_interval_min int16 conn_interval_max int16 conn_latency int16 supervision_timeout int16 min_ce_len int16 max_ce_len int16 } [packed] hci_cp_le_create_cis { num_cis len[cis, int8] cis array[hci_cis] } [packed] hci_cp_le_create_conn { scan_interval int16 scan_window int16 filter_policy int8 peer_addr_type int8 peer_addr bdaddr_t own_address_type int8 conn_interval_min int16 conn_interval_max int16 conn_latency int16 supervision_timeout int16 min_ce_len int16 max_ce_len int16 } [packed] hci_cp_le_del_from_resolv_list { bdaddr_type int8 bdaddr bdaddr_t } [packed] hci_cp_le_del_from_accept_list { bdaddr_type int8 bdaddr bdaddr_t } [packed] hci_cp_le_ext_create_conn { filter_policy int8 own_addr_type int8 peer_addr_type int8 peer_addr bdaddr_t phys int8 data array[int8] } [packed] hci_cp_le_ltk_neg_reply { handle hci_conn_handle } [packed] hci_cp_le_ltk_reply { handle hci_conn_handle ltk array[int8, 16] } [packed] hci_cp_le_read_iso_tx_sync { handle hci_conn_handle } [packed] hci_cp_le_read_remote_features { handle hci_conn_handle } [packed] hci_cp_le_reject_cis { handle hci_conn_handle reason int8 } [packed] hci_cp_le_remove_cig { cig_id int8 } [packed] hci_cp_le_set_adv_data { length int8 data array[int8, 31] } [packed] hci_cp_le_set_adv_param { min_interval int16 max_interval int16 type int8 own_address_type int8 direct_addr_type int8 direct_addr bdaddr_t channel_map int8 filter_policy int8 } [packed] hci_cp_le_set_adv_set_rand_addr { handle int8 bdaddr bdaddr_t } [packed] hci_cp_le_set_cig_params { cig_id int8 m_interval array[int8, 3] s_interval array[int8, 3] sca int8 packing int8 framing int8 m_latency int16 s_latency int16 num_cis len[cis, int8] cis array[hci_cis_params] } [packed] hci_cp_le_set_data_len { handle hci_conn_handle tx_len int16 tx_time int16 } [packed] hci_cp_le_set_default_phy { all_phys int8 tx_phys int8 rx_phys int8 } [packed] hci_cp_le_set_event_mask { mask array[int8, 8] } [packed] hci_cp_le_set_ext_adv_data { handle int8 operation int8 frag_pref int8 length int8 data array[int8, 31] } [packed] hci_cp_le_set_ext_adv_enable { enable int8 num_of_sets int8 data array[int8] } [packed] hci_cp_le_set_ext_adv_params { handle int8 evt_properties int16 min_interval array[int8, 3] max_interval array[int8, 3] channel_map int8 own_addr_type int8 peer_addr_type int8 peer_addr bdaddr_t filter_policy int8 tx_power int8 primary_phy int8 secondary_max_skip int8 secondary_phy int8 sid int8 notif_enable int8 } [packed] hci_cp_le_set_ext_scan_enable { enable int8 filter_dup int8 duration int16 period int16 } [packed] hci_cp_le_set_ext_scan_params { own_addr_type int8 filter_policy int8 scanning_phys int8 data array[int8] } [packed] hci_cp_le_set_ext_scan_rsp_data { handle int8 operation int8 frag_pref int8 length int8 data array[int8, 31] } [packed] hci_cp_le_set_scan_enable { enable int8 filter_dup int8 } [packed] hci_cp_le_set_scan_param { type int8 interval int16 window int16 own_address_type int8 filter_policy int8 } [packed] hci_cp_le_set_scan_rsp_data { length int8 data array[int8, 31] } [packed] hci_cp_le_start_enc { handle hci_conn_handle rand int64 ediv int16 ltk array[int8, 16] } [packed] hci_cp_le_write_def_data_len { tx_len int16 tx_time int16 } [packed] hci_cp_link_key_neg_reply { bdaddr bdaddr_t } [packed] hci_cp_link_key_reply { bdaddr bdaddr_t link_key array[int8, 16] } [packed] hci_cp_logical_link_cancel { phy_handle hci_phy_handle flow_spec_id int8 } [packed] hci_cp_pin_code_neg_reply { bdaddr bdaddr_t } [packed] hci_cp_pin_code_reply { bdaddr bdaddr_t pin_len int8 pin_code array[int8, 16] } [packed] hci_cp_read_auth_payload_to { handle hci_conn_handle } [packed] hci_cp_read_clock { handle hci_conn_handle which int8 } [packed] hci_cp_read_clock_offset { handle hci_conn_handle } [packed] hci_cp_read_enc_key_size { handle hci_conn_handle } [packed] hci_cp_read_link_policy { handle hci_conn_handle } [packed] hci_cp_read_local_amp_assoc { phy_handle hci_phy_handle len_so_far int16 max_len int16 } [packed] hci_cp_read_local_ext_features { page int8 } [packed] hci_cp_read_remote_ext_features { handle hci_conn_handle page int8 } [packed] hci_cp_read_remote_features { handle hci_conn_handle } [packed] hci_cp_read_remote_version { handle hci_conn_handle } [packed] hci_cp_read_rssi { handle hci_conn_handle } [packed] hci_cp_read_stored_link_key { bdaddr bdaddr_t read_all int8 } [packed] hci_cp_read_tx_power { handle hci_conn_handle type int8 } [packed] hci_cp_reject_conn_req { bdaddr bdaddr_t reason int8 } [packed] hci_cp_reject_sync_conn_req { bdaddr bdaddr_t reason int8 } [packed] hci_cp_remote_name_req { bdaddr bdaddr_t pscan_rep_mode int8 pscan_mode int8 clock_offset int16 } [packed] hci_cp_remote_name_req_cancel { bdaddr bdaddr_t } [packed] hci_cp_remote_oob_data_neg_reply { bdaddr bdaddr_t } [packed] hci_cp_remote_oob_data_reply { bdaddr bdaddr_t hash array[int8, 16] rand array[int8, 16] } [packed] hci_cp_remote_oob_ext_data_reply { bdaddr bdaddr_t hash192 array[int8, 16] rand192 array[int8, 16] hash256 array[int8, 16] rand256 array[int8, 16] } [packed] hci_cp_role_discovery { handle hci_conn_handle } [packed] hci_cp_set_conn_encrypt { handle hci_conn_handle encrypt int8 } [packed] hci_cp_set_cpb { enable int8 lt_addr int8 lpo_allowed int8 packet_type int16 interval_min int16 interval_max int16 cpb_sv_tout int16 } [packed] hci_cp_set_cpb_data { lt_addr int8 fragment int8 data_length int8 data array[int8, 252] } [packed] hci_cp_set_reserved_lt_addr { lt_addr int8 } [packed] hci_cp_setup_sync_conn { handle hci_conn_handle tx_bandwidth int32 rx_bandwidth int32 max_latency int16 voice_setting int16 retrans_effort int8 pkt_type int16 } [packed] hci_cp_sniff_mode { handle hci_conn_handle max_interval int16 min_interval int16 attempt int16 timeout int16 } [packed] hci_cp_sniff_subrate { handle hci_conn_handle max_latency int16 min_remote_timeout int16 min_local_timeout int16 } [packed] hci_cp_switch_role { bdaddr bdaddr_t role int8 } [packed] hci_cp_user_confirm_reply { bdaddr bdaddr_t } [packed] hci_cp_user_passkey_reply { bdaddr bdaddr_t passkey int32 } [packed] hci_cp_write_auth_payload_to { handle hci_conn_handle timeout int16 } [packed] hci_cp_write_class_of_dev { dev_class array[int8, 3] } [packed] hci_cp_write_current_iac_lap { num_iac len[iac_lap, int8] iac_lap array[int8, 6] } [packed] hci_cp_write_def_err_data_reporting { err_data_reporting int8 } [packed] hci_cp_write_def_link_policy { policy int16 } [packed] hci_cp_write_eir { fec int8 data array[int8, 240] } [packed] hci_cp_write_le_host_supported { le int8 simul int8 } [packed] hci_cp_write_link_policy { handle hci_conn_handle policy int16 } [packed] hci_cp_write_local_name { name array[int8, 248] } [packed] hci_cp_write_page_scan_activity { interval int16 window int16 } [packed] hci_cp_write_remote_amp_assoc { phy_handle hci_phy_handle len_so_far int16 rem_len int16 frag array[int8] } [packed] hci_cp_write_sc_support { support int8 } [packed] hci_cp_write_ssp_mode { mode int8 } [packed] hci_cp_write_sync_train_params { interval_min int16 interval_max int16 sync_train_tout int32 service_data int8 } [packed] hci_cp_write_voice_setting { voice_setting int16 } [packed] hci_event_hdr_un [ HCI_EV_INQUIRY_COMPLETE hci_event_hdr_t[HCI_EV_INQUIRY_COMPLETE, int8] extended_inquiry_info hci_event_hdr_t[HCI_EV_EXTENDED_INQUIRY_RESULT, extended_inquiry_info_t] hci_ev_auth_complete hci_event_hdr_t[HCI_EV_AUTH_COMPLETE, hci_ev_auth_complete] hci_ev_change_link_key_complete hci_event_hdr_t[HCI_EV_CHANGE_LINK_KEY_COMPLETE, hci_ev_change_link_key_complete] hci_ev_channel_selected hci_event_hdr_t[HCI_EV_CHANNEL_SELECTED, hci_ev_channel_selected] hci_ev_clock_offset hci_event_hdr_t[HCI_EV_CLOCK_OFFSET, hci_ev_clock_offset] hci_ev_cmd_complete hci_event_hdr_t[HCI_EV_CMD_COMPLETE, hci_ev_cmd_complete_un] hci_ev_cmd_status hci_event_hdr_t[HCI_EV_CMD_STATUS, hci_ev_cmd_status] hci_ev_conn_complete hci_event_hdr_t[HCI_EV_CONN_COMPLETE, hci_ev_conn_complete] hci_ev_conn_request hci_event_hdr_t[HCI_EV_CONN_REQUEST, hci_ev_conn_request] hci_ev_disconn_complete hci_event_hdr_t[HCI_EV_DISCONN_COMPLETE, hci_ev_disconn_complete] hci_ev_disconn_logical_link_complete hci_event_hdr_t[HCI_EV_DISCONN_LOGICAL_LINK_COMPLETE, hci_ev_disconn_logical_link_complete] hci_ev_disconn_phy_link_complete hci_event_hdr_t[HCI_EV_DISCONN_PHY_LINK_COMPLETE, hci_ev_disconn_phy_link_complete] hci_ev_encrypt_change hci_event_hdr_t[HCI_EV_ENCRYPT_CHANGE, hci_ev_encrypt_change] hci_ev_hardware_error hci_event_hdr_t[HCI_EV_HARDWARE_ERROR, hci_ev_hardware_error] hci_ev_io_capa_reply hci_event_hdr_t[HCI_EV_IO_CAPA_REPLY, hci_ev_io_capa_reply] hci_ev_io_capa_request hci_event_hdr_t[HCI_EV_IO_CAPA_REQUEST, hci_ev_io_capa_request] hci_ev_key_refresh_complete hci_event_hdr_t[HCI_EV_KEY_REFRESH_COMPLETE, hci_ev_key_refresh_complete] hci_ev_keypress_notify hci_event_hdr_t[HCI_EV_KEYPRESS_NOTIFY, hci_ev_keypress_notify] hci_ev_le_meta hci_event_hdr_t[HCI_EV_LE_META, hci_ev_le_meta_un] hci_ev_link_key_notify hci_event_hdr_t[HCI_EV_LINK_KEY_NOTIFY, hci_ev_link_key_notify] hci_ev_link_key_req hci_event_hdr_t[HCI_EV_LINK_KEY_REQ, hci_ev_link_key_req] hci_ev_logical_link_complete hci_event_hdr_t[HCI_EV_LOGICAL_LINK_COMPLETE, hci_ev_logical_link_complete] hci_ev_mode_change hci_event_hdr_t[HCI_EV_MODE_CHANGE, hci_ev_mode_change] hci_ev_num_comp_blocks hci_event_hdr_t[HCI_EV_NUM_COMP_BLOCKS, hci_ev_num_comp_blocks] hci_ev_num_comp_pkts hci_event_hdr_t[HCI_EV_NUM_COMP_PKTS, hci_ev_num_comp_pkts] hci_ev_phy_link_complete hci_event_hdr_t[HCI_EV_PHY_LINK_COMPLETE, hci_ev_phy_link_complete] hci_ev_pin_code_req hci_event_hdr_t[HCI_EV_PIN_CODE_REQ, hci_ev_pin_code_req] hci_ev_pkt_type_change hci_event_hdr_t[HCI_EV_PKT_TYPE_CHANGE, hci_ev_pkt_type_change] hci_ev_pscan_rep_mode hci_event_hdr_t[HCI_EV_PSCAN_REP_MODE, hci_ev_pscan_rep_mode] hci_ev_qos_setup_complete hci_event_hdr_t[HCI_EV_QOS_SETUP_COMPLETE, hci_ev_qos_setup_complete] hci_ev_remote_ext_features hci_event_hdr_t[HCI_EV_REMOTE_EXT_FEATURES, hci_ev_remote_ext_features] hci_ev_remote_features hci_event_hdr_t[HCI_EV_REMOTE_FEATURES, hci_ev_remote_features] hci_ev_remote_host_features hci_event_hdr_t[HCI_EV_REMOTE_HOST_FEATURES, hci_ev_remote_host_features] hci_ev_remote_name hci_event_hdr_t[HCI_EV_REMOTE_NAME, hci_ev_remote_name] hci_ev_remote_oob_data_request hci_event_hdr_t[HCI_EV_REMOTE_OOB_DATA_REQUEST, hci_ev_remote_oob_data_request] hci_ev_remote_version hci_event_hdr_t[HCI_EV_REMOTE_VERSION, hci_ev_remote_version] hci_ev_role_change hci_event_hdr_t[HCI_EV_ROLE_CHANGE, hci_ev_role_change] hci_ev_si_device hci_event_hdr_t[HCI_EV_SI_DEVICE, hci_ev_si_device] hci_ev_si_security hci_event_hdr_t[HCI_EV_SI_SECURITY, hci_ev_si_security] hci_ev_simple_pair_complete hci_event_hdr_t[HCI_EV_SIMPLE_PAIR_COMPLETE, hci_ev_simple_pair_complete] hci_ev_sniff_subrate hci_event_hdr_t[HCI_EV_SNIFF_SUBRATE, hci_ev_sniff_subrate] hci_ev_stack_internal hci_event_hdr_t[HCI_EV_STACK_INTERNAL, hci_ev_stack_internal] hci_ev_sync_conn_changed hci_event_hdr_t[HCI_EV_SYNC_CONN_CHANGED, hci_ev_sync_conn_changed] hci_ev_sync_conn_complete hci_event_hdr_t[HCI_EV_SYNC_CONN_COMPLETE, hci_ev_sync_conn_complete] hci_ev_sync_train_complete hci_event_hdr_t[HCI_EV_SYNC_TRAIN_COMPLETE, hci_ev_sync_train_complete] hci_ev_user_confirm_req hci_event_hdr_t[HCI_EV_USER_CONFIRM_REQUEST, hci_ev_user_confirm_req] hci_ev_user_passkey_notify hci_event_hdr_t[HCI_EV_USER_PASSKEY_NOTIFY, hci_ev_user_passkey_notify] hci_ev_user_passkey_req hci_event_hdr_t[HCI_EV_USER_PASSKEY_REQUEST, hci_ev_user_passkey_req] inquiry_info hci_event_hdr_t[HCI_EV_INQUIRY_RESULT, inquiry_info_t] inquiry_info_with_rssi hci_event_hdr_t[HCI_EV_INQUIRY_RESULT_WITH_RSSI, inquiry_info_with_rssi_t] inquiry_info_with_rssi_and_pscan_mode hci_event_hdr_t[HCI_EV_INQUIRY_RESULT_WITH_RSSI, inquiry_info_with_rssi_and_pscan_mode_t] HCI_EV_VENDOR hci_event_hdr_t[HCI_EV_VENDOR, array[int8]] ] [varlen] type hci_event_hdr_t[EVENT, PAYLOAD] { hdr hci_event_hdr[EVENT] payload PAYLOAD } [packed] type hci_event_hdr[EVENT] { evt const[EVENT, int8] plen bytesize[hci_event_hdr_t:payload, int8] } [packed] hci_ev_le_meta_un [ hci_ev_le_advertising_info hci_ev_le_meta_t[HCI_EV_LE_ADVERTISING_REPORT, hci_ev_le_advertising_info_t] hci_ev_le_conn_complete hci_ev_le_meta_t[HCI_EV_LE_CONN_COMPLETE, hci_ev_le_conn_complete] hci_ev_le_conn_update_complete hci_ev_le_meta_t[HCI_EV_LE_CONN_UPDATE_COMPLETE, hci_ev_le_conn_update_complete] hci_ev_le_data_len_change hci_ev_le_meta_t[HCI_EV_LE_DATA_LEN_CHANGE, hci_ev_le_data_len_change] hci_ev_le_direct_adv_info hci_ev_le_meta_t[HCI_EV_LE_DIRECT_ADV_REPORT, hci_ev_le_direct_adv_info] hci_ev_le_enh_conn_complete hci_ev_le_meta_t[HCI_EV_LE_ENHANCED_CONN_COMPLETE, hci_ev_le_enh_conn_complete] hci_ev_le_ext_adv_report hci_ev_le_meta_t[HCI_EV_LE_EXT_ADV_REPORT, hci_ev_le_ext_adv_report] hci_ev_le_ltk_req hci_ev_le_meta_t[HCI_EV_LE_LTK_REQ, hci_ev_le_ltk_req] hci_ev_le_phy_update_complete hci_ev_le_meta_t[HCI_EV_LE_PHY_UPDATE_COMPLETE, hci_ev_le_phy_update_complete] hci_ev_le_remote_conn_param_req hci_ev_le_meta_t[HCI_EV_LE_REMOTE_CONN_PARAM_REQ, hci_ev_le_remote_conn_param_req] hci_ev_le_remote_feat_complete hci_ev_le_meta_t[HCI_EV_LE_REMOTE_FEAT_COMPLETE, hci_ev_le_remote_feat_complete] hci_evt_le_cis_established hci_ev_le_meta_t[HCI_EVT_LE_CIS_ESTABLISHED, hci_evt_le_cis_established] hci_evt_le_ext_adv_set_term hci_ev_le_meta_t[HCI_EV_LE_EXT_ADV_SET_TERM, hci_evt_le_ext_adv_set_term] ] [varlen] type hci_ev_le_meta_t[SUBEVENT, PAYLOAD] { hdr hci_ev_le_meta[SUBEVENT] payload PAYLOAD } [packed] type hci_ev_le_meta[SUBEVENT] { subevent const[SUBEVENT, int8] } [packed] hci_ev_cmd_complete_un [ hci_rp_delete_reserved_lt_addr hci_ev_cmd_complete_t[HCI_OP_DELETE_RESERVED_LT_ADDR, hci_rp_delete_reserved_lt_addr] hci_rp_delete_stored_link_key hci_ev_cmd_complete_t[HCI_OP_DELETE_STORED_LINK_KEY, hci_rp_delete_stored_link_key] hci_rp_le_ltk_neg_reply hci_ev_cmd_complete_t[HCI_OP_LE_LTK_NEG_REPLY, hci_rp_le_ltk_neg_reply] hci_rp_le_ltk_reply hci_ev_cmd_complete_t[HCI_OP_LE_LTK_REPLY, hci_rp_le_ltk_reply] hci_rp_le_read_adv_tx_power hci_ev_cmd_complete_t[HCI_OP_LE_READ_ADV_TX_POWER, hci_rp_le_read_adv_tx_power] hci_rp_le_read_buffer_size hci_ev_cmd_complete_t[HCI_OP_LE_READ_BUFFER_SIZE, hci_rp_le_read_buffer_size] hci_rp_le_read_buffer_size_v2 hci_ev_cmd_complete_t[HCI_OP_LE_READ_BUFFER_SIZE_V2, hci_rp_le_read_buffer_size_v2] hci_rp_le_read_def_data_len hci_ev_cmd_complete_t[HCI_OP_LE_READ_DEF_DATA_LEN, hci_rp_le_read_def_data_len] hci_rp_le_read_iso_tx_sync hci_ev_cmd_complete_t[HCI_OP_LE_READ_ISO_TX_SYNC, hci_rp_le_read_iso_tx_sync] hci_rp_le_read_local_features hci_ev_cmd_complete_t[HCI_OP_LE_READ_LOCAL_FEATURES, hci_rp_le_read_local_features] hci_rp_le_read_max_data_len hci_ev_cmd_complete_t[HCI_OP_LE_READ_MAX_DATA_LEN, hci_rp_le_read_max_data_len] hci_rp_le_read_num_supported_adv_sets hci_ev_cmd_complete_t[HCI_OP_LE_READ_NUM_SUPPORTED_ADV_SETS, hci_rp_le_read_num_supported_adv_sets] hci_rp_le_read_resolv_list_size hci_ev_cmd_complete_t[HCI_OP_LE_READ_RESOLV_LIST_SIZE, hci_rp_le_read_resolv_list_size] hci_rp_le_read_supported_states hci_ev_cmd_complete_t[HCI_OP_LE_READ_SUPPORTED_STATES, hci_rp_le_read_supported_states] hci_rp_le_read_accept_list_size hci_ev_cmd_complete_t[HCI_OP_LE_READ_ACCEPT_LIST_SIZE, hci_rp_le_read_accept_list_size] hci_rp_le_set_cig_params hci_ev_cmd_complete_t[HCI_OP_LE_SET_CIG_PARAMS, hci_rp_le_set_cig_params] hci_rp_le_set_data_len hci_ev_cmd_complete_t[HCI_OP_LE_SET_DATA_LEN, hci_rp_le_set_data_len] hci_rp_le_set_ext_adv_params hci_ev_cmd_complete_t[HCI_OP_LE_SET_EXT_ADV_PARAMS, hci_rp_le_set_ext_adv_params] hci_rp_logical_link_cancel hci_ev_cmd_complete_t[HCI_OP_LOGICAL_LINK_CANCEL, hci_rp_logical_link_cancel] hci_rp_pin_code_neg_reply hci_ev_cmd_complete_t[HCI_OP_PIN_CODE_NEG_REPLY, hci_rp_pin_code_neg_reply] hci_rp_pin_code_reply hci_ev_cmd_complete_t[HCI_OP_PIN_CODE_REPLY, hci_rp_pin_code_reply] hci_rp_read_auth_payload_to hci_ev_cmd_complete_t[HCI_OP_READ_AUTH_PAYLOAD_TO, hci_rp_read_auth_payload_to] hci_rp_read_bd_addr hci_ev_cmd_complete_t[HCI_OP_READ_BD_ADDR, hci_rp_read_bd_addr] hci_rp_read_buffer_size hci_ev_cmd_complete_t[HCI_OP_READ_BUFFER_SIZE, hci_rp_read_buffer_size] hci_rp_read_class_of_dev hci_ev_cmd_complete_t[HCI_OP_READ_CLASS_OF_DEV, hci_rp_read_class_of_dev] hci_rp_read_clock hci_ev_cmd_complete_t[HCI_OP_READ_CLOCK, hci_rp_read_clock] hci_rp_read_data_block_size hci_ev_cmd_complete_t[HCI_OP_READ_DATA_BLOCK_SIZE, hci_rp_read_data_block_size] hci_rp_read_def_err_data_reporting hci_ev_cmd_complete_t[HCI_OP_READ_DEF_ERR_DATA_REPORTING, hci_rp_read_def_err_data_reporting] hci_rp_read_def_link_policy hci_ev_cmd_complete_t[HCI_OP_READ_DEF_LINK_POLICY, hci_rp_read_def_link_policy] hci_rp_read_enc_key_size hci_ev_cmd_complete_t[HCI_OP_READ_ENC_KEY_SIZE, hci_rp_read_enc_key_size] hci_rp_read_flow_control_mode hci_ev_cmd_complete_t[HCI_OP_READ_FLOW_CONTROL_MODE, hci_rp_read_flow_control_mode] hci_rp_read_inq_rsp_tx_power hci_ev_cmd_complete_t[HCI_OP_READ_INQ_RSP_TX_POWER, hci_rp_read_inq_rsp_tx_power] hci_rp_read_link_policy hci_ev_cmd_complete_t[HCI_OP_READ_LINK_POLICY, hci_rp_read_link_policy] hci_rp_read_local_amp_assoc hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_AMP_ASSOC, hci_rp_read_local_amp_assoc] hci_rp_read_local_amp_info hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_AMP_INFO, hci_rp_read_local_amp_info] hci_rp_read_local_commands hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_COMMANDS, hci_rp_read_local_commands] hci_rp_read_local_ext_features hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_EXT_FEATURES, hci_rp_read_local_ext_features] hci_rp_read_local_features hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_FEATURES, hci_rp_read_local_features] hci_rp_read_local_name hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_NAME, hci_rp_read_local_name] hci_rp_read_local_oob_data hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_OOB_DATA, hci_rp_read_local_oob_data] hci_rp_read_local_oob_ext_data hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_OOB_EXT_DATA, hci_rp_read_local_oob_ext_data] hci_rp_read_local_pairing_opts hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_PAIRING_OPTS, hci_rp_read_local_pairing_opts] hci_rp_read_local_version hci_ev_cmd_complete_t[HCI_OP_READ_LOCAL_VERSION, hci_rp_read_local_version] hci_rp_read_num_supported_iac hci_ev_cmd_complete_t[HCI_OP_READ_NUM_SUPPORTED_IAC, hci_rp_read_num_supported_iac] hci_rp_read_page_scan_activity hci_ev_cmd_complete_t[HCI_OP_READ_PAGE_SCAN_ACTIVITY, hci_rp_read_page_scan_activity] hci_rp_read_page_scan_type hci_ev_cmd_complete_t[HCI_OP_READ_PAGE_SCAN_TYPE, hci_rp_read_page_scan_type] hci_rp_read_rssi hci_ev_cmd_complete_t[HCI_OP_READ_RSSI, hci_rp_read_rssi] hci_rp_read_sc_support hci_ev_cmd_complete_t[HCI_OP_READ_SC_SUPPORT, hci_rp_read_sc_support] hci_rp_read_ssp_mode hci_ev_cmd_complete_t[HCI_OP_READ_SSP_MODE, hci_rp_read_ssp_mode] hci_rp_read_stored_link_key hci_ev_cmd_complete_t[HCI_OP_READ_STORED_LINK_KEY, hci_rp_read_stored_link_key] hci_rp_read_tx_power hci_ev_cmd_complete_t[HCI_OP_READ_TX_POWER, hci_rp_read_tx_power] hci_rp_read_voice_setting hci_ev_cmd_complete_t[HCI_OP_READ_VOICE_SETTING, hci_rp_read_voice_setting] hci_rp_role_discovery hci_ev_cmd_complete_t[HCI_OP_ROLE_DISCOVERY, hci_rp_role_discovery] hci_rp_set_cpb hci_ev_cmd_complete_t[HCI_OP_SET_CPB, hci_rp_set_cpb] hci_rp_set_cpb_data hci_ev_cmd_complete_t[HCI_OP_SET_CPB_DATA, hci_rp_set_cpb_data] hci_rp_set_reserved_lt_addr hci_ev_cmd_complete_t[HCI_OP_SET_RESERVED_LT_ADDR, hci_rp_set_reserved_lt_addr] hci_rp_user_confirm_reply hci_ev_cmd_complete_t[HCI_OP_USER_CONFIRM_REPLY, hci_rp_user_confirm_reply] hci_rp_write_auth_payload_to hci_ev_cmd_complete_t[HCI_OP_WRITE_AUTH_PAYLOAD_TO, hci_rp_write_auth_payload_to] hci_rp_write_link_policy hci_ev_cmd_complete_t[HCI_OP_WRITE_LINK_POLICY, hci_rp_write_link_policy] hci_rp_write_remote_amp_assoc hci_ev_cmd_complete_t[HCI_OP_WRITE_REMOTE_AMP_ASSOC, hci_rp_write_remote_amp_assoc] hci_rp_write_sync_train_params hci_ev_cmd_complete_t[HCI_OP_WRITE_SYNC_TRAIN_PARAMS, hci_rp_write_sync_train_params] HCI_OP_INQUIRY_CANCEL hci_ev_cmd_complete_t[HCI_OP_INQUIRY_CANCEL, int8] HCI_OP_PERIODIC_INQ hci_ev_cmd_complete_t[HCI_OP_PERIODIC_INQ, int8] HCI_OP_EXIT_PERIODIC_INQ hci_ev_cmd_complete_t[HCI_OP_EXIT_PERIODIC_INQ, int8] # Unused: # HCI_OP_REMOTE_NAME_REQ_CANCEL hci_ev_cmd_complete_t[HCI_OP_REMOTE_NAME_REQ_CANCEL, int8] HCI_OP_WRITE_DEF_LINK_POLICY hci_ev_cmd_complete_t[HCI_OP_WRITE_DEF_LINK_POLICY, int8] HCI_OP_RESET hci_ev_cmd_complete_t[HCI_OP_RESET, int8] HCI_OP_WRITE_LOCAL_NAME hci_ev_cmd_complete_t[HCI_OP_WRITE_LOCAL_NAME, int8] HCI_OP_WRITE_AUTH_ENABLE hci_ev_cmd_complete_t[HCI_OP_WRITE_AUTH_ENABLE, int8] HCI_OP_WRITE_ENCRYPT_MODE hci_ev_cmd_complete_t[HCI_OP_WRITE_ENCRYPT_MODE, int8] HCI_OP_WRITE_SCAN_ENABLE hci_ev_cmd_complete_t[HCI_OP_WRITE_SCAN_ENABLE, int8] HCI_OP_WRITE_CLASS_OF_DEV hci_ev_cmd_complete_t[HCI_OP_WRITE_CLASS_OF_DEV, int8] HCI_OP_WRITE_VOICE_SETTING hci_ev_cmd_complete_t[HCI_OP_WRITE_VOICE_SETTING, int8] HCI_OP_WRITE_SSP_MODE hci_ev_cmd_complete_t[HCI_OP_WRITE_SSP_MODE, int8] HCI_OP_WRITE_SC_SUPPORT hci_ev_cmd_complete_t[HCI_OP_WRITE_SC_SUPPORT, int8] HCI_OP_WRITE_PAGE_SCAN_ACTIVITY hci_ev_cmd_complete_t[HCI_OP_WRITE_PAGE_SCAN_ACTIVITY, int8] HCI_OP_WRITE_PAGE_SCAN_TYPE hci_ev_cmd_complete_t[HCI_OP_WRITE_PAGE_SCAN_TYPE, int8] HCI_OP_WRITE_DEF_ERR_DATA_REPORTING hci_ev_cmd_complete_t[HCI_OP_WRITE_DEF_ERR_DATA_REPORTING, int8] HCI_OP_USER_CONFIRM_NEG_REPLY hci_ev_cmd_complete_t[HCI_OP_USER_CONFIRM_NEG_REPLY, int8] HCI_OP_USER_PASSKEY_REPLY hci_ev_cmd_complete_t[HCI_OP_USER_PASSKEY_REPLY, int8] HCI_OP_USER_PASSKEY_NEG_REPLY hci_ev_cmd_complete_t[HCI_OP_USER_PASSKEY_NEG_REPLY, int8] HCI_OP_LE_SET_RANDOM_ADDR hci_ev_cmd_complete_t[HCI_OP_LE_SET_RANDOM_ADDR, int8] HCI_OP_LE_SET_ADV_ENABLE hci_ev_cmd_complete_t[HCI_OP_LE_SET_ADV_ENABLE, int8] HCI_OP_LE_SET_SCAN_PARAM hci_ev_cmd_complete_t[HCI_OP_LE_SET_SCAN_PARAM, int8] HCI_OP_LE_SET_SCAN_ENABLE hci_ev_cmd_complete_t[HCI_OP_LE_SET_SCAN_ENABLE, int8] HCI_OP_LE_CLEAR_ACCEPT_LIST hci_ev_cmd_complete_t[HCI_OP_LE_CLEAR_ACCEPT_LIST, int8] HCI_OP_LE_ADD_TO_ACCEPT_LIST hci_ev_cmd_complete_t[HCI_OP_LE_ADD_TO_ACCEPT_LIST, int8] HCI_OP_LE_DEL_FROM_ACCEPT_LIST hci_ev_cmd_complete_t[HCI_OP_LE_DEL_FROM_ACCEPT_LIST, int8] HCI_OP_LE_WRITE_DEF_DATA_LEN hci_ev_cmd_complete_t[HCI_OP_LE_WRITE_DEF_DATA_LEN, int8] HCI_OP_LE_ADD_TO_RESOLV_LIST hci_ev_cmd_complete_t[HCI_OP_LE_ADD_TO_RESOLV_LIST, int8] HCI_OP_LE_DEL_FROM_RESOLV_LIST hci_ev_cmd_complete_t[HCI_OP_LE_DEL_FROM_RESOLV_LIST, int8] HCI_OP_LE_CLEAR_RESOLV_LIST hci_ev_cmd_complete_t[HCI_OP_LE_CLEAR_RESOLV_LIST, int8] HCI_OP_LE_SET_ADDR_RESOLV_ENABLE hci_ev_cmd_complete_t[HCI_OP_LE_SET_ADDR_RESOLV_ENABLE, int8] HCI_OP_WRITE_LE_HOST_SUPPORTED hci_ev_cmd_complete_t[HCI_OP_WRITE_LE_HOST_SUPPORTED, int8] HCI_OP_LE_SET_ADV_PARAM hci_ev_cmd_complete_t[HCI_OP_LE_SET_ADV_PARAM, int8] HCI_OP_WRITE_SSP_DEBUG_MODE hci_ev_cmd_complete_t[HCI_OP_WRITE_SSP_DEBUG_MODE, int8] HCI_OP_LE_SET_EXT_SCAN_PARAMS hci_ev_cmd_complete_t[HCI_OP_LE_SET_EXT_SCAN_PARAMS, int8] HCI_OP_LE_SET_EXT_SCAN_ENABLE hci_ev_cmd_complete_t[HCI_OP_LE_SET_EXT_SCAN_ENABLE, int8] HCI_OP_LE_SET_DEFAULT_PHY hci_ev_cmd_complete_t[HCI_OP_LE_SET_DEFAULT_PHY, int8] HCI_OP_LE_SET_EXT_ADV_ENABLE hci_ev_cmd_complete_t[HCI_OP_LE_SET_EXT_ADV_ENABLE, int8] HCI_OP_LE_SET_ADV_SET_RAND_ADDR hci_ev_cmd_complete_t[HCI_OP_LE_SET_ADV_SET_RAND_ADDR, int8] HCI_OP_NOP hci_ev_cmd_complete_t[HCI_OP_NOP, int8] ] [varlen] type hci_ev_cmd_complete_t[OPCODE, PAYLOAD] { hdr hci_ev_cmd_complete[OPCODE] payload PAYLOAD } [packed] type hci_ev_cmd_complete[OPCODE] { ncmd int8 opcode const[OPCODE, int16] } [packed] link_types = SCO_LINK, ACL_LINK, ESCO_LINK bdaddr_types = ADDR_LE_DEV_PUBLIC, ADDR_LE_DEV_RANDOM extended_inquiry_info_t { num_rsp len[rsps, int8] rsps array[extended_inquiry_info] } [packed] extended_inquiry_info { bdaddr bdaddr_t pscan_rep_mode int8 pscan_period_mode int8 dev_class array[int8, 3] clock_offset int16 rssi int8 data array[int8, 240] } [packed] hci_comp_blocks_info { handle hci_conn_handle pkts int16 blocks int16 } [packed] hci_comp_pkts_info { handle hci_conn_handle count int16 } [packed] hci_ev_auth_complete { status int8 handle hci_conn_handle } [packed] hci_ev_change_link_key_complete { status int8 handle hci_conn_handle } [packed] hci_ev_channel_selected { phy_handle hci_phy_handle } [packed] hci_ev_clock_offset { status int8 handle hci_conn_handle clock_offset int16 } [packed] hci_ev_cmd_status_opcodes = HCI_OP_NOP, HCI_OP_INQUIRY, HCI_OP_CREATE_CONN, HCI_OP_DISCONNECT, HCI_OP_ADD_SCO, HCI_OP_AUTH_REQUESTED, HCI_OP_SET_CONN_ENCRYPT, HCI_OP_REMOTE_NAME_REQ, HCI_OP_READ_REMOTE_FEATURES, HCI_OP_READ_REMOTE_EXT_FEATURES, HCI_OP_SETUP_SYNC_CONN, HCI_OP_SNIFF_MODE, HCI_OP_EXIT_SNIFF_MODE, HCI_OP_SWITCH_ROLE, HCI_OP_LE_CREATE_CONN, HCI_OP_LE_READ_REMOTE_FEATURES, HCI_OP_LE_START_ENC, HCI_OP_LE_EXT_CREATE_CONN hci_ev_cmd_status { status int8 ncmd bool8 opcode flags[hci_ev_cmd_status_opcodes, int16] } [packed] hci_ev_conn_complete { status int8 handle hci_conn_handle bdaddr bdaddr_t link_type flags[link_types, int8] encr_mode int8 } [packed] hci_ev_conn_request { bdaddr bdaddr_t dev_class array[int8, 3] link_type flags[link_types, int8] } [packed] hci_ev_disconn_complete { status int8 handle hci_conn_handle reason int8 } [packed] hci_ev_disconn_logical_link_complete { status int8 handle hci_conn_handle reason int8 } [packed] hci_ev_disconn_phy_link_complete { status int8 phy_handle hci_phy_handle reason int8 } [packed] hci_ev_encrypt_change { status int8 handle hci_conn_handle encrypt int8 } [packed] hci_ev_hardware_error { code int8 } [packed] hci_ev_io_capa_reply { bdaddr bdaddr_t capability int8 oob_data int8 authentication int8 } [packed] hci_ev_io_capa_request { bdaddr bdaddr_t } [packed] hci_ev_key_refresh_complete { status int8 handle hci_conn_handle } [packed] hci_ev_keypress_notify { bdaddr bdaddr_t type int8 } [packed] hci_ev_le_advertising_info_t { num_reports len[reports, int8] reports array[hci_ev_le_advertising_info] } [packed] hci_ev_le_advertising_info { evt_type flags[hci_adv_evt_type, int8] bdaddr_type flags[bdaddr_types, int8] bdaddr bdaddr_t length bytesize[data, int8] data array[int8, 0:HCI_MAX_AD_LENGTH] rssi int8 } [packed] hci_adv_evt_type = LE_ADV_IND, LE_ADV_DIRECT_IND, LE_ADV_SCAN_IND, LE_ADV_NONCONN_IND, LE_ADV_SCAN_RSP hci_ev_le_conn_complete { status int8 handle hci_conn_handle role int8 bdaddr_type flags[bdaddr_types, int8] bdaddr bdaddr_t interval int16 latency int16 supervision_timeout int16 clk_accurancy int8 } [packed] hci_ev_le_conn_update_complete { status const[0, int8] handle hci_conn_handle interval int16 latency int16 supervision_timeout int16 } [packed] hci_ev_le_data_len_change { handle hci_conn_handle tx_len int16 tx_time int16 rx_len int16 rx_time int16 } [packed] hci_ev_le_direct_adv_info { evt_type int8 bdaddr_type flags[bdaddr_types, int8] bdaddr bdaddr_t direct_addr_type int8 direct_addr bdaddr_t rssi int8 } [packed] hci_ev_le_enh_conn_complete { status int8 handle hci_conn_handle role int8 bdaddr_type flags[bdaddr_types, int8] bdaddr bdaddr_t local_rpa bdaddr_t peer_rpa bdaddr_t interval int16 latency int16 supervision_timeout int16 clk_accurancy int8 } [packed] hci_ev_le_ext_adv_report { num len[info, int8] info array[hci_ev_le_ext_adv_info] } [packed] hci_ev_le_ext_adv_info { type flags[hci_legacy_adv_evt_type, int16] bdaddr_type flags[bdaddr_types, int8] bdaddr bdaddr_t primary_phy int8 secondary_phy int8 sid int8 tx_power int8 rssi int8 interval int16 direct_addr_type int8 direct_addr bdaddr_t length bytesize[data, int8] data array[int8] } [packed] hci_legacy_adv_evt_type = LE_LEGACY_ADV_IND, LE_LEGACY_ADV_DIRECT_IND, LE_LEGACY_ADV_SCAN_IND, LE_LEGACY_NONCONN_IND, LE_LEGACY_SCAN_RSP_ADV, LE_LEGACY_SCAN_RSP_ADV_SCAN, LE_EXT_ADV_NON_CONN_IND, LE_EXT_ADV_CONN_IND, LE_EXT_ADV_SCAN_IND, LE_EXT_ADV_DIRECT_IND, LE_EXT_ADV_SCAN_RSP, LE_EXT_ADV_LEGACY_PDU hci_ev_le_ltk_req { handle hci_conn_handle rand int64 ediv int16 } [packed] hci_ev_le_phy_update_complete { status int8 handle hci_conn_handle tx_phy int8 rx_phy int8 } [packed] hci_ev_le_remote_conn_param_req { handle hci_conn_handle interval_min int16 interval_max int16 latency int16 timeout int16 } [packed] hci_ev_le_remote_feat_complete { status int8 handle hci_conn_handle features array[int8, 8] } [packed] hci_ev_link_key_notify { bdaddr bdaddr_t link_key array[int8, 16] key_type int8 } [packed] hci_ev_link_key_req { bdaddr bdaddr_t } [packed] hci_ev_logical_link_complete { status int8 handle hci_conn_handle phy_handle hci_phy_handle flow_spec_id int8 } [packed] hci_ev_mode_change { status int8 handle hci_conn_handle mode int8 interval int16 } [packed] hci_ev_num_comp_blocks { num_blocks int16 num_hndl len[handles, int8] handles array[hci_comp_blocks_info] } [packed] hci_ev_num_comp_pkts { num_hndl len[handles, int8] handles array[hci_comp_pkts_info] } [packed] hci_ev_phy_link_complete { status int8 phy_handle hci_phy_handle } [packed] hci_ev_pin_code_req { bdaddr bdaddr_t } [packed] hci_ev_pkt_type_change { status int8 handle hci_conn_handle pkt_type int16 } [packed] hci_ev_pscan_rep_mode { bdaddr bdaddr_t pscan_rep_mode int8 } [packed] hci_ev_qos_setup_complete { status int8 handle hci_conn_handle qos hci_qos } [packed] hci_ev_remote_ext_features { status int8 handle hci_conn_handle page int8 max_page int8 features array[int8, 8] } [packed] hci_ev_remote_features { status int8 handle hci_conn_handle features array[int8, 8] } [packed] hci_ev_remote_host_features { bdaddr bdaddr_t features array[int8, 8] } [packed] hci_ev_remote_name { status int8 bdaddr bdaddr_t name array[int8, 248] } [packed] hci_ev_remote_oob_data_request { bdaddr bdaddr_t } [packed] hci_ev_remote_version { status int8 handle hci_conn_handle lmp_ver int8 manufacturer int16 lmp_subver int16 } [packed] hci_ev_role_change { status int8 bdaddr bdaddr_t role int8 } [packed] hci_ev_si_device { event int16 dev_id int16 } [packed] hci_ev_si_security { event int16 proto int16 subproto int16 incoming int8 } [packed] hci_ev_simple_pair_complete { status int8 bdaddr bdaddr_t } [packed] hci_ev_sniff_subrate { status int8 handle hci_conn_handle max_tx_latency int16 max_rx_latency int16 max_remote_timeout int16 max_local_timeout int16 } [packed] hci_ev_stack_internal { type int16 data array[int8] } [packed] hci_ev_sync_conn_changed { status int8 handle hci_conn_handle tx_interval int8 retrans_window int8 rx_pkt_len int16 tx_pkt_len int16 } [packed] hci_ev_sync_conn_complete { status int8 handle hci_conn_handle bdaddr bdaddr_t link_type flags[link_types, int8] tx_interval int8 retrans_window int8 rx_pkt_len int16 tx_pkt_len int16 air_mode int8 } [packed] hci_ev_sync_train_complete { status int8 } [packed] hci_ev_user_confirm_req { bdaddr bdaddr_t passkey int32 } [packed] hci_ev_user_passkey_notify { bdaddr bdaddr_t passkey int32 } [packed] hci_ev_user_passkey_req { bdaddr bdaddr_t } [packed] hci_evt_le_cis_established { status int8 handle hci_conn_handle cig_sync_delay array[int8, 3] cis_sync_delay array[int8, 3] m_latency array[int8, 3] s_latency array[int8, 3] m_phy int8 s_phy int8 nse int8 m_bn int8 s_bn int8 m_ft int8 s_ft int8 m_mtu int16 s_mtu int16 interval int16 } [packed] hci_evt_le_ext_adv_set_term { status const[0, int8] # This does not seem to be used. handle const[0, int8] conn_handle hci_conn_handle num_evts int8 } [packed] hci_rp_delete_reserved_lt_addr { status int8 lt_addr int8 } [packed] hci_rp_delete_stored_link_key { status int8 num_keys int16 } [packed] hci_rp_le_ltk_neg_reply { status int8 handle hci_conn_handle } [packed] hci_rp_le_ltk_reply { status int8 handle hci_conn_handle } [packed] hci_rp_le_read_adv_tx_power { status int8 tx_power int8 } [packed] hci_rp_le_read_buffer_size { status int8 le_mtu int16 le_max_pkt int8 } [packed] hci_rp_le_read_buffer_size_v2 { status int8 acl_mtu int16 acl_max_pkt int8 iso_mtu int16 iso_max_pkt int8 } [packed] hci_rp_le_read_def_data_len { status int8 tx_len int16 tx_time int16 } [packed] hci_rp_le_read_iso_tx_sync { status int8 handle hci_conn_handle seq int16 imestamp int32 offset array[int8, 3] } [packed] hci_rp_le_read_local_features { status int8 features array[int8, 8] } [packed] hci_rp_le_read_max_data_len { status int8 tx_len int16 tx_time int16 rx_len int16 rx_time int16 } [packed] hci_rp_le_read_num_supported_adv_sets { status int8 num_of_sets int8 } [packed] hci_rp_le_read_resolv_list_size { status int8 size int8 } [packed] hci_rp_le_read_supported_states { status int8 le_states array[int8, 8] } [packed] hci_rp_le_read_accept_list_size { status int8 size int8 } [packed] hci_rp_le_set_cig_params { status int8 cig_id int8 num_handles len[handle, int8] handle array[hci_conn_handle] } [packed] hci_rp_le_set_data_len { status int8 handle hci_conn_handle } [packed] hci_rp_le_set_ext_adv_params { status int8 tx_power int8 } [packed] hci_rp_logical_link_cancel { status int8 phy_handle hci_phy_handle flow_spec_id int8 } [packed] hci_rp_pin_code_neg_reply { status int8 bdaddr bdaddr_t } [packed] hci_rp_pin_code_reply { status int8 bdaddr bdaddr_t } [packed] hci_rp_read_auth_payload_to { status int8 handle hci_conn_handle timeout int16 } [packed] hci_rp_read_bd_addr { status int8 bdaddr bdaddr_t } [packed] hci_rp_read_buffer_size { status int8 acl_mtu int16 sco_mtu int8 acl_max_pkt int16 sco_max_pkt int16 } [packed] hci_rp_read_class_of_dev { status int8 dev_class array[int8, 3] } [packed] hci_rp_read_clock { status int8 handle hci_conn_handle clock int32 accuracy int16 } [packed] hci_rp_read_data_block_size { status int8 max_acl_len int16 block_len int16 num_blocks int16 } [packed] hci_rp_read_def_err_data_reporting { status int8 err_data_reporting int8 } [packed] hci_rp_read_def_link_policy { status int8 policy int16 } [packed] hci_rp_read_enc_key_size { status int8 handle hci_conn_handle key_size int8 } [packed] hci_rp_read_flow_control_mode { status int8 mode int8 } [packed] hci_rp_read_inq_rsp_tx_power { status int8 tx_power int8 } [packed] hci_rp_read_link_policy { status int8 handle hci_conn_handle policy int16 } [packed] hci_rp_read_local_amp_assoc { status int8 phy_handle hci_phy_handle rem_len int16 frag array[int8] } [packed] hci_rp_read_local_amp_info { status int8 amp_status int8 total_bw int32 max_bw int32 min_latency int32 max_pdu int32 amp_type int8 pal_cap int16 max_assoc_size int16 max_flush_to int32 be_flush_to int32 } [packed] hci_rp_read_local_commands { status int8 commands array[int8, 64] } [packed] hci_rp_read_local_ext_features { status int8 page int8 max_page int8 features array[int8, 8] } [packed] hci_rp_read_local_features { status int8 features array[int8, 8] } [packed] hci_rp_read_local_name { status int8 name array[int8, 248] } [packed] hci_rp_read_local_oob_data { status int8 hash array[int8, 16] rand array[int8, 16] } [packed] hci_rp_read_local_oob_ext_data { status int8 hash192 array[int8, 16] rand192 array[int8, 16] hash256 array[int8, 16] rand256 array[int8, 16] } [packed] hci_rp_read_local_pairing_opts { status int8 pairing_opts int8 max_key_size int8 } [packed] hci_rp_read_local_version { status int8 hci_ver int8 hci_rev int16 lmp_ver int8 manufacturer int16 lmp_subver int16 } [packed] hci_rp_read_num_supported_iac { status int8 num_iac int8 } [packed] hci_rp_read_page_scan_activity { status int8 interval int16 window int16 } [packed] hci_rp_read_page_scan_type { status int8 type int8 } [packed] hci_rp_read_rssi { status int8 handle hci_conn_handle rssi int8 } [packed] hci_rp_read_sc_support { status int8 support int8 } [packed] hci_rp_read_ssp_mode { status int8 mode int8 } [packed] hci_rp_read_stored_link_key { status int8 max_keys int16 num_keys int16 } [packed] hci_rp_read_tx_power { status int8 handle hci_conn_handle tx_power int8 } [packed] hci_rp_read_voice_setting { status int8 voice_setting int16 } [packed] hci_rp_role_discovery { status int8 handle hci_conn_handle role int8 } [packed] hci_rp_set_cpb { status int8 lt_addr int8 interval int16 } [packed] hci_rp_set_cpb_data { status int8 lt_addr int8 } [packed] hci_rp_set_reserved_lt_addr { status int8 lt_addr int8 } [packed] hci_rp_user_confirm_reply { status int8 bdaddr bdaddr_t } [packed] hci_rp_write_auth_payload_to { status int8 handle hci_conn_handle } [packed] hci_rp_write_link_policy { status int8 handle hci_conn_handle } [packed] hci_rp_write_remote_amp_assoc { status int8 phy_handle hci_phy_handle } [packed] hci_rp_write_sync_train_params { status int8 sync_train_int int16 } [packed] hci_qos { service_type int8 token_rate int32 peak_bandwidth int32 latency int32 delay_variation int32 } [packed] inquiry_info_t { num_rsp len[rsps, int8] rsps array[inquiry_info] } [packed] inquiry_info { bdaddr bdaddr_t pscan_rep_mode int8 pscan_period_mode int8 pscan_mode int8 dev_class array[int8, 3] clock_offset int16 } [packed] inquiry_info_with_rssi_t { num_rsp len[rsps, int8] rsps array[inquiry_info_with_rssi] } [packed] inquiry_info_with_rssi { bdaddr bdaddr_t pscan_rep_mode int8 pscan_period_mode int8 dev_class array[int8, 3] clock_offset int16 rssi int8 } [packed] inquiry_info_with_rssi_and_pscan_mode_t { num_rsp len[rsps, int8] rsps array[inquiry_info_with_rssi_and_pscan_mode] } [packed] inquiry_info_with_rssi_and_pscan_mode { bdaddr bdaddr_t pscan_rep_mode int8 pscan_period_mode int8 pscan_mode int8 dev_class array[int8, 3] clock_offset int16 rssi int8 } [packed]