diff options
Diffstat (limited to 'epan/dissectors/packet-bthci_evt.c')
-rw-r--r-- | epan/dissectors/packet-bthci_evt.c | 1994 |
1 files changed, 1122 insertions, 872 deletions
diff --git a/epan/dissectors/packet-bthci_evt.c b/epan/dissectors/packet-bthci_evt.c index b114cf2c43..b0feec1e84 100644 --- a/epan/dissectors/packet-bthci_evt.c +++ b/epan/dissectors/packet-bthci_evt.c @@ -10,6 +10,10 @@ * Allan M. Madsen 2007 * Updated to HCI specification 3.0+HS & 4.0 * Allan M. Madsen 2012 + * Updated to HCI specification 5.3 + * Allan M. Madsen 2022 + * Updated to HCI specification 5.4 + * Allan M. Madsen 2023 * * Wireshark - Network traffic analyzer * By Gerald Combs <gerald@wireshark.org> @@ -43,550 +47,565 @@ static dissector_handle_t btcommon_ad_handle; static dissector_handle_t btcommon_le_channel_map_handle; /* Initialize the protocol and registered fields */ -static int proto_bthci_evt = -1; -static int hf_bthci_evt_code = -1; -static int hf_bthci_evt_param_length = -1; -static int hf_bthci_evt_num_command_packets = -1; -static int hf_bthci_evt_num_handles = -1; -static int hf_bthci_evt_connection_handle = -1; -static int hf_bthci_evt_num_compl_packets = -1; -static int hf_bthci_evt_ret_params = -1; -static int hf_bthci_evt_status = -1; -static int hf_bthci_evt_status_pending = -1; -static int hf_bthci_evt_opcode = -1; -static int hf_bthci_evt_ogf = -1; -static int hf_bthci_evt_ocf = -1; -static int hf_bthci_evt_ocf_link_control = -1; -static int hf_bthci_evt_ocf_link_policy = -1; -static int hf_bthci_evt_ocf_host_controller_and_baseband = -1; -static int hf_bthci_evt_ocf_informational = -1; -static int hf_bthci_evt_ocf_status = -1; -static int hf_bthci_evt_ocf_testing = -1; -static int hf_bthci_evt_ocf_logo_testing = -1; -static int hf_bthci_evt_ocf_low_energy = -1; -static int hf_bthci_evt_bd_addr = -1; -static int hf_bthci_evt_link_type = -1; -static int hf_bthci_evt_encryption_mode = -1; -static int hf_bthci_evt_reason = -1; -static int hf_bthci_evt_remote_name = -1; -static int hf_bthci_evt_encryption_enable = -1; -static int hf_bthci_evt_key_flag = -1; -static int hf_bthci_evt_vers_nr = -1; -static int hf_bthci_bthci_evt_hci_version = -1; -static int hf_bthci_evt_hci_revision = -1; -static int hf_bthci_evt_comp_id = -1; -static int hf_bthci_evt_sub_vers_nr = -1; -static int hf_bthci_evt_flags = -1; -static int hf_bthci_evt_service_type = -1; -static int hf_bthci_evt_token_rate = -1; -static int hf_bthci_evt_peak_bandwidth = -1; -static int hf_bthci_evt_latency = -1; -static int hf_bthci_evt_delay_variation = -1; -static int hf_bthci_evt_hardware_code = -1; -static int hf_bthci_evt_role = -1; -static int hf_bthci_evt_curr_role = -1; -static int hf_bthci_evt_curr_mode = -1; -static int hf_bthci_evt_interval = -1; -static int hf_bthci_evt_link_key = -1; -static int hf_bthci_evt_key_type = -1; -static int hf_bthci_evt_max_slots = -1; -static int hf_bthci_evt_clock_offset = -1; -static int hf_bthci_evt_clock_offset_32 = -1; -static int hf_bthci_evt_page_scan_mode = -1; -static int hf_bthci_evt_page_scan_repetition_mode = -1; -static int hf_bthci_evt_reserved = -1; -static int hf_bthci_evt_page_scan_period_mode = -1; -static int hf_bthci_evt_num_keys = -1; -static int hf_bthci_evt_num_keys_read = -1; -static int hf_bthci_evt_max_num_keys = -1; -static int hf_bthci_evt_num_responses = -1; -static int hf_bthci_evt_num_keys_written = -1; -static int hf_bthci_evt_num_keys_deleted = -1; -static int hf_bthci_evt_link_policy_setting_switch = -1; -static int hf_bthci_evt_link_policy_setting_hold = -1; -static int hf_bthci_evt_link_policy_setting_sniff = -1; -static int hf_bthci_evt_link_policy_setting_park = -1; -static int hf_bthci_evt_pin_type = -1; -static int hf_bthci_evt_device_name = -1; -static int hf_bthci_evt_timeout = -1; -static int hf_bthci_evt_scan_enable = -1; -static int hf_bthci_evt_authentication_enable = -1; -static int hf_bthci_evt_sco_flow_cont_enable = -1; -static int hf_bthci_evt_window = -1; -static int hf_bthci_evt_input_unused = -1; -static int hf_bthci_evt_input_coding = -1; -static int hf_bthci_evt_input_data_format = -1; -static int hf_bthci_evt_input_sample_size = -1; -static int hf_bthci_evt_linear_pcm_bit_pos = -1; -static int hf_bthci_evt_air_coding_format = -1; -static int hf_bthci_evt_num_broadcast_retransm = -1; -static int hf_bthci_evt_hold_mode_act_page = -1; -static int hf_bthci_evt_hold_mode_act_inquiry = -1; -static int hf_bthci_evt_hold_mode_act_periodic = -1; -static int hf_bthci_evt_transmit_power_level = -1; -static int hf_bthci_evt_max_transmit_power_level = -1; -static int hf_bthci_evt_transmit_power_level_gfsk = -1; -static int hf_bthci_evt_transmit_power_level_dqpsk = -1; -static int hf_bthci_evt_transmit_power_level_8dpsk = -1; -static int hf_bthci_evt_flush_to_us = -1; -static int hf_bthci_evt_num_supp_iac = -1; -static int hf_bthci_evt_num_curr_iac = -1; -static int hf_bthci_evt_iac_lap = -1; -static int hf_bthci_evt_loopback_mode = -1; -static int hf_bthci_evt_country_code = -1; -static int hf_bthci_evt_failed_contact_counter = -1; -static int hf_bthci_evt_link_quality = -1; -static int hf_bthci_evt_rssi = -1; -static int hf_bthci_evt_host_data_packet_length_acl = -1; -static int hf_bthci_evt_host_data_packet_length_sco = -1; -static int hf_bthci_evt_host_total_num_acl_data_packets = -1; -static int hf_bthci_evt_host_total_num_sco_data_packets = -1; -static int hf_bthci_evt_page_number = -1; -static int hf_bthci_evt_max_page_number = -1; -static int hf_bthci_evt_local_supported_cmds = -1; -static int hf_bthci_evt_fec_required = -1; -static int hf_bthci_evt_err_data_reporting = -1; -static int hf_bthci_evt_scan_type = -1; -static int hf_bthci_evt_inq_mode = -1; -static int hf_bthci_evt_power_level_type = -1; -static int hf_lmp_features = -1; -static int hf_lmp_feature_3slot_packets = -1; -static int hf_lmp_feature_5slot_packets = -1; -static int hf_lmp_feature_encryption = -1; -static int hf_lmp_feature_slot_offset = -1; -static int hf_lmp_feature_timing_accuracy = -1; -static int hf_lmp_feature_role_switch = -1; -static int hf_lmp_feature_hold_mode = -1; -static int hf_lmp_feature_sniff_mode = -1; -static int hf_lmp_feature_park_state = -1; -static int hf_lmp_feature_power_control_requests = -1; -static int hf_lmp_feature_channel_quality_driven_data_rate = -1; -static int hf_lmp_feature_sco_link = -1; -static int hf_lmp_feature_hv2_packets = -1; -static int hf_lmp_feature_hv3_packets = -1; -static int hf_lmp_feature_u_law_log_synchronous_data = -1; -static int hf_lmp_feature_a_law_log_synchronous_data = -1; -static int hf_lmp_feature_cvsd_synchronous_data = -1; -static int hf_lmp_feature_paging_parameter_negotiation = -1; -static int hf_lmp_feature_power_control = -1; -static int hf_lmp_feature_transparent_synchronous_data = -1; -static int hf_lmp_feature_flow_control_lag = -1; -static int hf_lmp_feature_broadcast_encryption = -1; -static int hf_lmp_feature_reserved_24 = -1; -static int hf_lmp_feature_edr_acl_2mbps_mode = -1; -static int hf_lmp_feature_edr_acl_3mbps_mode = -1; -static int hf_lmp_feature_enhanced_inquiry_scan = -1; -static int hf_lmp_feature_interlaced_inquiry_scan = -1; -static int hf_lmp_feature_interlaced_page_scan = -1; -static int hf_lmp_feature_rssi_with_inquiry_results = -1; -static int hf_lmp_feature_ev3_packets = -1; -static int hf_lmp_feature_ev4_packets = -1; -static int hf_lmp_feature_ev5_packets = -1; -static int hf_lmp_feature_reserved_34 = -1; -static int hf_lmp_feature_afh_capable_slave = -1; -static int hf_lmp_feature_afh_classification_slave = -1; -static int hf_lmp_feature_br_edr_not_supported = -1; -static int hf_lmp_feature_le_supported_controller = -1; -static int hf_lmp_feature_3slot_edr_acl_packets = -1; -static int hf_lmp_feature_5slot_edr_acl_packets = -1; -static int hf_lmp_feature_sniff_subrating = -1; -static int hf_lmp_feature_pause_encryption = -1; -static int hf_lmp_feature_afh_capable_master = -1; -static int hf_lmp_feature_afh_classification_master = -1; -static int hf_lmp_feature_edr_esco_2mbps_mode = -1; -static int hf_lmp_feature_edr_esco_3mbps_mode = -1; -static int hf_lmp_feature_3slot_edr_esco_packets = -1; -static int hf_lmp_feature_extended_inquiry_response = -1; -static int hf_lmp_feature_simultaneous_le_and_br_edr_controller = -1; -static int hf_lmp_feature_reserved_50 = -1; -static int hf_lmp_feature_secure_simple_pairing = -1; -static int hf_lmp_feature_encapsulated_pdu = -1; -static int hf_lmp_feature_erroneous_data_reporting = -1; -static int hf_lmp_feature_non_flushable_packet_boundary_flag = -1; -static int hf_lmp_feature_reserved_55 = -1; -static int hf_lmp_feature_link_supervision_timeout_changed_event = -1; -static int hf_lmp_feature_inquiry_tx_power_level = -1; -static int hf_lmp_feature_enhanced_power_control = -1; -static int hf_lmp_feature_reserved_59_62 = -1; -static int hf_lmp_feature_extended_features = -1; -static int hf_lmp_feature_secure_simple_pairing_host = -1; -static int hf_lmp_feature_le_supported_host = -1; -static int hf_lmp_feature_simultaneous_le_and_br_edr_host = -1; -static int hf_lmp_feature_secure_connections_host = -1; -static int hf_lmp_feature_reserved_68_71 = -1; -static int hf_lmp_feature_csb_master_operation = -1; -static int hf_lmp_feature_csb_slave_operation = -1; -static int hf_lmp_feature_synchronization_train = -1; -static int hf_lmp_feature_synchronization_scan = -1; -static int hf_lmp_feature_inquiry_response_notification_event = -1; -static int hf_lmp_feature_generalized_interlaced_scan = -1; -static int hf_lmp_feature_coarse_clock_adjustment = -1; -static int hf_lmp_feature_reserved_135 = -1; -static int hf_lmp_feature_secure_connections_controller = -1; -static int hf_lmp_feature_ping = -1; -static int hf_lmp_feature_reserved_138 = -1; -static int hf_lmp_feature_train_nudging = -1; -static int hf_lmp_feature_slot_availability_mask = -1; -static int hf_lmp_feature_reserved = -1; -static int hf_bthci_evt_sync_link_type = -1; -static int hf_bthci_evt_sync_tx_interval = -1; -static int hf_bthci_evt_sync_rtx_window = -1; -static int hf_bthci_evt_sync_rx_packet_length = -1; -static int hf_bthci_evt_sync_tx_packet_length = -1; -static int hf_bthci_evt_air_mode = -1; -static int hf_bthci_evt_max_tx_latency = -1; -static int hf_bthci_evt_max_rx_latency = -1; -static int hf_bthci_evt_min_remote_timeout = -1; -static int hf_bthci_evt_min_local_timeout = -1; -static int hf_bthci_evt_link_supervision_timeout = -1; -static int hf_bthci_evt_token_bucket_size = -1; -static int hf_bthci_evt_flow_direction = -1; -static int hf_bthci_evt_afh_ch_assessment_mode = -1; -static int hf_bthci_evt_lmp_handle = -1; -static int hf_bthci_evt_clock = -1; -static int hf_bthci_evt_clock_accuracy = -1; -static int hf_bthci_evt_afh_mode = -1; -static int hf_bthci_evt_afh_channel_map = -1; -static int hf_bthci_evt_simple_pairing_mode = -1; -static int hf_bthci_evt_randomizer_r = -1; -static int hf_bthci_evt_hash_c = -1; -static int hf_bthci_evt_io_capability = -1; -static int hf_bthci_evt_oob_data_present = -1; -static int hf_bthci_evt_auth_requirements = -1; -static int hf_bthci_evt_numeric_value = -1; -static int hf_bthci_evt_passkey = -1; -static int hf_bthci_evt_notification_type = -1; -static int hf_bthci_evt_data_length = -1; -static int hf_bthci_evt_location_domain_aware = -1; -static int hf_bthci_evt_location_domain = -1; -static int hf_bthci_evt_location_domain_options = -1; -static int hf_bthci_evt_location_options = -1; -static int hf_bthci_evt_flow_control_mode = -1; -static int hf_bthci_evt_physical_link_handle = -1; -static int hf_bthci_evt_flow_spec_identifier = -1; -static int hf_bthci_evt_logical_link_handle = -1; -static int hf_bthci_evt_max_acl_data_packet_length = -1; -static int hf_bthci_evt_data_block_length = -1; -static int hf_bthci_evt_total_num_data_blocks = -1; -static int hf_bthci_evt_enc_key_size = -1; -static int hf_bthci_evt_amp_remaining_assoc_length = -1; -static int hf_bthci_evt_amp_assoc_fragment = -1; -static int hf_bthci_evt_amp_status = -1; -static int hf_bthci_evt_total_bandwidth = -1; -static int hf_bthci_evt_max_guaranteed_bandwidth = -1; -static int hf_bthci_evt_min_latency = -1; -static int hf_bthci_evt_max_pdu_size = -1; -static int hf_bthci_evt_amp_controller_type = -1; -static int hf_bthci_evt_pal_capabilities_00 = -1; -static int hf_bthci_evt_max_amp_assoc_length = -1; -static int hf_bthci_evt_max_flush_to_us = -1; -static int hf_bthci_evt_best_effort_flush_to_us = -1; -static int hf_bthci_evt_link_loss_reason = -1; -static int hf_bthci_evt_num_compl_blocks = -1; -static int hf_bthci_evt_test_scenario = -1; -static int hf_bthci_evt_report_reason = -1; -static int hf_bthci_evt_report_event_type = -1; -static int hf_bthci_evt_num_frames = -1; -static int hf_bthci_evt_num_error_frames = -1; -static int hf_bthci_evt_num_bits = -1; -static int hf_bthci_evt_num_error_bits = -1; -static int hf_bthci_evt_short_range_mode_state = -1; -static int hf_bthci_evt_le_supported_host = -1; -static int hf_bthci_evt_le_simultaneous_host = -1; -static int hf_bthci_evt_le_acl_data_pkt_len = -1; -static int hf_bthci_evt_total_num_le_acl_data_pkts = -1; -static int hf_bthci_evt_iso_data_pkt_len = -1; -static int hf_bthci_evt_total_num_iso_data_pkts = -1; -static int hf_bthci_evt_white_list_size = -1; -static int hf_bthci_evt_le_channel_map = -1; -static int hf_bthci_evt_encrypted_data = -1; -static int hf_bthci_evt_random_number = -1; -static int hf_bthci_evt_le_num_packets = -1; -static int hf_bthci_evt_le_meta_subevent = -1; -static int hf_bthci_evt_le_peer_address_type = -1; -static int hf_bthci_evt_le_local_rpa = -1; -static int hf_bthci_evt_le_peer_rpa = -1; -static int hf_bthci_evt_le_con_interval = -1; -static int hf_bthci_evt_le_min_interval = -1; -static int hf_bthci_evt_le_max_interval = -1; -static int hf_bthci_evt_le_con_latency = -1; -static int hf_bthci_evt_le_supervision_timeout = -1; -static int hf_bthci_evt_le_max_tx_octets = -1; -static int hf_bthci_evt_le_max_tx_time = -1; -static int hf_bthci_evt_le_max_rx_octets = -1; -static int hf_bthci_evt_le_max_rx_time = -1; -static int hf_bthci_evt_le_local_p_256_public_key = -1; -static int hf_bthci_evt_le_dhkey = -1; -static int hf_bthci_evt_encrypted_diversifier = -1; -static int hf_bthci_evt_le_master_clock_accuracy = -1; -static int hf_bthci_evt_num_reports = -1; -static int hf_bthci_evt_advts_event_type = -1; -static int hf_bthci_evt_le_states = -1; -static int hf_bthci_evt_le_states_00 = -1; -static int hf_bthci_evt_le_states_01 = -1; -static int hf_bthci_evt_le_states_02 = -1; -static int hf_bthci_evt_le_states_03 = -1; -static int hf_bthci_evt_le_states_04 = -1; -static int hf_bthci_evt_le_states_05 = -1; -static int hf_bthci_evt_le_states_06 = -1; -static int hf_bthci_evt_le_states_07 = -1; -static int hf_bthci_evt_le_states_10 = -1; -static int hf_bthci_evt_le_states_11 = -1; -static int hf_bthci_evt_le_states_12 = -1; -static int hf_bthci_evt_le_states_13 = -1; -static int hf_bthci_evt_le_states_14 = -1; -static int hf_bthci_evt_le_states_15 = -1; -static int hf_bthci_evt_le_states_16 = -1; -static int hf_bthci_evt_le_states_17 = -1; -static int hf_bthci_evt_le_states_20 = -1; -static int hf_bthci_evt_le_states_21 = -1; -static int hf_bthci_evt_le_states_22 = -1; -static int hf_bthci_evt_le_states_23 = -1; -static int hf_bthci_evt_le_states_24 = -1; -static int hf_bthci_evt_le_states_25 = -1; -static int hf_bthci_evt_le_states_26 = -1; -static int hf_bthci_evt_le_states_27 = -1; -static int hf_bthci_evt_le_states_30 = -1; -static int hf_bthci_evt_le_states_31 = -1; -static int hf_bthci_evt_le_states_32 = -1; -static int hf_bthci_evt_le_states_33 = -1; -static int hf_bthci_evt_le_states_34 = -1; -static int hf_changed_in_frame = -1; -static int hf_command_in_frame = -1; -static int hf_pending_in_frame = -1; -static int hf_response_in_frame = -1; -static int hf_command_pending_time_delta = -1; -static int hf_command_response_time_delta = -1; -static int hf_pending_response_time_delta = -1; -static int hf_bthci_evt_le_features = -1; -static int hf_bthci_evt_le_features_encryption = -1; -static int hf_bthci_evt_le_features_connection_parameters_request_procedure = -1; -static int hf_bthci_evt_le_features_extended_reject_indication = -1; -static int hf_bthci_evt_le_features_slave_initiated_features_exchange = -1; -static int hf_bthci_evt_le_features_ping = -1; -static int hf_bthci_evt_le_features_data_packet_length_extension = -1; -static int hf_bthci_evt_le_features_ll_privacy = -1; -static int hf_bthci_evt_le_features_extended_scanner_filter_policies = -1; -static int hf_bthci_evt_le_features_2m_phy = -1; -static int hf_bthci_evt_le_features_stable_modulation_index_tx =-1; -static int hf_bthci_evt_le_features_stable_modulation_index_rx = -1; -static int hf_bthci_evt_le_features_coded_phy = -1; -static int hf_bthci_evt_le_features_extended_advertising = -1; -static int hf_bthci_evt_le_features_periodic_advertising = -1; -static int hf_bthci_evt_le_features_channel_selection_algorithm_2 = -1; -static int hf_bthci_evt_le_features_power_class_1 = -1; -static int hf_bthci_evt_le_features_minimum_number_of_used_channels_procedure = -1; -static int hf_bthci_evt_le_features_connection_cte_request = -1; -static int hf_bthci_evt_le_features_connection_cte_response = -1; -static int hf_bthci_evt_le_features_connectionless_cte_tx = -1; -static int hf_bthci_evt_le_features_connectionless_cte_rx = -1; -static int hf_bthci_evt_le_features_antenna_switching_during_cte_tx_aod = -1; -static int hf_bthci_evt_le_features_antenna_switching_during_cte_rx_aoa = -1; -static int hf_bthci_evt_le_features_receiving_cte = -1; -static int hf_bthci_evt_le_features_periodic_advertising_sync_transfer_sender = -1; -static int hf_bthci_evt_le_features_periodic_advertising_sync_transfer_receiver = -1; -static int hf_bthci_evt_le_features_sleep_clock_accuracy_updates = -1; -static int hf_bthci_evt_le_features_remote_public_key_validation = -1; -static int hf_bthci_evt_le_features_cis_master = -1; -static int hf_bthci_evt_le_features_cis_slave = -1; -static int hf_bthci_evt_le_features_isochronous_broadcaster = -1; -static int hf_bthci_evt_le_features_synchronized_receiver = -1; -static int hf_bthci_evt_le_features_isochronous_channels_host_support = -1; -static int hf_bthci_evt_le_features_power_control_request = -1; -static int hf_bthci_evt_le_features_power_change_indication = -1; -static int hf_bthci_evt_le_features_path_loss_monitoring = -1; -static int hf_bthci_evt_le_features_periodic_advertising_adi = -1; -static int hf_bthci_evt_le_features_connection_subrating = -1; -static int hf_bthci_evt_le_features_connection_subrating_host_support = -1; -static int hf_bthci_evt_le_features_channel_classification = -1; -static int hf_bthci_evt_le_features_reserved = -1; -static int hf_bthci_evt_mws_number_of_transports = -1; -static int hf_bthci_evt_mws_transport_layers = -1; -static int hf_bthci_evt_mws_transport_layers_item = -1; -static int hf_bthci_evt_mws_transport_layer = -1; -static int hf_bthci_evt_mws_number_of_baud_rates = -1; -static int hf_bthci_evt_mws_to_mws_baud_rates = -1; -static int hf_bthci_evt_mws_to_mws_baud_rates_tranport_item = -1; -static int hf_bthci_evt_mws_to_mws_baud_rate = -1; -static int hf_bthci_evt_mws_from_mws_baud_rates = -1; -static int hf_bthci_evt_mws_from_mws_baud_rates_tranport_item = -1; -static int hf_bthci_evt_mws_from_mws_baud_rate = -1; -static int hf_bthci_evt_selected_tx_power = -1; -static int hf_bthci_evt_which_clock = -1; -static int hf_bthci_evt_slot_offset = -1; -static int hf_bthci_evt_lt_addr = -1; -static int hf_bthci_evt_next_broadcast_instant = -1; -static int hf_bthci_evt_connectionless_slave_broadcast_interval = -1; -static int hf_bthci_evt_service_data = -1; -static int hf_bthci_evt_local_sam_index = -1; -static int hf_bthci_evt_local_sam_tx_availability = -1; -static int hf_bthci_evt_local_sam_rx_availability = -1; -static int hf_bthci_evt_remote_sam_index = -1; -static int hf_bthci_evt_remote_sam_tx_availability = -1; -static int hf_bthci_evt_remote_sam_rx_availability = -1; -static int hf_bthci_evt_receive_status = -1; -static int hf_bthci_evt_fragment = -1; -static int hf_bthci_evt_data = -1; -static int hf_bthci_evt_le_number_of_reports = -1; -static int hf_bthci_evt_le_report = -1; -static int hf_bthci_evt_le_event_type = -1; -static int hf_bthci_evt_le_direct_address_type = -1; -static int hf_bthci_evt_le_direct_bd_addr = -1; -static int hf_bthci_evt_le_address_type = -1; -static int hf_bthci_evt_le_rssi = -1; -static int hf_bthci_evt_le_tx_phy = -1; -static int hf_bthci_evt_le_rx_phy = -1; -static int hf_bthci_evt_max_adv_data_length = -1; -static int hf_bthci_evt_num_supported_adv_sets = -1; -static int hf_bthci_evt_number_of_supported_codecs = -1; -static int hf_bthci_evt_number_of_supported_vendor_codecs = -1; -static int hf_bthci_evt_codecs = -1; -static int hf_bthci_evt_vendor_codecs = -1; -static int hf_bthci_evt_vendor_codecs_item = -1; -static int hf_bthci_evt_codec_id = -1; -static int hf_bthci_evt_vendor_codec_id = -1; -static int hf_bthci_evt_mws_bt_rx_priority_assert_offset = -1; -static int hf_bthci_evt_mws_bt_rx_priority_assert_jitter = -1; -static int hf_bthci_evt_mws_bt_rx_priority_deassert_offset = -1; -static int hf_bthci_evt_mws_bt_rx_priority_deassert_jitter = -1; -static int hf_bthci_evt_mws_bt_tx_priority_assert_offset = -1; -static int hf_bthci_evt_mws_bt_tx_priority_assert_jitter = -1; -static int hf_bthci_evt_mws_bt_tx_priority_deassert_offset = -1; -static int hf_bthci_evt_mws_bt_tx_priority_deassert_jitter = -1; -static int hf_bthci_evt_mws_802_rx_priority_assert_offset = -1; -static int hf_bthci_evt_mws_802_rx_priority_assert_jitter = -1; -static int hf_bthci_evt_mws_802_rx_priority_deassert_offset = -1; -static int hf_bthci_evt_mws_802_rx_priority_deassert_jitter = -1; -static int hf_bthci_evt_mws_802_tx_priority_assert_offset = -1; -static int hf_bthci_evt_mws_802_tx_priority_assert_jitter = -1; -static int hf_bthci_evt_mws_802_tx_priority_deassert_offset = -1; -static int hf_bthci_evt_mws_802_tx_priority_deassert_jitter = -1; -static int hf_bthci_evt_sync_train_interval = -1; -static int hf_bthci_evt_sync_train_to = -1; -static int hf_bthci_evt_secure_connection_host_support = -1; -static int hf_bthci_evt_authenticated_payload_timeout = -1; -static int hf_bthci_evt_c192 = -1; -static int hf_bthci_evt_r192 = -1; -static int hf_bthci_evt_c256 = -1; -static int hf_bthci_evt_r256 = -1; -static int hf_bthci_evt_extended_inquiry_length = -1; -static int hf_bthci_evt_suggested_max_tx_octets = -1; -static int hf_bthci_evt_suggested_max_tx_time = -1; -static int hf_bthci_evt_suggested_max_rx_octets = -1; -static int hf_bthci_evt_suggested_max_rx_time = -1; -static int hf_bthci_evt_resolving_list_size = -1; -static int hf_bthci_evt_primary_phy = -1; -static int hf_bthci_evt_secondary_phy = -1; -static int hf_bthci_evt_advertising_sid = -1; -static int hf_bthci_evt_tx_power = -1; -static int hf_bthci_evt_periodic_advertising_interval = -1; -static int hf_bthci_evt_num_compl_ext_advertising_events = -1; -static int hf_bthci_evt_channel_selection_algorithm = -1; -static int hf_bthci_evt_advertiser_clock_accuracy = -1; -static int hf_bthci_evt_advertiser_phy = -1; -static int hf_bthci_evt_periodic_adv_list_size = -1; -static int hf_bthci_evt_min_tx_power = -1; -static int hf_bthci_evt_max_tx_power = -1; -static int hf_bthci_evt_rf_tx_path_compensation = -1; -static int hf_bthci_evt_rf_rx_path_compensation = -1; -static int hf_bthci_evt_sync_handle = -1; -static int hf_bthci_evt_data_status = -1; -static int hf_bthci_evt_advertising_handle = -1; -static int hf_bthci_evt_channel_index = -1; -static int hf_bthci_evt_cte_rssi = -1; -static int hf_bthci_evt_antenna_id = -1; -static int hf_bthci_evt_cte_type = -1; -static int hf_bthci_evt_slot_durations = -1; -static int hf_bthci_evt_packet_status = -1; -static int hf_bthci_evt_event_counter = -1; -static int hf_bthci_evt_sample_count = -1; -static int hf_bthci_evt_i_sample = -1; -static int hf_bthci_evt_q_sample = -1; -static int hf_bthci_evt_service_data_past = -1; -static int hf_bthci_evt_number_antennae = -1; -static int hf_bthci_evt_max_cte_length = -1; -static int hf_bthci_evt_max_length_antenna_switching_pattern = -1; -static int hf_bthci_evt_max_encryption_key_size = -1; -static int hf_bthci_evt_sdu_packet_seq_num = -1; -static int hf_bthci_evt_sdu_packet_timestamp = -1; -static int hf_bthci_evt_sdu_packet_offset = -1; -static int hf_bthci_evt_cig_id = -1; -static int hf_bthci_evt_cis_id = -1; -static int hf_bthci_evt_cis_count = -1; -static int hf_bthci_evt_cis_handle = -1; -static int hf_bthci_evt_cis_bis_handle = -1; -static int hf_bthci_evt_big_handle = -1; -static int hf_bthci_evt_received_packet_counter = -1; -static int hf_bthci_evt_missed_packet_counter = -1; -static int hf_bthci_evt_failed_packet_counter = -1; -static int hf_bthci_evt_pkt_count_tx_unacked = -1; -static int hf_bthci_evt_pkt_count_tx_flushed = -1; -static int hf_bthci_evt_pkt_count_tx_last_subevent = -1; -static int hf_bthci_evt_pkt_count_tx_retransmitted = -1; -static int hf_bthci_evt_pkt_count_rx_crc_error = -1; -static int hf_bthci_evt_pkt_count_rx_unreceived = -1; -static int hf_bthci_evt_pkt_count_rx_duplicate = -1; -static int hf_bthci_evt_phy_and_coding = -1; -static int hf_bthci_evt_cig_sync_delay = -1; -static int hf_bthci_evt_big_sync_delay = -1; -static int hf_bthci_evt_cis_sync_delay = -1; -static int hf_bthci_evt_transport_latency_m_to_s = -1; -static int hf_bthci_evt_transport_latency_s_to_m = -1; -static int hf_bthci_evt_big_transport_latency = -1; -static int hf_bthci_evt_phy_m_to_s = -1; -static int hf_bthci_evt_phy_s_to_m = -1; -static int hf_bthci_evt_bn_m_to_s = -1; -static int hf_bthci_evt_bn_s_to_m = -1; -static int hf_bthci_evt_ft_m_to_s = -1; -static int hf_bthci_evt_ft_s_to_m = -1; -static int hf_bthci_evt_max_pdu_m_to_s = -1; -static int hf_bthci_evt_max_pdu_s_to_m = -1; -static int hf_bthci_evt_phy = -1; -static int hf_bthci_evt_nse = -1; -static int hf_bthci_evt_bn = -1; -static int hf_bthci_evt_pto = -1; -static int hf_bthci_evt_irc = -1; -static int hf_bthci_evt_max_pdu = -1; -static int hf_bthci_evt_iso_interval = -1; -static int hf_bthci_evt_num_bis = -1; -static int hf_bthci_evt_bis_handle = -1; -static int hf_bthci_evt_current_path_loss = -1; -static int hf_bthci_evt_zone_entered = -1; -static int hf_bthci_evt_power_report_reason = -1; -static int hf_bthci_evt_power_level_delta = -1; -static int hf_bthci_evt_sdu_interval = -1; -static int hf_bthci_evt_max_sdu = -1; -static int hf_bthci_evt_framing = -1; -static int hf_bthci_evt_peer_clock_accuracy = -1; -static int hf_bthci_evt_subrate_factor = -1; -static int hf_bthci_evt_continuation_number = -1; -static int hf_packet_type_acl = -1; -static int hf_packet_type_acl_dh5 = -1; -static int hf_packet_type_acl_dm5 = -1; -static int hf_packet_type_acl_3dh5 = -1; -static int hf_packet_type_acl_2dh5 = -1; -static int hf_packet_type_acl_dh3 = -1; -static int hf_packet_type_acl_dm3 = -1; -static int hf_packet_type_acl_3dh3 = -1; -static int hf_packet_type_acl_2dh3 = -1; -static int hf_packet_type_acl_reserved_5_7 = -1; -static int hf_packet_type_acl_dh1 = -1; -static int hf_packet_type_acl_dm1 = -1; -static int hf_packet_type_acl_3dh1 = -1; -static int hf_packet_type_acl_2dh1 = -1; -static int hf_packet_type_acl_reserved_0 = -1; -static int hf_packet_type_sco = -1; -static int hf_packet_type_sco_reserved_15_8 = -1; -static int hf_packet_type_sco_hv3 = -1; -static int hf_packet_type_sco_hv2 = -1; -static int hf_packet_type_sco_hv1 = -1; -static int hf_packet_type_sco_reserved_4_0 = -1; +static int proto_bthci_evt; +static int hf_bthci_evt_code; +static int hf_bthci_evt_param_length; +static int hf_bthci_evt_num_command_packets; +static int hf_bthci_evt_num_handles; +static int hf_bthci_evt_connection_handle; +static int hf_bthci_evt_num_compl_packets; +static int hf_bthci_evt_ret_params; +static int hf_bthci_evt_status; +static int hf_bthci_evt_status_pending; +static int hf_bthci_evt_opcode; +static int hf_bthci_evt_ogf; +static int hf_bthci_evt_ocf; +static int hf_bthci_evt_ocf_link_control; +static int hf_bthci_evt_ocf_link_policy; +static int hf_bthci_evt_ocf_host_controller_and_baseband; +static int hf_bthci_evt_ocf_informational; +static int hf_bthci_evt_ocf_status; +static int hf_bthci_evt_ocf_testing; +static int hf_bthci_evt_ocf_logo_testing; +static int hf_bthci_evt_ocf_low_energy; +static int hf_bthci_evt_bd_addr; +static int hf_bthci_evt_link_type; +static int hf_bthci_evt_encryption_mode; +static int hf_bthci_evt_reason; +static int hf_bthci_evt_remote_name; +static int hf_bthci_evt_encryption_enable; +static int hf_bthci_evt_key_flag; +static int hf_bthci_evt_vers_nr; +static int hf_bthci_bthci_evt_hci_version; +static int hf_bthci_evt_hci_revision; +static int hf_bthci_evt_comp_id; +static int hf_bthci_evt_sub_vers_nr; +static int hf_bthci_evt_flags; +static int hf_bthci_evt_service_type; +static int hf_bthci_evt_token_rate; +static int hf_bthci_evt_peak_bandwidth; +static int hf_bthci_evt_latency; +static int hf_bthci_evt_delay_variation; +static int hf_bthci_evt_hardware_code; +static int hf_bthci_evt_role; +static int hf_bthci_evt_curr_role; +static int hf_bthci_evt_curr_mode; +static int hf_bthci_evt_interval; +static int hf_bthci_evt_link_key; +static int hf_bthci_evt_key_type; +static int hf_bthci_evt_max_slots; +static int hf_bthci_evt_clock_offset; +static int hf_bthci_evt_clock_offset_32; +static int hf_bthci_evt_page_scan_mode; +static int hf_bthci_evt_page_scan_repetition_mode; +static int hf_bthci_evt_reserved; +static int hf_bthci_evt_page_scan_period_mode; +static int hf_bthci_evt_num_keys; +static int hf_bthci_evt_num_keys_read; +static int hf_bthci_evt_max_num_keys; +static int hf_bthci_evt_num_responses; +static int hf_bthci_evt_num_keys_written; +static int hf_bthci_evt_num_keys_deleted; +static int hf_bthci_evt_link_policy_setting_switch; +static int hf_bthci_evt_link_policy_setting_hold; +static int hf_bthci_evt_link_policy_setting_sniff; +static int hf_bthci_evt_link_policy_setting_park; +static int hf_bthci_evt_pin_type; +static int hf_bthci_evt_device_name; +static int hf_bthci_evt_timeout; +static int hf_bthci_evt_scan_enable; +static int hf_bthci_evt_authentication_enable; +static int hf_bthci_evt_sco_flow_cont_enable; +static int hf_bthci_evt_window; +static int hf_bthci_evt_input_unused; +static int hf_bthci_evt_input_coding; +static int hf_bthci_evt_input_data_format; +static int hf_bthci_evt_input_sample_size; +static int hf_bthci_evt_linear_pcm_bit_pos; +static int hf_bthci_evt_air_coding_format; +static int hf_bthci_evt_num_broadcast_retransm; +static int hf_bthci_evt_hold_mode_act_page; +static int hf_bthci_evt_hold_mode_act_inquiry; +static int hf_bthci_evt_hold_mode_act_periodic; +static int hf_bthci_evt_transmit_power_level; +static int hf_bthci_evt_max_transmit_power_level; +static int hf_bthci_evt_transmit_power_level_gfsk; +static int hf_bthci_evt_transmit_power_level_dqpsk; +static int hf_bthci_evt_transmit_power_level_8dpsk; +static int hf_bthci_evt_flush_to_us; +static int hf_bthci_evt_num_supp_iac; +static int hf_bthci_evt_num_curr_iac; +static int hf_bthci_evt_iac_lap; +static int hf_bthci_evt_loopback_mode; +static int hf_bthci_evt_country_code; +static int hf_bthci_evt_failed_contact_counter; +static int hf_bthci_evt_link_quality; +static int hf_bthci_evt_rssi; +static int hf_bthci_evt_host_data_packet_length_acl; +static int hf_bthci_evt_host_data_packet_length_sco; +static int hf_bthci_evt_host_total_num_acl_data_packets; +static int hf_bthci_evt_host_total_num_sco_data_packets; +static int hf_bthci_evt_page_number; +static int hf_bthci_evt_max_page_number; +static int hf_bthci_evt_local_supported_cmds; +static int hf_bthci_evt_fec_required; +static int hf_bthci_evt_err_data_reporting; +static int hf_bthci_evt_scan_type; +static int hf_bthci_evt_inq_mode; +static int hf_bthci_evt_power_level_type; +static int hf_lmp_features; +static int hf_lmp_feature_3slot_packets; +static int hf_lmp_feature_5slot_packets; +static int hf_lmp_feature_encryption; +static int hf_lmp_feature_slot_offset; +static int hf_lmp_feature_timing_accuracy; +static int hf_lmp_feature_role_switch; +static int hf_lmp_feature_hold_mode; +static int hf_lmp_feature_sniff_mode; +static int hf_lmp_feature_park_state; +static int hf_lmp_feature_power_control_requests; +static int hf_lmp_feature_channel_quality_driven_data_rate; +static int hf_lmp_feature_sco_link; +static int hf_lmp_feature_hv2_packets; +static int hf_lmp_feature_hv3_packets; +static int hf_lmp_feature_u_law_log_synchronous_data; +static int hf_lmp_feature_a_law_log_synchronous_data; +static int hf_lmp_feature_cvsd_synchronous_data; +static int hf_lmp_feature_paging_parameter_negotiation; +static int hf_lmp_feature_power_control; +static int hf_lmp_feature_transparent_synchronous_data; +static int hf_lmp_feature_flow_control_lag; +static int hf_lmp_feature_broadcast_encryption; +static int hf_lmp_feature_reserved_24; +static int hf_lmp_feature_edr_acl_2mbps_mode; +static int hf_lmp_feature_edr_acl_3mbps_mode; +static int hf_lmp_feature_enhanced_inquiry_scan; +static int hf_lmp_feature_interlaced_inquiry_scan; +static int hf_lmp_feature_interlaced_page_scan; +static int hf_lmp_feature_rssi_with_inquiry_results; +static int hf_lmp_feature_ev3_packets; +static int hf_lmp_feature_ev4_packets; +static int hf_lmp_feature_ev5_packets; +static int hf_lmp_feature_reserved_34; +static int hf_lmp_feature_afh_capable_peripheral; +static int hf_lmp_feature_afh_classification_peripheral; +static int hf_lmp_feature_br_edr_not_supported; +static int hf_lmp_feature_le_supported_controller; +static int hf_lmp_feature_3slot_edr_acl_packets; +static int hf_lmp_feature_5slot_edr_acl_packets; +static int hf_lmp_feature_sniff_subrating; +static int hf_lmp_feature_pause_encryption; +static int hf_lmp_feature_afh_capable_central; +static int hf_lmp_feature_afh_classification_central; +static int hf_lmp_feature_edr_esco_2mbps_mode; +static int hf_lmp_feature_edr_esco_3mbps_mode; +static int hf_lmp_feature_3slot_edr_esco_packets; +static int hf_lmp_feature_extended_inquiry_response; +static int hf_lmp_feature_simultaneous_le_and_br_edr_controller; +static int hf_lmp_feature_reserved_50; +static int hf_lmp_feature_secure_simple_pairing; +static int hf_lmp_feature_encapsulated_pdu; +static int hf_lmp_feature_erroneous_data_reporting; +static int hf_lmp_feature_non_flushable_packet_boundary_flag; +static int hf_lmp_feature_reserved_55; +static int hf_lmp_feature_link_supervision_timeout_changed_event; +static int hf_lmp_feature_inquiry_tx_power_level; +static int hf_lmp_feature_enhanced_power_control; +static int hf_lmp_feature_reserved_59_62; +static int hf_lmp_feature_extended_features; +static int hf_lmp_feature_secure_simple_pairing_host; +static int hf_lmp_feature_le_supported_host; +static int hf_lmp_feature_simultaneous_le_and_br_edr_host; +static int hf_lmp_feature_secure_connections_host; +static int hf_lmp_feature_reserved_68_71; +static int hf_lmp_feature_csb_central_operation; +static int hf_lmp_feature_csb_peripheral_operation; +static int hf_lmp_feature_synchronization_train; +static int hf_lmp_feature_synchronization_scan; +static int hf_lmp_feature_inquiry_response_notification_event; +static int hf_lmp_feature_generalized_interlaced_scan; +static int hf_lmp_feature_coarse_clock_adjustment; +static int hf_lmp_feature_reserved_135; +static int hf_lmp_feature_secure_connections_controller; +static int hf_lmp_feature_ping; +static int hf_lmp_feature_reserved_138; +static int hf_lmp_feature_train_nudging; +static int hf_lmp_feature_slot_availability_mask; +static int hf_lmp_feature_reserved; +static int hf_bthci_evt_sync_link_type; +static int hf_bthci_evt_sync_tx_interval; +static int hf_bthci_evt_sync_rtx_window; +static int hf_bthci_evt_sync_rx_packet_length; +static int hf_bthci_evt_sync_tx_packet_length; +static int hf_bthci_evt_air_mode; +static int hf_bthci_evt_max_tx_latency; +static int hf_bthci_evt_max_rx_latency; +static int hf_bthci_evt_min_remote_timeout; +static int hf_bthci_evt_min_local_timeout; +static int hf_bthci_evt_link_supervision_timeout; +static int hf_bthci_evt_token_bucket_size; +static int hf_bthci_evt_flow_direction; +static int hf_bthci_evt_afh_ch_assessment_mode; +static int hf_bthci_evt_lmp_handle; +static int hf_bthci_evt_clock; +static int hf_bthci_evt_clock_accuracy; +static int hf_bthci_evt_afh_mode; +static int hf_bthci_evt_afh_channel_map; +static int hf_bthci_evt_simple_pairing_mode; +static int hf_bthci_evt_randomizer_r; +static int hf_bthci_evt_hash_c; +static int hf_bthci_evt_io_capability; +static int hf_bthci_evt_oob_data_present; +static int hf_bthci_evt_auth_requirements; +static int hf_bthci_evt_numeric_value; +static int hf_bthci_evt_passkey; +static int hf_bthci_evt_notification_type; +static int hf_bthci_evt_data_length; +static int hf_bthci_evt_location_domain_aware; +static int hf_bthci_evt_location_domain; +static int hf_bthci_evt_location_domain_options; +static int hf_bthci_evt_location_options; +static int hf_bthci_evt_flow_control_mode; +static int hf_bthci_evt_physical_link_handle; +static int hf_bthci_evt_flow_spec_identifier; +static int hf_bthci_evt_logical_link_handle; +static int hf_bthci_evt_max_acl_data_packet_length; +static int hf_bthci_evt_data_block_length; +static int hf_bthci_evt_total_num_data_blocks; +static int hf_bthci_evt_enc_key_size; +static int hf_bthci_evt_amp_remaining_assoc_length; +static int hf_bthci_evt_amp_assoc_fragment; +static int hf_bthci_evt_amp_status; +static int hf_bthci_evt_total_bandwidth; +static int hf_bthci_evt_max_guaranteed_bandwidth; +static int hf_bthci_evt_min_latency; +static int hf_bthci_evt_max_pdu_size; +static int hf_bthci_evt_amp_controller_type; +static int hf_bthci_evt_pal_capabilities_00; +static int hf_bthci_evt_max_amp_assoc_length; +static int hf_bthci_evt_max_flush_to_us; +static int hf_bthci_evt_best_effort_flush_to_us; +static int hf_bthci_evt_link_loss_reason; +static int hf_bthci_evt_num_compl_blocks; +static int hf_bthci_evt_test_scenario; +static int hf_bthci_evt_report_reason; +static int hf_bthci_evt_report_event_type; +static int hf_bthci_evt_num_frames; +static int hf_bthci_evt_num_error_frames; +static int hf_bthci_evt_num_bits; +static int hf_bthci_evt_num_error_bits; +static int hf_bthci_evt_short_range_mode_state; +static int hf_bthci_evt_le_supported_host; +static int hf_bthci_evt_le_simultaneous_host; +static int hf_bthci_evt_le_acl_data_pkt_len; +static int hf_bthci_evt_total_num_le_acl_data_pkts; +static int hf_bthci_evt_iso_data_pkt_len; +static int hf_bthci_evt_total_num_iso_data_pkts; +static int hf_bthci_evt_filter_accept_list_size; +static int hf_bthci_evt_le_channel_map; +static int hf_bthci_evt_encrypted_data; +static int hf_bthci_evt_random_number; +static int hf_bthci_evt_le_num_packets; +static int hf_bthci_evt_le_meta_subevent; +static int hf_bthci_evt_le_peer_address_type; +static int hf_bthci_evt_le_local_rpa; +static int hf_bthci_evt_le_peer_rpa; +static int hf_bthci_evt_le_con_interval; +static int hf_bthci_evt_le_min_interval; +static int hf_bthci_evt_le_max_interval; +static int hf_bthci_evt_le_con_latency; +static int hf_bthci_evt_le_supervision_timeout; +static int hf_bthci_evt_le_max_tx_octets; +static int hf_bthci_evt_le_max_tx_time; +static int hf_bthci_evt_le_max_rx_octets; +static int hf_bthci_evt_le_max_rx_time; +static int hf_bthci_evt_le_local_p_256_public_key; +static int hf_bthci_evt_le_dhkey; +static int hf_bthci_evt_encrypted_diversifier; +static int hf_bthci_evt_le_central_clock_accuracy; +static int hf_bthci_evt_num_reports; +static int hf_bthci_evt_advts_event_type; +static int hf_bthci_evt_le_states; +static int hf_bthci_evt_le_states_00; +static int hf_bthci_evt_le_states_01; +static int hf_bthci_evt_le_states_02; +static int hf_bthci_evt_le_states_03; +static int hf_bthci_evt_le_states_04; +static int hf_bthci_evt_le_states_05; +static int hf_bthci_evt_le_states_06; +static int hf_bthci_evt_le_states_07; +static int hf_bthci_evt_le_states_10; +static int hf_bthci_evt_le_states_11; +static int hf_bthci_evt_le_states_12; +static int hf_bthci_evt_le_states_13; +static int hf_bthci_evt_le_states_14; +static int hf_bthci_evt_le_states_15; +static int hf_bthci_evt_le_states_16; +static int hf_bthci_evt_le_states_17; +static int hf_bthci_evt_le_states_20; +static int hf_bthci_evt_le_states_21; +static int hf_bthci_evt_le_states_22; +static int hf_bthci_evt_le_states_23; +static int hf_bthci_evt_le_states_24; +static int hf_bthci_evt_le_states_25; +static int hf_bthci_evt_le_states_26; +static int hf_bthci_evt_le_states_27; +static int hf_bthci_evt_le_states_30; +static int hf_bthci_evt_le_states_31; +static int hf_bthci_evt_le_states_32; +static int hf_bthci_evt_le_states_33; +static int hf_bthci_evt_le_states_34; +static int hf_changed_in_frame; +static int hf_command_in_frame; +static int hf_pending_in_frame; +static int hf_response_in_frame; +static int hf_command_pending_time_delta; +static int hf_command_response_time_delta; +static int hf_pending_response_time_delta; +static int hf_bthci_evt_le_features; +static int hf_bthci_evt_le_features_encryption; +static int hf_bthci_evt_le_features_connection_parameters_request_procedure; +static int hf_bthci_evt_le_features_extended_reject_indication; +static int hf_bthci_evt_le_features_peripheral_initiated_features_exchange; +static int hf_bthci_evt_le_features_ping; +static int hf_bthci_evt_le_features_data_packet_length_extension; +static int hf_bthci_evt_le_features_ll_privacy; +static int hf_bthci_evt_le_features_extended_scanner_filter_policies; +static int hf_bthci_evt_le_features_2m_phy; +static int hf_bthci_evt_le_features_stable_modulation_index_tx; +static int hf_bthci_evt_le_features_stable_modulation_index_rx; +static int hf_bthci_evt_le_features_coded_phy; +static int hf_bthci_evt_le_features_extended_advertising; +static int hf_bthci_evt_le_features_periodic_advertising; +static int hf_bthci_evt_le_features_channel_selection_algorithm_2; +static int hf_bthci_evt_le_features_power_class_1; +static int hf_bthci_evt_le_features_minimum_number_of_used_channels_procedure; +static int hf_bthci_evt_le_features_connection_cte_request; +static int hf_bthci_evt_le_features_connection_cte_response; +static int hf_bthci_evt_le_features_connectionless_cte_tx; +static int hf_bthci_evt_le_features_connectionless_cte_rx; +static int hf_bthci_evt_le_features_antenna_switching_during_cte_tx_aod; +static int hf_bthci_evt_le_features_antenna_switching_during_cte_rx_aoa; +static int hf_bthci_evt_le_features_receiving_cte; +static int hf_bthci_evt_le_features_periodic_advertising_sync_transfer_sender; +static int hf_bthci_evt_le_features_periodic_advertising_sync_transfer_receiver; +static int hf_bthci_evt_le_features_sleep_clock_accuracy_updates; +static int hf_bthci_evt_le_features_remote_public_key_validation; +static int hf_bthci_evt_le_features_cis_central; +static int hf_bthci_evt_le_features_cis_peripheral; +static int hf_bthci_evt_le_features_isochronous_broadcaster; +static int hf_bthci_evt_le_features_synchronized_receiver; +static int hf_bthci_evt_le_features_isochronous_channels_host_support; +static int hf_bthci_evt_le_features_power_control_request; +static int hf_bthci_evt_le_features_power_change_indication; +static int hf_bthci_evt_le_features_path_loss_monitoring; +static int hf_bthci_evt_le_features_periodic_advertising_adi; +static int hf_bthci_evt_le_features_connection_subrating; +static int hf_bthci_evt_le_features_connection_subrating_host_support; +static int hf_bthci_evt_le_features_channel_classification; +static int hf_bthci_evt_le_features_coding_selection; +static int hf_bthci_evt_le_features_coding_selection_host_support; +static int hf_bthci_evt_le_features_periodic_advertising_responses_advertiser; +static int hf_bthci_evt_le_features_periodic_advertising_responses_scanner; +static int hf_bthci_evt_le_features_reserved; +static int hf_bthci_evt_mws_number_of_transports; +static int hf_bthci_evt_mws_transport_layers; +static int hf_bthci_evt_mws_transport_layers_item; +static int hf_bthci_evt_mws_transport_layer; +static int hf_bthci_evt_mws_number_of_baud_rates; +static int hf_bthci_evt_mws_to_mws_baud_rates; +static int hf_bthci_evt_mws_to_mws_baud_rates_tranport_item; +static int hf_bthci_evt_mws_to_mws_baud_rate; +static int hf_bthci_evt_mws_from_mws_baud_rates; +static int hf_bthci_evt_mws_from_mws_baud_rates_tranport_item; +static int hf_bthci_evt_mws_from_mws_baud_rate; +static int hf_bthci_evt_selected_tx_power; +static int hf_bthci_evt_which_clock; +static int hf_bthci_evt_slot_offset; +static int hf_bthci_evt_lt_addr; +static int hf_bthci_evt_next_broadcast_instant; +static int hf_bthci_evt_connectionless_peripheral_broadcast_interval; +static int hf_bthci_evt_service_data; +static int hf_bthci_evt_local_sam_index; +static int hf_bthci_evt_local_sam_tx_availability; +static int hf_bthci_evt_local_sam_rx_availability; +static int hf_bthci_evt_remote_sam_index; +static int hf_bthci_evt_remote_sam_tx_availability; +static int hf_bthci_evt_remote_sam_rx_availability; +static int hf_bthci_evt_receive_status; +static int hf_bthci_evt_fragment; +static int hf_bthci_evt_data; +static int hf_bthci_evt_le_number_of_reports; +static int hf_bthci_evt_le_report; +static int hf_bthci_evt_le_event_type; +static int hf_bthci_evt_le_direct_address_type; +static int hf_bthci_evt_le_direct_bd_addr; +static int hf_bthci_evt_le_address_type; +static int hf_bthci_evt_le_rssi; +static int hf_bthci_evt_le_tx_phy; +static int hf_bthci_evt_le_rx_phy; +static int hf_bthci_evt_max_adv_data_length; +static int hf_bthci_evt_num_supported_adv_sets; +static int hf_bthci_evt_number_of_supported_codecs; +static int hf_bthci_evt_number_of_supported_vendor_codecs; +static int hf_bthci_evt_codecs; +static int hf_bthci_evt_vendor_codecs; +static int hf_bthci_evt_vendor_codecs_item; +static int hf_bthci_evt_codec_id; +static int hf_bthci_evt_vendor_codec_id; +static int hf_bthci_evt_mws_bt_rx_priority_assert_offset; +static int hf_bthci_evt_mws_bt_rx_priority_assert_jitter; +static int hf_bthci_evt_mws_bt_rx_priority_deassert_offset; +static int hf_bthci_evt_mws_bt_rx_priority_deassert_jitter; +static int hf_bthci_evt_mws_bt_tx_priority_assert_offset; +static int hf_bthci_evt_mws_bt_tx_priority_assert_jitter; +static int hf_bthci_evt_mws_bt_tx_priority_deassert_offset; +static int hf_bthci_evt_mws_bt_tx_priority_deassert_jitter; +static int hf_bthci_evt_mws_802_rx_priority_assert_offset; +static int hf_bthci_evt_mws_802_rx_priority_assert_jitter; +static int hf_bthci_evt_mws_802_rx_priority_deassert_offset; +static int hf_bthci_evt_mws_802_rx_priority_deassert_jitter; +static int hf_bthci_evt_mws_802_tx_priority_assert_offset; +static int hf_bthci_evt_mws_802_tx_priority_assert_jitter; +static int hf_bthci_evt_mws_802_tx_priority_deassert_offset; +static int hf_bthci_evt_mws_802_tx_priority_deassert_jitter; +static int hf_bthci_evt_sync_train_interval; +static int hf_bthci_evt_sync_train_to; +static int hf_bthci_evt_secure_connection_host_support; +static int hf_bthci_evt_authenticated_payload_timeout; +static int hf_bthci_evt_c192; +static int hf_bthci_evt_r192; +static int hf_bthci_evt_c256; +static int hf_bthci_evt_r256; +static int hf_bthci_evt_extended_inquiry_length; +static int hf_bthci_evt_suggested_max_tx_octets; +static int hf_bthci_evt_suggested_max_tx_time; +static int hf_bthci_evt_suggested_max_rx_octets; +static int hf_bthci_evt_suggested_max_rx_time; +static int hf_bthci_evt_resolving_list_size; +static int hf_bthci_evt_primary_phy; +static int hf_bthci_evt_secondary_phy; +static int hf_bthci_evt_advertising_sid; +static int hf_bthci_evt_tx_power; +static int hf_bthci_evt_periodic_advertising_interval; +static int hf_bthci_evt_num_compl_ext_advertising_events; +static int hf_bthci_evt_channel_selection_algorithm; +static int hf_bthci_evt_advertiser_clock_accuracy; +static int hf_bthci_evt_advertiser_phy; +static int hf_bthci_evt_periodic_adv_list_size; +static int hf_bthci_evt_min_tx_power; +static int hf_bthci_evt_max_tx_power; +static int hf_bthci_evt_rf_tx_path_compensation; +static int hf_bthci_evt_rf_rx_path_compensation; +static int hf_bthci_evt_sync_handle; +static int hf_bthci_evt_data_status; +static int hf_bthci_evt_advertising_handle; +static int hf_bthci_evt_channel_index; +static int hf_bthci_evt_cte_rssi; +static int hf_bthci_evt_antenna_id; +static int hf_bthci_evt_cte_type; +static int hf_bthci_evt_slot_durations; +static int hf_bthci_evt_packet_status; +static int hf_bthci_evt_event_counter; +static int hf_bthci_evt_sample_count; +static int hf_bthci_evt_i_sample; +static int hf_bthci_evt_q_sample; +static int hf_bthci_evt_service_data_past; +static int hf_bthci_evt_number_antennae; +static int hf_bthci_evt_max_cte_length; +static int hf_bthci_evt_max_length_antenna_switching_pattern; +static int hf_bthci_evt_max_encryption_key_size; +static int hf_bthci_evt_sdu_packet_seq_num; +static int hf_bthci_evt_sdu_packet_timestamp; +static int hf_bthci_evt_sdu_packet_offset; +static int hf_bthci_evt_cig_id; +static int hf_bthci_evt_cis_id; +static int hf_bthci_evt_cis_count; +static int hf_bthci_evt_cis_handle; +static int hf_bthci_evt_cis_bis_handle; +static int hf_bthci_evt_big_handle; +static int hf_bthci_evt_received_packet_counter; +static int hf_bthci_evt_missed_packet_counter; +static int hf_bthci_evt_failed_packet_counter; +static int hf_bthci_evt_pkt_count_tx_unacked; +static int hf_bthci_evt_pkt_count_tx_flushed; +static int hf_bthci_evt_pkt_count_tx_last_subevent; +static int hf_bthci_evt_pkt_count_tx_retransmitted; +static int hf_bthci_evt_pkt_count_rx_crc_error; +static int hf_bthci_evt_pkt_count_rx_unreceived; +static int hf_bthci_evt_pkt_count_rx_duplicate; +static int hf_bthci_evt_phy_and_coding; +static int hf_bthci_evt_cig_sync_delay; +static int hf_bthci_evt_big_sync_delay; +static int hf_bthci_evt_cis_sync_delay; +static int hf_bthci_evt_transport_latency_c_to_p; +static int hf_bthci_evt_transport_latency_p_to_c; +static int hf_bthci_evt_big_transport_latency; +static int hf_bthci_evt_phy_c_to_p; +static int hf_bthci_evt_phy_p_to_c; +static int hf_bthci_evt_bn_c_to_p; +static int hf_bthci_evt_bn_p_to_c; +static int hf_bthci_evt_ft_c_to_p; +static int hf_bthci_evt_ft_p_to_c; +static int hf_bthci_evt_max_pdu_c_to_p; +static int hf_bthci_evt_max_pdu_p_to_c; +static int hf_bthci_evt_phy; +static int hf_bthci_evt_nse; +static int hf_bthci_evt_bn; +static int hf_bthci_evt_pto; +static int hf_bthci_evt_irc; +static int hf_bthci_evt_max_pdu; +static int hf_bthci_evt_iso_interval; +static int hf_bthci_evt_num_bis; +static int hf_bthci_evt_bis_handle; +static int hf_bthci_evt_current_path_loss; +static int hf_bthci_evt_zone_entered; +static int hf_bthci_evt_power_report_reason; +static int hf_bthci_evt_power_level_delta; +static int hf_bthci_evt_sdu_interval; +static int hf_bthci_evt_max_sdu; +static int hf_bthci_evt_framing; +static int hf_bthci_evt_peer_clock_accuracy; +static int hf_bthci_evt_subrate_factor; +static int hf_bthci_evt_continuation_number; +static int hf_bthci_evt_subevent_start; +static int hf_bthci_evt_subevent_count; +static int hf_bthci_evt_subevent; +static int hf_bthci_evt_subevent_tx_status; +static int hf_bthci_evt_subevent_responses; +static int hf_bthci_evt_response_slot; +static int hf_bthci_evt_num_subevents; +static int hf_bthci_evt_subevent_interval; +static int hf_bthci_evt_response_slot_delay; +static int hf_bthci_evt_response_slot_spacing; +static int hf_bthci_evt_periodic_event_counter; +static int hf_packet_type_acl; +static int hf_packet_type_acl_dh5; +static int hf_packet_type_acl_dm5; +static int hf_packet_type_acl_3dh5; +static int hf_packet_type_acl_2dh5; +static int hf_packet_type_acl_dh3; +static int hf_packet_type_acl_dm3; +static int hf_packet_type_acl_3dh3; +static int hf_packet_type_acl_2dh3; +static int hf_packet_type_acl_reserved_5_7; +static int hf_packet_type_acl_dh1; +static int hf_packet_type_acl_dm1; +static int hf_packet_type_acl_3dh1; +static int hf_packet_type_acl_2dh1; +static int hf_packet_type_acl_reserved_0; +static int hf_packet_type_sco; +static int hf_packet_type_sco_reserved_15_8; +static int hf_packet_type_sco_hv3; +static int hf_packet_type_sco_hv2; +static int hf_packet_type_sco_hv1; +static int hf_packet_type_sco_reserved_4_0; static int * const hfx_bthci_evt_le_features[] = { &hf_bthci_evt_le_features_encryption, &hf_bthci_evt_le_features_connection_parameters_request_procedure, &hf_bthci_evt_le_features_extended_reject_indication, - &hf_bthci_evt_le_features_slave_initiated_features_exchange, + &hf_bthci_evt_le_features_peripheral_initiated_features_exchange, &hf_bthci_evt_le_features_ping, &hf_bthci_evt_le_features_data_packet_length_extension, &hf_bthci_evt_le_features_ll_privacy, @@ -611,8 +630,8 @@ static int * const hfx_bthci_evt_le_features[] = { &hf_bthci_evt_le_features_periodic_advertising_sync_transfer_receiver, &hf_bthci_evt_le_features_sleep_clock_accuracy_updates, &hf_bthci_evt_le_features_remote_public_key_validation, - &hf_bthci_evt_le_features_cis_master, - &hf_bthci_evt_le_features_cis_slave, + &hf_bthci_evt_le_features_cis_central, + &hf_bthci_evt_le_features_cis_peripheral, &hf_bthci_evt_le_features_isochronous_broadcaster, &hf_bthci_evt_le_features_synchronized_receiver, &hf_bthci_evt_le_features_isochronous_channels_host_support, @@ -623,6 +642,10 @@ static int * const hfx_bthci_evt_le_features[] = { &hf_bthci_evt_le_features_connection_subrating, &hf_bthci_evt_le_features_connection_subrating_host_support, &hf_bthci_evt_le_features_channel_classification, + &hf_bthci_evt_le_features_coding_selection, + &hf_bthci_evt_le_features_coding_selection_host_support, + &hf_bthci_evt_le_features_periodic_advertising_responses_advertiser, + &hf_bthci_evt_le_features_periodic_advertising_responses_scanner, &hf_bthci_evt_le_features_reserved, NULL }; @@ -654,28 +677,28 @@ static int * const hfx_packet_type_sco[] = { NULL }; -static expert_field ei_event_undecoded = EI_INIT; -static expert_field ei_event_unknown_event = EI_INIT; -static expert_field ei_event_unexpected_event = EI_INIT; -static expert_field ei_event_unexpected_parameter = EI_INIT; -static expert_field ei_event_unknown_command = EI_INIT; -static expert_field ei_parameter_unexpected = EI_INIT; -static expert_field ei_manufacturer_data_changed = EI_INIT; -static expert_field ei_hci_revision_changed = EI_INIT; -static expert_field ei_lmp_subversion_changed = EI_INIT; -static expert_field ei_bad_link_type = EI_INIT; +static expert_field ei_event_undecoded; +static expert_field ei_event_unknown_event; +static expert_field ei_event_unexpected_event; +static expert_field ei_event_unexpected_parameter; +static expert_field ei_event_unknown_command; +static expert_field ei_parameter_unexpected; +static expert_field ei_manufacturer_data_changed; +static expert_field ei_hci_revision_changed; +static expert_field ei_lmp_subversion_changed; +static expert_field ei_bad_link_type; static dissector_table_t vendor_dissector_table; static dissector_table_t hci_vendor_table; -static int hf_bthci_evt_ext_advts_event_type = -1; -static int hf_bthci_evt_ext_advts_event_type_connectable = -1; -static int hf_bthci_evt_ext_advts_event_type_scannable = -1; -static int hf_bthci_evt_ext_advts_event_type_directed = -1; -static int hf_bthci_evt_ext_advts_event_type_scan_response = -1; -static int hf_bthci_evt_ext_advts_event_type_legacy = -1; -static int hf_bthci_evt_ext_advts_event_type_data_status = -1; -static int hf_bthci_evt_ext_advts_event_type_reserved = -1; +static int hf_bthci_evt_ext_advts_event_type; +static int hf_bthci_evt_ext_advts_event_type_connectable; +static int hf_bthci_evt_ext_advts_event_type_scannable; +static int hf_bthci_evt_ext_advts_event_type_directed; +static int hf_bthci_evt_ext_advts_event_type_scan_response; +static int hf_bthci_evt_ext_advts_event_type_legacy; +static int hf_bthci_evt_ext_advts_event_type_data_status; +static int hf_bthci_evt_ext_advts_event_type_reserved; static int * const hfx_bthci_evt_le_ext_advts_evt_type[] = { &hf_bthci_evt_ext_advts_event_type_connectable, @@ -688,11 +711,11 @@ static int * const hfx_bthci_evt_le_ext_advts_evt_type[] = { NULL }; -static int hf_bthci_evt_supported_switching_sample_rates = -1; -static int hf_bthci_evt_supported_switching_sample_rates_1us_switching_aod_tx = -1; -static int hf_bthci_evt_supported_switching_sample_rates_1us_sampling_aod_rx = -1; -static int hf_bthci_evt_supported_switching_sample_rates_1us_switching_and_sampling_aoa_rx = -1; -static int hf_bthci_evt_supported_switching_sample_rates_reserved = -1; +static int hf_bthci_evt_supported_switching_sample_rates; +static int hf_bthci_evt_supported_switching_sample_rates_1us_switching_aod_tx; +static int hf_bthci_evt_supported_switching_sample_rates_1us_sampling_aod_rx; +static int hf_bthci_evt_supported_switching_sample_rates_1us_switching_and_sampling_aoa_rx; +static int hf_bthci_evt_supported_switching_sample_rates_reserved; static int * const hfx_bthci_evt_supported_switching_sample_rates[] = { &hf_bthci_evt_supported_switching_sample_rates_1us_switching_aod_tx, @@ -702,9 +725,9 @@ static int * const hfx_bthci_evt_supported_switching_sample_rates[] = { NULL }; -static int hf_bthci_evt_simple_pairing_options = -1; -static int hf_bthci_evt_simple_pairing_options_remote_public_key_validation = -1; -static int hf_bthci_evt_simple_pairing_options_reserved = -1; +static int hf_bthci_evt_simple_pairing_options; +static int hf_bthci_evt_simple_pairing_options_remote_public_key_validation; +static int hf_bthci_evt_simple_pairing_options_reserved; static int * const hfx_bthci_evt_simple_pairing_options[] = { &hf_bthci_evt_simple_pairing_options_remote_public_key_validation, @@ -712,10 +735,10 @@ static int * const hfx_bthci_evt_simple_pairing_options[] = { NULL }; -static int hf_bthci_evt_transmit_power_level_flags = -1; -static int hf_bthci_evt_transmit_power_level_flags_minimum_power = -1; -static int hf_bthci_evt_transmit_power_level_flags_maximum_power = -1; -static int hf_bthci_evt_transmit_power_level_flags_reserved = -1; +static int hf_bthci_evt_transmit_power_level_flags; +static int hf_bthci_evt_transmit_power_level_flags_minimum_power; +static int hf_bthci_evt_transmit_power_level_flags_maximum_power; +static int hf_bthci_evt_transmit_power_level_flags_reserved; static int * const hfx_bthci_evt_transmit_power_level_flags[] = { &hf_bthci_evt_transmit_power_level_flags_minimum_power, @@ -725,28 +748,29 @@ static int * const hfx_bthci_evt_transmit_power_level_flags[] = { }; /* Initialize the subtree pointers */ -static gint ett_bthci_evt = -1; -static gint ett_opcode = -1; -static gint ett_lmp_subtree = -1; -static gint ett_ptype_subtree = -1; -static gint ett_le_state_subtree = -1; -static gint ett_le_channel_map = -1; -static gint ett_le_features = -1; -static gint ett_le_report = -1; -static gint ett_codecs = -1; -static gint ett_mws_transport_layers = -1; -static gint ett_mws_transport_layers_item = -1; -static gint ett_mws_to_mws_baud_rates = -1; -static gint ett_mws_to_mws_baud_rates_transport_item = -1; -static gint ett_mws_from_mws_baud_rates = -1; -static gint ett_mws_from_mws_baud_rates_transport_item = -1; -static gint ett_expert = -1; -static gint ett_le_ext_advts_event_type = -1; -static gint ett_iq_sample_list = -1; -static gint ett_iq_samples = -1; -static gint ett_simple_pairing_options = -1; -static gint ett_supported_switching_sample_rates = -1; -static gint ett_transmit_power_level_flags = -1; +static gint ett_bthci_evt; +static gint ett_opcode; +static gint ett_lmp_subtree; +static gint ett_ptype_subtree; +static gint ett_le_state_subtree; +static gint ett_le_channel_map; +static gint ett_le_features; +static gint ett_le_report; +static gint ett_codecs; +static gint ett_mws_transport_layers; +static gint ett_mws_transport_layers_item; +static gint ett_mws_to_mws_baud_rates; +static gint ett_mws_to_mws_baud_rates_transport_item; +static gint ett_mws_from_mws_baud_rates; +static gint ett_mws_from_mws_baud_rates_transport_item; +static gint ett_expert; +static gint ett_le_ext_advts_event_type; +static gint ett_iq_sample_list; +static gint ett_iq_samples; +static gint ett_simple_pairing_options; +static gint ett_supported_switching_sample_rates; +static gint ett_transmit_power_level_flags; +static gint ett_adv_subevent_responses; extern value_string_ext ext_usb_vendors_vals; extern value_string_ext ext_usb_products_vals; @@ -773,7 +797,7 @@ static const value_string evt_code_vals[] = { {0x07, "Remote Name Request Complete"}, {0x08, "Encryption Change"}, {0x09, "Change Connection Link Key Complete"}, - {0x0a, "Master Link Key Complete"}, + {0x0a, "Link Key Type Changed"}, {0x0b, "Read Remote Supported Features"}, {0x0c, "Read Remote Version Information Complete"}, {0x0d, "QoS Setup Complete"}, @@ -834,11 +858,11 @@ static const value_string evt_code_vals[] = { {0x4e, "Triggered Clock Capture"}, {0x4f, "Synchronization Train Complete"}, {0x50, "Synchronization Train Received"}, - {0x51, "Connectionless Slave Broadcast Receive"}, - {0x52, "Connectionless Slave Broadcast Timeout"}, + {0x51, "Connectionless Peripheral Broadcast Receive"}, + {0x52, "Connectionless Peripheral Broadcast Timeout"}, {0x53, "Truncated Page Complete"}, - {0x54, "Slave Page Response Timeout"}, - {0x55, "Connectionless Slave Broadcast Channel Map Change"}, + {0x54, "Peripheral Page Response Timeout"}, + {0x55, "Connectionless Peripheral Broadcast Channel Map Change"}, {0x56, "Inquiry Response Notification"}, /* Core 4 */ {0x57, "Authenticated Payload Timeout Expired"}, @@ -903,6 +927,7 @@ const value_string bthci_evt_lmp_version[] = { {0x0a, "5.1"}, {0x0b, "5.2"}, {0x0c, "5.3"}, + {0x0d, "5.4"}, {0, NULL } }; @@ -923,6 +948,7 @@ const value_string bthci_evt_hci_version[] = { {0x0a, "5.1"}, {0x0b, "5.2"}, {0x0c, "5.3"}, + {0x0d, "5.4"}, {0, NULL } }; @@ -934,14 +960,14 @@ static const value_string evt_service_types[] = { }; static const value_string evt_role_vals[] = { - {0x00, "Currently the Master for specified BD_ADDR"}, - {0x01, "Currently the Slave for specified BD_ADDR"}, + {0x00, "Currently the Central for specified BD_ADDR"}, + {0x01, "Currently the Peripheral for specified BD_ADDR"}, {0, NULL } }; static const value_string evt_role_vals_handle[] = { - {0x00, "Currently the Master for this connection handle"}, - {0x01, "Currently the Slave for this connection handle"}, + {0x00, "Currently the Central for this connection handle"}, + {0x01, "Currently the Peripheral for this connection handle"}, {0, NULL } }; @@ -958,9 +984,11 @@ static const value_string evt_key_types[] = { {0x01, "Local Unit Key"}, {0x02, "Remote Unit Key"}, {0x03, "Debug Combination Key"}, - {0x04, "Unauthenticated Combination Key"}, - {0x05, "Authenticated Combination Key"}, + {0x04, "Unauthenticated Combination Key, P-192"}, + {0x05, "Authenticated Combination Key, P-192"}, {0x06, "Changed Combination Key"}, + {0x07, "Unauthenticated Combination Key, P-256"}, + {0x08, "Authenticated Combination Key, P-256"}, {0, NULL } }; @@ -1067,12 +1095,12 @@ static const value_string evt_le_meta_subevent[] = { { 0x07, "LE Data Length Change" }, { 0x08, "LE Read Local P-256 Public Key Complete" }, { 0x09, "LE Generate DHKey Complete" }, - { 0x0A, "LE Enhanced Connection Complete" }, + { 0x0A, "LE Enhanced Connection Complete [v1]" }, { 0x0B, "LE Direct Advertising Report" }, { 0x0C, "LE PHY Update Complete" }, { 0x0D, "LE Extended Advertising Report" }, - { 0x0E, "LE Periodic Advertising Sync Established" }, - { 0x0F, "LE Periodic Advertising Report" }, + { 0x0E, "LE Periodic Advertising Sync Established [v1]" }, + { 0x0F, "LE Periodic Advertising Report [v1]" }, { 0x10, "LE Periodic Advertising Sync Lost" }, { 0x11, "LE Scan Timeout" }, { 0x12, "LE Advertising Set Terminated" }, @@ -1081,7 +1109,7 @@ static const value_string evt_le_meta_subevent[] = { { 0x15, "LE Connectionless IQ Report" }, { 0x16, "LE Connection IQ Report" }, { 0x17, "LE CTE Request Failed" }, - { 0x18, "LE Periodic Advertising Sync Transfer Received" }, + { 0x18, "LE Periodic Advertising Sync Transfer Received [v1]" }, { 0x19, "LE CIS Established" }, { 0x1A, "LE CIS Request" }, { 0x1B, "LE Create BIG Complete" }, @@ -1093,6 +1121,12 @@ static const value_string evt_le_meta_subevent[] = { { 0x21, "LE Transmit Power Reporting" }, { 0x22, "LE BIGInfo Advertising Report" }, { 0x23, "LE Subrate Change" }, + { 0x24, "LE Periodic Advertising Sync Established [v2]" }, + { 0x25, "LE Periodic Advertising Report [v2]" }, + { 0x26, "LE Periodic Advertising Sync Transfer Received [v2]" }, + { 0x27, "LE Periodic Advertising Subevent Data Request" }, + { 0x28, "LE Periodic Advertising Response Report" }, + { 0x29, "LE Enhanced Connection Complete [v2]" }, { 0, NULL } }; @@ -1152,6 +1186,8 @@ const value_string bthci_evt_codec_id_vals[] = { { 0x03, "Transparent" }, { 0x04, "Linear PCM" }, { 0x05, "mSBC" }, + { 0x06, "LC3" }, + { 0x07, "G.729A" }, { 0xFF, "Vendor Specific" }, { 0, NULL } }; @@ -1161,12 +1197,14 @@ static const value_string ext_adv_data_status_vals[] = { {0x01, "Incomplete, more to come"}, {0x02, "Incomplete, truncated, no more to come"}, {0x03, "Reserved"}, + {0xFF, "Failed To Receive"}, {0, NULL } }; static const value_string bthci_evt_primary_phy_vals[] = { {0x01, "LE 1M"}, {0x03, "LE Coded"}, + {0x04, "LE Coded, S=2"}, {0, NULL } }; @@ -1175,6 +1213,7 @@ static const value_string bthci_evt_secondary_phy_vals[] = { {0x01, "LE 1M"}, {0x02, "LE 2M"}, {0x03, "LE Coded"}, + {0x04, "LE Coded, S=2"}, {0, NULL } }; @@ -1213,13 +1252,28 @@ static const value_string power_report_reason_vals[] = { static const unit_name_string units_number_events = { " (number events)", NULL }; +static const value_string tx_status_vals[] = { + {0x00, "Transmitted"}, + {0x01, "Not Transmitted"}, + {0, NULL } +}; + +static const value_string uint8_no_handle[] = { + {0xFF, "No Handle"}, + {0, NULL} +}; + +static const value_string uint16_no_handle[] = { + {0xFFFF, "No Handle"}, + {0, NULL} +}; void proto_register_bthci_evt(void); void proto_reg_handoff_bthci_evt(void); static void bthci_evt_vendor_prompt(packet_info *pinfo _U_, gchar* result) { - g_snprintf(result, MAX_DECODE_AS_PROMPT_LEN, "Vendor as"); + snprintf(result, MAX_DECODE_AS_PROMPT_LEN, "Vendor as"); } static gpointer bthci_evt_vendor_value(packet_info *pinfo _U_) @@ -1227,10 +1281,10 @@ static gpointer bthci_evt_vendor_value(packet_info *pinfo _U_) return NULL; } -static void add_opcode(wmem_list_t *opcode_list, guint16 opcode, enum command_status command_status) { +static void add_opcode(wmem_allocator_t *scope, wmem_list_t *opcode_list, guint16 opcode, enum command_status command_status) { opcode_list_data_t *opcode_list_data; - opcode_list_data = wmem_new(wmem_packet_scope(), opcode_list_data_t); + opcode_list_data = wmem_new(scope, opcode_list_data_t); if (opcode_list_data) { opcode_list_data->opcode = opcode; opcode_list_data->command_status = command_status; @@ -1265,7 +1319,7 @@ save_remote_device_name(tvbuff_t *tvb, gint offset, packet_info *pinfo, switch(tvb_get_guint8(tvb, offset + i + 1)) { case 0x08: /* Device Name, shortened */ case 0x09: /* Device Name, full */ - name = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + i + 2, length - 1, ENC_UTF_8); + name = tvb_get_string_enc(pinfo->pool, tvb, offset + i + 2, length - 1, ENC_UTF_8); frame_number = pinfo->num; bd_addr_oui = bd_addr[0] << 16 | bd_addr[1] << 8 | bd_addr[2]; @@ -1303,7 +1357,7 @@ static void send_hci_summary_status_tap(guint8 status, packet_info *pinfo, bluet if (have_tap_listener(bluetooth_hci_summary_tap)) { bluetooth_hci_summary_tap_t *tap_hci_summary; - tap_hci_summary = wmem_new(wmem_packet_scope(), bluetooth_hci_summary_tap_t); + tap_hci_summary = wmem_new(pinfo->pool, bluetooth_hci_summary_tap_t); tap_hci_summary->interface_id = bluetooth_data->interface_id; tap_hci_summary->adapter_id = bluetooth_data->adapter_id; @@ -1323,7 +1377,7 @@ static void send_hci_summary_pending_tap(packet_info *pinfo, bluetooth_data_t *b if (have_tap_listener(bluetooth_hci_summary_tap)) { bluetooth_hci_summary_tap_t *tap_hci_summary; - tap_hci_summary = wmem_new(wmem_packet_scope(), bluetooth_hci_summary_tap_t); + tap_hci_summary = wmem_new(pinfo->pool, bluetooth_hci_summary_tap_t); tap_hci_summary->interface_id = bluetooth_data->interface_id; tap_hci_summary->adapter_id = bluetooth_data->adapter_id; @@ -1340,7 +1394,7 @@ static void send_hci_summary_reason_tap(guint8 reason, packet_info *pinfo, bluet if (have_tap_listener(bluetooth_hci_summary_tap)) { bluetooth_hci_summary_tap_t *tap_hci_summary; - tap_hci_summary = wmem_new(wmem_packet_scope(), bluetooth_hci_summary_tap_t); + tap_hci_summary = wmem_new(pinfo->pool, bluetooth_hci_summary_tap_t); tap_hci_summary->interface_id = bluetooth_data->interface_id; tap_hci_summary->adapter_id = bluetooth_data->adapter_id; @@ -1455,7 +1509,7 @@ dissect_bthci_evt_connect_complete(tvbuff_t *tvb, int offset, packet_info *pinfo chandle_session = (chandle_session_t *) wmem_new(wmem_file_scope(), chandle_session_t); chandle_session->connect_in_frame = k_frame_number; - chandle_session->disconnect_in_frame = max_disconnect_in_frame; + chandle_session->disconnect_in_frame = bluetooth_max_disconnect_in_frame; chandle_session->link_type = BT_LINK_TYPE_ACL; wmem_tree_insert32_array(bluetooth_data->chandle_sessions, key, chandle_session); @@ -1611,8 +1665,8 @@ dissect_bthci_evt_lmp_features(tvbuff_t *tvb, int offset, packet_info *pinfo _U_ proto_tree_add_item(lmp_tree, hf_lmp_feature_ev4_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_ev5_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved_34, tvb, offset, 1, ENC_LITTLE_ENDIAN); - proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_capable_slave, tvb, offset, 1, ENC_LITTLE_ENDIAN); - proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_classification_slave, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_capable_peripheral, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_classification_peripheral, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_br_edr_not_supported, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_le_supported_controller, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_3slot_edr_acl_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -1621,8 +1675,8 @@ dissect_bthci_evt_lmp_features(tvbuff_t *tvb, int offset, packet_info *pinfo _U_ proto_tree_add_item(lmp_tree, hf_lmp_feature_5slot_edr_acl_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_sniff_subrating, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_pause_encryption, tvb, offset, 1, ENC_LITTLE_ENDIAN); - proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_capable_master, tvb, offset, 1, ENC_LITTLE_ENDIAN); - proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_classification_master, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_capable_central, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_classification_central, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_edr_esco_2mbps_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_edr_esco_3mbps_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_3slot_edr_esco_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -1659,8 +1713,8 @@ dissect_bthci_evt_lmp_features(tvbuff_t *tvb, int offset, packet_info *pinfo _U_ break; case 2: - proto_tree_add_item(lmp_tree, hf_lmp_feature_csb_master_operation, tvb, offset, 1, ENC_LITTLE_ENDIAN); - proto_tree_add_item(lmp_tree, hf_lmp_feature_csb_slave_operation, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(lmp_tree, hf_lmp_feature_csb_central_operation, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(lmp_tree, hf_lmp_feature_csb_peripheral_operation, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_synchronization_train, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_synchronization_scan, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(lmp_tree, hf_lmp_feature_inquiry_response_notification_event, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -1766,7 +1820,7 @@ dissect_bthci_evt_remote_name_req_complete(tvbuff_t *tvb, int offset, offset = dissect_bd_addr(hf_bthci_evt_bd_addr, pinfo, tree, tvb, offset, FALSE, bluetooth_data->interface_id, bluetooth_data->adapter_id, bd_addr); - proto_tree_add_item(tree, hf_bthci_evt_remote_name, tvb, offset, 248, ENC_UTF_8|ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_remote_name, tvb, offset, 248, ENC_UTF_8); if (!pinfo->fd->visited) { wmem_tree_key_t key[6]; guint32 interface_id; @@ -1808,14 +1862,14 @@ dissect_bthci_evt_remote_name_req_complete(tvbuff_t *tvb, int offset, if (have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; memcpy(tap_device->bd_addr, bd_addr, 6); tap_device->has_bd_addr = TRUE; tap_device->is_local = FALSE; tap_device->type = BLUETOOTH_DEVICE_NAME; - tap_device->data.name = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 248, ENC_UTF_8); + tap_device->data.name = tvb_get_string_enc(pinfo->pool, tvb, offset, 248, ENC_UTF_8); tap_queue_packet(bluetooth_device_tap, pinfo, tap_device); } @@ -1876,7 +1930,7 @@ dissect_bthci_evt_read_remote_version_information_complete(tvbuff_t *tvb, int of subtree = (wmem_tree_t *) wmem_tree_lookup32_array(bluetooth_data->chandle_to_bdaddr, key); remote_bdaddr = (subtree) ? (remote_bdaddr_t *) wmem_tree_lookup32_le(subtree, pinfo->num) : NULL; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); tap_device->type = BLUETOOTH_DEVICE_REMOTE_VERSION; tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -2035,9 +2089,9 @@ dissect_bthci_evt_role_change(tvbuff_t *tvb, int offset, packet_info *pinfo, device_role = (device_role_t *) wmem_new(wmem_file_scope(), device_role_t); device_role->change_in_frame = frame_number; if (role == 0) - device_role->role = ROLE_SLAVE; + device_role->role = ROLE_PERIPHERAL; else if (role == 1) - device_role->role = ROLE_MASTER; + device_role->role = ROLE_CENTRAL; else device_role->role = ROLE_UNKNOWN; @@ -2057,7 +2111,7 @@ dissect_bthci_evt_hardware_error(tvbuff_t *tvb, int offset, packet_info *pinfo, if (have_tap_listener(bluetooth_hci_summary_tap)) { bluetooth_hci_summary_tap_t *tap_hci_summary; - tap_hci_summary = wmem_new(wmem_packet_scope(), bluetooth_hci_summary_tap_t); + tap_hci_summary = wmem_new(pinfo->pool, bluetooth_hci_summary_tap_t); tap_hci_summary->interface_id = bluetooth_data->interface_id; tap_hci_summary->adapter_id = bluetooth_data->adapter_id; @@ -2225,7 +2279,7 @@ dissect_bthci_evt_command_status(tvbuff_t *tvb, int offset, packet_info *pinfo, if (have_tap_listener(bluetooth_hci_summary_tap)) { bluetooth_hci_summary_tap_t *tap_hci_summary; - tap_hci_summary = wmem_new(wmem_packet_scope(), bluetooth_hci_summary_tap_t); + tap_hci_summary = wmem_new(pinfo->pool, bluetooth_hci_summary_tap_t); tap_hci_summary->interface_id = bluetooth_data->interface_id; tap_hci_summary->adapter_id = bluetooth_data->adapter_id; @@ -2242,9 +2296,9 @@ dissect_bthci_evt_command_status(tvbuff_t *tvb, int offset, packet_info *pinfo, } if (status_code != 0) - add_opcode(opcode_list, opcode, COMMAND_STATUS_RESULT); + add_opcode(pinfo->pool, opcode_list, opcode, COMMAND_STATUS_RESULT); else - add_opcode(opcode_list, opcode, COMMAND_STATUS_PENDING); + add_opcode(pinfo->pool, opcode_list, opcode, COMMAND_STATUS_PENDING); ti_opcode = proto_tree_add_item(tree, hf_bthci_evt_opcode, tvb, offset, 2, ENC_LITTLE_ENDIAN); opcode_tree = proto_item_add_subtree(ti_opcode, ett_opcode); @@ -2478,7 +2532,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, if (have_tap_listener(bluetooth_hci_summary_tap)) { bluetooth_hci_summary_tap_t *tap_hci_summary; - tap_hci_summary = wmem_new(wmem_packet_scope(), bluetooth_hci_summary_tap_t); + tap_hci_summary = wmem_new(pinfo->pool, bluetooth_hci_summary_tap_t); tap_hci_summary->interface_id = bluetooth_data->interface_id; tap_hci_summary->adapter_id = bluetooth_data->adapter_id; @@ -2527,7 +2581,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_item_append_text(item, " (%g sec)", tvb_get_letohs(tvb, offset)*0.01); offset += 2; - proto_tree_add_item(tree, hf_bthci_evt_le_master_clock_accuracy, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_le_central_clock_accuracy, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; if (!pinfo->fd->visited && status == STATUS_SUCCESS) { @@ -2565,12 +2619,12 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, chandle_session = (chandle_session_t *) wmem_new(wmem_file_scope(), chandle_session_t); chandle_session->connect_in_frame = k_frame_number; - chandle_session->disconnect_in_frame = max_disconnect_in_frame; + chandle_session->disconnect_in_frame = bluetooth_max_disconnect_in_frame; chandle_session->link_type = BT_LINK_TYPE_LL; wmem_tree_insert32_array(bluetooth_data->chandle_sessions, key, chandle_session); } - add_opcode(opcode_list, 0x200D, COMMAND_STATUS_NORMAL); /* LE Create Connection */ + add_opcode(pinfo->pool, opcode_list, 0x200D, COMMAND_STATUS_NORMAL); /* LE Create Connection */ break; case 0x02: /* LE Advertising Report */ @@ -2593,7 +2647,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, if (length > 0) { bluetooth_eir_ad_data_t *ad_data; - ad_data = wmem_new0(wmem_packet_scope(), bluetooth_eir_ad_data_t); + ad_data = wmem_new0(pinfo->pool, bluetooth_eir_ad_data_t); ad_data->interface_id = bluetooth_data->interface_id; ad_data->adapter_id = bluetooth_data->adapter_id; ad_data->bd_addr = bd_addr; @@ -2624,7 +2678,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_item_append_text(item, " (%g sec)", tvb_get_letohs(tvb, offset)*0.01); offset += 2; - add_opcode(opcode_list, 0x2013, COMMAND_STATUS_NORMAL); /* LE Connection Update */ + add_opcode(pinfo->pool, opcode_list, 0x2013, COMMAND_STATUS_NORMAL); /* LE Connection Update */ break; case 0x04: /* LE Read Remote Features Complete */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -2637,7 +2691,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree_add_bitmask(tree, tvb, offset, hf_bthci_evt_le_features, ett_le_features, hfx_bthci_evt_le_features, ENC_LITTLE_ENDIAN); offset += 8; - add_opcode(opcode_list, 0x2016, COMMAND_STATUS_NORMAL); /* LE Read Remote Features */ + add_opcode(pinfo->pool, opcode_list, 0x2016, COMMAND_STATUS_NORMAL); /* LE Read Remote Features */ break; case 0x05: /* LE Long Term Key Request */ proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -2692,7 +2746,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree_add_item(tree, hf_bthci_evt_le_local_p_256_public_key, tvb, offset, 64, ENC_NA); offset += 64; - add_opcode(opcode_list, 0x2025, COMMAND_STATUS_NORMAL); /* LE Read Local P-256 Public Key */ + add_opcode(pinfo->pool, opcode_list, 0x2025, COMMAND_STATUS_NORMAL); /* LE Read Local P-256 Public Key */ break; case 0x09: /* LE Generate DHKey Complete */ @@ -2703,10 +2757,11 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree_add_item(tree, hf_bthci_evt_le_dhkey, tvb, offset, 32, ENC_NA); offset += 32; - add_opcode(opcode_list, 0x2026, COMMAND_STATUS_NORMAL); /* LE Generate DHKey */ + add_opcode(pinfo->pool, opcode_list, 0x2026, COMMAND_STATUS_NORMAL); /* LE Generate DHKey */ break; - case 0x0A: /* LE Enhanced Connection Complete */ + case 0x0A: /* LE Enhanced Connection Complete [v1] */ + case 0x29: /* LE Enhanced Connection Complete [v2] */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN); status = tvb_get_guint8(tvb, offset); send_hci_summary_status_tap(status, pinfo, bluetooth_data); @@ -2737,9 +2792,16 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_item_append_text(item, " (%g sec)", tvb_get_letohs(tvb, offset)*0.01); offset += 2; - proto_tree_add_item(tree, hf_bthci_evt_le_master_clock_accuracy, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_le_central_clock_accuracy, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; + if (subevent_code == 0x29) { + proto_tree_add_item(tree, hf_bthci_evt_advertising_handle, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(tree, hf_bthci_evt_sync_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + } + if (!pinfo->fd->visited && status == STATUS_SUCCESS) { wmem_tree_key_t key[5]; guint32 k_interface_id; @@ -2775,12 +2837,12 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, chandle_session = (chandle_session_t *) wmem_new(wmem_file_scope(), chandle_session_t); chandle_session->connect_in_frame = k_frame_number; - chandle_session->disconnect_in_frame = max_disconnect_in_frame; + chandle_session->disconnect_in_frame = bluetooth_max_disconnect_in_frame; chandle_session->link_type = BT_LINK_TYPE_LL; wmem_tree_insert32_array(bluetooth_data->chandle_sessions, key, chandle_session); } - add_opcode(opcode_list, 0x200D, COMMAND_STATUS_NORMAL); /* LE Create Connection */ + add_opcode(pinfo->pool, opcode_list, 0x200D, COMMAND_STATUS_NORMAL); /* LE Create Connection */ break; case 0x0B: /* LE Direct Advertising Report */ @@ -2891,7 +2953,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, if (length > 0) { bluetooth_eir_ad_data_t *ad_data; - ad_data = wmem_new0(wmem_packet_scope(), bluetooth_eir_ad_data_t); + ad_data = wmem_new0(pinfo->pool, bluetooth_eir_ad_data_t); ad_data->interface_id = bluetooth_data->interface_id; ad_data->adapter_id = bluetooth_data->adapter_id; ad_data->bd_addr = bd_addr; @@ -2903,7 +2965,8 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, } } break; - case 0x0E: /* LE Periodic Advertising Sync Established */ + case 0x0E: /* LE Periodic Advertising Sync Established [v1] */ + case 0x24: /* LE Periodic Advertising Sync Established [v2] */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_NA); status = tvb_get_guint8(tvb, offset); send_hci_summary_status_tap(status, pinfo, bluetooth_data); @@ -2922,8 +2985,19 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, offset += 2; proto_tree_add_item(tree, hf_bthci_evt_advertiser_clock_accuracy, tvb, offset, 1, ENC_NA); offset += 1; + if (subevent_code == 0x24) { + proto_tree_add_item(tree, hf_bthci_evt_num_subevents, tvb, offset, 1, ENC_NA); + offset+=1; + proto_tree_add_item(tree, hf_bthci_evt_subevent_interval, tvb, offset, 1, ENC_NA); + offset+=1; + proto_tree_add_item(tree, hf_bthci_evt_response_slot_delay, tvb, offset, 1, ENC_NA); + offset+=1; + proto_tree_add_item(tree, hf_bthci_evt_response_slot_spacing, tvb, offset, 1, ENC_NA); + offset+=1; + } break; - case 0x0F: /* LE Periodic Advertising Report */ + case 0x0F: /* LE Periodic Advertising Report [v1] */ + case 0x25: /* LE Periodic Advertising Report [v2] */ { guint8 length; proto_tree_add_item(tree, hf_bthci_evt_sync_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -2938,6 +3012,12 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, offset += 1; proto_tree_add_item(tree, hf_bthci_evt_cte_type, tvb, offset, 1, ENC_NA); offset += 1; + if (subevent_code == 0x25) { + proto_tree_add_item(tree, hf_bthci_evt_periodic_event_counter, tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + proto_tree_add_item(tree, hf_bthci_evt_subevent, tvb, offset, 1, ENC_NA); + offset += 1; + } proto_tree_add_item(tree, hf_bthci_evt_data_status, tvb, offset, 1, ENC_NA); offset += 1; proto_tree_add_item(tree, hf_bthci_evt_data_length, tvb, offset, 1, ENC_NA); @@ -3027,7 +3107,8 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; break; - case 0x18: /* LE Periodic Advertising Sync Transfer Received */ + case 0x18: /* LE Periodic Advertising Sync Transfer Received [v1] */ + case 0x26: /* LE Periodic Advertising Sync Transfer Received [v2] */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_NA); status = tvb_get_guint8(tvb, offset); send_hci_summary_status_tap(status, pinfo, bluetooth_data); @@ -3050,6 +3131,16 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, offset += 2; proto_tree_add_item(tree, hf_bthci_evt_advertiser_clock_accuracy, tvb, offset, 1, ENC_NA); offset += 1; + if (subevent_code == 0x26) { + proto_tree_add_item(tree, hf_bthci_evt_num_subevents, tvb, offset, 1, ENC_NA); + offset+=1; + proto_tree_add_item(tree, hf_bthci_evt_subevent_interval, tvb, offset, 1, ENC_NA); + offset+=1; + proto_tree_add_item(tree, hf_bthci_evt_response_slot_delay, tvb, offset, 1, ENC_NA); + offset+=1; + proto_tree_add_item(tree, hf_bthci_evt_response_slot_spacing, tvb, offset, 1, ENC_NA); + offset+=1; + } break; case 0x19: /* LE CIS Established */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_NA); @@ -3086,7 +3177,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, chandle_session = (chandle_session_t *) wmem_new(wmem_file_scope(), chandle_session_t); chandle_session->connect_in_frame = k_frame_number; - chandle_session->disconnect_in_frame = max_disconnect_in_frame; + chandle_session->disconnect_in_frame = bluetooth_max_disconnect_in_frame; chandle_session->link_type = BT_LINK_TYPE_ISO; wmem_tree_insert32_array(bluetooth_data->chandle_sessions, key, chandle_session); } @@ -3095,27 +3186,27 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, offset += 3; proto_tree_add_item(tree, hf_bthci_evt_cis_sync_delay, tvb, offset, 3, ENC_LITTLE_ENDIAN); offset += 3; - proto_tree_add_item(tree, hf_bthci_evt_transport_latency_m_to_s, tvb, offset, 3, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_transport_latency_c_to_p, tvb, offset, 3, ENC_LITTLE_ENDIAN); offset += 3; - proto_tree_add_item(tree, hf_bthci_evt_transport_latency_s_to_m, tvb, offset, 3, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_transport_latency_p_to_c, tvb, offset, 3, ENC_LITTLE_ENDIAN); offset += 3; - proto_tree_add_item(tree, hf_bthci_evt_phy_m_to_s, tvb, offset, 1, ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_phy_c_to_p, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_phy_s_to_m, tvb, offset, 1, ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_phy_p_to_c, tvb, offset, 1, ENC_NA); offset += 1; proto_tree_add_item(tree, hf_bthci_evt_nse, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_bn_m_to_s, tvb, offset, 1, ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_bn_c_to_p, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_bn_s_to_m, tvb, offset, 1, ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_bn_p_to_c, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_ft_m_to_s, tvb, offset, 1, ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_ft_c_to_p, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_ft_s_to_m, tvb, offset, 1, ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_ft_p_to_c, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_max_pdu_m_to_s, tvb, offset, 2, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_max_pdu_c_to_p, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; - proto_tree_add_item(tree, hf_bthci_evt_max_pdu_s_to_m, tvb, offset, 2, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_max_pdu_p_to_c, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; item = proto_tree_add_item(tree, hf_bthci_evt_iso_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN); proto_item_append_text(item, " (%g msec)", tvb_get_letohs(tvb, offset) * 1.25); @@ -3198,7 +3289,7 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, num_bis = tvb_get_guint8(tvb, offset); offset += 1; while (num_bis) { - proto_tree_add_item(tree, hf_bthci_evt_bis_handle, tvb, offset, 2, ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_bis_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; num_bis -= 1; } @@ -3340,6 +3431,63 @@ dissect_bthci_evt_le_meta(tvbuff_t *tvb, int offset, packet_info *pinfo, offset += 2; } break; + case 0x27: /* LE Periodic Advertising Subevent Data Request */ + proto_tree_add_item(tree, hf_bthci_evt_advertising_handle, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(tree, hf_bthci_evt_subevent_start, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(tree, hf_bthci_evt_subevent_count, tvb, offset, 1, ENC_NA); + offset += 1; + break; + case 0x28: /* LE Periodic Advertising Response Report */ + { + guint8 num_reponses, length; + proto_item *report_item; + proto_tree *report_tree; + proto_tree_add_item(tree, hf_bthci_evt_advertising_handle, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(tree, hf_bthci_evt_subevent, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(tree, hf_bthci_evt_subevent_tx_status, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(tree, hf_bthci_evt_num_responses, tvb, offset, 1, ENC_NA); + num_reponses = tvb_get_guint8(tvb, offset); + offset += 1; + for (int i = 0; i < num_reponses; i++) { + length = 6 + tvb_get_guint8(tvb, offset+5); + report_item = proto_tree_add_none_format(tree, hf_bthci_evt_subevent_responses, tvb, offset, length, + "Sub-event Response Slot: %u, Data Status: %s", + tvb_get_guint8(tvb, offset+3), + val_to_str(tvb_get_guint8(tvb, offset+4), ext_adv_data_status_vals, "0x%02x")); + report_tree = proto_item_add_subtree(report_item, ett_adv_subevent_responses); + + proto_tree_add_item(report_tree, hf_bthci_evt_tx_power, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(report_tree, hf_bthci_evt_rssi, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(report_tree, hf_bthci_evt_cte_type, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(report_tree, hf_bthci_evt_response_slot, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(report_tree, hf_bthci_evt_data_status, tvb, offset, 1, ENC_NA); + offset += 1; + proto_tree_add_item(report_tree, hf_bthci_evt_data_length, tvb, offset, 1, ENC_NA); + length = tvb_get_guint8(tvb, offset); + offset += 1; + if (length > 0) { + bluetooth_eir_ad_data_t *ad_data; + + ad_data = wmem_new0(pinfo->pool, bluetooth_eir_ad_data_t); + ad_data->interface_id = bluetooth_data->interface_id; + ad_data->adapter_id = bluetooth_data->adapter_id; + ad_data->bd_addr = NULL; + + call_dissector_with_data(btcommon_ad_handle, tvb_new_subset_length(tvb, offset, length), pinfo, report_tree, ad_data); + offset += length; + } + } + } + break; default: break; } @@ -3587,7 +3735,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (have_tap_listener(bluetooth_hci_summary_tap)) { bluetooth_hci_summary_tap_t *tap_hci_summary; - tap_hci_summary = wmem_new(wmem_packet_scope(), bluetooth_hci_summary_tap_t); + tap_hci_summary = wmem_new(pinfo->pool, bluetooth_hci_summary_tap_t); tap_hci_summary->interface_id = bluetooth_data->interface_id; tap_hci_summary->adapter_id = bluetooth_data->adapter_id; @@ -3720,6 +3868,9 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, case 0x0c7a: /* Write Secure Connections Host Support */ case 0x0c7f: /* Write Extended Page Timeout */ case 0x0c81: /* Write Extended Inquiry Length */ + case 0x0c82: /* Set Ecosystem Base Interval */ + case 0x0c83: /* Configure Data Path */ + case 0x0c84: /* Set Min Encryption Key Size */ case 0x140d: /* Set Triggered Clock Capture */ case 0x1802: /* Write Loopback Mode */ case 0x1803: /* Enable Device Under Test Mode */ @@ -3736,9 +3887,9 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, case 0x200b: /* LE Set Scan Parameters */ case 0x200c: /* LE Set Scan Enable */ case 0x200e: /* LE Create Connection Cancel */ - case 0x2010: /* LE Clear White List */ - case 0x2011: /* LE Add Device To White List */ - case 0x2012: /* LE Remove Device From White List */ + case 0x2010: /* LE Clear Filter Accept List */ + case 0x2011: /* LE Add Device To Filter Accept List */ + case 0x2012: /* LE Remove Device From Filter Accept List */ case 0x2014: /* LE Set Host Channel Classification */ case 0x201d: /* LE Receiver Test [v1] */ case 0x201e: /* LE Transmitter Test [v1] */ @@ -3777,6 +3928,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, case 0x205D: /* LE Set Default Periodic Advertising Sync Transfer Parameters */ case 0x205F: /* LE Modify Sleep Clock Accuracy */ case 0x2074: /* LE Set Host Feature */ + case 0x207B: /* LE Transmitter Test [v4] */ case 0x207C: /* LE Set Data Related Address Changes */ case 0x207D: /* LE Set Default Subrate */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -3839,7 +3991,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (local_addr && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -3915,7 +4067,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4082,12 +4234,12 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, send_hci_summary_status_tap(status, pinfo, bluetooth_data); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_device_name, tvb, offset, 248, ENC_UTF_8|ENC_NA); + proto_tree_add_item(tree, hf_bthci_evt_device_name, tvb, offset, 248, ENC_UTF_8); if (status == STATUS_SUCCESS && !pinfo->fd->visited) { gchar *name; localhost_name_entry_t *localhost_name_entry; - name = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 248, ENC_UTF_8); + name = tvb_get_string_enc(pinfo->pool, tvb, offset, 248, ENC_UTF_8); key[0].length = 1; key[0].key = &interface_id; @@ -4109,7 +4261,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4120,7 +4272,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, tap_device->has_bd_addr = FALSE; tap_device->is_local = TRUE; tap_device->type = BLUETOOTH_DEVICE_NAME; - tap_device->data.name = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 248, ENC_UTF_8); + tap_device->data.name = tvb_get_string_enc(pinfo->pool, tvb, offset, 248, ENC_UTF_8); tap_queue_packet(bluetooth_device_tap, pinfo, tap_device); } offset += 248; @@ -4139,7 +4291,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4168,7 +4320,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4196,7 +4348,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4225,7 +4377,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4259,7 +4411,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4389,7 +4541,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4417,7 +4569,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, { bluetooth_eir_ad_data_t *eir_data; - eir_data = wmem_new0(wmem_packet_scope(), bluetooth_eir_ad_data_t); + eir_data = wmem_new0(pinfo->pool, bluetooth_eir_ad_data_t); eir_data->interface_id = bluetooth_data->interface_id; eir_data->adapter_id = bluetooth_data->adapter_id; eir_data->bd_addr = NULL; @@ -4447,7 +4599,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -4561,7 +4713,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, case 0x0c74: /* Set Reserved LT_ADDR */ case 0x0c75: /* Delete Reserved LT_ADDR */ - case 0x0c76: /* Set Connectionless Slave Broadcast Data */ + case 0x0c76: /* Set Connectionless Peripheral Broadcast Data */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN); status = tvb_get_guint8(tvb, offset); send_hci_summary_status_tap(status, pinfo, bluetooth_data); @@ -4623,7 +4775,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, hci_version = tvb_get_guint8(tvb, offset - 8); lmp_version = tvb_get_guint8(tvb, offset - 5); - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); tap_device->type = BLUETOOTH_DEVICE_LOCAL_VERSION; tap_device->interface_id = interface_id; tap_device->adapter_id = adapter_id; @@ -4747,7 +4899,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -5076,7 +5228,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) { bluetooth_device_tap_t *tap_device; - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -5132,12 +5284,12 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, break; } - case 0x200f: /* LE Read White List Size */ + case 0x200f: /* LE Read Filter Accept List Size */ { proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN); send_hci_summary_status_tap(tvb_get_guint8(tvb, offset), pinfo, bluetooth_data); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_white_list_size, tvb, offset, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_filter_accept_list_size, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; break; } @@ -5253,7 +5405,8 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, break; } - case 0x2036: /* LE Set Extended Advertising Parameters */ + case 0x2036: /* LE Set Extended Advertising Parameters [v1] */ + case 0x207F: /* LE Set Extended Advertising Parameters [v2] */ { proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN); send_hci_summary_status_tap(tvb_get_guint8(tvb, offset), pinfo, bluetooth_data); @@ -5293,7 +5446,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, break; } - case 0x0441: /* Set Connectionless Slave Broadcast */ + case 0x0441: /* Set Connectionless Peripheral Broadcast */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_NA); send_hci_summary_status_tap(tvb_get_guint8(tvb, offset), pinfo, bluetooth_data); offset += 1; @@ -5301,11 +5454,11 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, proto_tree_add_item(tree, hf_bthci_evt_lt_addr, tvb, offset, 1, ENC_NA); offset += 1; - proto_tree_add_item(tree, hf_bthci_evt_connectionless_slave_broadcast_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_connectionless_peripheral_broadcast_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; break; - case 0x0442: /* Set Connectionless Slave Broadcast Receive */ + case 0x0442: /* Set Connectionless Peripheral Broadcast Receive */ proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_NA); send_hci_summary_status_tap(tvb_get_guint8(tvb, offset), pinfo, bluetooth_data); offset += 1; @@ -5660,6 +5813,25 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, offset += 1; break; + case 0x2082: /* LE Set Periodic Advertising Subevent */ + case 0x2086: /* LE Set Periodic Advertising Parameters */ + proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_NA); + send_hci_summary_status_tap(tvb_get_guint8(tvb, offset), pinfo, bluetooth_data); + offset += 1; + proto_tree_add_item(tree, hf_bthci_evt_advertising_handle, tvb, offset, 1, ENC_NA); + offset += 1; + break; + + case 0x2083: /* LE Set Periodic Advertising Response Data */ + case 0x2084: /* LE Set Periodic Advertising Sync Subevent */ + proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_NA); + send_hci_summary_status_tap(tvb_get_guint8(tvb, offset), pinfo, bluetooth_data); + offset += 1; + proto_tree_add_item(tree, hf_bthci_evt_sync_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + break; + + case 0x0401: /* Inquiry */ case 0x0405: /* Create Connection */ case 0x0406: /* Disconnect */ @@ -5670,7 +5842,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, case 0x0411: /* Authentication Requested */ case 0x0413: /* Set Connection Encryption */ case 0x0415: /* Change Connection Link Key */ - case 0x0417: /* Master Link Key */ + case 0x0417: /* Link Key Selection */ case 0x0419: /* Remote Name Request */ case 0x041B: /* Read Remote Supported Features */ case 0x041C: /* Read Remote Extended Features */ @@ -5708,6 +5880,8 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, case 0x2019: /* LE Start Encryption */ case 0x2025: /* LE Read Local P-256 Public Key */ case 0x2026: /* LE Generate DHKey [v1] */ + case 0x2043: /* LE Extended Create Connection [v1] */ + case 0x2044: /* LE Periodic Advertising Create Sync */ case 0x205E: /* LE Generate DHKey [v2] */ case 0x2064: /* LE Create CIS */ case 0x2066: /* LE Accept CIS Request */ @@ -5718,6 +5892,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, case 0x206D: /* LE Request Peer SCA */ case 0x2077: /* LE Read Remote Transmit Power Level */ case 0x207E: /* LE Subrate Request */ + case 0x2085: /* LE Extended Create Connection [v2] */ proto_tree_add_expert(tree, pinfo, &ei_event_unexpected_event, tvb, offset, tvb_captured_length_remaining(tvb, offset)); offset += tvb_reported_length_remaining(tvb, offset); @@ -5738,7 +5913,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, break; } - add_opcode(opcode_list, opcode, COMMAND_STATUS_NORMAL); + add_opcode(pinfo->pool, opcode_list, opcode, COMMAND_STATUS_NORMAL); return offset; } @@ -5791,7 +5966,7 @@ dissect_bthci_evt_change_conn_link_key_complete(tvbuff_t *tvb, int offset, } static int -dissect_bthci_evt_master_link_key_complete(tvbuff_t *tvb, int offset, +dissect_bthci_evt_link_key_type_changed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, bluetooth_data_t *bluetooth_data) { proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -5927,7 +6102,7 @@ dissect_bthci_evt_sync_connection_complete(tvbuff_t *tvb, int offset, /* chandle session */ chandle_session = (chandle_session_t *) wmem_new(wmem_file_scope(), chandle_session_t); chandle_session->connect_in_frame = frame_number; - chandle_session->disconnect_in_frame = max_disconnect_in_frame; + chandle_session->disconnect_in_frame = bluetooth_max_disconnect_in_frame; chandle_session->link_type = BT_LINK_TYPE_SCO; wmem_tree_insert32_array(bluetooth_data->chandle_sessions, key, chandle_session); @@ -6145,7 +6320,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat return 0; bluetooth_data = (bluetooth_data_t *) data; - opcode_list = wmem_list_new(wmem_packet_scope()); + opcode_list = wmem_list_new(pinfo->pool); ti = proto_tree_add_item(tree, proto_bthci_evt, tvb, offset, -1, ENC_NA); bthci_evt_tree = proto_item_add_subtree(ti, ett_bthci_evt); @@ -6182,13 +6357,13 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat evt_code = tvb_get_guint8(tvb, offset); proto_tree_add_item(bthci_evt_tree, hf_bthci_evt_code, tvb, offset, 1, ENC_LITTLE_ENDIAN); - proto_item_append_text(bthci_evt_tree, " - %s", val_to_str_ext_const(evt_code, &bthci_evt_evt_code_vals_ext, "Unknown 0x%08x")); + proto_item_append_text(bthci_evt_tree, " - %s", val_to_str_ext(evt_code, &bthci_evt_evt_code_vals_ext, "Unknown 0x%02x")); offset += 1; if (have_tap_listener(bluetooth_hci_summary_tap)) { bluetooth_hci_summary_tap_t *tap_hci_summary; - tap_hci_summary = wmem_new(wmem_packet_scope(), bluetooth_hci_summary_tap_t); + tap_hci_summary = wmem_new(pinfo->pool, bluetooth_hci_summary_tap_t); tap_hci_summary->interface_id = bluetooth_data->interface_id; tap_hci_summary->adapter_id = bluetooth_data->adapter_id; @@ -6209,14 +6384,14 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI_EVT"); - col_append_str(pinfo->cinfo, COL_INFO, val_to_str_ext_const(evt_code, &bthci_evt_evt_code_vals_ext, "Unknown 0x%08x")); + col_append_str(pinfo->cinfo, COL_INFO, val_to_str_ext(evt_code, &bthci_evt_evt_code_vals_ext, "Unknown 0x%02x")); if (param_length > 0) { switch(evt_code) { case 0x01: /* Inquiry Complete */ offset = dissect_bthci_evt_inquire_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x0401, COMMAND_STATUS_NORMAL); /* Inquiry */ - add_opcode(opcode_list, 0x0403, COMMAND_STATUS_NORMAL); /* Periodic Inquiry Mode */ + add_opcode(pinfo->pool, opcode_list, 0x0401, COMMAND_STATUS_NORMAL); /* Inquiry */ + add_opcode(pinfo->pool, opcode_list, 0x0403, COMMAND_STATUS_NORMAL); /* Periodic Inquiry Mode */ break; case 0x02: /* Inquiry result event */ @@ -6225,10 +6400,10 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat case 0x03: /* Connection Complete */ offset = dissect_bthci_evt_connect_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x0405, COMMAND_STATUS_NORMAL); /* Create Connection */ - add_opcode(opcode_list, 0x0409, COMMAND_STATUS_NORMAL); /* Accept Connection Request */ - add_opcode(opcode_list, 0x040A, COMMAND_STATUS_NORMAL); /* Reject Connection Request */ - add_opcode(opcode_list, 0x043E, COMMAND_STATUS_NORMAL); /* Enhanced Accept Synchronous Connection Request */ + add_opcode(pinfo->pool, opcode_list, 0x0405, COMMAND_STATUS_NORMAL); /* Create Connection */ + add_opcode(pinfo->pool, opcode_list, 0x0409, COMMAND_STATUS_NORMAL); /* Accept Connection Request */ + add_opcode(pinfo->pool, opcode_list, 0x040A, COMMAND_STATUS_NORMAL); /* Reject Connection Request */ + add_opcode(pinfo->pool, opcode_list, 0x043E, COMMAND_STATUS_NORMAL); /* Enhanced Accept Synchronous Connection Request */ break; case 0x04: /* Connection Request */ @@ -6237,41 +6412,41 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat case 0x05: /* Disconnection Complete */ offset = dissect_bthci_evt_disconnect_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x0406, COMMAND_STATUS_NORMAL); /* Disconnection Connection */ + add_opcode(pinfo->pool, opcode_list, 0x0406, COMMAND_STATUS_NORMAL); /* Disconnection Connection */ break; case 0x06: /* Authentication Complete */ offset = dissect_bthci_evt_auth_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x0411, COMMAND_STATUS_NORMAL); /* Authentication Requested */ + add_opcode(pinfo->pool, opcode_list, 0x0411, COMMAND_STATUS_NORMAL); /* Authentication Requested */ break; case 0x07: /* Remote Name Request Complete */ offset = dissect_bthci_evt_remote_name_req_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x0419, COMMAND_STATUS_NORMAL); /* Remote Name Request */ + add_opcode(pinfo->pool, opcode_list, 0x0419, COMMAND_STATUS_NORMAL); /* Remote Name Request */ break; case 0x08: /* Encryption Change */ offset = dissect_bthci_evt_encryption_change(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x0413, COMMAND_STATUS_NORMAL); /* Encryption Requested */ - add_opcode(opcode_list, 0x2019, COMMAND_STATUS_NORMAL); /* LE Start Encryption */ + add_opcode(pinfo->pool, opcode_list, 0x0413, COMMAND_STATUS_NORMAL); /* Encryption Requested */ + add_opcode(pinfo->pool, opcode_list, 0x2019, COMMAND_STATUS_NORMAL); /* LE Start Encryption */ break; case 0x09: /* Change Connection Link Key Complete */ offset = dissect_bthci_evt_change_conn_link_key_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); break; - case 0x0a: /* Master Link Key Complete */ - offset = dissect_bthci_evt_master_link_key_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); + case 0x0a: /* Link Key Type Changed */ + offset = dissect_bthci_evt_link_key_type_changed(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); break; case 0x0b: /* Read Remote Support Features Complete */ offset = dissect_bthci_evt_read_remote_support_features_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x41B, COMMAND_STATUS_NORMAL); /* Read Remote Supported Features */ + add_opcode(pinfo->pool, opcode_list, 0x41B, COMMAND_STATUS_NORMAL); /* Read Remote Supported Features */ break; case 0x0c: /* Read Remote Version Information Complete */ offset = dissect_bthci_evt_read_remote_version_information_complete(tvb, offset, pinfo, bluetooth_data, bthci_evt_tree); - add_opcode(opcode_list, 0x41D, COMMAND_STATUS_NORMAL); /* Read Remote Version Information */ + add_opcode(pinfo->pool, opcode_list, 0x41D, COMMAND_STATUS_NORMAL); /* Read Remote Version Information */ break; case 0x0d: /* QoS Setup Complete */ @@ -6296,7 +6471,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat case 0x12: /* Role Change */ offset = dissect_bthci_evt_role_change(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x080B, COMMAND_STATUS_NORMAL); /* Switch Role */ + add_opcode(pinfo->pool, opcode_list, 0x080B, COMMAND_STATUS_NORMAL); /* Switch Role */ break; case 0x13: /* Number Of Completed Packets */ @@ -6305,8 +6480,8 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat case 0x14: /* Mode Change */ offset = dissect_bthci_evt_mode_change(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x0803, COMMAND_STATUS_NORMAL); /* Sniff Mode */ - add_opcode(opcode_list, 0x0804, COMMAND_STATUS_NORMAL); /* Exit Sniff Mode */ + add_opcode(pinfo->pool, opcode_list, 0x0803, COMMAND_STATUS_NORMAL); /* Sniff Mode */ + add_opcode(pinfo->pool, opcode_list, 0x0804, COMMAND_STATUS_NORMAL); /* Exit Sniff Mode */ break; case 0x15: /* Return Link Keys */ @@ -6339,12 +6514,12 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat case 0x1c: /* Read Clock Offset Complete */ offset = dissect_bthci_evt_read_clock_offset_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x041F, COMMAND_STATUS_NORMAL); /* Read Clock Offset */ + add_opcode(pinfo->pool, opcode_list, 0x041F, COMMAND_STATUS_NORMAL); /* Read Clock Offset */ break; case 0x1d: /* Connection Packet Type Changed */ offset = dissect_bthci_evt_conn_packet_type_changed(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x040F, COMMAND_STATUS_NORMAL); /* Change Connection Packet Type */ + add_opcode(pinfo->pool, opcode_list, 0x040F, COMMAND_STATUS_NORMAL); /* Change Connection Packet Type */ break; case 0x1e: /* QoS Violation */ @@ -6369,20 +6544,20 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat case 0x23: /* Read Remote Extended Features Complete */ offset = dissect_bthci_evt_read_remote_ext_features_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x41C, COMMAND_STATUS_NORMAL); /* Read Remote Supported Features */ + add_opcode(pinfo->pool, opcode_list, 0x41C, COMMAND_STATUS_NORMAL); /* Read Remote Supported Features */ break; case 0x2c: /* Synchronous Connection Complete */ offset = dissect_bthci_evt_sync_connection_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x0429, COMMAND_STATUS_NORMAL); /* Accept Synchronous Connection Request */ - add_opcode(opcode_list, 0x0428, COMMAND_STATUS_NORMAL); /* Setup Synchronous Connection */ - add_opcode(opcode_list, 0x043D, COMMAND_STATUS_NORMAL); /* Enhanced Setup Synchronous Connection */ - add_opcode(opcode_list, 0x043E, COMMAND_STATUS_NORMAL); /* Enhanced Accept Synchronous Connection Request */ + add_opcode(pinfo->pool, opcode_list, 0x0429, COMMAND_STATUS_NORMAL); /* Accept Synchronous Connection Request */ + add_opcode(pinfo->pool, opcode_list, 0x0428, COMMAND_STATUS_NORMAL); /* Setup Synchronous Connection */ + add_opcode(pinfo->pool, opcode_list, 0x043D, COMMAND_STATUS_NORMAL); /* Enhanced Setup Synchronous Connection */ + add_opcode(pinfo->pool, opcode_list, 0x043E, COMMAND_STATUS_NORMAL); /* Enhanced Accept Synchronous Connection Request */ break; case 0x2d: /* Synchronous Connection Changed */ offset = dissect_bthci_evt_sync_connection_changed(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x043D, COMMAND_STATUS_NORMAL); /* Enhanced Setup Synchronous Connection */ + add_opcode(pinfo->pool, opcode_list, 0x043D, COMMAND_STATUS_NORMAL); /* Enhanced Setup Synchronous Connection */ break; case 0x2e: /* Sniff Subrating */ @@ -6396,7 +6571,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat previous_offset = offset; offset = dissect_bthci_evt_inquire_result_with_rssi(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data, bd_addr); - eir_data = wmem_new0(wmem_packet_scope(), bluetooth_eir_ad_data_t); + eir_data = wmem_new0(pinfo->pool, bluetooth_eir_ad_data_t); eir_data->interface_id = bluetooth_data->interface_id; eir_data->adapter_id = bluetooth_data->adapter_id; eir_data->bd_addr = bd_addr; @@ -6411,7 +6586,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat case 0x30: /* Encryption Key Refresh Complete */ offset = dissect_bthci_evt_encryption_key_refresh_complete(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x2019, COMMAND_STATUS_NORMAL); /* LE Start Encryption */ + add_opcode(pinfo->pool, opcode_list, 0x2019, COMMAND_STATUS_NORMAL); /* LE Start Encryption */ break; case 0x31: /* IO Capability Request */ @@ -6497,12 +6672,12 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat case 0x49: /* AMP Start Test */ offset = dissect_bthci_evt_amp_start_stop_test(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x1809, COMMAND_STATUS_NORMAL); /* AMP Test */ + add_opcode(pinfo->pool, opcode_list, 0x1809, COMMAND_STATUS_NORMAL); /* AMP Test */ break; case 0x4a: /* AMP Test End */ offset = dissect_bthci_evt_amp_start_stop_test(tvb, offset, pinfo, bthci_evt_tree, bluetooth_data); - add_opcode(opcode_list, 0x1808, COMMAND_STATUS_NORMAL); /* AMP Test End */ + add_opcode(pinfo->pool, opcode_list, 0x1808, COMMAND_STATUS_NORMAL); /* AMP Test End */ break; case 0x4b: /* AMP Receiver Test */ @@ -6556,14 +6731,14 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat proto_tree_add_item(tree, hf_bthci_evt_next_broadcast_instant, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; - proto_tree_add_item(tree, hf_bthci_evt_connectionless_slave_broadcast_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN); + proto_tree_add_item(tree, hf_bthci_evt_connectionless_peripheral_broadcast_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN); offset += 2; proto_tree_add_item(tree, hf_bthci_evt_service_data, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; break; - case 0x51: /* Connectionless Slave Broadcast Receive */ + case 0x51: /* Connectionless Peripheral Broadcast Receive */ { guint8 length; @@ -6593,7 +6768,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat } break; - case 0x52: /* Connectionless Slave Broadcast Timeout */ + case 0x52: /* Connectionless Peripheral Broadcast Timeout */ offset = dissect_bd_addr(hf_bthci_evt_bd_addr, pinfo, tree, tvb, offset, FALSE, bluetooth_data->interface_id, bluetooth_data->adapter_id, NULL); proto_tree_add_item(tree, hf_bthci_evt_lt_addr, tvb, offset, 1, ENC_LITTLE_ENDIAN); @@ -6608,10 +6783,10 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat offset = dissect_bd_addr(hf_bthci_evt_bd_addr, pinfo, tree, tvb, offset, FALSE, bluetooth_data->interface_id, bluetooth_data->adapter_id, NULL); break; - case 0x54: /* Slave Page Response Timeout */ + case 0x54: /* Peripheral Page Response Timeout */ /* NOTE: no parameters */ break; - case 0x55: /* Connectionless Slave Broadcast Channel Map Change */ + case 0x55: /* Connectionless Peripheral Broadcast Channel Map Change */ proto_tree_add_item(tree, hf_bthci_evt_afh_channel_map, tvb, offset, 10, ENC_NA); offset += 10; @@ -6710,16 +6885,16 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat if (bthci_cmd_data && bthci_cmd_data->command_in_frame < frame_number && ( (opcode_list_data->command_status == COMMAND_STATUS_NORMAL && (bthci_cmd_data->response_in_frame == frame_number || - bthci_cmd_data->response_in_frame == max_disconnect_in_frame)) || + bthci_cmd_data->response_in_frame == bluetooth_max_disconnect_in_frame)) || (opcode_list_data->command_status == COMMAND_STATUS_PENDING && (bthci_cmd_data->pending_in_frame == frame_number || - ((bthci_cmd_data->response_in_frame == max_disconnect_in_frame || + ((bthci_cmd_data->response_in_frame == bluetooth_max_disconnect_in_frame || bthci_cmd_data->response_in_frame > frame_number) && - bthci_cmd_data->pending_in_frame == max_disconnect_in_frame))) || + bthci_cmd_data->pending_in_frame == bluetooth_max_disconnect_in_frame))) || (opcode_list_data->command_status == COMMAND_STATUS_RESULT && (bthci_cmd_data->response_in_frame == frame_number || - ((bthci_cmd_data->response_in_frame == max_disconnect_in_frame && - bthci_cmd_data->pending_in_frame == max_disconnect_in_frame)))) + ((bthci_cmd_data->response_in_frame == bluetooth_max_disconnect_in_frame && + bthci_cmd_data->pending_in_frame == bluetooth_max_disconnect_in_frame)))) )) { lastest_bthci_cmd_data = bthci_cmd_data; if (((opcode_list_data->command_status == COMMAND_STATUS_RESULT || @@ -6761,7 +6936,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat if (status == STATUS_SUCCESS && have_tap_listener(bluetooth_device_tap)) switch(opcode) { case 0x0c03: /* Reset */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6777,7 +6952,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c13: /* Change Local Name */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6820,7 +6995,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c18: /* Write Page Timeout */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6837,7 +7012,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c1a: /* Write Scan Enable */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6854,7 +7029,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c20: /* Write Authentication Enable */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6871,7 +7046,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c22: /* Write Encryption Mode */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6888,7 +7063,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c24: /* Write Class Of Device */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6905,7 +7080,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c26: /* Write Voice Setting */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6922,7 +7097,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c33: /* Host Buffer Size */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6942,7 +7117,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c45: /* Write Inquiry Mode */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6959,7 +7134,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat break; case 0x0c56: /* Write Simple Pairing */ - tap_device = wmem_new(wmem_packet_scope(), bluetooth_device_tap_t); + tap_device = wmem_new(pinfo->pool, bluetooth_device_tap_t); if (bluetooth_data) { tap_device->interface_id = bluetooth_data->interface_id; tap_device->adapter_id = bluetooth_data->adapter_id; @@ -6978,20 +7153,20 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat } if (!pinfo->fd->visited && opcode_list_data->command_status == COMMAND_STATUS_PENDING && - lastest_bthci_cmd_data->pending_in_frame == max_disconnect_in_frame) { + lastest_bthci_cmd_data->pending_in_frame == bluetooth_max_disconnect_in_frame) { lastest_bthci_cmd_data->pending_in_frame = frame_number; lastest_bthci_cmd_data->pending_abs_ts = pinfo->abs_ts; } if (!pinfo->fd->visited && opcode_list_data->command_status == COMMAND_STATUS_NORMAL && - lastest_bthci_cmd_data->response_in_frame == max_disconnect_in_frame) { + lastest_bthci_cmd_data->response_in_frame == bluetooth_max_disconnect_in_frame) { lastest_bthci_cmd_data->response_in_frame = frame_number; lastest_bthci_cmd_data->response_abs_ts = pinfo->abs_ts; } if (!pinfo->fd->visited && opcode_list_data->command_status == COMMAND_STATUS_RESULT && - lastest_bthci_cmd_data->response_in_frame == max_disconnect_in_frame && - lastest_bthci_cmd_data->pending_in_frame == max_disconnect_in_frame) { + lastest_bthci_cmd_data->response_in_frame == bluetooth_max_disconnect_in_frame && + lastest_bthci_cmd_data->pending_in_frame == bluetooth_max_disconnect_in_frame) { lastest_bthci_cmd_data->response_in_frame = frame_number; lastest_bthci_cmd_data->response_abs_ts = pinfo->abs_ts; } @@ -7000,7 +7175,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat sub_item = proto_tree_add_uint(bthci_evt_tree, hf_command_in_frame, tvb, 0, 0, lastest_bthci_cmd_data->command_in_frame); proto_item_set_generated(sub_item); - if (lastest_bthci_cmd_data->response_in_frame < max_disconnect_in_frame) { + if (lastest_bthci_cmd_data->response_in_frame < bluetooth_max_disconnect_in_frame) { sub_item = proto_tree_add_uint(bthci_evt_tree, hf_response_in_frame, tvb, 0, 0, lastest_bthci_cmd_data->response_in_frame); proto_item_set_generated(sub_item); } @@ -7009,7 +7184,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat sub_item = proto_tree_add_double(bthci_evt_tree, hf_command_pending_time_delta, tvb, 0, 0, nstime_to_msec(&delta)); proto_item_set_generated(sub_item); - if (lastest_bthci_cmd_data->response_in_frame < max_disconnect_in_frame) { + if (lastest_bthci_cmd_data->response_in_frame < bluetooth_max_disconnect_in_frame) { nstime_delta(&delta, &lastest_bthci_cmd_data->response_abs_ts, &lastest_bthci_cmd_data->pending_abs_ts); sub_item = proto_tree_add_double(bthci_evt_tree, hf_pending_response_time_delta, tvb, 0, 0, nstime_to_msec(&delta)); proto_item_set_generated(sub_item); @@ -7020,7 +7195,7 @@ dissect_bthci_evt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat sub_item = proto_tree_add_uint(bthci_evt_tree, hf_command_in_frame, tvb, 0, 0, lastest_bthci_cmd_data->command_in_frame); proto_item_set_generated(sub_item); - if (lastest_bthci_cmd_data->pending_in_frame < max_disconnect_in_frame) { + if (lastest_bthci_cmd_data->pending_in_frame < bluetooth_max_disconnect_in_frame) { sub_item = proto_tree_add_uint(bthci_evt_tree, hf_pending_in_frame, tvb, 0, 0, lastest_bthci_cmd_data->pending_in_frame); proto_item_set_generated(sub_item); @@ -7279,7 +7454,7 @@ proto_register_bthci_evt(void) { &hf_bthci_evt_clock_offset, { "Clock Offset", "bthci_evt.clock_offset", FT_UINT16, BASE_HEX, NULL, 0x7FFF, - "Bit 2-16 of the Clock Offset between CLKmaster-CLKslave", HFILL } + "Bit 2-16 of the Clock Offset between CLKNPeripheral-CLK", HFILL } }, { &hf_bthci_evt_page_scan_mode, { "Page Scan Mode", "bthci_evt.page_scan_mode", @@ -7576,13 +7751,13 @@ proto_register_bthci_evt(void) FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL } }, - { &hf_lmp_feature_afh_capable_slave, - { "AFH Capable Slave", "bthci_evt.lmp_features.afh_capable_slave", + { &hf_lmp_feature_afh_capable_peripheral, + { "AFH Capable Peripheral", "bthci_evt.lmp_features.afh_capable_peripheral", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL } }, - { &hf_lmp_feature_afh_classification_slave, - { "AFH Classification Slave", "bthci_evt.lmp_features.afh_classification_slave", + { &hf_lmp_feature_afh_classification_peripheral, + { "AFH Classification Peripheral", "bthci_evt.lmp_features.afh_classification_peripheral", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL } }, @@ -7616,13 +7791,13 @@ proto_register_bthci_evt(void) FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL } }, - { &hf_lmp_feature_afh_capable_master, - { "AFH Capable Master", "bthci_evt.lmp_features.afh_capable_master", + { &hf_lmp_feature_afh_capable_central, + { "AFH Capable Central", "bthci_evt.lmp_features.afh_capable_central", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL } }, - { &hf_lmp_feature_afh_classification_master, - { "AFH Classification Master", "bthci_evt.lmp_features.afh_classification_master", + { &hf_lmp_feature_afh_classification_central, + { "AFH Classification Central", "bthci_evt.lmp_features.afh_classification_central", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL } }, @@ -7731,13 +7906,13 @@ proto_register_bthci_evt(void) FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL} }, - { &hf_lmp_feature_csb_master_operation, - {"Connectionless Slave Broadcast Master Operation", "bthci_evt.lmp_features.csb_master_operation", + { &hf_lmp_feature_csb_central_operation, + {"Connectionless Peripheral Broadcast Central Operation", "bthci_evt.lmp_features.csb_central_operation", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL} }, - { &hf_lmp_feature_csb_slave_operation, - {"Connectionless Slave Broadcast Slave Operation", "bthci_evt.lmp_features.csb_slave_operation", + { &hf_lmp_feature_csb_peripheral_operation, + {"Connectionless Peripheral Broadcast Peripheral Operation", "bthci_evt.lmp_features.csb_peripheral_operation", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL} }, @@ -7829,10 +8004,10 @@ proto_register_bthci_evt(void) { &hf_bthci_evt_num_responses, { "Number of responses", "bthci_evt.num_responses", FT_UINT8, BASE_DEC, NULL, 0x0, - "Number of Responses from Inquiry", HFILL } + NULL, HFILL } }, { &hf_bthci_evt_link_policy_setting_switch, - { "Enable Master Slave Switch", "bthci_evt.link_policy_switch", + { "Enable Role Switch", "bthci_evt.link_policy_switch", FT_BOOLEAN, 16, NULL, 0x0001, NULL, HFILL } }, @@ -8028,7 +8203,7 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_fec_required, {"FEC Required", "bthci_evt.fec_required", - FT_BOOLEAN, 8, NULL, 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL} }, { &hf_bthci_evt_err_data_reporting, @@ -8209,7 +8384,7 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_location_domain_aware, { "Location Domain Aware", "bthci_evt.location_domain_aware", - FT_BOOLEAN, 8, NULL, 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } }, { &hf_bthci_evt_location_domain, @@ -8374,7 +8549,7 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_short_range_mode_state, { "Short Range Mode State", "bthci_evt.short_range_mode_state", - FT_BOOLEAN, 8, NULL, 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } }, { &hf_bthci_evt_transmit_power_level_gfsk, @@ -8399,12 +8574,12 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_le_supported_host, { "LE Supported Host", "bthci_evt.le_supported_host", - FT_BOOLEAN, 8, NULL, 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } }, { &hf_bthci_evt_le_simultaneous_host, { "Simultaneous LE Host", "bthci_evt.le_simultaneous_host", - FT_BOOLEAN, 8, NULL, 0x0, + FT_BOOLEAN, BASE_NONE, NULL, 0x0, "Support for both LE and BR/EDR to same device", HFILL } }, { &hf_bthci_evt_le_acl_data_pkt_len, @@ -8427,10 +8602,10 @@ proto_register_bthci_evt(void) FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_white_list_size, - { "White List Size", "bthci_evt.le_white_list_size", + { &hf_bthci_evt_filter_accept_list_size, + { "Filter Accept List Size", "bthci_evt.le_filter_accept_list_size", FT_UINT8, BASE_DEC, NULL, 0x0, - "Max. total whitelist entries storable in controller", HFILL } + "Max. total filter accept list entries storable in controller", HFILL } }, { &hf_bthci_evt_le_channel_map, { "Channel Map", "bthci_evt.le_channel_map", @@ -8483,7 +8658,7 @@ proto_register_bthci_evt(void) NULL, HFILL } }, { &hf_bthci_evt_le_max_interval, - { "Min Connection Interval", "bthci_evt.le_max_interval", + { "Max Connection Interval", "bthci_evt.le_max_interval", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } }, @@ -8522,8 +8697,8 @@ proto_register_bthci_evt(void) FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_le_master_clock_accuracy, - { "Master Clock Accuracy", "bthci_evt.le_master_clock_accuracy", + { &hf_bthci_evt_le_central_clock_accuracy, + { "Central Clock Accuracy", "bthci_evt.le_central_clock_accuracy", FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_clock_accuray_vals_ext, 0x0, NULL, HFILL } }, @@ -8578,12 +8753,12 @@ proto_register_bthci_evt(void) NULL, HFILL } }, { &hf_bthci_evt_le_states_06, - { "Initiating State. Connection State in Master Role", "bthci_evt.le_states_06", + { "Initiating State. Connection State in Central Role", "bthci_evt.le_states_06", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL } }, { &hf_bthci_evt_le_states_07, - { "Connection State in Slave Role", "bthci_evt.le_states_07", + { "Connection State in Peripheral Role", "bthci_evt.le_states_07", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL } }, @@ -8638,22 +8813,22 @@ proto_register_bthci_evt(void) NULL, HFILL } }, { &hf_bthci_evt_le_states_22, - { "Non-connectable Advertising State and Master Role combination", "bthci_evt.le_states_22", + { "Non-connectable Advertising State and Central Role combination", "bthci_evt.le_states_22", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL } }, { &hf_bthci_evt_le_states_23, - { "Scannable Advertising State and Master Role combination", "bthci_evt.le_states_23", + { "Scannable Advertising State and Central Role combination", "bthci_evt.le_states_23", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL } }, { &hf_bthci_evt_le_states_24, - { "Non-connectable Advertising State and Slave Role combination", "bthci_evt.le_states_24", + { "Non-connectable Advertising State and Peripheral Role combination", "bthci_evt.le_states_24", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL } }, { &hf_bthci_evt_le_states_25, - { "Scannable Advertising State and Slave Role combination", "bthci_evt.le_states_25", + { "Scannable Advertising State and Peripheral Role combination", "bthci_evt.le_states_25", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL } }, @@ -8668,27 +8843,27 @@ proto_register_bthci_evt(void) NULL, HFILL } }, { &hf_bthci_evt_le_states_30, - { "Passive Scanning State and Master Role combination", "bthci_evt.le_states_30", + { "Passive Scanning State and Central Role combination", "bthci_evt.le_states_30", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL } }, { &hf_bthci_evt_le_states_31, - { "Active Scanning State and Master Role combination", "bthci_evt.le_states_31", + { "Active Scanning State and Central Role combination", "bthci_evt.le_states_31", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL } }, { &hf_bthci_evt_le_states_32, - { "Passive Scanning state and Slave Role combination", "bthci_evt.le_states_32", + { "Passive Scanning state and Peripheral Role combination", "bthci_evt.le_states_32", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL } }, { &hf_bthci_evt_le_states_33, - { "Active Scanning state and Slave Role combination", "bthci_evt.le_states_33", + { "Active Scanning state and Peripheral Role combination", "bthci_evt.le_states_33", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL } }, { &hf_bthci_evt_le_states_34, - { "Initiating State and Master Role combination. Master Role and Master Role combination", "bthci_evt.le_states_34", + { "Initiating State and Central Role combination. Central Role and Central Role combination", "bthci_evt.le_states_34", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL } }, @@ -8734,207 +8909,227 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_le_features_encryption, { "LE Encryption", "bthci_evt.le_features.encryption", - FT_BOOLEAN, 64, NULL, 0x01, + FT_BOOLEAN, 64, NULL, 0x0000000000000001, NULL, HFILL } }, { &hf_bthci_evt_le_features_connection_parameters_request_procedure, { "Connection Parameters Request Procedure", "bthci_evt.le_features.connection_parameters_request_procedure", - FT_BOOLEAN, 64, NULL, 0x02, + FT_BOOLEAN, 64, NULL, 0x0000000000000002, NULL, HFILL } }, { &hf_bthci_evt_le_features_extended_reject_indication, { "Extended Reject Indication", "bthci_evt.le_features.extended_reject_indication", - FT_BOOLEAN, 64, NULL, 0x04, + FT_BOOLEAN, 64, NULL, 0x0000000000000004, NULL, HFILL } }, - { &hf_bthci_evt_le_features_slave_initiated_features_exchange, - { "Slave-Initiated Features Exchange", "bthci_evt.le_features.slave_initiated_features_exchange", - FT_BOOLEAN, 64, NULL, 0x08, + { &hf_bthci_evt_le_features_peripheral_initiated_features_exchange, + { "Peripheral-Initiated Features Exchange", "bthci_evt.le_features.slave_initiated_features_exchange", + FT_BOOLEAN, 64, NULL, 0x0000000000000008, NULL, HFILL } }, { &hf_bthci_evt_le_features_ping, { "Ping", "bthci_evt.le_features.ping", - FT_BOOLEAN, 64, NULL, 0x10, + FT_BOOLEAN, 64, NULL, 0x0000000000000010, NULL, HFILL } }, { &hf_bthci_evt_le_features_data_packet_length_extension, { "Data Packet Length Extension", "bthci_evt.le_features.data_packet_length_extension", - FT_BOOLEAN, 64, NULL, 0x20, + FT_BOOLEAN, 64, NULL, 0x0000000000000020, NULL, HFILL } }, { &hf_bthci_evt_le_features_ll_privacy, { "LL Privacy", "bthci_evt.le_features.ll_privacy", - FT_BOOLEAN, 64, NULL, 0x40, + FT_BOOLEAN, 64, NULL, 0x0000000000000040, NULL, HFILL } }, { &hf_bthci_evt_le_features_extended_scanner_filter_policies, { "Extended Scanner Filter Policies", "bthci_evt.le_features.extended_scanner_filter_policies", - FT_BOOLEAN, 64, NULL, 0x80, + FT_BOOLEAN, 64, NULL, 0x0000000000000080, NULL, HFILL } }, { &hf_bthci_evt_le_features_2m_phy, { "LE 2M PHY", "bthci_evt.le_features.2m_phy", - FT_BOOLEAN, 64, NULL, 0x0100, + FT_BOOLEAN, 64, NULL, 0x0000000000000100, NULL, HFILL } }, { &hf_bthci_evt_le_features_stable_modulation_index_tx, { "Stable Modulation Index - Tx", "bthci_evt.le_features.stable_modulation_index_tx", - FT_BOOLEAN, 64, NULL, 0x0200, + FT_BOOLEAN, 64, NULL, 0x0000000000000200, NULL, HFILL } }, { &hf_bthci_evt_le_features_stable_modulation_index_rx, { "Stable Modulation Index - Rx", "bthci_evt.le_features.stable_modulation_index_rx", - FT_BOOLEAN, 64, NULL, 0x0400, + FT_BOOLEAN, 64, NULL, 0x0000000000000400, NULL, HFILL } }, { &hf_bthci_evt_le_features_coded_phy, { "LE Coded PHY", "bthci_evt.le_features.coded_phy", - FT_BOOLEAN, 64, NULL, 0x0800, + FT_BOOLEAN, 64, NULL, 0x0000000000000800, NULL, HFILL } }, { &hf_bthci_evt_le_features_extended_advertising, { "LE Extended Advertising", "bthci_evt.le_features.extended_advertising", - FT_BOOLEAN, 64, NULL, 0x1000, + FT_BOOLEAN, 64, NULL, 0x0000000000001000, NULL, HFILL } }, { &hf_bthci_evt_le_features_periodic_advertising, { "LE Periodic Advertising", "bthci_evt.le_features.periodic_advertising", - FT_BOOLEAN, 64, NULL, 0x2000, + FT_BOOLEAN, 64, NULL, 0x0000000000002000, NULL, HFILL } }, { &hf_bthci_evt_le_features_channel_selection_algorithm_2, { "Channel Selection Algorithm #2", "bthci_evt.le_features.channel_selection_algorithm_2", - FT_BOOLEAN, 64, NULL, 0x4000, + FT_BOOLEAN, 64, NULL, 0x0000000000004000, NULL, HFILL } }, { &hf_bthci_evt_le_features_power_class_1, { "Power Class 1", "bthci_evt.le_features.power_class_1", - FT_BOOLEAN, 64, NULL, 0x8000, + FT_BOOLEAN, 64, NULL, 0x0000000000008000, NULL, HFILL } }, { &hf_bthci_evt_le_features_minimum_number_of_used_channels_procedure, { "Minimum Number of Used Channels Procedure", "bthci_evt.le_features.minimum_number_of_used_channels_procedure", - FT_BOOLEAN, 64, NULL, 0x010000, + FT_BOOLEAN, 64, NULL, 0x0000000000010000, NULL, HFILL } }, { &hf_bthci_evt_le_features_connection_cte_request, { "Connection CTE Request", "bthci_evt.le_features.connection_cte_request", - FT_BOOLEAN, 64, NULL, 0x020000, + FT_BOOLEAN, 64, NULL, 0x0000000000020000, NULL, HFILL } }, { &hf_bthci_evt_le_features_connection_cte_response, { "Connection CTE Response", "bthci_evt.le_features.connection_cte_response", - FT_BOOLEAN, 64, NULL, 0x040000, + FT_BOOLEAN, 64, NULL, 0x0000000000040000, NULL, HFILL } }, { &hf_bthci_evt_le_features_connectionless_cte_tx, { "Connectionless CTE Tx", "bthci_evt.le_features.connectionless_cte_tx", - FT_BOOLEAN, 64, NULL, 0x080000, + FT_BOOLEAN, 64, NULL, 0x0000000000080000, NULL, HFILL } }, { &hf_bthci_evt_le_features_connectionless_cte_rx, { "Connectionless CTE Rx", "bthci_evt.le_features.connectionless_cte_rx", - FT_BOOLEAN, 64, NULL, 0x100000, + FT_BOOLEAN, 64, NULL, 0x0000000000100000, NULL, HFILL } }, { &hf_bthci_evt_le_features_antenna_switching_during_cte_tx_aod, { "Antenna Switching During CTE Tx (AoD)", "bthci_evt.le_features.antenna_switching_during_cte_tx_aod", - FT_BOOLEAN, 64, NULL, 0x200000, + FT_BOOLEAN, 64, NULL, 0x0000000000200000, NULL, HFILL } }, { &hf_bthci_evt_le_features_antenna_switching_during_cte_rx_aoa, { "Antenna Switching During CTE Rx (AoA)", "bthci_evt.le_features.antenna_switching_during_cte_rx_aoa", - FT_BOOLEAN, 64, NULL, 0x400000, + FT_BOOLEAN, 64, NULL, 0x0000000000400000, NULL, HFILL } }, { &hf_bthci_evt_le_features_receiving_cte, { "Receiving CTE", "bthci_evt.le_features.receiving_cte", - FT_BOOLEAN, 64, NULL, 0x800000, + FT_BOOLEAN, 64, NULL, 0x0000000000800000, NULL, HFILL } }, { &hf_bthci_evt_le_features_periodic_advertising_sync_transfer_sender, { "Periodic Advertising Sync Transfer - Sender", "bthci_evt.le_features.periodic_advertising_sync_transfer_sender", - FT_BOOLEAN, 64, NULL, 0x01000000, + FT_BOOLEAN, 64, NULL, 0x0000000001000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_periodic_advertising_sync_transfer_receiver, { "Periodic Advertising Sync Transfer - Receiver", "bthci_evt.le_features.periodic_advertising_sync_transfer_receiver", - FT_BOOLEAN, 64, NULL, 0x02000000, + FT_BOOLEAN, 64, NULL, 0x0000000002000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_sleep_clock_accuracy_updates, { "Sleep Clock Accuracy Updates", "bthci_evt.le_features.sleep_clock_accuracy_updates", - FT_BOOLEAN, 64, NULL, 0x04000000, + FT_BOOLEAN, 64, NULL, 0x0000000004000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_remote_public_key_validation, { "Remote Public Key Validation", "bthci_evt.le_features.remote_public_key_validation", - FT_BOOLEAN, 64, NULL, 0x08000000, + FT_BOOLEAN, 64, NULL, 0x0000000008000000, NULL, HFILL } }, - { &hf_bthci_evt_le_features_cis_master, - { "Connected Isochronous Stream - Master", "bthci_evt.le_features.cis_master", - FT_BOOLEAN, 64, NULL, 0x10000000, + { &hf_bthci_evt_le_features_cis_central, + { "Connected Isochronous Stream - Central", "bthci_evt.le_features.cis_central", + FT_BOOLEAN, 64, NULL, 0x0000000010000000, NULL, HFILL } }, - { &hf_bthci_evt_le_features_cis_slave, - { "Connected Isochronous Stream - Slave", "bthci_evt.le_features.cis_slave", - FT_BOOLEAN, 64, NULL, 0x20000000, + { &hf_bthci_evt_le_features_cis_peripheral, + { "Connected Isochronous Stream - Peripheral", "bthci_evt.le_features.cis_peripheral", + FT_BOOLEAN, 64, NULL, 0x0000000020000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_isochronous_broadcaster, { "Isochronous Broadcaster", "bthci_evt.le_features.isochronous_broadcaster", - FT_BOOLEAN, 64, NULL, 0x40000000, + FT_BOOLEAN, 64, NULL, 0x0000000040000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_synchronized_receiver, { "Synchronized Receiver", "bthci_evt.le_features.synchronized_receiver", - FT_BOOLEAN, 64, NULL, 0x80000000, + FT_BOOLEAN, 64, NULL, 0x0000000080000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_isochronous_channels_host_support, { "Isochronous Channels (Host_support)", "bthci_evt.le_features.isochronous_channels_host_support", - FT_BOOLEAN, 64, NULL, 0x0100000000, + FT_BOOLEAN, 64, NULL, 0x0000000100000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_power_control_request, { "Power Control Request", "bthci_evt.le_features.power_control_request", - FT_BOOLEAN, 64, NULL, 0x0200000000, + FT_BOOLEAN, 64, NULL, 0x0000000200000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_power_change_indication, { "Power Change Indication", "bthci_evt.le_features.power_change_indication", - FT_BOOLEAN, 64, NULL, 0x0400000000, + FT_BOOLEAN, 64, NULL, 0x0000000400000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_path_loss_monitoring, { "Path Loss Monitoring", "bthci_evt.le_features.path_loss_monitoring", - FT_BOOLEAN, 64, NULL, 0x0800000000, + FT_BOOLEAN, 64, NULL, 0x0000000800000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_periodic_advertising_adi, { "Periodic Advertising ADI", "bthci_evt.le_features.periodic_advertising_adi", - FT_BOOLEAN, 64, NULL, 0x1000000000, + FT_BOOLEAN, 64, NULL, 0x0000001000000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_connection_subrating, { "Connection Subrating", "bthci_evt.le_features.connection_subrating", - FT_BOOLEAN, 64, NULL, 0x2000000000, + FT_BOOLEAN, 64, NULL, 0x0000002000000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_connection_subrating_host_support, { "Connection Subrating (Host support)", "bthci_evt.le_features.connection_subrating_host_support", - FT_BOOLEAN, 64, NULL, 0x4000000000, + FT_BOOLEAN, 64, NULL, 0x0000004000000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_channel_classification, { "Channel Classification", "bthci_evt.le_features.channel_classification", - FT_BOOLEAN, 64, NULL, 0x8000000000, + FT_BOOLEAN, 64, NULL, 0x0000008000000000, + NULL, HFILL } + }, + { &hf_bthci_evt_le_features_coding_selection, + { "Coding Selection", "bthci_evt.le_features.coding_selection", + FT_BOOLEAN, 64, NULL, 0x0000010000000000, + NULL, HFILL } + }, + { &hf_bthci_evt_le_features_coding_selection_host_support, + { "Coding Selection (Host support)", "bthci_evt.le_features.coding_selection_host_support", + FT_BOOLEAN, 64, NULL, 0x0000020000000000, + NULL, HFILL } + }, + { &hf_bthci_evt_le_features_periodic_advertising_responses_advertiser, + { "Periodic Advertising with Responses - Advertiser", "bthci_evt.le_features.periodic_advertising_responses_advertiser", + FT_BOOLEAN, 64, NULL, 0x0000080000000000, + NULL, HFILL } + }, + { &hf_bthci_evt_le_features_periodic_advertising_responses_scanner, + { "Periodic Advertising with Responses - Scanner", "bthci_evt.le_features.periodic_advertising_responses_scanner", + FT_BOOLEAN, 64, NULL, 0x0000100000000000, NULL, HFILL } }, { &hf_bthci_evt_le_features_reserved, { "Reserved", "bthci_evt.le_features.reserved", - FT_UINT64, BASE_HEX, NULL, G_GUINT64_CONSTANT(0xFFFFFF0000000000), + FT_UINT64, BASE_HEX, NULL, G_GUINT64_CONSTANT(0xFFFFE40000000000), NULL, HFILL } }, { &hf_bthci_evt_mws_number_of_transports, @@ -9010,7 +9205,7 @@ proto_register_bthci_evt(void) { &hf_bthci_evt_clock_offset_32, { "Clock Offset", "bthci_evt.clock_offset_32", FT_UINT32, BASE_HEX, NULL, 0x0FFFFFFF, - "Bits 0-27 of the Clock Offset between CLKslave-CLK", HFILL } + "Bits 0-27 of the Clock Offset between CLKNreceiver-CLKNtransmitter", HFILL } }, { &hf_bthci_evt_next_broadcast_instant, { "Next Broadcast Instant", "bthci_evt.next_broadcast_instant", @@ -9022,8 +9217,8 @@ proto_register_bthci_evt(void) FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_connectionless_slave_broadcast_interval, - { "Connectionless Slave Broadcast Interval", "bthci_evt.connectionless_slave_broadcast_interval", + { &hf_bthci_evt_connectionless_peripheral_broadcast_interval, + { "Connectionless Peripheral Broadcast Interval", "bthci_evt.connectionless_peripheral_broadcast_interval", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } }, @@ -9319,32 +9514,32 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_ext_advts_event_type_connectable, { "Connectable", "bthci_evt.le_ext_advts_event_type.connectable", - FT_BOOLEAN, 16, NULL, 0x01, + FT_BOOLEAN, 16, NULL, 0x0001, NULL, HFILL } }, { &hf_bthci_evt_ext_advts_event_type_scannable, { "Scannable", "bthci_evt.le_ext_advts_event_type.scannable", - FT_BOOLEAN, 16, NULL, 0x02, + FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL } }, { &hf_bthci_evt_ext_advts_event_type_directed, { "Directed", "bthci_evt.le_ext_advts_event_type.directed", - FT_BOOLEAN, 16, NULL, 0x04, + FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL } }, { &hf_bthci_evt_ext_advts_event_type_scan_response, { "Scan Response", "bthci_evt.le_ext_advts_event_type.scan_response", - FT_BOOLEAN, 16, NULL, 0x08, + FT_BOOLEAN, 16, NULL, 0x0008, NULL, HFILL } }, { &hf_bthci_evt_ext_advts_event_type_legacy, { "Legacy", "bthci_evt.le_ext_advts_event_type.legacy", - FT_BOOLEAN, 16, NULL, 0x10, + FT_BOOLEAN, 16, NULL, 0x0010, NULL, HFILL } }, { &hf_bthci_evt_ext_advts_event_type_data_status, { "Data Status", "bthci_evt.le_ext_advts_event_type.data_status", - FT_UINT16, BASE_HEX, VALS(ext_adv_data_status_vals), 0x60, + FT_UINT16, BASE_HEX, VALS(ext_adv_data_status_vals), 0x0060, NULL, HFILL } }, { &hf_bthci_evt_ext_advts_event_type_reserved, @@ -9379,7 +9574,7 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_sync_handle, { "Sync Handle", "bthci_evt.sync_handle", - FT_UINT16, BASE_HEX, NULL, 0x0, + FT_UINT16, BASE_HEX|BASE_SPECIAL_VALS, VALS(uint16_no_handle), 0x0, NULL, HFILL } }, { &hf_bthci_evt_data_status, @@ -9389,7 +9584,7 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_advertising_handle, { "Advertising Handle", "bthci_evt.adv_handle", - FT_UINT8, BASE_HEX, NULL, 0x0, + FT_UINT8, BASE_HEX|BASE_SPECIAL_VALS, VALS(uint8_no_handle), 0x0, NULL, HFILL } }, { &hf_bthci_evt_num_compl_ext_advertising_events, @@ -9667,13 +9862,13 @@ proto_register_bthci_evt(void) FT_UINT24, BASE_DEC|BASE_UNIT_STRING, &units_microseconds, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_transport_latency_m_to_s, - { "Transport Latency Master to Slave", "bthci_evt.transport_latency_m_to_s", + { &hf_bthci_evt_transport_latency_c_to_p, + { "Transport Latency Central to Peripheral", "bthci_evt.transport_latency_c_to_p", FT_UINT24, BASE_DEC|BASE_UNIT_STRING, &units_microseconds, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_transport_latency_s_to_m, - { "Transport Latency Slave to Master", "bthci_evt.transport_latency_s_to_m", + { &hf_bthci_evt_transport_latency_p_to_c, + { "Transport Latency Peripheral to Central", "bthci_evt.transport_latency_p_to_c", FT_UINT24, BASE_DEC|BASE_UNIT_STRING, &units_microseconds, 0x0, NULL, HFILL } }, @@ -9682,43 +9877,43 @@ proto_register_bthci_evt(void) FT_UINT24, BASE_DEC|BASE_UNIT_STRING, &units_microseconds, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_phy_m_to_s, - { "PHY Master to Slave", "bthci_evt.phy_m_to_s", + { &hf_bthci_evt_phy_c_to_p, + { "PHY Central to Peripheral", "bthci_evt.phy_c_to_p", FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_le_phy_vals_ext, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_phy_s_to_m, - { "PHY Slave to Master", "bthci_evt.phy_s_to_m", + { &hf_bthci_evt_phy_p_to_c, + { "PHY Peripheral to Central", "bthci_evt.phy_p_to_c", FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_le_phy_vals_ext, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_bn_m_to_s, - { "Burst Number Master to Slave", "bthci_evt.bn_m_to_s", + { &hf_bthci_evt_bn_c_to_p, + { "Burst Number Central to Peripheral", "bthci_evt.bn_c_to_p", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_bn_s_to_m, - { "Burst Number Slave to Master", "bthci_evt.bn_s_to_m", + { &hf_bthci_evt_bn_p_to_c, + { "Burst Number Peripheral to Central", "bthci_evt.bn_p_to_c", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_ft_m_to_s, - { "Flush Timeout Master to Slave", "bthci_evt.ft_m_to_s", + { &hf_bthci_evt_ft_c_to_p, + { "Flush Timeout Central to Peripheral", "bthci_evt.ft_c_to_p", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_ft_s_to_m, - { "Flush Timeout Slave to Master", "bthci_evt.ft_s_to_m", + { &hf_bthci_evt_ft_p_to_c, + { "Flush Timeout Peripheral to Central", "bthci_evt.ft_p_to_c", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_max_pdu_m_to_s, - { "Max PDU Master to Slave", "bthci_evt.max_pdu_m_to_s", + { &hf_bthci_evt_max_pdu_c_to_p, + { "Max PDU Central to Peripheral", "bthci_evt.max_pdu_c_to_p", FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &units_octet_octets, 0x0, NULL, HFILL } }, - { &hf_bthci_evt_max_pdu_s_to_m, - { "Max PDU Slave to Master", "bthci_evt.max_pdu_s_to_m", + { &hf_bthci_evt_max_pdu_p_to_c, + { "Max PDU Peripheral to Central", "bthci_evt.max_pdu_p_to_c", FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &units_octet_octets, 0x0, NULL, HFILL } }, @@ -9837,7 +10032,61 @@ proto_register_bthci_evt(void) FT_UINT16, BASE_DEC|BASE_UNIT_STRING, &units_number_events, 0x0, NULL, HFILL } }, - + { &hf_bthci_evt_subevent_start, + { "Sub-event Start", "bthci_evt.subevent_start", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_subevent_count, + { "Sub-event Count", "bthci_evt.subevent_count", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_subevent, + { "Sub-event", "bthci_evt.subevent", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_subevent_tx_status, + { "Sub-event Tx Status", "bthci_evt.subevent_tx_status", + FT_UINT8, BASE_HEX, VALS(tx_status_vals), 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_subevent_responses, + { "Sub-events Responses", "bthci_evt.subevent_responses", + FT_NONE, BASE_NONE, NULL, 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_response_slot, + { "Response Slot", "bthci_evt.response_slot", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_num_subevents, + { "Number of Sub-events", "bthci_evt.num_subevents", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_subevent_interval, + { "Sub-event Interval", "bthci_evt.subevent_interval", + FT_UINT8, BASE_CUSTOM, CF_FUNC(bluetooth_unit_1p25_ms), 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_response_slot_delay, + { "Response Slot Delay", "bthci_evt.resp_slot_delay", + FT_UINT8, BASE_CUSTOM, CF_FUNC(bluetooth_unit_1p25_ms), 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_response_slot_spacing, + { "Response Slot Spacing", "bthci_evt.resp_slot_spacing", + FT_UINT8, BASE_CUSTOM, CF_FUNC(bluetooth_unit_0p125_ms), 0x0, + NULL, HFILL } + }, + { &hf_bthci_evt_periodic_event_counter, + { "Periodic Event Counter", "bthci_evt.periodic_evt_counter", + FT_UINT16, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, }; static ei_register_info ei[] = { @@ -9876,7 +10125,8 @@ proto_register_bthci_evt(void) &ett_iq_samples, &ett_simple_pairing_options, &ett_supported_switching_sample_rates, - &ett_transmit_power_level_flags + &ett_transmit_power_level_flags, + &ett_adv_subevent_responses }; /* Decode As handling |