2 * Routines for the Bluetooth HCI Command dissection
3 * Copyright 2002, Christoph Scholz <scholz@cs.uni-bonn.de>
4 * From: http://affix.sourceforge.net/archive/ethereal_affix-3.patch
6 * Refactored for wireshark checkin
9 * Updated to HCI specification 2.1 + EDR
10 * Allan M. Madsen 2007
11 * Updated to HCI specification 3.0+HS & 4.0
12 * Allan M. Madsen 2012
13 * Updated to Core Specification 5.2
15 * Updated to HCI specification 5.3
16 * Allan M. Madsen 2022
17 * Updated to HCI specification 5.4
18 * Allan M. Madsen 2023
19 * Updated to HCI specification 6.0
20 * Allan M. Madsen 2024
22 * Wireshark - Network traffic analyzer
23 * By Gerald Combs <gerald@wireshark.org>
24 * Copyright 1998 Gerald Combs
26 * SPDX-License-Identifier: GPL-2.0-or-later
31 #include <epan/packet.h>
32 #include <epan/addr_resolv.h>
33 #include <epan/expert.h>
34 #include <epan/prefs.h>
35 #include <epan/decode_as.h>
37 #include <epan/proto_data.h>
39 #include <epan/unit_strings.h>
41 #include <wsutil/utf8_entities.h>
43 #include "packet-bluetooth.h"
44 #include "packet-bthci_cmd.h"
45 #include "packet-bthci_evt.h"
46 #include "packet-btatt.h"
48 static int proto_bthci_cmd
;
50 static int hf_bthci_cmd_opcode
;
51 static int hf_bthci_cmd_ogf
;
52 static int hf_bthci_cmd_ocf
;
53 static int hf_bthci_cmd_ocf_link_control
;
54 static int hf_bthci_cmd_ocf_link_policy
;
55 static int hf_bthci_cmd_ocf_host_controller_and_baseband
;
56 static int hf_bthci_cmd_ocf_informational
;
57 static int hf_bthci_cmd_ocf_status
;
58 static int hf_bthci_cmd_ocf_testing
;
59 static int hf_bthci_cmd_ocf_logo_testing
;
60 static int hf_bthci_cmd_ocf_low_energy
;
61 static int hf_bthci_cmd_param_length
;
62 static int hf_bthci_cmd_lap
;
63 static int hf_bthci_cmd_inq_length
;
64 static int hf_bthci_cmd_num_responses
;
65 static int hf_bthci_cmd_encrypt_mode
;
66 static int hf_bthci_cmd_bd_addr
;
67 static int hf_bthci_cmd_packet_type
;
68 static int hf_bthci_cmd_packet_type_dh5
;
69 static int hf_bthci_cmd_packet_type_dm5
;
70 static int hf_bthci_cmd_packet_type_3dh5
;
71 static int hf_bthci_cmd_packet_type_2dh5
;
72 static int hf_bthci_cmd_packet_type_dh3
;
73 static int hf_bthci_cmd_packet_type_dm3
;
74 static int hf_bthci_cmd_packet_type_3dh3
;
75 static int hf_bthci_cmd_packet_type_2dh3
;
76 static int hf_bthci_cmd_packet_type_reserved_5_7
;
77 static int hf_bthci_cmd_packet_type_dh1
;
78 static int hf_bthci_cmd_packet_type_dm1
;
79 static int hf_bthci_cmd_packet_type_3dh1
;
80 static int hf_bthci_cmd_packet_type_2dh1
;
81 static int hf_bthci_cmd_packet_type_reserved_0
;
82 static int hf_bthci_cmd_clock_offset
;
83 static int hf_bthci_cmd_clock_offset_valid
;
84 static int hf_bthci_cmd_allow_role_switch
;
85 static int hf_bthci_cmd_page_scan_mode
;
86 static int hf_bthci_cmd_page_scan_repetition_mode
;
87 static int hf_bthci_cmd_page_scan_period_mode
;
88 static int hf_bthci_cmd_max_period_length
;
89 static int hf_bthci_cmd_min_period_length
;
90 static int hf_bthci_cmd_connection_handle
;
91 static int hf_bthci_cmd_reason
;
92 static int hf_bthci_cmd_num_link_keys
;
93 static int hf_bthci_cmd_link_key
;
94 static int hf_bthci_cmd_packet_type_hv1
;
95 static int hf_bthci_cmd_packet_type_hv2
;
96 static int hf_bthci_cmd_packet_type_hv3
;
97 static int hf_bthci_cmd_role
;
98 static int hf_bthci_cmd_acr_role
;
99 static int hf_bthci_cmd_pin_code_length
;
100 static int hf_bthci_cmd_pin_code
;
101 static int hf_bthci_cmd_pin_type
;
102 static int hf_bthci_cmd_encryption_enable
;
103 static int hf_bthci_cmd_key_flag
;
104 static int hf_bthci_cmd_max_interval_hold
;
105 static int hf_bthci_cmd_min_interval_hold
;
106 static int hf_bthci_cmd_max_interval_sniff
;
107 static int hf_bthci_cmd_min_interval_sniff
;
108 static int hf_bthci_cmd_sniff_attempt
;
109 static int hf_bthci_cmd_sniff_timeout
;
110 static int hf_bthci_cmd_timeout
;
111 static int hf_bthci_cmd_max_interval_beacon
;
112 static int hf_bthci_cmd_min_interval_beacon
;
113 static int hf_bthci_cmd_flags
;
114 static int hf_bthci_cmd_flow_direction
;
115 static int hf_bthci_cmd_service_type
;
116 static int hf_bthci_cmd_token_rate
;
117 static int hf_bthci_cmd_token_bucket_size
;
118 static int hf_bthci_cmd_peak_bandwidth
;
119 static int hf_bthci_cmd_latency
;
120 static int hf_bthci_cmd_delay_variation
;
121 static int hf_bthci_cmd_link_policy_setting_switch
;
122 static int hf_bthci_cmd_link_policy_setting_hold
;
123 static int hf_bthci_cmd_link_policy_setting_sniff
;
124 static int hf_bthci_cmd_link_policy_setting_park
;
125 static int hf_bthci_cmd_filter_type
;
126 static int hf_bthci_cmd_inquiry_result_filter_condition_type
;
127 static int hf_bthci_cmd_connection_setup_filter_condition_type
;
128 static int hf_bthci_cmd_cod_class_of_device_mask
;
129 static int hf_bthci_cmd_cod_minor_device_class_mask
;
130 static int hf_bthci_cmd_cod_format_type_mask
;
131 static int hf_bthci_cmd_cod_major_service_class_information_mask
;
132 static int hf_bthci_cmd_cod_major_service_class_telephony_mask
;
133 static int hf_bthci_cmd_cod_major_service_class_audio_mask
;
134 static int hf_bthci_cmd_cod_major_service_class_object_transfer_mask
;
135 static int hf_bthci_cmd_cod_major_service_class_capturing_mask
;
136 static int hf_bthci_cmd_cod_major_service_class_rendering_mask
;
137 static int hf_bthci_cmd_cod_major_service_class_networking_mask
;
138 static int hf_bthci_cmd_cod_major_service_class_positioning_mask
;
139 static int hf_bthci_cmd_cod_major_service_class_reserved_mask
;
140 static int hf_bthci_cmd_cod_major_service_class_le_audio_mask
;
141 static int hf_bthci_cmd_cod_major_service_class_limited_discoverable_mode_mask
;
142 static int hf_bthci_cmd_cod_major_device_class_mask
;
143 static int hf_bthci_cmd_auto_acc_flag
;
144 static int hf_bthci_cmd_read_all_flag
;
145 static int hf_bthci_cmd_delete_all_flag
;
146 static int hf_bthci_cmd_authentication_enable
;
147 static int hf_bthci_cmd_input_unused
;
148 static int hf_bthci_cmd_input_coding
;
149 static int hf_bthci_cmd_input_data_format
;
150 static int hf_bthci_cmd_input_sample_size
;
151 static int hf_bthci_cmd_linear_pcm_bit_pos
;
152 static int hf_bthci_cmd_air_coding_format
;
153 static int hf_bthci_cmd_num_broadcast_retransmissions
;
154 static int hf_bthci_cmd_hold_mode_act_page
;
155 static int hf_bthci_cmd_hold_mode_act_inquiry
;
156 static int hf_bthci_cmd_hold_mode_act_periodic
;
157 static int hf_bthci_cmd_scan_enable
;
158 static int hf_bthci_cmd_interval
;
159 static int hf_bthci_cmd_window
;
160 static int hf_bthci_cmd_device_name
;
161 static int hf_bthci_cmd_num_curr_iac
;
162 static int hf_bthci_cmd_iac_lap
;
163 static int hf_bthci_cmd_evt_mask_00
;
164 static int hf_bthci_cmd_evt_mask_01
;
165 static int hf_bthci_cmd_evt_mask_02
;
166 static int hf_bthci_cmd_evt_mask_03
;
167 static int hf_bthci_cmd_evt_mask_04
;
168 static int hf_bthci_cmd_evt_mask_05
;
169 static int hf_bthci_cmd_evt_mask_06
;
170 static int hf_bthci_cmd_evt_mask_07
;
171 static int hf_bthci_cmd_evt_mask_10
;
172 static int hf_bthci_cmd_evt_mask_11
;
173 static int hf_bthci_cmd_evt_mask_12
;
174 static int hf_bthci_cmd_evt_mask_13
;
175 static int hf_bthci_cmd_evt_mask_14
;
176 static int hf_bthci_cmd_evt_mask_17
;
177 static int hf_bthci_cmd_evt_mask_20
;
178 static int hf_bthci_cmd_evt_mask_21
;
179 static int hf_bthci_cmd_evt_mask_23
;
180 static int hf_bthci_cmd_evt_mask_24
;
181 static int hf_bthci_cmd_evt_mask_25
;
182 static int hf_bthci_cmd_evt_mask_26
;
183 static int hf_bthci_cmd_evt_mask_27
;
184 static int hf_bthci_cmd_evt_mask_30
;
185 static int hf_bthci_cmd_evt_mask_31
;
186 static int hf_bthci_cmd_evt_mask_32
;
187 static int hf_bthci_cmd_evt_mask_33
;
188 static int hf_bthci_cmd_evt_mask_34
;
189 static int hf_bthci_cmd_evt_mask_35
;
190 static int hf_bthci_cmd_evt_mask_36
;
191 static int hf_bthci_cmd_evt_mask_37
;
192 static int hf_bthci_cmd_evt_mask_40
;
193 static int hf_bthci_cmd_evt_mask_41
;
194 static int hf_bthci_cmd_evt_mask_42
;
195 static int hf_bthci_cmd_evt_mask_53
;
196 static int hf_bthci_cmd_evt_mask_54
;
197 static int hf_bthci_cmd_evt_mask_55
;
198 static int hf_bthci_cmd_evt_mask_56
;
199 static int hf_bthci_cmd_evt_mask_57
;
200 static int hf_bthci_cmd_evt_mask_60
;
201 static int hf_bthci_cmd_evt_mask_61
;
202 static int hf_bthci_cmd_evt_mask_62
;
203 static int hf_bthci_cmd_evt_mask_63
;
204 static int hf_bthci_cmd_evt_mask_64
;
205 static int hf_bthci_cmd_evt_mask_65
;
206 static int hf_bthci_cmd_evt_mask_67
;
207 static int hf_bthci_cmd_evt_mask_70
;
208 static int hf_bthci_cmd_evt_mask_72
;
209 static int hf_bthci_cmd_evt_mask_73
;
210 static int hf_bthci_cmd_sco_flow_control
;
211 static int hf_bthci_cmd_num_handles
;
212 static int hf_bthci_cmd_num_compl_packets
;
213 static int hf_bthci_cmd_flow_contr_enable
;
214 static int hf_bthci_cmd_host_data_packet_length_acl
;
215 static int hf_bthci_cmd_host_data_packet_length_sco
;
216 static int hf_bthci_cmd_host_total_num_acl_data_packets
;
217 static int hf_bthci_cmd_host_total_num_sco_data_packets
;
218 static int hf_bthci_cmd_loopback_mode
;
219 static int hf_bthci_cmd_page_number
;
220 static int hf_bthci_cmd_transmit_bandwidth
;
221 static int hf_bthci_cmd_receive_bandwidth
;
222 static int hf_bthci_cmd_max_latency_ms
;
223 static int hf_bthci_cmd_max_latency
;
224 static int hf_bthci_cmd_retransmission_effort
;
225 static int hf_bthci_cmd_scan_type
;
226 static int hf_bthci_cmd_inq_mode
;
227 static int hf_bthci_cmd_fec_required
;
228 static int hf_bthci_cmd_err_data_reporting
;
229 static int hf_bthci_cmd_tx_power
;
230 static int hf_bthci_cmd_sco_packet_type
;
231 static int hf_bthci_cmd_sco_packet_type_hv1
;
232 static int hf_bthci_cmd_sco_packet_type_hv2
;
233 static int hf_bthci_cmd_sco_packet_type_hv3
;
234 static int hf_bthci_cmd_sco_packet_type_ev3
;
235 static int hf_bthci_cmd_sco_packet_type_ev4
;
236 static int hf_bthci_cmd_sco_packet_type_ev5
;
237 static int hf_bthci_cmd_sco_packet_type_2ev3
;
238 static int hf_bthci_cmd_sco_packet_type_3ev3
;
239 static int hf_bthci_cmd_sco_packet_type_2ev5
;
240 static int hf_bthci_cmd_sco_packet_type_3ev5
;
241 static int hf_bthci_cmd_sco_packet_type_reserved
;
242 static int hf_bthci_cmd_min_remote_timeout
;
243 static int hf_bthci_cmd_min_local_timeout
;
244 static int hf_bthci_cmd_flush_packet_type
;
245 static int hf_bthci_cmd_afh_ch_assessment_mode
;
246 static int hf_bthci_cmd_ch_classification
;
247 static int hf_bthci_cmd_which_clock
;
248 static int hf_bthci_cmd_io_capability
;
249 static int hf_bthci_cmd_oob_data_present
;
250 static int hf_bthci_cmd_auth_requirements
;
251 static int hf_bthci_cmd_passkey
;
252 static int hf_bthci_cmd_randomizer_r
;
253 static int hf_bthci_cmd_hash_c
;
254 static int hf_bthci_cmd_simple_pairing_mode
;
255 static int hf_bthci_cmd_simple_pairing_debug_mode
;
256 static int hf_bthci_cmd_notification_type
;
257 static int hf_bthci_cmd_physical_link_handle
;
258 static int hf_bthci_cmd_dedicated_amp_key_length
;
259 static int hf_bthci_cmd_dedicated_amp_key_type
;
260 static int hf_bthci_cmd_dedicated_amp_key
;
261 static int hf_bthci_cmd_flow_spec
;
262 static int hf_bthci_cmd_flow_spec_identifier
;
263 static int hf_bthci_cmd_flow_spec_service_type
;
264 static int hf_bthci_cmd_flow_spec_sdu_size
;
265 static int hf_bthci_cmd_flow_spec_sdu_arrival_time
;
266 static int hf_bthci_cmd_flow_spec_access_latency
;
267 static int hf_bthci_cmd_flush_to_us
;
268 static int hf_bthci_cmd_logical_link_handle
;
269 static int hf_bthci_cmd_evt_mask2
;
270 static int hf_bthci_cmd_evt_mask2_00
;
271 static int hf_bthci_cmd_evt_mask2_01
;
272 static int hf_bthci_cmd_evt_mask2_02
;
273 static int hf_bthci_cmd_evt_mask2_03
;
274 static int hf_bthci_cmd_evt_mask2_04
;
275 static int hf_bthci_cmd_evt_mask2_05
;
276 static int hf_bthci_cmd_evt_mask2_06
;
277 static int hf_bthci_cmd_evt_mask2_07
;
278 static int hf_bthci_cmd_evt_mask2_08
;
279 static int hf_bthci_cmd_evt_mask2_09
;
280 static int hf_bthci_cmd_evt_mask2_10
;
281 static int hf_bthci_cmd_evt_mask2_11
;
282 static int hf_bthci_cmd_evt_mask2_12
;
283 static int hf_bthci_cmd_evt_mask2_13
;
284 static int hf_bthci_cmd_evt_mask2_14
;
285 static int hf_bthci_cmd_evt_mask2_15
;
286 static int hf_bthci_cmd_evt_mask2_16
;
287 static int hf_bthci_cmd_evt_mask2_17
;
288 static int hf_bthci_cmd_evt_mask2_18
;
289 static int hf_bthci_cmd_evt_mask2_19
;
290 static int hf_bthci_cmd_evt_mask2_20
;
291 static int hf_bthci_cmd_evt_mask2_21
;
292 static int hf_bthci_cmd_evt_mask2_22
;
293 static int hf_bthci_cmd_evt_mask2_23
;
294 static int hf_bthci_cmd_evt_mask2_24
;
295 static int hf_bthci_cmd_evt_mask2_25
;
296 static int hf_bthci_cmd_evt_mask2_reserved
;
297 static int hf_bthci_cmd_location_domain_aware
;
298 static int hf_bthci_cmd_location_domain
;
299 static int hf_bthci_cmd_location_domain_options
;
300 static int hf_bthci_cmd_location_options
;
301 static int hf_bthci_cmd_flow_control_mode
;
302 static int hf_bthci_cmd_tx_power_level_type
;
303 static int hf_bthci_cmd_short_range_mode
;
304 static int hf_bthci_cmd_le_supported_host
;
305 static int hf_bthci_cmd_le_simultaneous_host
;
306 static int hf_bthci_cmd_enable_amp_recv_reports
;
307 static int hf_bthci_cmd_amp_recv_report_interval
;
308 static int hf_bthci_cmd_length_so_far
;
309 static int hf_bthci_cmd_amp_assoc_length
;
310 static int hf_bthci_cmd_amp_remaining_assoc_length
;
311 static int hf_bthci_cmd_amp_assoc_fragment
;
312 static int hf_bthci_cmd_le_event_mask
;
313 static int hf_bthci_cmd_le_event_mask_le_reserved
;
314 static int hf_bthci_cmd_le_event_mask_le_frame_space_update_complete
;
315 static int hf_bthci_cmd_le_event_mask_le_monitored_advertisers_report
;
316 static int hf_bthci_cmd_le_event_mask_le_cs_test_end_complete
;
317 static int hf_bthci_cmd_le_event_mask_le_cs_subevent_result_continue
;
318 static int hf_bthci_cmd_le_event_mask_le_cs_subevent_result
;
319 static int hf_bthci_cmd_le_event_mask_le_cs_procedure_enable_complete
;
320 static int hf_bthci_cmd_le_event_mask_le_cs_config_complete
;
321 static int hf_bthci_cmd_le_event_mask_le_cs_security_enable_complete
;
322 static int hf_bthci_cmd_le_event_mask_le_cs_read_remote_fae_table_complete
;
323 static int hf_bthci_cmd_le_event_mask_le_cs_read_remote_supported_capabilities_complete
;
324 static int hf_bthci_cmd_le_event_mask_le_read_all_remote_features_complete
;
325 static int hf_bthci_cmd_le_event_mask_le_cis_established_v2
;
326 static int hf_bthci_cmd_le_event_mask_le_enhanced_connection_complete_v2
;
327 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_response_report
;
328 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_subevent_data_request
;
329 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_transfer_received_v2
;
330 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_report_v2
;
331 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_established_v2
;
332 static int hf_bthci_cmd_le_event_mask_le_subrate_changed
;
333 static int hf_bthci_cmd_le_event_mask_le_biginfo_advertising_report
;
334 static int hf_bthci_cmd_le_event_mask_le_transmit_power_reporting
;
335 static int hf_bthci_cmd_le_event_mask_le_path_loss_threshold
;
336 static int hf_bthci_cmd_le_event_mask_le_request_peer_sca_complete
;
337 static int hf_bthci_cmd_le_event_mask_le_big_sync_lost
;
338 static int hf_bthci_cmd_le_event_mask_le_big_sync_established
;
339 static int hf_bthci_cmd_le_event_mask_le_terminate_big_complete
;
340 static int hf_bthci_cmd_le_event_mask_le_create_big_complete
;
341 static int hf_bthci_cmd_le_event_mask_le_cis_request
;
342 static int hf_bthci_cmd_le_event_mask_le_cis_established_v1
;
343 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_transfer_received_v1
;
344 static int hf_bthci_cmd_le_event_mask_le_cte_request_failed
;
345 static int hf_bthci_cmd_le_event_mask_le_connection_iq_report
;
346 static int hf_bthci_cmd_le_event_mask_le_connectionless_iq_report
;
347 static int hf_bthci_cmd_le_event_mask_le_channel_selection_algorithm
;
348 static int hf_bthci_cmd_le_event_mask_le_scan_request_received
;
349 static int hf_bthci_cmd_le_event_mask_le_extended_advertising_set_terminated
;
350 static int hf_bthci_cmd_le_event_mask_le_extended_scan_timeout
;
351 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_lost
;
352 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_report_v1
;
353 static int hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_established_v1
;
354 static int hf_bthci_cmd_le_event_mask_le_extended_advertising_report
;
355 static int hf_bthci_cmd_le_event_mask_le_phy_update_complete
;
356 static int hf_bthci_cmd_le_event_mask_le_direct_advertising_report
;
357 static int hf_bthci_cmd_le_event_mask_le_enhanced_connection_complete_v1
;
358 static int hf_bthci_cmd_le_event_mask_le_generate_dhkey_complete
;
359 static int hf_bthci_cmd_le_event_mask_le_read_local_p256_public_key_complete
;
360 static int hf_bthci_cmd_le_event_mask_le_data_length_change
;
361 static int hf_bthci_cmd_le_event_mask_le_remote_connection_parameter_request
;
362 static int hf_bthci_cmd_le_event_mask_le_long_term_key_request
;
363 static int hf_bthci_cmd_le_event_mask_le_read_remote_features_complete
;
364 static int hf_bthci_cmd_le_event_mask_le_connection_update_complete
;
365 static int hf_bthci_cmd_le_event_mask_le_advertising_report
;
366 static int hf_bthci_cmd_le_event_mask_le_connection_complete
;
367 static int hf_bthci_cmd_le_advts_interval_min
;
368 static int hf_bthci_cmd_le_advts_interval_max
;
369 static int hf_bthci_cmd_le_advts_type
;
370 static int hf_bthci_cmd_le_own_address_type
;
371 static int hf_bthci_cmd_le_direct_address_type
;
372 static int hf_bthci_cmd_le_advts_channel_map_1
;
373 static int hf_bthci_cmd_le_advts_channel_map_2
;
374 static int hf_bthci_cmd_le_advts_channel_map_3
;
375 static int hf_bthci_cmd_le_advts_filter_policy
;
376 static int hf_bthci_cmd_le_data_length
;
377 static int hf_bthci_cmd_le_advts_enable
;
378 static int hf_bthci_cmd_le_scan_enable
;
379 static int hf_bthci_cmd_le_filter_duplicates
;
380 static int hf_bthci_cmd_le_scan_type
;
381 static int hf_bthci_cmd_le_scan_interval
;
382 static int hf_bthci_cmd_le_scan_window
;
383 static int hf_bthci_cmd_le_scan_filter_policy
;
384 static int hf_bthci_cmd_scan_filter_policy_reserved
;
385 static int hf_bthci_cmd_scan_filter_policy_decision_mode
;
386 static int hf_bthci_cmd_scan_filter_policy_extended
;
387 static int hf_bthci_cmd_scan_filter_policy_filtered
;
388 static int hf_bthci_cmd_le_initiator_filter_policy
;
389 static int hf_bthci_cmd_le_peer_address_type
;
390 static int hf_bthci_cmd_le_peer_identity_address_type
;
391 static int hf_bthci_cmd_le_con_interval_min
;
392 static int hf_bthci_cmd_le_con_interval_max
;
393 static int hf_bthci_cmd_le_con_latency
;
394 static int hf_bthci_cmd_le_supervision_timeout
;
395 static int hf_bthci_cmd_le_min_ce_length
;
396 static int hf_bthci_cmd_le_max_ce_length
;
397 static int hf_bthci_cmd_le_address_type
;
398 static int hf_bthci_cmd_le_channel_map
;
399 static int hf_bthci_cmd_key
;
400 static int hf_bthci_cmd_plaintext_data
;
401 static int hf_bthci_cmd_random_number
;
402 static int hf_bthci_cmd_encrypted_diversifier
;
403 static int hf_bthci_cmd_le_long_term_key
;
404 static int hf_bthci_cmd_rx_frequency
;
405 static int hf_bthci_cmd_tx_frequency
;
406 static int hf_bthci_cmd_test_data_length
;
407 static int hf_bthci_cmd_test_packet_payload
;
408 static int hf_bthci_cmd_parameter
;
409 static int hf_response_in_frame
;
410 static int hf_command_response_time_delta
;
411 static int hf_pending_in_frame
;
412 static int hf_command_pending_time_delta
;
413 static int hf_bthci_cmd_le_tx_octets
;
414 static int hf_bthci_cmd_le_tx_time
;
415 static int hf_bthci_cmd_le_suggested_max_tx_octets
;
416 static int hf_bthci_cmd_le_suggested_max_tx_time
;
417 static int hf_bthci_cmd_le_remote_p_256_public_key
;
418 static int hf_bthci_cmd_le_peer_irk
;
419 static int hf_bthci_cmd_le_local_irk
;
420 static int hf_bthci_cmd_le_address_resolution_enable
;
421 static int hf_bthci_cmd_le_rpa_timeout
;
422 static int hf_bthci_cmd_advertising_ext_interval_min
;
423 static int hf_bthci_cmd_advertising_ext_interval_max
;
424 static int hf_bthci_cmd_advertising_handle
;
425 static int hf_bthci_cmd_advertising_properties
;
426 static int hf_bthci_cmd_advertising_properties_reserved
;
427 static int hf_bthci_cmd_advertising_properties_connectable
;
428 static int hf_bthci_cmd_advertising_properties_scannable
;
429 static int hf_bthci_cmd_advertising_properties_directed
;
430 static int hf_bthci_cmd_advertising_properties_hdc_connectable_directed
;
431 static int hf_bthci_cmd_advertising_properties_legacy_adv
;
432 static int hf_bthci_cmd_advertising_properties_anonymous_adv
;
433 static int hf_bthci_cmd_advertising_properties_incl_txpower
;
434 static int hf_bthci_cmd_advertising_properties_use_decision_pdus
;
435 static int hf_bthci_cmd_advertising_properties_decision_pdu_incl_adva
;
436 static int hf_bthci_cmd_advertising_properties_decision_pdu_incl_adi
;
437 static int hf_bthci_cmd_periodic_advertising_properties
;
438 static int hf_bthci_cmd_periodic_advertising_properties_reserved
;
439 static int hf_bthci_cmd_primary_advertising_phy
;
440 static int hf_bthci_cmd_sec_adv_max_skip
;
441 static int hf_bthci_cmd_secondary_advertising_phy
;
442 static int hf_bthci_cmd_advertising_sid
;
443 static int hf_bthci_cmd_scan_req_notif_en
;
444 static int hf_bthci_cmd_le_adv_data_operation
;
445 static int hf_bthci_cmd_le_adv_data_frag_pref
;
446 static int hf_bthci_cmd_le_adv_set
;
447 static int hf_bthci_cmd_le_adv_en_sets
;
448 static int hf_bthci_cmd_le_adv_duration
;
449 static int hf_bthci_cmd_le_adv_max_extended_events
;
450 static int hf_bthci_cmd_all_phys
;
451 static int hf_bthci_cmd_all_phys_tx_pref
;
452 static int hf_bthci_cmd_all_phys_rx_pref
;
453 static int hf_bthci_cmd_all_phys_reserved
;
454 static int hf_bthci_cmd_tx_phys
;
455 static int hf_bthci_cmd_rx_phys
;
456 static int hf_bthci_cmd_phys_pref_le_1m
;
457 static int hf_bthci_cmd_phys_pref_le_2m
;
458 static int hf_bthci_cmd_phys_pref_le_coded
;
459 static int hf_bthci_cmd_phys_pref_reserved
;
460 static int hf_bthci_cmd_phy_options
;
461 static int hf_bthci_cmd_phy_options_coding
;
462 static int hf_bthci_cmd_phy_options_reserved
;
463 static int hf_bthci_cmd_phy
;
464 static int hf_bthci_cmd_modulation_index
;
465 static int hf_bthci_cmd_le_scan_phys
;
466 static int hf_bthci_cmd_le_scan_phys_reserved
;
467 static int hf_bthci_cmd_le_scan_phys_le_coded
;
468 static int hf_bthci_cmd_le_scan_phys_le_1m
;
469 static int hf_bthci_cmd_le_scan_phy_param
;
470 static int hf_bthci_cmd_le_scan_duration
;
471 static int hf_bthci_cmd_le_scan_period
;
472 static int hf_bthci_cmd_le_phys
;
473 static int hf_bthci_cmd_le_phys_reserved
;
474 static int hf_bthci_cmd_le_phys_le_coded
;
475 static int hf_bthci_cmd_le_phys_le_2m
;
476 static int hf_bthci_cmd_le_phys_le_1m
;
477 static int hf_bthci_cmd_le_init_phy_param
;
478 static int hf_bthci_cmd_le_privacy_mode
;
479 static int hf_bthci_cmd_sync_filter_policy
;
480 static int hf_bthci_cmd_skip
;
481 static int hf_bthci_cmd_rf_tx_path_compensation_value
;
482 static int hf_bthci_cmd_rf_rx_path_compensation_value
;
483 static int hf_bthci_cmd_sync_handle
;
484 static int hf_bthci_cmd_cte_length
;
485 static int hf_bthci_cmd_cte_type
;
486 static int hf_bthci_cmd_slot_durations
;
487 static int hf_bthci_cmd_antenna_switching_pattern_length
;
488 static int hf_bthci_cmd_antenna_switching_pattern
;
489 static int hf_bthci_cmd_antenna_id
;
490 static int hf_bthci_cmd_cte_count
;
491 static int hf_bthci_cmd_cte_enable
;
492 static int hf_bthci_cmd_iq_sampling_enable
;
493 static int hf_bthci_cmd_max_sampled_ctes
;
494 static int hf_bthci_cmd_cte_request_interval
;
495 static int hf_bthci_cmd_reporting_enable
;
496 static int hf_bthci_cmd_service_data_past
;
497 static int hf_bthci_cmd_sync_mode
;
498 static int hf_bthci_cmd_key_type
;
499 static int hf_bthci_cmd_sca_action
;
500 static int hf_bthci_cmd_sync_cte_type
;
501 static int hf_bthci_cmd_sync_cte_type_no_sync_aoa
;
502 static int hf_bthci_cmd_sync_cte_type_no_sync_aod_1us
;
503 static int hf_bthci_cmd_sync_cte_type_no_sync_aod_2us
;
504 static int hf_bthci_cmd_sync_cte_type_sync_only_with_cte
;
505 static int hf_bthci_cmd_sync_cte_type_reserved
;
506 static int hf_bthci_cmd_cte_types
;
507 static int hf_bthci_cmd_cte_types_reserved
;
508 static int hf_bthci_cmd_cte_types_aod_2us
;
509 static int hf_bthci_cmd_cte_types_aod_1us
;
510 static int hf_bthci_cmd_cte_types_aoa
;
511 static int hf_bthci_cmd_cig_id
;
512 static int hf_bthci_cmd_sdu_interval_c_to_p
;
513 static int hf_bthci_cmd_sdu_interval_p_to_c
;
514 static int hf_bthci_cmd_sdu_interval
;
515 static int hf_bthci_cmd_peripherals_clock_accuracy
;
516 static int hf_bthci_cmd_packing
;
517 static int hf_bthci_cmd_framing
;
518 static int hf_bthci_cmd_ft_c_to_p
;
519 static int hf_bthci_cmd_ft_p_to_c
;
520 static int hf_bthci_cmd_iso_interval
;
521 static int hf_bthci_cmd_cis_count
;
522 static int hf_bthci_cmd_cis_params
;
523 static int hf_bthci_cmd_cis_id
;
524 static int hf_bthci_cmd_nse
;
525 static int hf_bthci_cmd_max_sdu_c_to_p
;
526 static int hf_bthci_cmd_max_sdu_p_to_c
;
527 static int hf_bthci_cmd_max_sdu
;
528 static int hf_bthci_cmd_max_pdu_c_to_p
;
529 static int hf_bthci_cmd_max_pdu_p_to_c
;
530 static int hf_bthci_cmd_max_pdu
;
531 static int hf_bthci_cmd_phy_c_to_p
;
532 static int hf_bthci_cmd_phy_p_to_c
;
533 static int hf_bthci_cmd_bn_c_to_p
;
534 static int hf_bthci_cmd_bn_p_to_c
;
535 static int hf_bthci_cmd_bn
;
536 static int hf_bthci_cmd_max_transport_latency_c_to_p
;
537 static int hf_bthci_cmd_max_transport_latency_p_to_c
;
538 static int hf_bthci_cmd_max_transport_latency
;
539 static int hf_bthci_cmd_rtn_c_to_p
;
540 static int hf_bthci_cmd_rtn_p_to_c
;
541 static int hf_bthci_cmd_rtn
;
542 static int hf_bthci_cmd_cis_handle
;
543 static int hf_bthci_cmd_big_handle
;
544 static int hf_bthci_cmd_cis_bis_handle
;
545 static int hf_bthci_cmd_num_bis
;
546 static int hf_bthci_cmd_irc
;
547 static int hf_bthci_cmd_pto
;
548 static int hf_bthci_cmd_encryption
;
549 static int hf_bthci_cmd_broadcast_code
;
550 static int hf_bthci_cmd_mse
;
551 static int hf_bthci_cmd_bis_index
;
552 static int hf_bthci_cmd_sync_timeout
;
553 static int hf_bthci_cmd_data_path_direction
;
554 static int hf_bthci_cmd_data_path_id
;
555 static int hf_bthci_cmd_coding_format
;
556 static int hf_bthci_cmd_controller_delay
;
557 static int hf_bthci_cmd_codec_config_length
;
558 static int hf_bthci_cmd_codec_config
;
559 static int hf_bthci_cmd_payload_type
;
560 static int hf_bthci_cmd_feature_bit_number
;
561 static int hf_bthci_cmd_feature_bit_number2
;
562 static int hf_bthci_cmd_feature_bit_value
;
563 static int hf_bthci_cmd_phy_and_coding
;
564 static int hf_bthci_cmd_high_threshold
;
565 static int hf_bthci_cmd_high_hysteresis
;
566 static int hf_bthci_cmd_low_threshold
;
567 static int hf_bthci_cmd_low_hysteresis
;
568 static int hf_bthci_cmd_min_time_spent
;
569 static int hf_bthci_cmd_local_reporting_enable
;
570 static int hf_bthci_cmd_remote_reporting_enable
;
571 static int hf_bthci_cmd_addr_change_reasons
;
572 static int hf_bthci_cmd_addr_change_reasons_adv_data
;
573 static int hf_bthci_cmd_addr_change_reasons_scan_rsp_data
;
574 static int hf_bthci_cmd_addr_change_reasons_reserved
;
575 static int hf_bthci_cmd_subrate_factor_min
;
576 static int hf_bthci_cmd_subrate_factor_max
;
577 static int hf_bthci_cmd_continuation_number
;
578 static int hf_bthci_cmd_primary_adv_phy_options
;
579 static int hf_bthci_cmd_secondary_adv_phy_options
;
580 static int hf_bthci_cmd_num_subevents
;
581 static int hf_bthci_cmd_subevent_interval
;
582 static int hf_bthci_cmd_response_slot_delay
;
583 static int hf_bthci_cmd_response_slot_spacing
;
584 static int hf_bthci_cmd_num_response_slots
;
585 static int hf_bthci_cmd_subevent
;
586 static int hf_bthci_cmd_subevents
;
587 static int hf_bthci_cmd_response_slot_start
;
588 static int hf_bthci_cmd_response_slot_count
;
589 static int hf_bthci_cmd_subevent_data_length
;
590 static int hf_bthci_cmd_request_event
;
591 static int hf_bthci_cmd_request_subevent
;
592 static int hf_bthci_cmd_response_subevent
;
593 static int hf_bthci_cmd_response_slot
;
594 static int hf_bthci_cmd_response_data_length
;
595 static int hf_bthci_cmd_triggered_clock_capture
;
596 static int hf_bthci_cmd_lpo_allowed
;
597 static int hf_bthci_cmd_number_of_clock_captures_to_filter
;
598 static int hf_bthci_cmd_amp_controller_type
;
599 static int hf_bthci_cmd_esco_loopback_mode
;
600 static int hf_bthci_cmd_dm1_acl_u_mode
;
601 static int hf_bthci_cmd_codec_id
;
602 static int hf_bthci_cmd_company_id
;
603 static int hf_bthci_cmd_vendor_codec_id
;
604 static int hf_bthci_cmd_transmit_coding_format
;
605 static int hf_bthci_cmd_receive_coding_format
;
606 static int hf_bthci_cmd_input_coding_format
;
607 static int hf_bthci_cmd_output_coding_format
;
608 static int hf_bthci_cmd_transmit_codec_frame_size
;
609 static int hf_bthci_cmd_receive_codec_frame_size
;
610 static int hf_bthci_cmd_input_bandwidth
;
611 static int hf_bthci_cmd_output_bandwidth
;
612 static int hf_bthci_cmd_input_coded_data_size
;
613 static int hf_bthci_cmd_output_coded_data_size
;
614 static int hf_bthci_cmd_input_pcm_data_format
;
615 static int hf_bthci_cmd_output_pcm_data_format
;
616 static int hf_bthci_cmd_input_pcm_sample_payload_msb_position
;
617 static int hf_bthci_cmd_output_pcm_sample_payload_msb_position
;
618 static int hf_bthci_cmd_input_data_path
;
619 static int hf_bthci_cmd_output_data_path
;
620 static int hf_bthci_cmd_input_transport_unit_size
;
621 static int hf_bthci_cmd_output_transport_unit_size
;
622 static int hf_bthci_cmd_connectionless_peripheral_broadcast
;
623 static int hf_bthci_cmd_lt_addr
;
624 static int hf_bthci_cmd_interval_min
;
625 static int hf_bthci_cmd_interval_max
;
626 static int hf_bthci_cmd_cpb_supervision_to
;
627 static int hf_bthci_cmd_connectionless_peripheral_broadcast_receive
;
628 static int hf_bthci_cmd_clock_offset_32
;
629 static int hf_bthci_cmd_next_cpb_clock
;
630 static int hf_bthci_cmd_remote_timing_accuracy
;
631 static int hf_bthci_cmd_cpb_skip
;
632 static int hf_bthci_cmd_channel_map
;
633 static int hf_bthci_cmd_synchronization_scan_to
;
634 static int hf_bthci_cmd_c192
;
635 static int hf_bthci_cmd_r192
;
636 static int hf_bthci_cmd_c256
;
637 static int hf_bthci_cmd_r256
;
638 static int hf_bthci_mws_channel
;
639 static int hf_bthci_mws_rx_center_frequency
;
640 static int hf_bthci_mws_tx_center_frequency
;
641 static int hf_bthci_mws_rx_channel_bandwidth
;
642 static int hf_bthci_mws_tx_channel_bandwidth
;
643 static int hf_bthci_mws_channel_type
;
644 static int hf_bthci_external_frame_duration
;
645 static int hf_bthci_external_frame_sync_assert_offset
;
646 static int hf_bthci_external_frame_sync_assert_jitter
;
647 static int hf_bthci_external_frame_number_of_periods
;
648 static int hf_bthci_external_frame_periods
;
649 static int hf_bthci_external_frame_period
;
650 static int hf_bthci_external_frame_period_duration
;
651 static int hf_bthci_external_frame_period_type
;
652 static int hf_bthci_mws_rx_assert_offset
;
653 static int hf_bthci_mws_rx_assert_jitter
;
654 static int hf_bthci_mws_rx_deassert_offset
;
655 static int hf_bthci_mws_rx_deassert_jitter
;
656 static int hf_bthci_mws_tx_assert_offset
;
657 static int hf_bthci_mws_tx_assert_jitter
;
658 static int hf_bthci_mws_tx_deassert_offset
;
659 static int hf_bthci_mws_tx_deassert_jitter
;
660 static int hf_bthci_mws_pattern_assert_offset
;
661 static int hf_bthci_mws_pattern_assert_jitter
;
662 static int hf_bthci_mws_inactivity_duration_assert_offset
;
663 static int hf_bthci_mws_inactivity_duration_assert_jitter
;
664 static int hf_bthci_mws_scan_frequency_assert_offset
;
665 static int hf_bthci_mws_scan_frequency_assert_jitter
;
666 static int hf_bthci_mws_priority_assert_offset_request
;
667 static int hf_bthci_mws_transport_layer
;
668 static int hf_bthci_mws_to_baud_rate
;
669 static int hf_bthci_mws_from_baud_rate
;
670 static int hf_bthci_mws_number_of_frequencies
;
671 static int hf_bthci_mws_scan_frequency_table
;
672 static int hf_bthci_mws_scan_frequency_table_item
;
673 static int hf_bthci_mws_scan_frequency_table_item_low
;
674 static int hf_bthci_mws_scan_frequency_table_item_high
;
675 static int hf_bthci_mws_pattern_index
;
676 static int hf_bthci_mws_pattern_number_of_intervals
;
677 static int hf_bthci_mws_patterns
;
678 static int hf_bthci_mws_pattern
;
679 static int hf_bthci_mws_pattern_duration
;
680 static int hf_bthci_mws_pattern_type
;
681 static int hf_bthci_cmd_sync_train_to
;
682 static int hf_bthci_cmd_service_data
;
683 static int hf_bthci_cmd_secure_connection_host_support
;
684 static int hf_bthci_cmd_cpb_fragment
;
685 static int hf_bthci_cmd_cpb_data_length
;
686 static int hf_bthci_cmd_cpb_data
;
687 static int hf_bthci_cmd_authenticated_payload_timeout
;
688 static int hf_bthci_cmd_extended_inquiry_length
;
689 static int hf_bthci_cmd_min_encryption_key_size
;
690 static int hf_bthci_cmd_pages_requested
;
691 static int hf_bthci_cmd_config_id
;
692 static int hf_bthci_cmd_cs_roles
;
693 static int hf_bthci_cmd_cs_roles_initiator
;
694 static int hf_bthci_cmd_cs_roles_reflector
;
695 static int hf_bthci_cmd_cs_roles_reserved
;
696 static int hf_bthci_cmd_cs_sync_antenna_selection
;
697 static int hf_bthci_cmd_num_config
;
698 static int hf_bthci_cmd_max_consecutive_procedures
;
699 static int hf_bthci_cmd_num_antennas_supported
;
700 static int hf_bthci_cmd_max_antenna_paths_supported
;
701 static int hf_bthci_cmd_cs_modes_supported
;
702 static int hf_bthci_cmd_cs_modes_supported_3
;
703 static int hf_bthci_cmd_cs_modes_supported_reserved
;
704 static int hf_bthci_cmd_rtt_capability
;
705 static int hf_bthci_cmd_rtt_capability_coarse_precision
;
706 static int hf_bthci_cmd_rtt_capability_sounding_precision
;
707 static int hf_bthci_cmd_rtt_capability_random_precision
;
708 static int hf_bthci_cmd_rtt_capability_reserved
;
709 static int hf_bthci_cmd_rtt_aa_only_n
;
710 static int hf_bthci_cmd_rtt_sounding_n
;
711 static int hf_bthci_cmd_rtt_random_n
;
712 static int hf_bthci_cmd_nadm_sounding_capability
;
713 static int hf_bthci_cmd_nadm_sounding_capability_supported
;
714 static int hf_bthci_cmd_nadm_sounding_capability_reserved
;
715 static int hf_bthci_cmd_nadm_random_capability
;
716 static int hf_bthci_cmd_nadm_random_capability_supported
;
717 static int hf_bthci_cmd_nadm_random_capability_reserved
;
718 static int hf_bthci_cmd_cs_sync_phys_supported
;
719 static int hf_bthci_cmd_cs_sync_phys_supported_2m
;
720 static int hf_bthci_cmd_cs_sync_phys_supported_2m2bt
;
721 static int hf_bthci_cmd_cs_sync_phys_supported_reserved
;
722 static int hf_bthci_cmd_cs_subfeatures_supported
;
723 static int hf_bthci_cmd_cs_subfeatures_companion_signal
;
724 static int hf_bthci_cmd_cs_subfeatures_freq_actuation_error
;
725 static int hf_bthci_cmd_cs_subfeatures_channel_selection_3c
;
726 static int hf_bthci_cmd_cs_subfeatures_pbr_from_rtt
;
727 static int hf_bthci_cmd_cs_subfeatures_reserved
;
728 static int hf_bthci_cmd_tip1_times_supported
;
729 static int hf_bthci_cmd_tip2_times_supported
;
730 static int hf_bthci_cmd_tip_times_supported_10us
;
731 static int hf_bthci_cmd_tip_times_supported_20us
;
732 static int hf_bthci_cmd_tip_times_supported_30us
;
733 static int hf_bthci_cmd_tip_times_supported_40us
;
734 static int hf_bthci_cmd_tip_times_supported_50us
;
735 static int hf_bthci_cmd_tip_times_supported_60us
;
736 static int hf_bthci_cmd_tip_times_supported_80us
;
737 static int hf_bthci_cmd_tip_times_supported_reserved
;
738 static int hf_bthci_cmd_tfcs_times_supported
;
739 static int hf_bthci_cmd_tfcs_times_supported_15us
;
740 static int hf_bthci_cmd_tfcs_times_supported_20us
;
741 static int hf_bthci_cmd_tfcs_times_supported_30us
;
742 static int hf_bthci_cmd_tfcs_times_supported_40us
;
743 static int hf_bthci_cmd_tfcs_times_supported_50us
;
744 static int hf_bthci_cmd_tfcs_times_supported_60us
;
745 static int hf_bthci_cmd_tfcs_times_supported_80us
;
746 static int hf_bthci_cmd_tfcs_times_supported_100us
;
747 static int hf_bthci_cmd_tfcs_times_supported_120us
;
748 static int hf_bthci_cmd_tfcs_times_supported_reserved
;
749 static int hf_bthci_cmd_tpm_times_supported
;
750 static int hf_bthci_cmd_tpm_times_supported_10us
;
751 static int hf_bthci_cmd_tpm_times_supported_20us
;
752 static int hf_bthci_cmd_tpm_times_supported_reserved
;
753 static int hf_bthci_cmd_tsw_time_supported
;
754 static int hf_bthci_cmd_tx_snr_capability
;
755 static int hf_bthci_cmd_tx_snr_capability_18dB
;
756 static int hf_bthci_cmd_tx_snr_capability_21dB
;
757 static int hf_bthci_cmd_tx_snr_capability_24dB
;
758 static int hf_bthci_cmd_tx_snr_capability_27dB
;
759 static int hf_bthci_cmd_tx_snr_capability_30dB
;
760 static int hf_bthci_cmd_tx_snr_capability_reserved
;
761 static int hf_bthci_cmd_fae_table
;
762 static int hf_bthci_cmd_create_context
;
763 static int hf_bthci_cmd_main_mode_type
;
764 static int hf_bthci_cmd_sub_mode_type
;
765 static int hf_bthci_cmd_min_main_mode_steps
;
766 static int hf_bthci_cmd_max_main_mode_steps
;
767 static int hf_bthci_cmd_main_mode_repetition
;
768 static int hf_bthci_cmd_mode0_steps
;
769 static int hf_bthci_cmd_cs_role
;
770 static int hf_bthci_cmd_rtt_type
;
771 static int hf_bthci_cmd_cs_sync_phy
;
772 static int hf_bthci_cmd_channel_map_repetition
;
773 static int hf_bthci_cmd_channel_selection_type
;
774 static int hf_bthci_cmd_ch3c_shape
;
775 static int hf_bthci_cmd_ch3c_jump
;
776 static int hf_bthci_cmd_companion_signal_enable
;
777 static int hf_bthci_cmd_cs_enable
;
778 static int hf_bthci_cmd_max_procedure_len
;
779 static int hf_bthci_cmd_min_procedure_interval
;
780 static int hf_bthci_cmd_max_procedure_interval
;
781 static int hf_bthci_cmd_max_procedure_count
;
782 static int hf_bthci_cmd_min_subevent_len
;
783 static int hf_bthci_cmd_max_subevent_len
;
784 static int hf_bthci_cmd_subevent_len
;
785 static int hf_bthci_cmd_tone_antenna_selection
;
786 static int hf_bthci_cmd_tx_pwr_delta
;
787 static int hf_bthci_cmd_preferred_peer_antenna
;
788 static int hf_bthci_cmd_preferred_peer_antenna_reserved
;
789 static int hf_bthci_cmd_preferred_peer_antenna_first
;
790 static int hf_bthci_cmd_preferred_peer_antenna_second
;
791 static int hf_bthci_cmd_preferred_peer_antenna_third
;
792 static int hf_bthci_cmd_preferred_peer_antenna_fourth
;
793 static int hf_bthci_cmd_snr_control_initiator
;
794 static int hf_bthci_cmd_snr_control_reflector
;
795 static int hf_bthci_cmd_cs_subevent_interval
;
796 static int hf_bthci_cmd_max_num_subevents
;
797 static int hf_bthci_cmd_tx_power_setting
;
798 static int hf_bthci_cmd_t_ip1_time
;
799 static int hf_bthci_cmd_t_ip2_time
;
800 static int hf_bthci_cmd_t_fcs_time
;
801 static int hf_bthci_cmd_t_pm_time
;
802 static int hf_bthci_cmd_t_sw_time
;
803 static int hf_bthci_cmd_drbg_nonce
;
804 static int hf_bthci_cmd_cs_override_config
;
805 static int hf_bthci_cmd_override_config_reserved
;
806 static int hf_bthci_cmd_override_config_stable_phase_test
;
807 static int hf_bthci_cmd_override_config_cs_sync_data
;
808 static int hf_bthci_cmd_override_config_ss_marker_value
;
809 static int hf_bthci_cmd_override_config_ss_marker_position
;
810 static int hf_bthci_cmd_override_config_cs_sync_aa
;
811 static int hf_bthci_cmd_override_config_tone_ant_permutation
;
812 static int hf_bthci_cmd_override_config_tpm_tone_ext
;
813 static int hf_bthci_cmd_override_config_main_mode_steps
;
814 static int hf_bthci_cmd_override_config_channel_list
;
815 static int hf_bthci_cmd_cs_override_param_length
;
816 static int hf_bthci_cmd_cs_override_param_data
;
817 static int hf_bthci_cmd_adv_monitoring_enable
;
818 static int hf_bthci_cmd_adv_decision_flags
;
819 static int hf_bthci_cmd_adv_decision_flags_resolvable_tag
;
820 static int hf_bthci_cmd_adv_decision_flags_reserved
;
821 static int hf_bthci_cmd_adv_decision_data
;
822 static int hf_bthci_cmd_num_tests
;
823 static int hf_bthci_cmd_adv_test_flags
;
824 static int hf_bthci_cmd_adv_test_flags_start_group
;
825 static int hf_bthci_cmd_adv_test_flags_data_contains_field_check_pass
;
826 static int hf_bthci_cmd_adv_test_flags_data_contains_field_check_fail
;
827 static int hf_bthci_cmd_adv_test_flags_data_not_contain_field
;
828 static int hf_bthci_cmd_adv_test_flags_reserved
;
829 static int hf_bthci_cmd_adv_test_field
;
830 static int hf_bthci_cmd_adv_test_params
;
831 static int hf_bthci_cmd_rssi_threshold_low
;
832 static int hf_bthci_cmd_rssi_threshold_high
;
833 static int hf_bthci_cmd_rssi_threshold_timeout
;
834 static int hf_bthci_cmd_frame_space_min
;
835 static int hf_bthci_cmd_frame_space_max
;
836 static int hf_bthci_cmd_spacing_types
;
837 static int hf_bthci_cmd_spacing_types_tifs_acl_cp
;
838 static int hf_bthci_cmd_spacing_types_tifs_acl_pc
;
839 static int hf_bthci_cmd_spacing_types_tmces
;
840 static int hf_bthci_cmd_spacing_types_tifs_cis
;
841 static int hf_bthci_cmd_spacing_types_tmss_cis
;
842 static int hf_bthci_cmd_spacing_types_reserved
;
844 static int * const hfx_bthci_cmd_event_mask_page_2
[] = {
845 &hf_bthci_cmd_evt_mask2_reserved
,
846 &hf_bthci_cmd_evt_mask2_25
,
847 &hf_bthci_cmd_evt_mask2_24
,
848 &hf_bthci_cmd_evt_mask2_23
,
849 &hf_bthci_cmd_evt_mask2_22
,
850 &hf_bthci_cmd_evt_mask2_21
,
851 &hf_bthci_cmd_evt_mask2_20
,
852 &hf_bthci_cmd_evt_mask2_19
,
853 &hf_bthci_cmd_evt_mask2_18
,
854 &hf_bthci_cmd_evt_mask2_17
,
855 &hf_bthci_cmd_evt_mask2_16
,
856 &hf_bthci_cmd_evt_mask2_15
,
857 &hf_bthci_cmd_evt_mask2_14
,
858 &hf_bthci_cmd_evt_mask2_13
,
859 &hf_bthci_cmd_evt_mask2_12
,
860 &hf_bthci_cmd_evt_mask2_11
,
861 &hf_bthci_cmd_evt_mask2_10
,
862 &hf_bthci_cmd_evt_mask2_09
,
863 &hf_bthci_cmd_evt_mask2_08
,
864 &hf_bthci_cmd_evt_mask2_07
,
865 &hf_bthci_cmd_evt_mask2_06
,
866 &hf_bthci_cmd_evt_mask2_05
,
867 &hf_bthci_cmd_evt_mask2_04
,
868 &hf_bthci_cmd_evt_mask2_03
,
869 &hf_bthci_cmd_evt_mask2_02
,
870 &hf_bthci_cmd_evt_mask2_01
,
871 &hf_bthci_cmd_evt_mask2_00
,
875 static int * const hfx_bthci_cmd_le_event_mask
[] = {
876 &hf_bthci_cmd_le_event_mask_le_reserved
,
877 &hf_bthci_cmd_le_event_mask_le_frame_space_update_complete
,
878 &hf_bthci_cmd_le_event_mask_le_monitored_advertisers_report
,
879 &hf_bthci_cmd_le_event_mask_le_cs_test_end_complete
,
880 &hf_bthci_cmd_le_event_mask_le_cs_subevent_result_continue
,
881 &hf_bthci_cmd_le_event_mask_le_cs_subevent_result
,
882 &hf_bthci_cmd_le_event_mask_le_cs_procedure_enable_complete
,
883 &hf_bthci_cmd_le_event_mask_le_cs_config_complete
,
884 &hf_bthci_cmd_le_event_mask_le_cs_security_enable_complete
,
885 &hf_bthci_cmd_le_event_mask_le_cs_read_remote_fae_table_complete
,
886 &hf_bthci_cmd_le_event_mask_le_cs_read_remote_supported_capabilities_complete
,
887 &hf_bthci_cmd_le_event_mask_le_read_all_remote_features_complete
,
888 &hf_bthci_cmd_le_event_mask_le_cis_established_v2
,
889 &hf_bthci_cmd_le_event_mask_le_enhanced_connection_complete_v2
,
890 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_response_report
,
891 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_subevent_data_request
,
892 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_transfer_received_v2
,
893 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_report_v2
,
894 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_established_v2
,
895 &hf_bthci_cmd_le_event_mask_le_subrate_changed
,
896 &hf_bthci_cmd_le_event_mask_le_biginfo_advertising_report
,
897 &hf_bthci_cmd_le_event_mask_le_transmit_power_reporting
,
898 &hf_bthci_cmd_le_event_mask_le_path_loss_threshold
,
899 &hf_bthci_cmd_le_event_mask_le_request_peer_sca_complete
,
900 &hf_bthci_cmd_le_event_mask_le_big_sync_lost
,
901 &hf_bthci_cmd_le_event_mask_le_big_sync_established
,
902 &hf_bthci_cmd_le_event_mask_le_terminate_big_complete
,
903 &hf_bthci_cmd_le_event_mask_le_create_big_complete
,
904 &hf_bthci_cmd_le_event_mask_le_cis_request
,
905 &hf_bthci_cmd_le_event_mask_le_cis_established_v1
,
906 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_transfer_received_v1
,
907 &hf_bthci_cmd_le_event_mask_le_cte_request_failed
,
908 &hf_bthci_cmd_le_event_mask_le_connection_iq_report
,
909 &hf_bthci_cmd_le_event_mask_le_connectionless_iq_report
,
910 &hf_bthci_cmd_le_event_mask_le_channel_selection_algorithm
,
911 &hf_bthci_cmd_le_event_mask_le_scan_request_received
,
912 &hf_bthci_cmd_le_event_mask_le_extended_advertising_set_terminated
,
913 &hf_bthci_cmd_le_event_mask_le_extended_scan_timeout
,
914 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_lost
,
915 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_report_v1
,
916 &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_established_v1
,
917 &hf_bthci_cmd_le_event_mask_le_extended_advertising_report
,
918 &hf_bthci_cmd_le_event_mask_le_phy_update_complete
,
919 &hf_bthci_cmd_le_event_mask_le_direct_advertising_report
,
920 &hf_bthci_cmd_le_event_mask_le_enhanced_connection_complete_v1
,
921 &hf_bthci_cmd_le_event_mask_le_generate_dhkey_complete
,
922 &hf_bthci_cmd_le_event_mask_le_read_local_p256_public_key_complete
,
923 &hf_bthci_cmd_le_event_mask_le_data_length_change
,
924 &hf_bthci_cmd_le_event_mask_le_remote_connection_parameter_request
,
925 &hf_bthci_cmd_le_event_mask_le_long_term_key_request
,
926 &hf_bthci_cmd_le_event_mask_le_read_remote_features_complete
,
927 &hf_bthci_cmd_le_event_mask_le_connection_update_complete
,
928 &hf_bthci_cmd_le_event_mask_le_advertising_report
,
929 &hf_bthci_cmd_le_event_mask_le_connection_complete
,
933 static int * const hfx_bthci_cmd_adv_properties
[] = {
934 &hf_bthci_cmd_advertising_properties_reserved
,
935 &hf_bthci_cmd_advertising_properties_decision_pdu_incl_adi
,
936 &hf_bthci_cmd_advertising_properties_decision_pdu_incl_adva
,
937 &hf_bthci_cmd_advertising_properties_use_decision_pdus
,
938 &hf_bthci_cmd_advertising_properties_incl_txpower
,
939 &hf_bthci_cmd_advertising_properties_anonymous_adv
,
940 &hf_bthci_cmd_advertising_properties_legacy_adv
,
941 &hf_bthci_cmd_advertising_properties_hdc_connectable_directed
,
942 &hf_bthci_cmd_advertising_properties_directed
,
943 &hf_bthci_cmd_advertising_properties_scannable
,
944 &hf_bthci_cmd_advertising_properties_connectable
,
948 static int * const hfx_bthci_cmd_periodic_adv_properties
[] = {
949 &hf_bthci_cmd_periodic_advertising_properties_reserved
,
950 &hf_bthci_cmd_advertising_properties_incl_txpower
,
954 static int * const hfx_bthci_cmd_scan_filter_policy
[] = {
955 &hf_bthci_cmd_scan_filter_policy_reserved
,
956 &hf_bthci_cmd_scan_filter_policy_decision_mode
,
957 &hf_bthci_cmd_scan_filter_policy_extended
,
958 &hf_bthci_cmd_scan_filter_policy_filtered
,
963 static int * const hfx_btcmd_all_phys
[] = {
964 &hf_bthci_cmd_all_phys_reserved
,
965 &hf_bthci_cmd_all_phys_rx_pref
,
966 &hf_bthci_cmd_all_phys_tx_pref
,
970 static int * const hfx_btcmd_phys_pref
[] = {
971 &hf_bthci_cmd_phys_pref_reserved
,
972 &hf_bthci_cmd_phys_pref_le_coded
,
973 &hf_bthci_cmd_phys_pref_le_2m
,
974 &hf_bthci_cmd_phys_pref_le_1m
,
978 static int * const hfx_btcmd_phy_options
[] = {
979 &hf_bthci_cmd_phy_options_reserved
,
980 &hf_bthci_cmd_phy_options_coding
,
984 static int * const hfx_btcmd_le_scan_phys
[] = {
985 &hf_bthci_cmd_le_scan_phys_reserved
,
986 &hf_bthci_cmd_le_scan_phys_le_coded
,
987 &hf_bthci_cmd_le_scan_phys_le_1m
,
991 static int * const hfx_btcmd_le_phys
[] = {
992 &hf_bthci_cmd_le_phys_reserved
,
993 &hf_bthci_cmd_le_phys_le_coded
,
994 &hf_bthci_cmd_le_phys_le_2m
,
995 &hf_bthci_cmd_le_phys_le_1m
,
999 static int * const hfx_btcmd_sync_cte_type
[] = {
1000 &hf_bthci_cmd_sync_cte_type_reserved
,
1001 &hf_bthci_cmd_sync_cte_type_sync_only_with_cte
,
1002 &hf_bthci_cmd_sync_cte_type_no_sync_aod_2us
,
1003 &hf_bthci_cmd_sync_cte_type_no_sync_aod_1us
,
1004 &hf_bthci_cmd_sync_cte_type_no_sync_aoa
,
1008 static int * const hfx_btcmd_cte_types
[] = {
1009 &hf_bthci_cmd_cte_types_reserved
,
1010 &hf_bthci_cmd_cte_types_aod_2us
,
1011 &hf_bthci_cmd_cte_types_aod_1us
,
1012 &hf_bthci_cmd_cte_types_aoa
,
1016 static int * const hfx_btcmd_addr_change_reasons
[] = {
1017 &hf_bthci_cmd_addr_change_reasons_reserved
,
1018 &hf_bthci_cmd_addr_change_reasons_scan_rsp_data
,
1019 &hf_bthci_cmd_addr_change_reasons_adv_data
,
1023 static int * const hfx_bthci_cmd_sco_packet_type
[] = {
1024 &hf_bthci_cmd_sco_packet_type_reserved
,
1025 &hf_bthci_cmd_sco_packet_type_3ev5
,
1026 &hf_bthci_cmd_sco_packet_type_2ev5
,
1027 &hf_bthci_cmd_sco_packet_type_3ev3
,
1028 &hf_bthci_cmd_sco_packet_type_2ev3
,
1029 &hf_bthci_cmd_sco_packet_type_ev5
,
1030 &hf_bthci_cmd_sco_packet_type_ev4
,
1031 &hf_bthci_cmd_sco_packet_type_ev3
,
1032 &hf_bthci_cmd_sco_packet_type_hv3
,
1033 &hf_bthci_cmd_sco_packet_type_hv2
,
1034 &hf_bthci_cmd_sco_packet_type_hv1
,
1038 static int * const hfx_bthci_cmd_packet_type
[] = {
1039 &hf_bthci_cmd_packet_type_dh5
,
1040 &hf_bthci_cmd_packet_type_dm5
,
1041 &hf_bthci_cmd_packet_type_3dh5
,
1042 &hf_bthci_cmd_packet_type_2dh5
,
1043 &hf_bthci_cmd_packet_type_dh3
,
1044 &hf_bthci_cmd_packet_type_dm3
,
1045 &hf_bthci_cmd_packet_type_3dh3
,
1046 &hf_bthci_cmd_packet_type_2dh3
,
1047 &hf_bthci_cmd_packet_type_reserved_5_7
,
1048 &hf_bthci_cmd_packet_type_dh1
,
1049 &hf_bthci_cmd_packet_type_dm1
,
1050 &hf_bthci_cmd_packet_type_3dh1
,
1051 &hf_bthci_cmd_packet_type_2dh1
,
1052 &hf_bthci_cmd_packet_type_reserved_0
,
1056 static int * const hfx_bthci_cmd_preferred_peer_antenna
[] = {
1057 &hf_bthci_cmd_preferred_peer_antenna_first
,
1058 &hf_bthci_cmd_preferred_peer_antenna_second
,
1059 &hf_bthci_cmd_preferred_peer_antenna_third
,
1060 &hf_bthci_cmd_preferred_peer_antenna_fourth
,
1061 &hf_bthci_cmd_preferred_peer_antenna_reserved
,
1065 static int * const hfx_bthci_cmd_cs_roles
[] = {
1066 &hf_bthci_cmd_cs_roles_reserved
,
1067 &hf_bthci_cmd_cs_roles_reflector
,
1068 &hf_bthci_cmd_cs_roles_initiator
,
1072 static int * const hfx_bthci_cmd_cs_modes_supported
[] = {
1073 &hf_bthci_cmd_cs_modes_supported_reserved
,
1074 &hf_bthci_cmd_cs_modes_supported_3
,
1078 static int * const hfx_bthci_cmd_rtt_capability
[] = {
1079 &hf_bthci_cmd_rtt_capability_reserved
,
1080 &hf_bthci_cmd_rtt_capability_random_precision
,
1081 &hf_bthci_cmd_rtt_capability_sounding_precision
,
1082 &hf_bthci_cmd_rtt_capability_coarse_precision
,
1086 static int * const hfx_bthci_cmd_nadm_sounding_capability
[] = {
1087 &hf_bthci_cmd_nadm_sounding_capability_reserved
,
1088 &hf_bthci_cmd_nadm_sounding_capability_supported
,
1092 static int * const hfx_bthci_cmd_nadm_random_capability
[] = {
1093 &hf_bthci_cmd_nadm_random_capability_reserved
,
1094 &hf_bthci_cmd_nadm_random_capability_supported
,
1098 static int * const hfx_bthci_cmd_cs_sync_phys_supported
[] = {
1099 &hf_bthci_cmd_cs_sync_phys_supported_reserved
,
1100 &hf_bthci_cmd_cs_sync_phys_supported_2m2bt
,
1101 &hf_bthci_cmd_cs_sync_phys_supported_2m
,
1105 static int * const hfx_bthci_cmd_cs_subfeatures
[] = {
1106 &hf_bthci_cmd_cs_subfeatures_reserved
,
1107 &hf_bthci_cmd_cs_subfeatures_pbr_from_rtt
,
1108 &hf_bthci_cmd_cs_subfeatures_channel_selection_3c
,
1109 &hf_bthci_cmd_cs_subfeatures_freq_actuation_error
,
1110 &hf_bthci_cmd_cs_subfeatures_companion_signal
,
1114 static int * const hfx_bthci_cmd_tip_times_supported
[] = {
1115 &hf_bthci_cmd_tip_times_supported_reserved
,
1116 &hf_bthci_cmd_tip_times_supported_80us
,
1117 &hf_bthci_cmd_tip_times_supported_60us
,
1118 &hf_bthci_cmd_tip_times_supported_50us
,
1119 &hf_bthci_cmd_tip_times_supported_40us
,
1120 &hf_bthci_cmd_tip_times_supported_30us
,
1121 &hf_bthci_cmd_tip_times_supported_20us
,
1122 &hf_bthci_cmd_tip_times_supported_10us
,
1126 static int * const hfx_bthci_cmd_tfcs_times_supported
[] = {
1127 &hf_bthci_cmd_tfcs_times_supported_reserved
,
1128 &hf_bthci_cmd_tfcs_times_supported_120us
,
1129 &hf_bthci_cmd_tfcs_times_supported_100us
,
1130 &hf_bthci_cmd_tfcs_times_supported_80us
,
1131 &hf_bthci_cmd_tfcs_times_supported_60us
,
1132 &hf_bthci_cmd_tfcs_times_supported_50us
,
1133 &hf_bthci_cmd_tfcs_times_supported_40us
,
1134 &hf_bthci_cmd_tfcs_times_supported_30us
,
1135 &hf_bthci_cmd_tfcs_times_supported_20us
,
1136 &hf_bthci_cmd_tfcs_times_supported_15us
,
1140 static int * const hfx_bthci_cmd_tpm_times_supported
[] = {
1141 &hf_bthci_cmd_tpm_times_supported_reserved
,
1142 &hf_bthci_cmd_tpm_times_supported_20us
,
1143 &hf_bthci_cmd_tpm_times_supported_10us
,
1147 static int * const hfx_bthci_cmd_tx_snr_capability
[] = {
1148 &hf_bthci_cmd_tx_snr_capability_reserved
,
1149 &hf_bthci_cmd_tx_snr_capability_30dB
,
1150 &hf_bthci_cmd_tx_snr_capability_27dB
,
1151 &hf_bthci_cmd_tx_snr_capability_24dB
,
1152 &hf_bthci_cmd_tx_snr_capability_21dB
,
1153 &hf_bthci_cmd_tx_snr_capability_18dB
,
1157 static int * const hfx_bthci_cmd_adv_decision_flags
[] = {
1158 &hf_bthci_cmd_adv_decision_flags_reserved
,
1159 &hf_bthci_cmd_adv_decision_flags_resolvable_tag
,
1163 static int * const hfx_bthci_cmd_adv_test_flags
[] = {
1164 &hf_bthci_cmd_adv_test_flags_reserved
,
1165 &hf_bthci_cmd_adv_test_flags_data_not_contain_field
,
1166 &hf_bthci_cmd_adv_test_flags_data_contains_field_check_fail
,
1167 &hf_bthci_cmd_adv_test_flags_data_contains_field_check_pass
,
1168 &hf_bthci_cmd_adv_test_flags_start_group
,
1172 static int * const hfx_bthci_cmd_spacing_types
[] = {
1173 &hf_bthci_cmd_spacing_types_reserved
,
1174 &hf_bthci_cmd_spacing_types_tmss_cis
,
1175 &hf_bthci_cmd_spacing_types_tifs_cis
,
1176 &hf_bthci_cmd_spacing_types_tmces
,
1177 &hf_bthci_cmd_spacing_types_tifs_acl_pc
,
1178 &hf_bthci_cmd_spacing_types_tifs_acl_cp
,
1182 static int * const hfx_bthci_cmd_override_config
[] = {
1183 &hf_bthci_cmd_override_config_reserved
,
1184 &hf_bthci_cmd_override_config_stable_phase_test
,
1185 &hf_bthci_cmd_override_config_cs_sync_data
,
1186 &hf_bthci_cmd_override_config_ss_marker_value
,
1187 &hf_bthci_cmd_override_config_ss_marker_position
,
1188 &hf_bthci_cmd_override_config_cs_sync_aa
,
1189 &hf_bthci_cmd_override_config_tone_ant_permutation
,
1190 &hf_bthci_cmd_override_config_tpm_tone_ext
,
1191 &hf_bthci_cmd_override_config_main_mode_steps
,
1192 &hf_bthci_cmd_override_config_channel_list
,
1196 static expert_field ei_command_undecoded
;
1197 static expert_field ei_command_unknown_command
;
1198 static expert_field ei_command_parameter_unexpected
;
1200 static dissector_table_t vendor_dissector_table
;
1201 static dissector_table_t hci_vendor_table
;
1203 /* Initialize the subtree pointers */
1204 static int ett_bthci_cmd
;
1205 static int ett_opcode
;
1206 static int ett_cod_mask
;
1207 static int ett_flow_spec_subtree
;
1208 static int ett_le_channel_map
;
1209 static int ett_event_mask_page_2
;
1210 static int ett_le_event_mask
;
1211 static int ett_adv_properties
;
1212 static int ett_adv_sets
;
1213 static int ett_phys_flags
;
1214 static int ett_phy_param
;
1215 static int ett_filter_policy
;
1216 static int ett_sync_cte_type
;
1217 static int ett_coding_format
;
1218 static int ett_packet_type
;
1219 static int ett_sco_packet_type
;
1220 static int ett_periods
;
1221 static int ett_period
;
1222 static int ett_table
;
1223 static int ett_table_item
;
1224 static int ett_patterns
;
1225 static int ett_pattern
;
1226 static int ett_cis_params
;
1227 static int ett_addr_change_reasons
;
1228 static int ett_adv_subevents
;
1229 static int ett_pref_antenna
;
1230 static int ett_cs_roles
;
1231 static int ett_cs_modes
;
1232 static int ett_cs_capability
;
1233 static int ett_cs_times
;
1234 static int ett_adv_test_flags
;
1235 static int ett_override_config
;
1236 static int ett_spacing_types
;
1238 static int proto_btcommon
;
1239 static int hf_btcommon_eir_ad_entry
;
1240 static int hf_btcommon_eir_ad_advertising_data
;
1241 static int hf_btcommon_eir_ad_extended_inquiry_response_data
;
1242 static int hf_btcommon_eir_ad_unused
;
1243 static int hf_btcommon_eir_ad_data
;
1244 static int hf_btcommon_eir_ad_length
;
1245 static int hf_btcommon_eir_ad_type
;
1246 static int hf_btcommon_eir_ad_company_id
;
1247 static int hf_btcommon_eir_ad_flags_reserved
;
1248 static int hf_btcommon_eir_ad_flags_le_bredr_support_host
;
1249 static int hf_btcommon_eir_ad_flags_le_bredr_support_controller
;
1250 static int hf_btcommon_eir_ad_flags_bredr_not_support
;
1251 static int hf_btcommon_eir_ad_flags_le_general_discoverable_mode
;
1252 static int hf_btcommon_eir_ad_flags_le_limited_discoverable_mode
;
1253 static int hf_btcommon_eir_ad_uuid_16
;
1254 static int hf_btcommon_eir_ad_uuid_32
;
1255 static int hf_btcommon_eir_ad_uuid_128
;
1256 static int hf_btcommon_eir_ad_custom_uuid_32
;
1257 static int hf_btcommon_eir_ad_custom_uuid_128
;
1258 static int hf_btcommon_eir_ad_name
;
1259 static int hf_btcommon_eir_ad_tx_power
;
1260 static int hf_btcommon_eir_ad_ssp_oob_length
;
1261 static int hf_btcommon_eir_ad_bd_addr
;
1262 static int hf_btcommon_eir_ad_le_bd_addr_reserved
;
1263 static int hf_btcommon_eir_ad_le_bd_addr_type
;
1264 static int hf_btcommon_eir_ad_le_role
;
1265 static int hf_btcommon_eir_ad_service_data
;
1266 static int hf_btcommon_eir_ad_did_vendor_id
;
1267 static int hf_btcommon_eir_ad_did_vendor_id_bluetooth_sig
;
1268 static int hf_btcommon_eir_ad_did_vendor_id_usb_forum
;
1269 static int hf_btcommon_eir_ad_did_product_id
;
1270 static int hf_btcommon_eir_ad_did_version
;
1271 static int hf_btcommon_eir_ad_did_vendor_id_source
;
1272 static int hf_btcommon_eir_ad_3ds_association_notification
;
1273 static int hf_btcommon_eir_ad_3ds_battery_level_reporting
;
1274 static int hf_btcommon_eir_ad_3ds_send_battery_level_report_on_startup
;
1275 static int hf_btcommon_eir_ad_3ds_reserved
;
1276 static int hf_btcommon_eir_ad_3ds_factory_test_mode
;
1277 static int hf_btcommon_eir_ad_3ds_path_loss_threshold
;
1278 static int hf_btcommon_eir_ad_3ds_legacy_fixed
;
1279 static int hf_btcommon_eir_ad_3ds_legacy_3d_capable_tv
;
1280 static int hf_btcommon_eir_ad_3ds_legacy_ignored_1_3
;
1281 static int hf_btcommon_eir_ad_3ds_legacy_fixed_4
;
1282 static int hf_btcommon_eir_ad_3ds_legacy_ignored_5
;
1283 static int hf_btcommon_eir_ad_3ds_legacy_fixed_6
;
1284 static int hf_btcommon_eir_ad_3ds_legacy_test_mode
;
1285 static int hf_btcommon_eir_ad_3ds_legacy_path_loss_threshold
;
1286 static int hf_btcommon_eir_ad_advertising_interval
;
1287 static int hf_btcommon_eir_ad_appearance
;
1288 static int hf_btcommon_eir_ad_hash_c
;
1289 static int hf_btcommon_eir_ad_randomizer_r
;
1290 static int hf_btcommon_eir_ad_le_secure_confirmation_value
;
1291 static int hf_btcommon_eir_ad_le_secure_random_value
;
1292 static int hf_btcommon_eir_ad_oob_flags_data_present
;
1293 static int hf_btcommon_eir_ad_oob_flags_le_supported_host
;
1294 static int hf_btcommon_eir_ad_oob_flags_le_bredr_support
;
1295 static int hf_btcommon_eir_ad_oob_flags_address_type
;
1296 static int hf_btcommon_eir_ad_oob_flags_reserved
;
1297 static int hf_btcommon_eir_ad_connection_interval_min
;
1298 static int hf_btcommon_eir_ad_connection_interval_max
;
1299 static int hf_btcommon_eir_ad_uri
;
1300 static int hf_btcommon_eir_ad_ips_flags
;
1301 static int hf_btcommon_eir_ad_ips_flags_reserved
;
1302 static int hf_btcommon_eir_ad_ips_flags_location_name
;
1303 static int hf_btcommon_eir_ad_ips_flags_uncertainty
;
1304 static int hf_btcommon_eir_ad_ips_flags_floor_number
;
1305 static int hf_btcommon_eir_ad_ips_flags_altitude
;
1306 static int hf_btcommon_eir_ad_ips_flags_tx_power
;
1307 static int hf_btcommon_eir_ad_ips_flags_coordinate_system
;
1308 static int hf_btcommon_eir_ad_ips_flags_coordinates
;
1309 static int hf_btcommon_eir_ad_ips_uncertainty
;
1310 static int hf_btcommon_eir_ad_ips_uncertainty_reserved
;
1311 static int hf_btcommon_eir_ad_ips_uncertainty_precision
;
1312 static int hf_btcommon_eir_ad_ips_uncertainty_update_time
;
1313 static int hf_btcommon_eir_ad_ips_uncertainty_stationary
;
1314 static int hf_btcommon_eir_ad_ips_latitude
;
1315 static int hf_btcommon_eir_ad_ips_longitude
;
1316 static int hf_btcommon_eir_ad_ips_local_north_coordinate
;
1317 static int hf_btcommon_eir_ad_ips_local_east_coordinate
;
1318 static int hf_btcommon_eir_ad_ips_tx_power_level
;
1319 static int hf_btcommon_eir_ad_ips_floor_number
;
1320 static int hf_btcommon_eir_ad_ips_altitude
;
1321 static int hf_btcommon_eir_ad_tds_organization_id
;
1322 static int hf_btcommon_eir_ad_tds_flags
;
1323 static int hf_btcommon_eir_ad_tds_flags_reserved
;
1324 static int hf_btcommon_eir_ad_tds_flags_transport_state
;
1325 static int hf_btcommon_eir_ad_tds_flags_transport_data_incomplete
;
1326 static int hf_btcommon_eir_ad_tds_flags_role
;
1327 static int hf_btcommon_eir_ad_tds_data_length
;
1328 static int hf_btcommon_eir_ad_tds_data
;
1329 static int hf_btcommon_eir_ad_le_features
;
1330 static int hf_btcommon_eir_ad_le_channel_map
;
1331 static int hf_btcommon_eir_ad_instant
;
1332 static int hf_btcommon_eir_ad_le_features_encryption
;
1333 static int hf_btcommon_eir_ad_le_features_connection_parameters_request_procedure
;
1334 static int hf_btcommon_eir_ad_le_features_extended_reject_indication
;
1335 static int hf_btcommon_eir_ad_le_features_peripheral_initiated_features_exchange
;
1336 static int hf_btcommon_eir_ad_le_features_ping
;
1337 static int hf_btcommon_eir_ad_le_features_data_packet_length_extension
;
1338 static int hf_btcommon_eir_ad_le_features_ll_privacy
;
1339 static int hf_btcommon_eir_ad_le_features_extended_scanner_filter_policies
;
1340 static int hf_btcommon_eir_ad_le_features_2m_phy
;
1341 static int hf_btcommon_eir_ad_le_features_stable_modulation_index_tx
;
1342 static int hf_btcommon_eir_ad_le_features_stable_modulation_index_rx
;
1343 static int hf_btcommon_eir_ad_le_features_coded_phy
;
1344 static int hf_btcommon_eir_ad_le_features_extended_advertising
;
1345 static int hf_btcommon_eir_ad_le_features_periodic_advertising
;
1346 static int hf_btcommon_eir_ad_le_features_channel_selection_algorithm_2
;
1347 static int hf_btcommon_eir_ad_le_features_power_class_1
;
1348 static int hf_btcommon_eir_ad_le_features_minimum_number_of_used_channels_procedure
;
1349 static int hf_btcommon_eir_ad_le_features_reserved_1_7
;
1350 static int hf_btcommon_eir_ad_le_features_reserved
;
1351 static int hf_btcommon_eir_ad_biginfo_big_offset
;
1352 static int hf_btcommon_eir_ad_biginfo_big_offset_units
;
1353 static int hf_btcommon_eir_ad_biginfo_iso_interval
;
1354 static int hf_btcommon_eir_ad_biginfo_num_bis
;
1355 static int hf_btcommon_eir_ad_biginfo_nse
;
1356 static int hf_btcommon_eir_ad_biginfo_bn
;
1357 static int hf_btcommon_eir_ad_biginfo_sub_interval
;
1358 static int hf_btcommon_eir_ad_biginfo_pto
;
1359 static int hf_btcommon_eir_ad_biginfo_bis_spacing
;
1360 static int hf_btcommon_eir_ad_biginfo_irc
;
1361 static int hf_btcommon_eir_ad_biginfo_max_pdu
;
1362 static int hf_btcommon_eir_ad_biginfo_rfu
;
1363 static int hf_btcommon_eir_ad_biginfo_seed_access_address
;
1364 static int hf_btcommon_eir_ad_biginfo_sdu_interval
;
1365 static int hf_btcommon_eir_ad_biginfo_max_sdu
;
1366 static int hf_btcommon_eir_ad_biginfo_base_crc_init
;
1367 static int hf_btcommon_eir_ad_biginfo_channel_map
;
1368 static int hf_btcommon_eir_ad_biginfo_phy
;
1369 static int hf_btcommon_eir_ad_biginfo_bis_payload_count
;
1370 static int hf_btcommon_eir_ad_biginfo_framing
;
1371 static int hf_btcommon_eir_ad_biginfo_giv
;
1372 static int hf_btcommon_eir_ad_biginfo_gskd
;
1373 static int hf_btcommon_eir_ad_biginfo_big_control_access_address
;
1374 static int hf_btcommon_eir_ad_biginfo_bis_access_address
;
1375 static int hf_btcommon_eir_ad_broadcast_code
;
1376 static int hf_btcommon_eir_ad_rsi
;
1377 static int hf_btcommon_eir_ad_broadcast_name
;
1379 static int hf_btcommon_cod_class_of_device
;
1380 static int hf_btcommon_cod_format_type
;
1381 static int hf_btcommon_cod_major_service_class_information
;
1382 static int hf_btcommon_cod_major_service_class_telephony
;
1383 static int hf_btcommon_cod_major_service_class_audio
;
1384 static int hf_btcommon_cod_major_service_class_object_transfer
;
1385 static int hf_btcommon_cod_major_service_class_capturing
;
1386 static int hf_btcommon_cod_major_service_class_rendering
;
1387 static int hf_btcommon_cod_major_service_class_networking
;
1388 static int hf_btcommon_cod_major_service_class_positioning
;
1389 static int hf_btcommon_cod_major_service_class_reserved
;
1390 static int hf_btcommon_cod_major_service_class_le_audio
;
1391 static int hf_btcommon_cod_major_service_class_limited_discoverable_mode
;
1392 static int hf_btcommon_cod_major_device_class
;
1393 static int hf_btcommon_cod_minor_device_class_computer
;
1394 static int hf_btcommon_cod_minor_device_class_phone
;
1395 static int hf_btcommon_cod_minor_device_class_lan_net_load_factor
;
1396 static int hf_btcommon_cod_minor_device_class_lan_net_type
;
1397 static int hf_btcommon_cod_minor_device_class_audio_video
;
1398 static int hf_btcommon_cod_minor_device_class_peripheral_class
;
1399 static int hf_btcommon_cod_minor_device_class_peripheral_type
;
1400 static int hf_btcommon_cod_minor_device_class_imaging_class_printer
;
1401 static int hf_btcommon_cod_minor_device_class_imaging_class_scanner
;
1402 static int hf_btcommon_cod_minor_device_class_imaging_class_camera
;
1403 static int hf_btcommon_cod_minor_device_class_imaging_class_display
;
1404 static int hf_btcommon_cod_minor_device_class_imaging_type
;
1405 static int hf_btcommon_cod_minor_device_class_wearable
;
1406 static int hf_btcommon_cod_minor_device_class_toy
;
1407 static int hf_btcommon_cod_minor_device_class_health
;
1408 static int hf_btcommon_cod_minor_device_class_unknown
;
1409 static int hf_btcommon_le_channel_map_0
;
1410 static int hf_btcommon_le_channel_map_1
;
1411 static int hf_btcommon_le_channel_map_2
;
1412 static int hf_btcommon_le_channel_map_3
;
1413 static int hf_btcommon_le_channel_map_4
;
1414 static int hf_btcommon_le_channel_map_5
;
1415 static int hf_btcommon_le_channel_map_6
;
1416 static int hf_btcommon_le_channel_map_7
;
1417 static int hf_btcommon_le_channel_map_8
;
1418 static int hf_btcommon_le_channel_map_9
;
1419 static int hf_btcommon_le_channel_map_10
;
1420 static int hf_btcommon_le_channel_map_11
;
1421 static int hf_btcommon_le_channel_map_12
;
1422 static int hf_btcommon_le_channel_map_13
;
1423 static int hf_btcommon_le_channel_map_14
;
1424 static int hf_btcommon_le_channel_map_15
;
1425 static int hf_btcommon_le_channel_map_16
;
1426 static int hf_btcommon_le_channel_map_17
;
1427 static int hf_btcommon_le_channel_map_18
;
1428 static int hf_btcommon_le_channel_map_19
;
1429 static int hf_btcommon_le_channel_map_20
;
1430 static int hf_btcommon_le_channel_map_21
;
1431 static int hf_btcommon_le_channel_map_22
;
1432 static int hf_btcommon_le_channel_map_23
;
1433 static int hf_btcommon_le_channel_map_24
;
1434 static int hf_btcommon_le_channel_map_25
;
1435 static int hf_btcommon_le_channel_map_26
;
1436 static int hf_btcommon_le_channel_map_27
;
1437 static int hf_btcommon_le_channel_map_28
;
1438 static int hf_btcommon_le_channel_map_29
;
1439 static int hf_btcommon_le_channel_map_30
;
1440 static int hf_btcommon_le_channel_map_31
;
1441 static int hf_btcommon_le_channel_map_32
;
1442 static int hf_btcommon_le_channel_map_33
;
1443 static int hf_btcommon_le_channel_map_34
;
1444 static int hf_btcommon_le_channel_map_35
;
1445 static int hf_btcommon_le_channel_map_36
;
1446 static int hf_btcommon_le_channel_map_37
;
1447 static int hf_btcommon_le_channel_map_38
;
1448 static int hf_btcommon_le_channel_map_39
;
1449 static int hf_btcommon_eir_ad_mesh_msg
;
1450 static int hf_btcommon_eir_ad_mesh_pbadv
;
1451 static int hf_btcommon_eir_ad_mesh_beacon
;
1453 static int * const hfx_btcommon_eir_ad_ips_flags
[] = {
1454 &hf_btcommon_eir_ad_ips_flags_reserved
,
1455 &hf_btcommon_eir_ad_ips_flags_location_name
,
1456 &hf_btcommon_eir_ad_ips_flags_uncertainty
,
1457 &hf_btcommon_eir_ad_ips_flags_floor_number
,
1458 &hf_btcommon_eir_ad_ips_flags_altitude
,
1459 &hf_btcommon_eir_ad_ips_flags_tx_power
,
1460 &hf_btcommon_eir_ad_ips_flags_coordinate_system
,
1461 &hf_btcommon_eir_ad_ips_flags_coordinates
,
1465 static int * const hfx_btcommon_eir_ad_ips_uncertainty
[] = {
1466 &hf_btcommon_eir_ad_ips_uncertainty_reserved
,
1467 &hf_btcommon_eir_ad_ips_uncertainty_precision
,
1468 &hf_btcommon_eir_ad_ips_uncertainty_update_time
,
1469 &hf_btcommon_eir_ad_ips_uncertainty_stationary
,
1473 static int * const hfx_btcommon_eir_ad_tds_flags
[] = {
1474 &hf_btcommon_eir_ad_tds_flags_reserved
,
1475 &hf_btcommon_eir_ad_tds_flags_transport_state
,
1476 &hf_btcommon_eir_ad_tds_flags_transport_data_incomplete
,
1477 &hf_btcommon_eir_ad_tds_flags_role
,
1481 static int * const hfx_btcommon_eir_ad_le_features_0
[] = {
1482 &hf_btcommon_eir_ad_le_features_encryption
,
1483 &hf_btcommon_eir_ad_le_features_connection_parameters_request_procedure
,
1484 &hf_btcommon_eir_ad_le_features_extended_reject_indication
,
1485 &hf_btcommon_eir_ad_le_features_peripheral_initiated_features_exchange
,
1486 &hf_btcommon_eir_ad_le_features_ping
,
1487 &hf_btcommon_eir_ad_le_features_data_packet_length_extension
,
1488 &hf_btcommon_eir_ad_le_features_ll_privacy
,
1489 &hf_btcommon_eir_ad_le_features_extended_scanner_filter_policies
,
1493 static int * const hfx_btcommon_eir_ad_le_features_1
[] = {
1494 &hf_btcommon_eir_ad_le_features_2m_phy
,
1495 &hf_btcommon_eir_ad_le_features_stable_modulation_index_tx
,
1496 &hf_btcommon_eir_ad_le_features_stable_modulation_index_rx
,
1497 &hf_btcommon_eir_ad_le_features_coded_phy
,
1498 &hf_btcommon_eir_ad_le_features_extended_advertising
,
1499 &hf_btcommon_eir_ad_le_features_periodic_advertising
,
1500 &hf_btcommon_eir_ad_le_features_channel_selection_algorithm_2
,
1501 &hf_btcommon_eir_ad_le_features_power_class_1
,
1505 static int * const hfx_btcommon_eir_ad_le_features_2
[] = {
1506 &hf_btcommon_eir_ad_le_features_minimum_number_of_used_channels_procedure
,
1507 &hf_btcommon_eir_ad_le_features_reserved_1_7
,
1511 static int * const hfx_btcommon_eir_ad_le_features_reserved
[] = {
1512 &hf_btcommon_eir_ad_le_features_reserved
,
1516 static int * const *hfx_btcommon_eir_ad_le_features
[] = {
1517 hfx_btcommon_eir_ad_le_features_0
,
1518 hfx_btcommon_eir_ad_le_features_1
,
1519 hfx_btcommon_eir_ad_le_features_2
,
1520 hfx_btcommon_eir_ad_le_features_reserved
,
1521 hfx_btcommon_eir_ad_le_features_reserved
,
1522 hfx_btcommon_eir_ad_le_features_reserved
,
1523 hfx_btcommon_eir_ad_le_features_reserved
,
1524 hfx_btcommon_eir_ad_le_features_reserved
1528 static int ett_eir_ad
;
1529 static int ett_eir_ad_entry
;
1530 static int ett_eir_ad_le_features
;
1531 static int ett_eir_ad_biginfo_seedaa
;
1533 static expert_field ei_eir_ad_undecoded
;
1534 static expert_field ei_eir_ad_unknown
;
1535 static expert_field ei_eir_ad_not_used
;
1536 static expert_field ei_eir_ad_invalid_length
;
1538 static dissector_handle_t btcommon_cod_handle
;
1539 static dissector_handle_t btcommon_eir_handle
;
1540 static dissector_handle_t btcommon_ad_handle
;
1541 static dissector_handle_t btcommon_le_channel_map_handle
;
1542 static dissector_handle_t bthci_cmd_handle
;
1543 static dissector_handle_t btmesh_handle
;
1544 static dissector_handle_t btmesh_pbadv_handle
;
1545 static dissector_handle_t btmesh_beacon_handle
;
1547 static dissector_table_t bluetooth_eir_ad_manufacturer_company_id
;
1548 static dissector_table_t bluetooth_eir_ad_tds_organization_id
;
1549 static dissector_table_t bluetooth_eir_ad_service_uuid
;
1551 wmem_tree_t
*bthci_cmds
;
1553 extern value_string_ext ext_usb_vendors_vals
;
1554 extern value_string_ext ext_usb_products_vals
;
1555 extern value_string_ext did_vendor_id_source_vals_ext
;
1557 static const value_string bthci_cmd_ogf_vals
[] = {
1558 { 0x01, "Link Control Commands" },
1559 { 0x02, "Link Policy Commands" },
1560 { 0x03, "Host Controller & Baseband Commands" },
1561 { 0x04, "Informational Parameters" },
1562 { 0x05, "Status Parameters" },
1563 { 0x06, "Testing Commands" },
1564 { 0x08, "LE Controller Commands" },
1565 { 0x3E, "Bluetooth Logo Testing Commands" },
1566 { 0x3F, "Vendor-Specific Commands" },
1569 value_string_ext bthci_cmd_ogf_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_ogf_vals
);
1571 # define LINK_CONTROL_VALS(base) \
1572 /* Bluetooth Core 4.0 */ \
1573 { (base) | 0x001, "Inquiry" }, \
1574 { (base) | 0x002, "Inquiry Cancel" }, \
1575 { (base) | 0x003, "Periodic Inquiry Mode" }, \
1576 { (base) | 0x004, "Exit Periodic Inquiry Mode" }, \
1577 { (base) | 0x005, "Create Connection" }, \
1578 { (base) | 0x006, "Disconnect" }, \
1579 { (base) | 0x007, "Add SCO Connection" }, \
1580 { (base) | 0x008, "Create Connection Cancel" }, \
1581 { (base) | 0x009, "Accept Connection Request" }, \
1582 { (base) | 0x00A, "Reject Connection Request" }, \
1583 { (base) | 0x00B, "Link Key Request Reply" }, \
1584 { (base) | 0x00C, "Link Key Request Negative Reply" }, \
1585 { (base) | 0x00D, "PIN Code Request Reply" }, \
1586 { (base) | 0x00E, "PIN Code Request Negative Reply" }, \
1587 { (base) | 0x00F, "Change Connection Packet Type" }, \
1588 { (base) | 0x011, "Authentication Requested" }, \
1589 { (base) | 0x013, "Set Connection Encryption" }, \
1590 { (base) | 0x015, "Change Connection Link Key" }, \
1591 { (base) | 0x017, "Link Key Selection" }, \
1592 { (base) | 0x019, "Remote Name Request" }, \
1593 { (base) | 0x01A, "Remote Name Request Cancel" }, \
1594 { (base) | 0x01B, "Read Remote Supported Features" }, \
1595 { (base) | 0x01C, "Read Remote Extended Features" }, \
1596 { (base) | 0x01D, "Read Remote Version Information" }, \
1597 { (base) | 0x01F, "Read Clock offset" }, \
1598 { (base) | 0x020, "Read LMP Handle" }, \
1599 { (base) | 0x028, "Setup Synchronous Connection" }, \
1600 { (base) | 0x029, "Accept Synchronous Connection Request" }, \
1601 { (base) | 0x02A, "Reject Synchronous Connection Request" }, \
1602 { (base) | 0x02B, "IO Capability Request Reply" }, \
1603 { (base) | 0x02C, "User Confirmation Request Reply" }, \
1604 { (base) | 0x02D, "User Confirmation Request Negative Reply" }, \
1605 { (base) | 0x02E, "User Passkey Request Reply" }, \
1606 { (base) | 0x02F, "User Passkey Request Negative Reply" }, \
1607 { (base) | 0x030, "Remote OOB Data Request Reply" }, \
1608 { (base) | 0x033, "Remote OOB Data Request Negative Reply" }, \
1609 { (base) | 0x034, "IO Capability Request Negative Reply" }, \
1610 { (base) | 0x035, "Create Physical Link" }, \
1611 { (base) | 0x036, "Accept Physical Link" }, \
1612 { (base) | 0x037, "Disconnect Physical Link" }, \
1613 { (base) | 0x038, "Create Logical Link" }, \
1614 { (base) | 0x039, "Accept Logical Link" }, \
1615 { (base) | 0x03A, "Disconnect Logical Link" }, \
1616 { (base) | 0x03B, "Logical Link Cancel" }, \
1617 { (base) | 0x03C, "Flow Spec Modify" }, \
1618 /* Bluetooth Core Specification Addendum 2 */ \
1619 { (base) | 0x03D, "Enhanced Setup Synchronous Connection" }, \
1620 { (base) | 0x03E, "Enhanced Accept Synchronous Connection Request" }, \
1621 /* Bluetooth Core Specification Addendum 4 */ \
1622 { (base) | 0x03F, "Truncated Page" }, \
1623 { (base) | 0x040, "Truncated Page Cancel" }, \
1624 { (base) | 0x041, "Set Connectionless Peripheral Broadcast" }, \
1625 { (base) | 0x042, "Set Connectionless Peripheral Broadcast Receive" }, \
1626 { (base) | 0x043, "Start Synchronization Train" }, \
1627 { (base) | 0x044, "Receive Synchronization Train" }, \
1628 { (base) | 0x045, "Remote OOB Extended Data Request Reply" } \
1630 static const value_string bthci_cmd_ocf_link_control_vals[] = {
1631 LINK_CONTROL_VALS(0x0), \
1635 value_string_ext bthci_cmd_ocf_link_control_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_ocf_link_control_vals
);
1637 #define LINK_POLICY_VALS(base) \
1638 /* Bluetooth Core 4.0 */ \
1639 { (base) | 0x001, "Hold Mode" }, \
1640 { (base) | 0x003, "Sniff Mode" }, \
1641 { (base) | 0x004, "Exit Sniff Mode" }, \
1642 { (base) | 0x005, "Park Mode" }, \
1643 { (base) | 0x006, "Exit Park Mode" }, \
1644 { (base) | 0x007, "QoS Setup" }, \
1645 { (base) | 0x009, "Role Discovery" }, \
1646 { (base) | 0x00b, "Switch Role" }, \
1647 { (base) | 0x00c, "Read Link Policy Settings" }, \
1648 { (base) | 0x00d, "Write Link Policy Settings" }, \
1649 { (base) | 0x00e, "Read Default Link Policy Settings" }, \
1650 { (base) | 0x00f, "Write Default Link Policy Settings" }, \
1651 { (base) | 0x010, "Flow Specification" }, \
1652 { (base) | 0x011, "Sniff Subrating" }
1654 static const value_string bthci_cmd_ocf_link_policy_vals
[] = {
1655 LINK_POLICY_VALS(0x0),
1659 value_string_ext bthci_cmd_ocf_link_policy_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_ocf_link_policy_vals
);
1661 #define HOST_CONTROLLER_AND_BASEBAND_VALS(base) \
1662 /* Bluetooth Core 4.0 */ \
1663 { (base) | 0x001, "Set Event Mask" }, \
1664 { (base) | 0x003, "Reset" }, \
1665 { (base) | 0x005, "Set Event Filter" }, \
1666 { (base) | 0x008, "Flush" }, \
1667 { (base) | 0x009, "Read PIN Type" }, \
1668 { (base) | 0x00A, "Write PIN Type" }, \
1669 { (base) | 0x00B, "Create New Unit Key" }, \
1670 { (base) | 0x00D, "Read Stored Link Key" }, \
1671 { (base) | 0x011, "Write Stored Link Key" }, \
1672 { (base) | 0x012, "Delete Stored Link Key" }, \
1673 { (base) | 0x013, "Change Local Name" }, \
1674 { (base) | 0x014, "Read Local Name" }, \
1675 { (base) | 0x015, "Read Connection Accept Timeout" }, \
1676 { (base) | 0x016, "Write Connection Accept Timeout" }, \
1677 { (base) | 0x017, "Read Page Timeout" }, \
1678 { (base) | 0x018, "Write Page Timeout" }, \
1679 { (base) | 0x019, "Read Scan Enable" }, \
1680 { (base) | 0x01A, "Write Scan Enable" }, \
1681 { (base) | 0x01B, "Read Page Scan Activity" }, \
1682 { (base) | 0x01C, "Write Page Scan Activity" }, \
1683 { (base) | 0x01D, "Read Inquiry Scan Activity" }, \
1684 { (base) | 0x01E, "Write Inquiry Scan Activity" }, \
1685 { (base) | 0x01F, "Read Authentication Enable" }, \
1686 { (base) | 0x020, "Write Authentication Enable" }, \
1687 { (base) | 0x021, "Read Encryption Mode" }, \
1688 { (base) | 0x022, "Write Encryption Mode" }, \
1689 { (base) | 0x023, "Read Class of Device" }, \
1690 { (base) | 0x024, "Write Class of Device" }, \
1691 { (base) | 0x025, "Read Voice Setting" }, \
1692 { (base) | 0x026, "Write Voice Setting" }, \
1693 { (base) | 0x027, "Read Automatic Flush Timeout" }, \
1694 { (base) | 0x028, "Write Automatic Flush Timeout" }, \
1695 { (base) | 0x029, "Read Num Broadcast Retransmissions" }, \
1696 { (base) | 0x02A, "Write Num Broadcast Retransmissions" }, \
1697 { (base) | 0x02B, "Read Hold Mode Activity" }, \
1698 { (base) | 0x02C, "Write Hold Mode Activity" }, \
1699 { (base) | 0x02D, "Read Tx Power Level" }, \
1700 { (base) | 0x02E, "Read SCO Flow Control Enable" }, \
1701 { (base) | 0x02F, "Write SCO Flow Control Enable" }, \
1702 { (base) | 0x031, "Set Host Controller To Host Flow Control" }, \
1703 { (base) | 0x033, "Host Buffer Size" }, \
1704 { (base) | 0x035, "Host Number of Completed Packets" }, \
1705 { (base) | 0x036, "Read Link Supervision Timeout" }, \
1706 { (base) | 0x037, "Write Link Supervision Timeout" }, \
1707 { (base) | 0x038, "Read Number of Supported IAC" }, \
1708 { (base) | 0x039, "Read Current IAC LAP" }, \
1709 { (base) | 0x03A, "Write Current IAC LAP" }, \
1710 { (base) | 0x03B, "Read Page Scan Period Mode" }, \
1711 { (base) | 0x03C, "Write Page Scan Period Mode" }, \
1712 { (base) | 0x03D, "Read Page Scan Mode" }, \
1713 { (base) | 0x03E, "Write Page Scan Mode" }, \
1714 { (base) | 0x03F, "Set AFH Host Channel Classification" }, \
1715 { (base) | 0x042, "Read Inquiry Scan Type" }, \
1716 { (base) | 0x043, "Write Inquiry Scan Type" }, \
1717 { (base) | 0x044, "Read Inquiry Mode" }, \
1718 { (base) | 0x045, "Write Inquiry Mode" }, \
1719 { (base) | 0x046, "Read Page Scan Type" }, \
1720 { (base) | 0x047, "Write Page Scan Type" }, \
1721 { (base) | 0x048, "Read AFH Channel Assessment Mode" }, \
1722 { (base) | 0x049, "Write AFH Channel Assessment Mode" }, \
1723 { (base) | 0x051, "Read Extended Inquiry Response" }, \
1724 { (base) | 0x052, "Write Extended Inquiry Response" }, \
1725 { (base) | 0x053, "Refresh Encryption Key" }, \
1726 { (base) | 0x055, "Read Simple Pairing Mode" }, \
1727 { (base) | 0x056, "Write Simple Pairing Mode" }, \
1728 { (base) | 0x057, "Read Local OOB Data" }, \
1729 { (base) | 0x058, "Read Inquiry Response Tx Power Level" }, \
1730 { (base) | 0x059, "Write Inquiry Tx Power Level" }, \
1731 { (base) | 0x05A, "Read Default Erroneous Data Reporting" }, \
1732 { (base) | 0x05B, "Write Default Erroneous Data Reporting" }, \
1733 { (base) | 0x05F, "Enhanced Flush" }, \
1734 { (base) | 0x060, "Send Keypress Notification" }, \
1735 { (base) | 0x061, "Read Logical Link Accept Timeout" }, \
1736 { (base) | 0x062, "Write Logical Link Accept Timeout" }, \
1737 { (base) | 0x063, "Set Event Mask Page 2" }, \
1738 { (base) | 0x064, "Read Location Data" }, \
1739 { (base) | 0x065, "Write Location Data" }, \
1740 { (base) | 0x066, "Read Flow Control Mode" }, \
1741 { (base) | 0x067, "Write Flow Control Mode" }, \
1742 { (base) | 0x068, "Read Enhanced Transmit Power Level" }, \
1743 { (base) | 0x069, "Read Best Effort Flush Timeout" }, \
1744 { (base) | 0x06A, "Write Best Effort Flush Timeout" }, \
1745 { (base) | 0x06B, "Short Range Mode" }, \
1746 { (base) | 0x06C, "Read LE Host Supported" }, \
1747 { (base) | 0x06D, "Write LE Host Supported" }, \
1748 /* Bluetooth Core Specification Addendum 3 */ \
1749 { (base) | 0x06E, "Set MWS Channel Parameters"}, \
1750 { (base) | 0x06F, "Set External Frame Configuration"}, \
1751 { (base) | 0x070, "Set MWS Signaling"}, \
1752 { (base) | 0x071, "Set MWS Transport Layer"}, \
1753 { (base) | 0x072, "Set MWS Scan Frequency Table"}, \
1754 { (base) | 0x073, "Set MWS Pattern Configuration"}, \
1755 /* Bluetooth Core Specification Addendum 4 */ \
1756 { (base) | 0x074, "Set Reserved LT_ADDR" }, \
1757 { (base) | 0x075, "Delete Reserved LT_ADDR" }, \
1758 { (base) | 0x076, "Set Connectionless Peripheral Broadcast Data" }, \
1759 { (base) | 0x077, "Read Synchronization Train Parameters" }, \
1760 { (base) | 0x078, "Write Synchronization Train Parameters" }, \
1761 { (base) | 0x079, "Read Secure Connections Host Support" }, \
1762 { (base) | 0x07A, "Write Secure Connections Host Support" }, \
1763 { (base) | 0x07B, "Read Authenticated Payload Timeout" }, \
1764 { (base) | 0x07C, "Write Authenticated Payload Timeout" }, \
1765 { (base) | 0x07D, "Read Local OOB Extended Data" }, \
1766 { (base) | 0x07E, "Read Extended Page Timeout" }, \
1767 { (base) | 0x07F, "Write Extended Page Timeout" }, \
1768 { (base) | 0x080, "Read Extended Inquiry Length" }, \
1769 { (base) | 0x081, "Write Extended Inquiry Length" }, \
1770 /* Bluetooth Core Specification 5.2 */ \
1771 { (base) | 0x082, "Set Ecosystem Base Interval" }, \
1772 { (base) | 0x083, "Configure Data Path" }, \
1773 /* Bluetooth Core Specification 5.3 */ \
1774 { (base) | 0x084, "Set Min Encryption Key Size" }
1776 static const value_string bthci_cmd_ocf_host_controller_and_baseband_vals
[] = {
1777 HOST_CONTROLLER_AND_BASEBAND_VALS(0x0),
1781 value_string_ext bthci_cmd_ocf_host_controller_and_baseband_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_ocf_host_controller_and_baseband_vals
);
1783 #define INFORMATIONAL_VALS(base) \
1784 /* Bluetooth Core 4.0 */ \
1785 { (base) | 0x001, "Read Local Version Information" }, \
1786 { (base) | 0x002, "Read Local Supported Commands" }, \
1787 { (base) | 0x003, "Read Local Supported Features" }, \
1788 { (base) | 0x004, "Read Local Extended Features" }, \
1789 { (base) | 0x005, "Read Buffer Size" }, \
1790 { (base) | 0x007, "Read Country Code" }, \
1791 { (base) | 0x009, "Read BD ADDR" }, \
1792 { (base) | 0x00A, "Read Data Block Size" }, \
1793 /* Bluetooth Core Specification Addendum 2 */ \
1794 { (base) | 0x00B, "Read Local Supported Codecs" }, \
1795 /* Bluetooth Core 5.1 */ \
1796 { (base) | 0x00C, "Read Local Simple Pairing Options" }
1798 static const value_string bthci_cmd_ocf_informational_vals
[] = {
1799 INFORMATIONAL_VALS(0x0),
1803 value_string_ext bthci_cmd_ocf_informational_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_ocf_informational_vals
);
1806 #define STATUS_VALS(base) \
1807 /* Bluetooth Core 4.0 */ \
1808 { (base) | 0x001, "Read Failed Contact Counter" }, \
1809 { (base) | 0x002, "Reset Failed Contact Counter" }, \
1810 { (base) | 0x003, "Read Link Quality" }, \
1811 { (base) | 0x005, "Read RSSI" }, \
1812 { (base) | 0x006, "Read AFH Channel Map" }, \
1813 { (base) | 0x007, "Read Clock" }, \
1814 { (base) | 0x008, "Read Encryption Key Size" }, \
1815 { (base) | 0x009, "Read Local AMP Info" }, \
1816 { (base) | 0x00A, "Read Local AMP Assoc" }, \
1817 { (base) | 0x00B, "Write Remote AMP Assoc" }, \
1818 /* Bluetooth Core Specification Addendum 3 */ \
1819 { (base) | 0x00C, "Get MWS Transport Layer Configuration" }, \
1820 /* Bluetooth Core Specification Addendum 4 */ \
1821 { (base) | 0x00D, "Set Triggered Clock Capture" }
1823 static const value_string bthci_cmd_ocf_status_vals
[] = {
1828 value_string_ext bthci_cmd_ocf_status_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_ocf_status_vals
);
1830 #define TESTING_VALS(base) \
1831 /* Bluetooth Core 4.0 */ \
1832 { (base) | 0x001, "Read Loopback Mode" }, \
1833 { (base) | 0x002, "Write Loopback Mode" }, \
1834 { (base) | 0x003, "Enable Device Under Test Mode" }, \
1835 { (base) | 0x004, "Write Simple Pairing Debug Mode" }, \
1836 { (base) | 0x007, "Enable AMP Receiver Reports" }, \
1837 { (base) | 0x008, "AMP Test End" }, \
1838 { (base) | 0x009, "AMP Test" }, \
1839 { (base) | 0x00A, "Write Secure Connections Test Mode" }
1841 static const value_string bthci_cmd_ocf_testing_vals
[] = {
1846 value_string_ext bthci_cmd_ocf_testing_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_ocf_testing_vals
);
1848 #define LOW_ENERGY_VALS(base)\
1849 /* Bluetooth Core 4.0 */ \
1850 { (base) | 0x001, "LE Set Event Mask" }, \
1851 { (base) | 0x002, "LE Read Buffer Size [v1]" }, \
1852 { (base) | 0x003, "LE Read Local Supported Features" }, \
1853 { (base) | 0x005, "LE Set Random Address" }, \
1854 { (base) | 0x006, "LE Set Advertising Parameters" }, \
1855 { (base) | 0x007, "LE Read Advertising Channel Tx Power" }, \
1856 { (base) | 0x008, "LE Set Advertising Data" }, \
1857 { (base) | 0x009, "LE Set Scan Response Data" }, \
1858 { (base) | 0x00A, "LE Set Advertise Enable" }, \
1859 { (base) | 0x00B, "LE Set Scan Parameters" }, \
1860 { (base) | 0x00C, "LE Set Scan Enable" }, \
1861 { (base) | 0x00D, "LE Create Connection" }, \
1862 { (base) | 0x00E, "LE Create Connection Cancel" }, \
1863 { (base) | 0x00F, "LE Read Filter Accept List Size" }, \
1864 { (base) | 0x010, "LE Clear Filter Accept List" }, \
1865 { (base) | 0x011, "LE Add Device To Filter Accept List" }, \
1866 { (base) | 0x012, "LE Remove Device From Filter Accept List" }, \
1867 { (base) | 0x013, "LE Connection Update" }, \
1868 { (base) | 0x014, "LE Set Host Channel Classification" }, \
1869 { (base) | 0x015, "LE Read Channel Map" }, \
1870 { (base) | 0x016, "LE Read Remote Features" }, \
1871 { (base) | 0x017, "LE Encrypt" }, \
1872 { (base) | 0x018, "LE Rand" }, \
1873 { (base) | 0x019, "LE Enable Encryption" }, \
1874 { (base) | 0x01A, "LE Long Term Key Request Reply" }, \
1875 { (base) | 0x01B, "LE Long Term Key Request Negative Reply" }, \
1876 { (base) | 0x01C, "LE Read Supported States" }, \
1877 { (base) | 0x01D, "LE Receiver Test [v1]" }, \
1878 { (base) | 0x01E, "LE Transmitter Test [v1]" }, \
1879 { (base) | 0x01F, "LE Test End" }, \
1880 /* Bluetooth Core 4.1 */ \
1881 { (base) | 0x020, "LE Remote Connection Parameter Request Reply" }, \
1882 { (base) | 0x021, "LE Remote Connection Parameter Request Negative Reply" }, \
1883 /* Bluetooth Core 4.2 */ \
1884 { (base) | 0x022, "LE Set Data Length" }, \
1885 { (base) | 0x023, "LE Read Suggested Default Data Length" }, \
1886 { (base) | 0x024, "LE Write Suggested Default Data Length" }, \
1887 { (base) | 0x025, "LE Read Local P-256 Public Key" }, \
1888 { (base) | 0x026, "LE Generate DHKey [v1]" }, \
1889 { (base) | 0x027, "LE Add Device to Resolving List" }, \
1890 { (base) | 0x028, "LE Remove Device From Resolving List" }, \
1891 { (base) | 0x029, "LE Clear Resolving List" }, \
1892 { (base) | 0x02A, "LE Read Resolving List Size" }, \
1893 { (base) | 0x02B, "LE Read Peer Resolvable Address" }, \
1894 { (base) | 0x02C, "LE Read Local Resolvable Address" }, \
1895 { (base) | 0x02D, "LE Set Address Resolution Enable" }, \
1896 { (base) | 0x02E, "LE Set Resolvable Private Address Timeout" }, \
1897 { (base) | 0x02F, "LE Read Maximum Data Length" }, \
1898 /* Bluetooth Core 5.0 */ \
1899 { (base) | 0x030, "LE Read PHY" }, \
1900 { (base) | 0x031, "LE Set Default PHY" }, \
1901 { (base) | 0x032, "LE Set PHY" }, \
1902 { (base) | 0x033, "LE Receiver Test [v2]" }, \
1903 { (base) | 0x034, "LE Transmitter Test [v2]" }, \
1904 { (base) | 0x035, "LE Set Advertising Set Random Address" }, \
1905 { (base) | 0x036, "LE Set Extended Advertising Parameters [v1]" }, \
1906 { (base) | 0x037, "LE Set Extended Advertising Data" }, \
1907 { (base) | 0x038, "LE Set Extended Scan Response Data" }, \
1908 { (base) | 0x039, "LE Set Extended Advertising Enable" }, \
1909 { (base) | 0x03A, "LE Read Maximum Advertising Data Length" }, \
1910 { (base) | 0x03B, "LE Read Number of Supported Advertising Sets" }, \
1911 { (base) | 0x03C, "LE Remove Advertising Set" }, \
1912 { (base) | 0x03D, "LE Clear Advertising Sets" }, \
1913 { (base) | 0x03E, "LE Set Periodic Advertising Parameters [v1]" }, \
1914 { (base) | 0x03F, "LE Set Periodic Advertising Data" }, \
1915 { (base) | 0x040, "LE Set Periodic Advertising Enable" }, \
1916 { (base) | 0x041, "LE Set Extended Scan Parameters" }, \
1917 { (base) | 0x042, "LE Set Extended Scan Enable" }, \
1918 { (base) | 0x043, "LE Extended Create Connection [v1]" }, \
1919 { (base) | 0x044, "LE Periodic Advertising Create Sync" }, \
1920 { (base) | 0x045, "LE Periodic Advertising Create Sync Cancel" }, \
1921 { (base) | 0x046, "LE Periodic Advertising Terminate Sync" }, \
1922 { (base) | 0x047, "LE Add Device To Periodic Advertiser List" }, \
1923 { (base) | 0x048, "LE Remove Device From Periodic Advertiser List" }, \
1924 { (base) | 0x049, "LE Clear Periodic Advertiser List" }, \
1925 { (base) | 0x04A, "LE Read Periodic Advertiser List Size" }, \
1926 { (base) | 0x04B, "LE Read Transmit Power" }, \
1927 { (base) | 0x04C, "LE Read RF Path Compensation" }, \
1928 { (base) | 0x04D, "LE Write RF Path Compensation" }, \
1929 { (base) | 0x04E, "LE Set Privacy Mode" }, \
1930 /* Bluetooth Core 5.1 */ \
1931 { (base) | 0x04F, "LE Receiver Test [v3]" }, \
1932 { (base) | 0x050, "LE Transmitter Test [v3]" }, \
1933 { (base) | 0x051, "LE Set Connectionless CTE Transmit Parameters" }, \
1934 { (base) | 0x052, "LE Set Connectionless CTE Transmit Enable" }, \
1935 { (base) | 0x053, "LE Set Connectionless IQ Sampling Enable" }, \
1936 { (base) | 0x054, "LE Set Connection CTE Receive Parameters" }, \
1937 { (base) | 0x055, "LE Set Connection CTE Transmit Parameters" }, \
1938 { (base) | 0x056, "LE Connection CTE Request Enable" }, \
1939 { (base) | 0x057, "LE Connection CTE Response Enable" }, \
1940 { (base) | 0x058, "LE Read Antenna Information" }, \
1941 { (base) | 0x059, "LE Set Periodic Advertising Receive Enable" }, \
1942 { (base) | 0x05A, "LE Periodic Advertising Sync Transfer" }, \
1943 { (base) | 0x05B, "LE Periodic Advertising Set Info Transfer" }, \
1944 { (base) | 0x05C, "LE Set Periodic Advertising Sync Transfer Parameters" }, \
1945 { (base) | 0x05D, "LE Set Default Periodic Advertising Sync Transfer Parameters" }, \
1946 { (base) | 0x05E, "LE Generate DHKey [v2]" }, \
1947 { (base) | 0x05F, "LE Modify Sleep Clock Accuracy" }, \
1948 /* Bluetooth Core 5.2 */ \
1949 { (base) | 0x060, "LE Read Buffer Size [v2]" }, \
1950 { (base) | 0x061, "LE Read ISO Tx Sync" }, \
1951 { (base) | 0x062, "LE Set CIG Parameters" }, \
1952 { (base) | 0x063, "LE Set CIG Parameters Test" }, \
1953 { (base) | 0x064, "LE Create CIS" }, \
1954 { (base) | 0x065, "LE Remove CIG" }, \
1955 { (base) | 0x066, "LE Accept CIS Request" }, \
1956 { (base) | 0x067, "LE Reject CIS Request" }, \
1957 { (base) | 0x068, "LE Create BIG" }, \
1958 { (base) | 0x069, "LE Create BIG Test" }, \
1959 { (base) | 0x06A, "LE Terminate BIG" }, \
1960 { (base) | 0x06B, "LE BIG Create Sync" }, \
1961 { (base) | 0x06C, "LE BIG Terminate Sync" }, \
1962 { (base) | 0x06D, "LE Request Peer SCA" }, \
1963 { (base) | 0x06E, "LE Setup ISO Data Path" }, \
1964 { (base) | 0x06F, "LE Remove ISO Data Path" }, \
1965 { (base) | 0x070, "LE ISO Transmit Test" }, \
1966 { (base) | 0x071, "LE ISO Receive Test" }, \
1967 { (base) | 0x072, "LE ISO Read Test Counters" }, \
1968 { (base) | 0x073, "LE ISO Test End" }, \
1969 { (base) | 0x074, "LE Set Host Feature [v1]" }, \
1970 { (base) | 0x075, "LE Read ISO Link Quality" }, \
1971 { (base) | 0x076, "LE Enhanced Read Transmit Power Level" }, \
1972 { (base) | 0x077, "LE Read Remote Transmit Power Level" }, \
1973 { (base) | 0x078, "LE Set Path Loss Reporting Parameters" }, \
1974 { (base) | 0x079, "LE Set Path Loss Reporting Enable" }, \
1975 { (base) | 0x07A, "LE Set Transmit Power Reporting Enable" }, \
1976 { (base) | 0x07B, "LE Transmitter Test [v4]" }, \
1977 /* Bluetooth Core 5.3 */ \
1978 { (base) | 0x07C, "LE Set Data Related Address Changes" }, \
1979 { (base) | 0x07D, "LE Set Default Subrate" }, \
1980 { (base) | 0x07E, "LE Subrate Request" }, \
1981 /* Bluetooth Core 5.4 */ \
1982 { (base) | 0x07F, "LE Set Extended Advertising Parameters [v2]" }, \
1983 { (base) | 0x080, "LE Set Decision Data" }, /* Bluetooth Core 6.0 */ \
1984 { (base) | 0x081, "LE Set Decision Instructions" }, /* Bluetooth Core 6.0 */ \
1985 { (base) | 0x082, "LE Set Periodic Advertising Subevent Data" }, \
1986 { (base) | 0x083, "LE Set Periodic Advertising Response Data" }, \
1987 { (base) | 0x084, "LE Set Periodic Sync Subevent" }, \
1988 { (base) | 0x085, "LE Extended Create Connection [v2]" }, \
1989 { (base) | 0x086, "LE Set Periodic Advertising Parameters [v2]" }, \
1990 /* Bluetooth Core 6.0 */ \
1991 { (base) | 0x087, "LE Read All Local Supported Features" }, \
1992 { (base) | 0x088, "LE Read All Remote Features" }, \
1993 { (base) | 0x089, "LE CS Read Local Supported Capabilities" }, \
1994 { (base) | 0x08a, "LE CS Read Remote Supported Capabilities" }, \
1995 { (base) | 0x08b, "LE CS Write Cached Remote Supported Capabilities" }, \
1996 { (base) | 0x08c, "LE CS Security Enable" }, \
1997 { (base) | 0x08d, "LE CS Set Default Settings" }, \
1998 { (base) | 0x08e, "LE CS Read Remote FAE Table" }, \
1999 { (base) | 0x08f, "LE CS Write Cached Remote FAE Table" }, \
2000 { (base) | 0x090, "LE CS Create Config" }, \
2001 { (base) | 0x091, "LE CS Remove Config" }, \
2002 { (base) | 0x092, "LE CS Set Channel Classification" }, \
2003 { (base) | 0x093, "LE CS Set Procedure Parameters" }, \
2004 { (base) | 0x094, "LE CS Procedure Enable" }, \
2005 { (base) | 0x095, "LE CS Test" }, \
2006 { (base) | 0x096, "LE CS Test End" }, \
2007 { (base) | 0x097, "LE Set Host Feature [v2]" }, \
2008 { (base) | 0x098, "LE Add Device To Monitored Advertisers List" }, \
2009 { (base) | 0x099, "LE Remove Device From Monitored Advertisers List" }, \
2010 { (base) | 0x09A, "LE Clear Monitored Advertisers List" }, \
2011 { (base) | 0x09B, "LE Read Monitored Advertisres List Size" }, \
2012 { (base) | 0x09C, "LE Enable Monitored Advertisers" }, \
2013 { (base) | 0x09D, "LE Frame Space Update" }
2015 static const value_string bthci_cmd_ocf_low_energy_vals
[] = {
2016 LOW_ENERGY_VALS(0x0),
2020 value_string_ext bthci_cmd_ocf_low_energy_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_ocf_low_energy_vals
);
2023 static const value_string bthci_cmd_opcode_vals
[] = {
2024 {0x0, "No Operation"},
2025 LINK_CONTROL_VALS(0x01 << 10),
2026 LINK_POLICY_VALS(0x02 << 10),
2027 HOST_CONTROLLER_AND_BASEBAND_VALS(0x03 << 10),
2028 INFORMATIONAL_VALS(0x04 << 10),
2029 STATUS_VALS(0x05 << 10),
2030 TESTING_VALS(0x06 << 10),
2031 LOW_ENERGY_VALS(0x08 << 10),
2035 value_string_ext bthci_cmd_opcode_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_opcode_vals
);
2037 static const value_string bthci_cmd_status_vals
[] = {
2039 {0x01, "Unknown HCI Command"},
2040 {0x02, "Unknown Connection Identifier"},
2041 {0x03, "Hardware Failure"},
2042 {0x04, "Page Timeout"},
2043 {0x05, "Authentication Failure"},
2044 {0x06, "PIN or Key Missing"},
2045 {0x07, "Memory Capacity Exceeded"},
2046 {0x08, "Connection Timeout"},
2047 {0x09, "Connection Limit Exceeded"},
2048 {0x0A, "Synchronous Connection Limit To A Device Exceeded"},
2049 {0x0B, "ACL Connection Already Exists"},
2050 {0x0C, "Command Disallowed"},
2051 {0x0D, "Connection Rejected due to Limited Resources"},
2052 {0x0E, "Connection Rejected due To Security Reasons"},
2053 {0x0F, "Connection Rejected due to Unacceptable BD_ADDR"},
2054 {0x10, "Connection Accept Timeout Exceeded"},
2055 {0x11, "Unsupported Feature or Parameter Value"},
2056 {0x12, "Invalid HCI Command Parameters"},
2057 {0x13, "Remote User Terminated Connection"},
2058 {0x14, "Remote Device Terminated Connection due to Low Resources"},
2059 {0x15, "Remote Device Terminated Connection due to Power Off"},
2060 {0x16, "Connection Terminated by Local Host"},
2061 {0x17, "Repeated Attempts"},
2062 {0x18, "Pairing Not Allowed"},
2063 {0x19, "Unknown LMP PDU"},
2064 {0x1A, "Unsupported Remote/LMP Feature"},
2065 {0x1B, "SCO Offset Rejected"},
2066 {0x1C, "SCO Interval Rejected"},
2067 {0x1D, "SCO Air Mode Rejected"},
2068 {0x1E, "Invalid LMP/LL Parameters"},
2069 {0x1F, "Unspecified Error"},
2070 {0x20, "Unsupported LMP/LL Parameter Value"},
2071 {0x21, "Role Change Not Allowed"},
2072 {0x22, "LMP/LL Response Timeout"},
2073 {0x23, "LMP Error Transaction Collision/LL Procedure Collision"},
2074 {0x24, "LMP PDU Not Allowed"},
2075 {0x25, "Encryption Mode Not Acceptable"},
2076 {0x26, "Link Key cannot be Changed"},
2077 {0x27, "Requested QoS Not Supported"},
2078 {0x28, "Instant Passed"},
2079 {0x29, "Pairing with Unit Key Not Supported"},
2080 {0x2A, "Different Transaction Collision"},
2081 {0x2C, "QoS Unacceptable Parameter"},
2082 {0x2D, "QoS Rejected"},
2083 {0x2E, "Channel Classification Not Supported"},
2084 {0x2F, "Insufficient Security"},
2085 {0x30, "Parameter Out Of Mandatory Range"},
2086 {0x32, "Role Switch Pending"},
2087 {0x34, "Reserved Slot Violation"},
2088 {0x35, "Role Switch Failed"},
2089 {0x36, "Extended Inquiry Response Too Large"},
2090 {0x37, "Secure Simple Pairing Not Supported By Host"},
2091 {0x38, "Host Busy - Pairing"},
2092 {0x39, "Connection Rejected due to No Suitable Channel Found"},
2093 {0x3A, "Controller Busy"},
2094 {0x3B, "Unacceptable Connection Parameters"},
2095 {0x3C, "Directed Advertising Timeout"},
2096 {0x3D, "Connection Terminated due to MIC Failure"},
2097 {0x3E, "Connection Failed to be Established"},
2098 {0x3F, "MAC Connection Failed"},
2099 {0x40, "Coarse Clock Adjustment Rejected but Will Try to Adjust Using Clock Dragging"},
2100 {0x41, "Type0 Submap Not Defined"},
2101 {0x42, "Unknown Advertising Identifier"},
2102 {0x43, "Limit Reached"},
2103 {0x44, "Operation Cancelled by Host"},
2104 {0x45, "Packet Too Long"},
2106 {0x47, "Too Early"},
2107 {0x48, "Insufficient Channels"},
2110 value_string_ext bthci_cmd_status_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_status_vals
);
2112 static const value_string bthci_cmd_cod_major_device_class_vals
[] = {
2113 {0x00, "Miscellaneous"},
2116 {0x03, "LAN/Network Access Point"},
2117 {0x04, "Audio/Video"},
2118 {0x05, "Peripheral (HID)"},
2123 {0x1F, "Uncategorized: device code not specified"},
2126 static value_string_ext bthci_cmd_cod_major_device_class_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_major_device_class_vals
);
2128 static const value_string bthci_cmd_cod_minor_device_class_computer_vals
[] = {
2129 { 0x00, "Uncategorized, code for device not assigned" },
2130 { 0x01, "Desktop workstation" },
2131 { 0x02, "Server-class computer" },
2133 { 0x04, "Handheld PC/PDA (clamshell)" },
2134 { 0x05, "Palm-size PC/PDA" },
2135 { 0x06, "Wearable computer (watch size)" },
2139 static value_string_ext bthci_cmd_cod_minor_device_class_computer_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_computer_vals
);
2141 static const value_string bthci_cmd_cod_minor_device_class_phone_vals
[] = {
2142 { 0x00, "Uncategorized, code for device not assigned" },
2143 { 0x01, "Cellular" },
2144 { 0x02, "Cordless" },
2145 { 0x03, "Smartphone" },
2146 { 0x04, "Wired modem or voice gateway" },
2147 { 0x05, "Common ISDN access" },
2150 static value_string_ext bthci_cmd_cod_minor_device_class_phone_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_phone_vals
);
2152 static const value_string bthci_cmd_cod_minor_device_class_lan_net_load_factor_vals
[] = {
2153 { 0x00, "Fully available" },
2154 { 0x01, "1% to 17% utilized" },
2155 { 0x02, "17% to 33% utilized" },
2156 { 0x03, "33% to 50% utilized" },
2157 { 0x04, "50% to 67% utilized" },
2158 { 0x05, "67% to 83% utilized" },
2159 { 0x06, "83% to 99% utilized" },
2160 { 0x07, "No service available" },
2163 static value_string_ext bthci_cmd_cod_minor_device_class_lan_net_load_factor_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_lan_net_load_factor_vals
);
2165 static const value_string bthci_cmd_cod_minor_device_class_lan_net_type_vals
[] = {
2166 { 0x00, "Uncategorized (used if no others apply)" },
2169 static value_string_ext bthci_cmd_cod_minor_device_class_lan_net_type_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_lan_net_type_vals
);
2171 static const value_string bthci_cmd_cod_minor_device_class_audio_video_vals
[] = {
2172 { 0x00, "Uncategorized, code not assigned" },
2173 { 0x01, "Wearable Headset Device" },
2174 { 0x02, "Hands-free Device" },
2175 { 0x04, "Microphone" },
2176 { 0x05, "Loudspeaker" },
2177 { 0x06, "Headphones" },
2178 { 0x07, "Portable Audio" },
2179 { 0x08, "Car audio" },
2180 { 0x09, "Set-top box" },
2181 { 0x0A, "HiFi Audio Device" },
2183 { 0x0C, "Video Camera" },
2184 { 0x0D, "Camcorder" },
2185 { 0x0E, "Video Monitor" },
2186 { 0x0F, "Video Display and Loudspeaker" },
2187 { 0x10, "Video Conferencing" },
2188 { 0x12, "Gaming/Toy" },
2191 static value_string_ext bthci_cmd_cod_minor_device_class_audio_video_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_audio_video_vals
);
2193 static const value_string bthci_cmd_cod_minor_device_class_peripheral_class_vals
[] = {
2194 { 0x00, "Not Keyboard / Not Pointing Device" },
2195 { 0x01, "Keyboard" },
2196 { 0x02, "Pointing device" },
2197 { 0x03, "Combo keyboard/pointing device" },
2200 static value_string_ext bthci_cmd_cod_minor_device_class_peripheral_class_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_peripheral_class_vals
);
2202 static const value_string bthci_cmd_cod_minor_device_class_peripheral_type_vals
[] = {
2203 { 0x00, "Uncategorized device" },
2204 { 0x01, "Joystick" },
2205 { 0x02, "Gamepad" },
2206 { 0x03, "Remote control" },
2207 { 0x04, "Sensing device" },
2208 { 0x05, "Digitizer tablet" },
2209 { 0x06, "Card Reader" },
2210 { 0x07, "Digital Pen" },
2211 { 0x08, "Handheld scanner for bar-codes" },
2212 { 0x09, "Handheld gestural input device" },
2215 static value_string_ext bthci_cmd_cod_minor_device_class_peripheral_type_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_peripheral_type_vals
);
2218 static const value_string bthci_cmd_cod_minor_device_class_imaging_type_vals
[] = {
2219 { 0x00, "Uncategorized, default" },
2222 static value_string_ext bthci_cmd_cod_minor_device_class_imaging_type_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_imaging_type_vals
);
2224 static const value_string bthci_cmd_cod_minor_device_class_wearable_vals
[] = {
2225 { 0x01, "Wristwatch" },
2229 { 0x05, "Glasses" },
2232 static value_string_ext bthci_cmd_cod_minor_device_class_wearable_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_wearable_vals
);
2234 static const value_string bthci_cmd_cod_minor_device_class_toy_vals
[] = {
2236 { 0x02, "Vehicle" },
2237 { 0x03, "Doll / Action figure" },
2238 { 0x04, "Controller" },
2242 static value_string_ext bthci_cmd_cod_minor_device_class_toy_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_toy_vals
);
2244 static const value_string bthci_cmd_cod_minor_device_class_health_vals
[] = {
2245 { 0x00, "Undefined" },
2246 { 0x01, "Blood Pressure Monitor" },
2247 { 0x02, "Thermometer" },
2248 { 0x03, "Weighing Scale" },
2249 { 0x04, "Glucose Meter" },
2250 { 0x05, "Pulse Oximeter" },
2251 { 0x06, "Heart/Pulse Rate Monitor" },
2252 { 0x07, "Health Data Display" },
2253 { 0x08, "Step Counter" },
2254 { 0x09, "Body Composition Analyzer" },
2255 { 0x0A, "Peak Flow Monitor" },
2256 { 0x0B, "Medication Monitor" },
2257 { 0x0C, "Knee Prosthesis" },
2258 { 0x0D, "Ankle Prosthesis" },
2259 { 0x0E, "Generic Health Manager" },
2260 { 0x0F, "Personal Mobility Device" },
2263 static value_string_ext bthci_cmd_cod_minor_device_class_health_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_cod_minor_device_class_health_vals
);
2265 /* https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile */
2266 static const value_string bthci_cmd_eir_data_type_vals
[] = {
2268 {0x02, "16-bit Service Class UUIDs (incomplete)" },
2269 {0x03, "16-bit Service Class UUIDs" },
2270 {0x04, "32-bit Service Class UUIDs (incomplete)" },
2271 {0x05, "32-bit Service Class UUIDs" },
2272 {0x06, "128-bit Service Class UUIDs (incomplete)" },
2273 {0x07, "128-bit Service Class UUIDs" },
2274 {0x08, "Device Name (shortened)" },
2275 {0x09, "Device Name" },
2276 {0x0A, "Tx Power Level" },
2277 {0x0B, "OOB Optional Data Length" },
2279 {0x0D, "Class Of Device" },
2280 {0x0E, "Simple Pairing Hash C" },
2281 {0x0F, "Simple Pairing Randomizer R" },
2282 {0x10, "Device ID / Security Manager TK Value" },
2283 {0x11, "Security Manager Out of Band Flags" },
2284 {0x12, "Peripheral Connection Interval Range" },
2285 {0x14, "List of 16-bit Service Solicitation UUIDs" },
2286 {0x15, "List of 128-bit Service Solicitation UUIDs" },
2287 {0x16, "Service Data - 16 bit UUID" },
2288 {0x17, "Public Target Address" },
2289 {0x18, "Random Target Address" },
2290 {0x19, "Appearance" },
2291 {0x1A, "Advertising Interval" },
2292 {0x1B, "LE Bluetooth Device Address" },
2294 {0x1D, "Simple Pairing Hash C-256" },
2295 {0x1E, "Simple Pairing Randomizer R-256" },
2296 {0x1F, "List of 32-bit Service Solicitation UUIDs" },
2297 {0x20, "Service Data - 32 bit UUID" },
2298 {0x21, "Service Data - 128 bit UUID" },
2299 {0x22, "LE Secure Connections Confirmation Value" },
2300 {0x23, "LE Secure Connections Random Value" },
2302 {0x25, "Indoor Positioning" },
2303 {0x26, "Transport Discovery Data" },
2304 {0x27, "LE Supported Features" },
2305 {0x28, "Channel Map Update Indication" },
2307 {0x2A, "Mesh Message" },
2308 {0x2B, "Mesh Beacon" },
2310 {0x2D, "Broadcast Code" },
2311 {0x2E, "Resolvable Set Identifier" },
2312 {0x2F, "Advertising Interval - long" },
2313 {0x30, "Broadcast_Name" },
2314 {0x3D, "3D Information Data" },
2315 {0xFF, "Manufacturer Specific" },
2318 value_string_ext bthci_cmd_eir_data_type_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_eir_data_type_vals
);
2320 /* Updating based on https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml */
2321 static const value_string bthci_cmd_appearance_vals
[] = {
2323 { 64, "Generic Phone" },
2324 { 128, "Generic Computer" },
2325 { 192, "Generic Watch" },
2326 { 193, "Watch: Sports Watch" },
2327 { 256, "Generic Clock" },
2328 { 320, "Generic Display" },
2329 { 384, "Generic Remote Control" },
2330 { 448, "Generic Eye-glasses" },
2331 { 512, "Generic Tag" },
2332 { 576, "Generic Keyring" },
2333 { 640, "Generic Media Player" },
2334 { 704, "Generic Barcode Scanner" },
2335 { 768, "Generic Thermometer" },
2336 { 769, "Thermometer: Ear" },
2337 { 832, "Generic Heart rate Sensor" },
2338 { 833, "Heart Rate Sensor: Heart Rate Belt" },
2339 { 896, "Generic Blood Pressure" },
2340 { 897, "Blood Pressure: Arm" },
2341 { 898, "Blood Pressure: Wrist" },
2342 { 960, "Human Interface Device (HID)" },
2343 { 961, "Keyboard" },
2345 { 963, "Joystick" },
2347 { 965, "Digitizer Tablet" },
2348 { 966, "Card Reader" },
2349 { 967, "Digital Pen" },
2350 { 968, "Barcode Scanner" },
2351 { 1024, "Generic Glucose Meter" },
2352 { 1088, "Generic: Running Walking Sensor" },
2353 { 1089, "Running Walking Sensor: In-Shoe" },
2354 { 1090, "Running Walking Sensor: On-Shoe" },
2355 { 1091, "Running Walking Sensor: On-Hip" },
2356 { 1152, "Generic: Cycling" },
2357 { 1153, "Cycling: Cycling Computer" },
2358 { 1154, "Cycling: Speed Sensor" },
2359 { 1155, "Cycling: Cadence Sensor" },
2360 { 1156, "Cycling: Power Sensor" },
2361 { 1157, "Cycling: Speed and Cadence Sensor" },
2362 { 1216, "Generic Control Device" },
2364 { 1218, "Multi-switch" },
2368 { 1222, "Touch-panel" },
2369 { 1280, "Generic Network Device" },
2370 { 1281, "Access Point" },
2371 { 1344, "Generic Sensor" },
2372 { 1345, "Motion Sensor" },
2373 { 1346, "Air Quality Sensor" },
2374 { 1347, "Temperature Sensor" },
2375 { 1348, "Humidity Sensor" },
2376 { 1349, "Leak Sensor" },
2377 { 1350, "Smoke Sensor" },
2378 { 1351, "Occupancy Sensor" },
2379 { 1352, "Contact Sensor" },
2380 { 1353, "Carbon Monoxide Sensor" },
2381 { 1354, "Carbon Dioxide Sensor" },
2382 { 1355, "Ambient Light Sensor" },
2383 { 1356, "Energy Sensor" },
2384 { 1357, "Color Light Sensor" },
2385 { 1358, "Rain Sensor" },
2386 { 1359, "Fire Sensor" },
2387 { 1360, "Wind Sensor" },
2388 { 1361, "Proximity Sensor" },
2389 { 1362, "Multi-Sensor" },
2390 { 1408, "Generic Light Fixtures" },
2391 { 1409, "Wall Light" },
2392 { 1410, "Ceiling Light" },
2393 { 1411, "Floor Light" },
2394 { 1412, "Cabinet Light" },
2395 { 1413, "Desk Light" },
2396 { 1414, "Troffer Light" },
2397 { 1415, "Pendant Light" },
2398 { 1416, "In-ground Light" },
2399 { 1417, "Flood Light" },
2400 { 1418, "Underwater Light" },
2401 { 1419, "Bollard with Light" },
2402 { 1420, "Pathway Light" },
2403 { 1421, "Garden Light" },
2404 { 1422, "Pole-top Light" },
2405 { 1423, "Spotlight" },
2406 { 1424, "Linear Light" },
2407 { 1425, "Street Light" },
2408 { 1426, "Shelves Light" },
2409 { 1427, "High-bay / Low-bay Light" },
2410 { 1428, "Emergency Exit Light" },
2411 { 1472, "Generic Fan" },
2412 { 1473, "Ceiling Fan" },
2413 { 1474, "Axial Fan" },
2414 { 1475, "Exhaust Fan" },
2415 { 1476, "Pedestal Fan" },
2416 { 1477, "Desk Fan" },
2417 { 1478, "Wall Fan" },
2418 { 1536, "Generic HVAC" },
2419 { 1537, "Thermostat" },
2420 { 1600, "Generic Air Conditioning" },
2421 { 1664, "Generic Humidifier" },
2422 { 1728, "Generic Heating" },
2423 { 1729, "Radiator" },
2425 { 1731, "Heat Pump" },
2426 { 1732, "Infrared Heater" },
2427 { 1733, "Radiant Panel Heater" },
2428 { 1734, "Fan Heater" },
2429 { 1735, "Air Curtain" },
2430 { 1792, "Generic Access Control" },
2431 { 1793, "Access Door" },
2432 { 1794, "Garage Door" },
2433 { 1795, "Emergency Exit Door" },
2434 { 1796, "Access Lock" },
2435 { 1797, "Elevator" },
2437 { 1799, "Entrance Gate" },
2438 { 1856, "Generic Motorized Device" },
2439 { 1857, "Motorized Gate" },
2441 { 1859, "Blinds or Shades" },
2442 { 1860, "Curtains" },
2444 { 1920, "Generic Power Device" },
2445 { 1921, "Power Outlet" },
2446 { 1922, "Power Strip" },
2448 { 1924, "Power Supply" },
2449 { 1925, "LED Driver" },
2450 { 1926, "Fluorescent Lamp Gear" },
2451 { 1927, "HID Lamp Gear" },
2452 { 1984, "Generic Light Source" },
2453 { 1985, "Incandescent Light Bulb" },
2454 { 1986, "LED Bulb" },
2455 { 1987, "HID Lamp" },
2456 { 1988, "Fluorescent Lamp" },
2457 { 1989, "LED Array" },
2458 { 1990, "Multi-Color LED Array" },
2459 { 3136, "Generic: Pulse Oximeter" },
2460 { 3137, "Fingertip" },
2461 { 3138, "Wrist Worn" },
2462 { 3200, "Generic: Weight Scale" },
2463 { 3264, "Generic Personal Mobility Device" },
2464 { 3265, "Powered Wheelchair" },
2465 { 3266, "Mobility Scooter" },
2466 { 3328, "Generic Continuous Glucose Monitor" },
2467 { 5184, "Generic: Outdoor Sports Activity" },
2468 { 5185, "Location Display Device" },
2469 { 5186, "Location and Navigation Display Device" },
2470 { 5187, "Location Pod" },
2471 { 5188, "Location and Navigation Pod" },
2474 value_string_ext bthci_cmd_appearance_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_appearance_vals
);
2476 const value_string bthci_cmd_io_capability_vals
[] = {
2477 {0x00, "Display Only" },
2478 {0x01, "Display Yes/No" },
2479 {0x02, "Keyboard Only" },
2480 {0x03, "No Input, No Output" },
2484 const value_string bthci_cmd_oob_data_present_vals
[] = {
2485 {0x00, "OOB Authentication Data Not Present" },
2486 {0x01, "OOB Authentication Data From Remote Device Present" },
2490 static const value_string bthci_cmd_auth_req_vals
[] = {
2491 {0x00, "MITM Protection Not Required - No Bonding. Numeric Comparison, Automatic Accept Allowed, No Secure Connection" },
2492 {0x01, "MITM Protection Required - No Bonding. Use IO Capability To Determine Procedure, No Secure Connection" },
2493 {0x02, "MITM Protection Not Required - Dedicated Bonding. Numeric Comparison, Automatic Accept Allowed, No Secure Connection" },
2494 {0x03, "MITM Protection Required - Dedicated Bonding. Use IO Capability To Determine Procedure, No Secure Connection" },
2495 {0x04, "MITM Protection Not Required - General Bonding. Numeric Comparison, Automatic Accept Allowed, No Secure Connection" },
2496 {0x05, "MITM Protection Required - General Bonding. Use IO Capability To Determine Procedure, No Secure Connection" },
2497 {0x08, "MITM Protection Not Required - No Bonding. Numeric Comparison, Automatic Accept Allowed, Secure Connection" },
2498 {0x09, "MITM Protection Required - No Bonding. Use IO Capability To Determine Procedure, Secure Connection" },
2499 {0x0A, "MITM Protection Not Required - Dedicated Bonding. Numeric Comparison, Automatic Accept Allowed, Secure Connection" },
2500 {0x0B, "MITM Protection Required - Dedicated Bonding. Use IO Capability To Determine Procedure, Secure Connection " },
2501 {0x0C, "MITM Protection Not Required - General Bonding. Numeric Comparison, Automatic Accept Allowed, Secure Connection" },
2502 {0x0D, "MITM Protection Required - General Bonding. Use IO Capability To Determine Procedure, Secure Connection" },
2505 value_string_ext bthci_cmd_auth_req_vals_ext
= VALUE_STRING_EXT_INIT(bthci_cmd_auth_req_vals
);
2507 const value_string bthci_cmd_address_types_vals
[] = {
2508 { 0x00, "Public Device Address" },
2509 { 0x01, "Random Device Address" },
2510 { 0x02, "Public Identity Address (Corresponds to Resolved Private Address)" },
2511 { 0x03, "Random (Static) Identity Address (Corresponds to Resolved Private Address)" },
2515 static const value_string cmd_base_address_types_vals
[] = {
2516 { 0x00, "Public Address" },
2517 { 0x01, "Random Address" },
2521 static const value_string cmd_identity_address_types_vals
[] = {
2522 { 0x00, "Public Identity Address" },
2523 { 0x01, "Random (Static) Identity Address" },
2527 static const value_string cmd_role_vals
[] = {
2528 {0x00, "Change own Role to Central for this BD_ADDR"},
2529 {0x01, "Change own Role to Peripheral for this BD_ADDR"},
2533 static const value_string cmd_acr_role_vals
[] = {
2534 {0x00, "Become the Central for this connection. The LM will perform the role switch."},
2535 {0x01, "Remain the Peripheral for this connection. The LM will NOT perform the role switch."},
2539 static const value_string cmd_pin_types
[] = {
2540 {0x00, "Variable PIN" },
2541 {0x01, "Fixed PIN" },
2545 static const value_string cmd_encryption_enable
[] = {
2546 {0x00, "Link Level Encryption is OFF"},
2547 {0x01, "Link Level Encryption is ON"},
2551 static const value_string cmd_key_flag
[] = {
2552 {0x00, "Using Semi-permanent Link Key"},
2553 {0x01, "Using Temporary Link Key"},
2557 static const value_string cmd_filter_types
[] = {
2558 {0x00, "Clear all Filters" },
2559 {0x01, "Inquiry Result" },
2560 {0x02, "Connection Setup" },
2564 static const value_string cmd_inquiry_result_filter_condition_types
[] = {
2565 {0x00, "A new device responded" },
2566 {0x01, "A device with the specified Class of Device responded" },
2567 {0x02, "A device with the specified BD_ADDR responded" },
2571 static const value_string cmd_flow_directions
[] = {
2572 {0x00, "Outgoing Flow" },
2573 {0x01, "Incoming Flow" },
2577 static const value_string cmd_service_types
[] = {
2578 {0x00, "No Traffic"},
2579 {0x01, "Best Effort"},
2580 {0x02, "Guaranteed"},
2584 static const value_string cmd_connection_setup_filter_condition_types
[] = {
2585 {0x00, "Allow Connections from all devices" },
2586 {0x01, "Allow Connections from a device with a specific Class of Device" },
2587 {0x02, "Allow Connections from a device with a specific BD_ADDR" },
2591 static const value_string cmd_auto_acc_flag_values
[] = {
2592 {0x01, "Do NOT Auto accept" },
2593 {0x02, "Do Auto accept, role switch disabled" },
2594 {0x03, "Do Auto accept, role switch enabled" },
2598 static const value_string cmd_read_all_flag_values
[] = {
2599 {0x00, "Return Link Key for specified BD_ADDR" },
2600 {0x01, "Return all stored Link Keys" },
2604 static const value_string cmd_delete_all_flag_values
[] = {
2605 {0x00, "Delete only Link Key for specified BD_ADDR" },
2606 {0x01, "Delete all stored Link Keys" },
2610 const value_string bthci_cmd_scan_enable_values
[] = {
2611 {0x00, "No Scans enabled" },
2612 {0x01, "Inquiry Scan enabled/Page Scan disable" },
2613 {0x02, "Inquiry Scan disabled/Page Scan enabled" },
2614 {0x03, "Inquiry Scan enabled/Page Scan enabled" },
2618 const value_string bthci_cmd_authentication_enable_values
[] = {
2619 {0x00, "Authentication disabled" },
2620 {0x01, "Authentication enabled for all connection" },
2624 static const value_string cmd_input_coding_values
[] = {
2626 {0x1, UTF8_MICRO_SIGN
"-law" },
2630 value_string_ext bthci_cmd_input_coding_vals_ext
= VALUE_STRING_EXT_INIT(cmd_input_coding_values
);
2632 static const value_string cmd_input_data_format_values
[] = {
2633 {0x0, "1's complement" },
2634 {0x1, "2's complement" },
2635 {0x2, "Sign-Magnitude" },
2639 value_string_ext bthci_cmd_input_data_format_vals_ext
= VALUE_STRING_EXT_INIT(cmd_input_data_format_values
);
2641 static const value_string cmd_input_sample_size_values
[] = {
2642 {0x0, "8 bit (only for Linear PCM)" },
2643 {0x1, "16 bit (only for Linear PCM)" },
2646 value_string_ext bthci_cmd_input_sample_size_vals_ext
= VALUE_STRING_EXT_INIT(cmd_input_sample_size_values
);
2648 static const value_string cmd_air_coding_format_values
[] = {
2650 {0x1, UTF8_MICRO_SIGN
"-law" },
2652 {0x3, "Transparent" },
2655 value_string_ext bthci_cmd_air_coding_format_vals_ext
= VALUE_STRING_EXT_INIT(cmd_air_coding_format_values
);
2657 static const value_string cmd_en_disabled
[] = {
2658 {0x00, "disabled" },
2663 static const value_string cmd_flow_contr_enable
[] = {
2664 {0x00, "Flow control off in direction from Host Controller to Host." },
2665 {0x01, "ON - HCI ACL Data Packets / OFF - HCI SCO Data Packets" },
2666 {0x02, "OFF - HCI ACL Data Packets / ON - HCI SCO Data Packets" },
2667 {0x03, "ON - HCI ACL Data Packets / ON - HCI SCO Data Packets" },
2671 static const value_string cmd_power_level_types
[] = {
2672 {0x00, "Current Tx Power Level" },
2673 {0x01, "Maximum Tx Power Level" },
2677 static const value_string cmd_loopback_modes
[] = {
2678 {0x00, "No Loopback mode enabled" },
2679 {0x01, "Enable Local Loopback" },
2680 {0x02, "Enable Remote Loopback" },
2684 const value_string bthci_cmd_encrypt_mode_vals
[] = {
2685 { 0x00, "Encryption Disabled" },
2686 { 0x01, "Encryption only for Point-To-Point Packets" },
2687 { 0x02, "Encryption for Point-To-Point and Broadcast Packets" },
2691 static const value_string cmd_boolean
[] = {
2697 const value_string bthci_cmd_page_scan_modes
[] = {
2698 {0, "Mandatory Page Scan Mode"},
2699 {1, "Optional Page Scan Mode I"},
2700 {2, "Optional Page Scan Mode II"},
2701 {3, "Optional Page Scan Mode III"},
2705 const value_string bthci_cmd_page_scan_repetition_modes
[] = {
2712 const value_string bthci_cmd_page_scan_period_modes
[] = {
2719 static const value_string cmd_role_switch_modes
[] = {
2720 {0, "Local device will be Central, and will not accept a switch request." },
2721 {1, "Local device may be Central, or may become Peripheral after accepting a switch." },
2725 static const value_string cmd_rtx_effort
[] = {
2726 {0x00, "No Retransmission" },
2727 {0x01, "At least 1 retransmission, optimize for power consumption" },
2728 {0x02, "At least 1 retransmission, optimize for link quality" },
2729 {0xFF, "Don't Care" },
2733 static const value_string cmd_scan_types
[] = {
2734 {0x00, "Standard Scan" },
2735 {0x01, "Interlaced Scan" },
2739 const value_string bthci_cmd_inq_modes
[] = {
2740 {0x00, "Standard Results" },
2741 {0x01, "Results With RSSI" },
2742 {0x02, "Results With RSSI or Extended Results" },
2746 static const value_string cmd_flush_pkt_type
[] = {
2747 {0x00, "Automatically Flushable Only" },
2751 static const value_string cmd_which_clock
[] = {
2757 const value_string bthci_cmd_notification_types
[] = {
2758 {0x00, "Passkey Entry Started" },
2759 {0x01, "Passkey Digit Entered" },
2760 {0x02, "Passkey Digit Erased" },
2761 {0x03, "Passkey Cleared" },
2762 {0x04, "Passkey Entry Completed" },
2766 static const value_string bthci_cmd_amp_key_type
[] = {
2767 {0x03, "Debug Combination Key" },
2768 {0x04, "Authenticated Combination Key" },
2769 {0x05, "Unauthenticated Combination Key" },
2773 static const value_string cmd_flow_spec_servicetype
[] = {
2774 { 0x00, "No traffic" },
2775 { 0x01, "Best effort (Default)" },
2776 { 0x02, "Guaranteed" },
2780 static const value_string cmd_flow_ctrl_mode
[] = {
2781 { 0x00, "Packet based" },
2782 { 0x01, "Data Block based" },
2786 static const value_string cmd_le_advertising_types
[] = {
2787 { 0x00, "Connectable Undirected Advertising" },
2788 { 0x01, "Connectable Directed Advertising" },
2789 { 0x02, "Scannable Undirected Advertising" },
2790 { 0x03, "Non-Connectable Undirected Advertising" },
2794 static const value_string cmd_le_advertising_filter_policy
[] = {
2795 { 0x00, "Allow Scan Req from Any, Allow Connect Req from Any" },
2796 { 0x01, "Allow Scan Req from Filter Accept List Only, Allow Connect Req from Any" },
2797 { 0x02, "Allow Scan Req from Any, Allow Connect Req from Filter Accept List Only" },
2798 { 0x03, "Allow Scan Req from Filter Accept List Only, Allow Connect Req from Filter Accept List Only." },
2802 static const value_string cmd_le_scan_types
[] = {
2803 { 0x00, "Passive" },
2808 static const value_string cmd_decision_mode_filter_policy
[] = {
2809 { 0x00, "No-decisions Mode" },
2810 { 0x01, "Process All PDUs" },
2811 { 0x03, "Process Only Decision PDUs" },
2815 static const value_string cmd_init_filter_policy
[] = {
2816 { 0x00, "Use provided Peer Address. Ignore decision PDUs" },
2817 { 0x01, "Use Filter Accept List. Ignore decision PDUs" },
2818 { 0x02, "Process only decision PDUs. Filter Accept List not used, Ignore provided Peer Address" },
2819 { 0x03, "Use Filter Accept List for all PDUs" },
2820 { 0x04, "Process all decision PDUs. Use Filter Accept List for other PDUs." },
2824 static const value_string cmd_sync_filter_policy
[] = {
2825 { 0x00, "Use Peer Address" },
2826 { 0x01, "Use Periodic Advertiser List. Ignore Peer Address" },
2830 static const value_string cmd_privacy_mode
[] = {
2831 { 0x00, "Use Network Privacy Mode" },
2832 { 0x01, "Use Device Privacy Mode" },
2836 static const value_string cmd_le_test_pkt_payload
[] = {
2837 { 0x00, "Pseudo-Random Sequence 9" },
2838 { 0x01, "Pattern Of Alternating Bits '11110000'" },
2839 { 0x02, "Pattern Of Alternating Bits '10101010'" },
2840 { 0x03, "Pseudo-Random Sequence 15" },
2841 { 0x04, "Pattern Of All '1' bits" },
2842 { 0x05, "Pattern Of All '0' bits" },
2843 { 0x06, "Pattern Of Alternating Bits '00001111'" },
2844 { 0x07, "Pattern Of Alternating Bits '0101'" },
2848 static const value_string cmd_le_address_resolution_enable
[] = {
2849 { 0x00, "Address Resolution in controller disabled (default)" },
2850 { 0x01, "Address Resolution in controller enabled" },
2854 static const value_string le_role_vals
[] = {
2855 { 0x00, "Only Peripheral Role Supported" },
2856 { 0x01, "Only Central Role Supported" },
2857 { 0x02, "Peripheral and Central Role supported, Peripheral Role preferred for connection establishment" },
2858 { 0x03, "Peripheral and Central Role supported, Central Role preferred for connection establishment" },
2862 static const value_string tds_role_vals
[] = {
2863 { 0x00, "Not Specified" },
2864 { 0x01, "Seeker Only" },
2865 { 0x02, "Provider Only" },
2866 { 0x03, "Both Seeker and Provider" },
2870 static const value_string tds_transport_state_vals
[] = {
2873 { 0x02, "Temporarily Unavailable" },
2878 static const value_string cmd_le_adv_data_operation
[] = {
2879 { 0x00, "Intermediate fragment of fragmented data" },
2880 { 0x01, "First fragment of fragmented data" },
2881 { 0x02, "Last fragment of fragmented data" },
2882 { 0x03, "Complete scan response data" },
2883 { 0x04, "Unchanged Data, DID update only" },
2887 static const value_string cmd_le_adv_data_frag_pref
[] = {
2888 { 0x00, "Controller may fragment all Host data" },
2889 { 0x01, "Controller should not fragment or should minimize fragmentation of Host data" },
2893 static const value_string cmd_le_phy_options_vals
[] = {
2894 { 0x00, "Host has no preferred/required coding on LE Coded PHY" },
2895 { 0x01, "Host prefers S=2 coding on LE Coded PHY" },
2896 { 0x02, "Host prefers S=8 coding on LE Coded PHY" },
2897 { 0x03, "Host requires S=2 coding on LE Coded PHY" },
2898 { 0x04, "Host requires S=8 coding on LE Coded PHY" },
2902 static const value_string cmd_le_phy_vals
[] = {
2905 { 0x03, "LE Coded" },
2908 value_string_ext bthci_cmd_le_phy_vals_ext
= VALUE_STRING_EXT_INIT(cmd_le_phy_vals
);
2910 static const value_string cmd_le_modulation_index_vals
[] = {
2911 { 0x00, "Assume transmitter will have a standard modulation index" },
2912 { 0x01, "Assume transmitter will have a stable modulation index" },
2916 static const value_string cmd_cte_type_vals
[] = {
2917 { 0x00, "AoA Constant Tone Extension" },
2918 { 0x01, "AoD Constant Tone Extension with 1 usec slots" },
2919 { 0x02, "AoD Constant Tone Extension with 2 usec slots" },
2920 { 0xFF, "No Constant Tone Extension" },
2923 value_string_ext bthci_cmd_cte_type_vals_ext
= VALUE_STRING_EXT_INIT(cmd_cte_type_vals
);
2925 static const value_string cmd_slot_durations_vals
[] = {
2926 { 0x01, "Switching and sampling slots are 1 usec each" },
2927 { 0x02, "Switching and sampling slots are 2 usec each" },
2930 value_string_ext bthci_cmd_slot_durations_vals_ext
= VALUE_STRING_EXT_INIT(cmd_slot_durations_vals
);
2932 static const value_string cmd_sync_mode_vals
[] = {
2933 { 0x00, "No synchronize attempt, no LE Periodic Advertising Sync Transfer Received event sent to Host" },
2934 { 0x01, "LE Periodic Advertising Sync Transfer Received event sent to Host. LE Periodic Advertising Report events disabled" },
2935 { 0x02, "LE Periodic Advertising Sync Transfer Received event sent to Host. LE Periodic Advertising Report events enabled" },
2939 static const value_string cmd_key_type_vals
[] = {
2940 { 0x00, "Use the generated private key" },
2941 { 0x01, "Use the debug private key" },
2945 static const value_string cmd_sca_action_vals
[] = {
2946 { 0x00, "Switch to a more accurate clock" },
2947 { 0x01, "Switch to a less accurate clock" },
2951 static const value_string cmd_clock_accuray_vals
[] = {
2952 { 0x00, "251-500 ppm" },
2953 { 0x01, "151-250 ppm" },
2954 { 0x02, "101-150 ppm" },
2955 { 0x03, "76-100 ppm" },
2956 { 0x04, "51-75 ppm" },
2957 { 0x05, "31-50 ppm" },
2958 { 0x06, "21-30 ppm" },
2959 { 0x07, "0-20 ppm" },
2962 value_string_ext bthci_cmd_clock_accuray_vals_ext
= VALUE_STRING_EXT_INIT(cmd_clock_accuray_vals
);
2964 static const value_string cmd_packing_vals
[] = {
2965 { 0x00, "Sequential" },
2966 { 0x01, "Interleaved" },
2970 static const value_string cmd_framing_vals
[] = {
2971 { 0x00, "Unframed" },
2972 { 0x01, "Framed, Segmentable Mode" },
2973 { 0x02, "Framed, Unsegmented Mode" },
2976 value_string_ext bthci_cmd_framing_vals_ext
= VALUE_STRING_EXT_INIT(cmd_framing_vals
);
2978 static const value_string cmd_data_path_direction_vals
[] = {
2979 { 0x00, "Input (Host to Controller)" },
2980 { 0x01, "Output (Controller to Host)" },
2984 static const value_string cmd_payload_type_vals
[] = {
2985 { 0x00, "Zero Length" },
2986 { 0x01, "Variable Length" },
2987 { 0x02, "Maximum Length" },
2991 static const value_string cmd_host_enabled_feature_bit_vals
[] = {
2992 { 32, "Isochronous Channels, Host Support" },
2993 { 38, "Connection Subrating, Host Support" },
2997 static const value_string cmd_phy_and_coding_vals
[] = {
3000 { 0x03, "LE Coded, S=8" },
3001 { 0x04, "LE Coded, S=2" },
3004 value_string_ext bthci_cmd_phy_and_coding_vals_ext
= VALUE_STRING_EXT_INIT(cmd_phy_and_coding_vals
);
3006 static const value_string disable_enable_vals
[] = {
3007 { 0x00, "Disable" },
3012 static const value_string lpo_allowed_vals
[] = {
3013 { 0x00, "Controller shall not sleep (+20ppm)" },
3014 { 0x01, "Controller may sleep (+250ppm)" },
3018 static const value_string pcm_data_format_vals
[] = {
3020 { 0x01, "1's complement" },
3021 { 0x02, "2's complement" },
3022 { 0x03, "Sign-Magnitude" },
3023 { 0x04, "Unsigned" },
3027 static const range_string audio_data_path_rvals
[] = {
3028 { 0x00, 0x00, "HCI" },
3029 { 0x01, 0xFE, "Vendor Specific" },
3030 { 0xFF, 0xFF, "Audio Test Mode" },
3034 static const value_string mws_channel_type_vals
[] = {
3040 static const value_string external_frame_period_type_vals
[] = {
3041 { 0x00, "Downlink" },
3043 { 0x02, "Bi-Directional" },
3044 { 0x03, "Guard Period" },
3048 static const value_string mws_pattern_type_vals
[] = {
3049 { 0x00, "Neither Transmission nor Reception is Allowed" },
3050 { 0x01, "Transmission is Allowed" },
3051 { 0x02, "Reception is Allowed" },
3052 { 0x03, "Both Transmission and Reception are Allowed" },
3053 { 0x04, "Interval Defined by HCI Command" },
3057 static const value_string cpb_fragment_vals
[] = {
3058 { 0x00, "Continuation" },
3065 static const val64_string cmd_biginfo_le_phy_vals64
[] = {
3068 { 0x02, "LE Coded" },
3072 static const true_false_string tfs_offset_units
= {
3077 static const value_string adv_test_field_special
[] = {
3078 { 0x00, "Resolvable Tag" },
3079 { 0x06, "Adv Mode" },
3081 { 0x08, "Path Loss" },
3082 { 0x09, "Adv Address" },
3086 static const value_string cmd_cs_sync_phy_vals
[] = {
3089 { 0x03, "LE 2M 2BT" },
3093 static const value_string cmd_cs_role_vals
[] = {
3094 { 0x00, "Initiator" },
3095 { 0x01, "Reflector" },
3098 value_string_ext bthci_cmd_cs_role_vals_ext
= VALUE_STRING_EXT_INIT(cmd_cs_role_vals
);
3100 static const value_string cmd_aci_vals
[] = {
3111 value_string_ext bthci_cmd_aci_vals_ext
= VALUE_STRING_EXT_INIT(cmd_aci_vals
);
3113 static const value_string cmd_cs_create_context_vals
[] = {
3114 { 0x00, "Local Controller Only" },
3115 { 0x01, "Local and Remote Controller" },
3119 static const value_string cmd_cs_rtt_type_vals
[] = {
3121 { 0x01, "32-bit Sounding Sequence" },
3122 { 0x02, "96-bit Sounding Sequence" },
3123 { 0x03, "32-bit Random Sequence" },
3124 { 0x04, "64-bit Random Sequence" },
3125 { 0x05, "96-bit Random Sequence" },
3126 { 0x06, "128-bit Random Sequence" },
3129 value_string_ext bthci_cmd_cs_rtt_type_vals_ext
= VALUE_STRING_EXT_INIT(cmd_cs_rtt_type_vals
);
3131 static const value_string cmd_cs_ch_selection_type_vals
[] = {
3136 value_string_ext bthci_cmd_cs_ch_selection_type_vals_ext
= VALUE_STRING_EXT_INIT(cmd_cs_ch_selection_type_vals
);
3138 static const value_string cmd_cs_shape_vals
[] = {
3140 { 0x01, "Cross (X)" },
3143 value_string_ext bthci_cmd_cs_shape_vals_ext
= VALUE_STRING_EXT_INIT(cmd_cs_shape_vals
);
3145 static const value_string cmd_snr_control_vals
[] = {
3151 { 0xff, "Not applied" },
3155 static const value_string cs_sync_antenna_special
[] = {
3156 {0xfe, "Repetitive order, 1 to 4"},
3157 {0xff, "Host has no recommendation"},
3161 static void tx_power_setting(char *buf
, int8_t value
) {
3163 snprintf(buf
, ITEM_LABEL_LENGTH
, "%i dBm", value
);
3164 else if (value
== 126)
3165 snprintf(buf
, ITEM_LABEL_LENGTH
, "Set to minimum");
3167 snprintf(buf
, ITEM_LABEL_LENGTH
, "Set to maximum");
3171 void proto_register_bthci_cmd(void);
3172 void proto_reg_handoff_bthci_cmd(void);
3173 void proto_register_btcommon(void);
3174 void proto_reg_handoff_btcommon(void);
3176 static void bthci_cmd_vendor_prompt(packet_info
*pinfo _U_
, char* result
)
3178 snprintf(result
, MAX_DECODE_AS_PROMPT_LEN
, "Vendor as");
3181 static int dissect_coding_format(proto_tree
*tree
, int hf_x
, tvbuff_t
*tvb
, int offset
, int ett_x
)
3183 proto_item
*sub_item
;
3184 proto_tree
*sub_tree
;
3186 sub_item
= proto_tree_add_item(tree
, hf_x
, tvb
, offset
, 5, ENC_NA
);
3187 sub_tree
= proto_item_add_subtree(sub_item
, ett_x
);
3189 proto_tree_add_item(sub_tree
, hf_bthci_cmd_codec_id
, tvb
, offset
, 1, ENC_NA
);
3192 proto_tree_add_item(sub_tree
, hf_bthci_cmd_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3195 proto_tree_add_item(sub_tree
, hf_bthci_cmd_vendor_codec_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3202 dissect_bthci_cmd_cod_mask(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
3204 proto_item
*cod_mask_item
;
3205 proto_item
*cod_mask_tree
;
3207 cod_mask_item
= proto_tree_add_item(tree
, hf_bthci_cmd_cod_class_of_device_mask
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
3208 cod_mask_tree
= proto_item_add_subtree(cod_mask_item
, ett_cod_mask
);
3210 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_minor_device_class_mask
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3211 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_format_type_mask
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3214 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_information_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3215 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_telephony_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3216 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_audio_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3217 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_object_transfer_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3218 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_capturing_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3219 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_rendering_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3220 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_networking_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3221 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_positioning_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3222 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_reserved_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3223 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_le_audio_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3224 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_service_class_limited_discoverable_mode_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3226 proto_tree_add_item(cod_mask_tree
, hf_bthci_cmd_cod_major_device_class_mask
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3233 dissect_bthci_cmd_flow_spec(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo _U_
, proto_tree
*tree
, bool tx
)
3235 proto_item
*ti_flow_spec
;
3236 proto_tree
*ti_flow_spec_subtree
;
3238 ti_flow_spec
= proto_tree_add_none_format(tree
, hf_bthci_cmd_flow_spec
, tvb
, offset
, 16, tx
?"Tx Flow Spec ":"Rx Flow Spec");
3239 ti_flow_spec_subtree
= proto_item_add_subtree(ti_flow_spec
, ett_flow_spec_subtree
);
3241 proto_tree_add_item(ti_flow_spec_subtree
, hf_bthci_cmd_flow_spec_identifier
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3243 proto_tree_add_item(ti_flow_spec_subtree
, hf_bthci_cmd_flow_spec_service_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3245 proto_tree_add_item(ti_flow_spec_subtree
, hf_bthci_cmd_flow_spec_sdu_size
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3247 proto_tree_add_item(ti_flow_spec_subtree
, hf_bthci_cmd_flow_spec_sdu_arrival_time
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3249 proto_tree_add_item(ti_flow_spec_subtree
, hf_bthci_cmd_flow_spec_access_latency
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3251 proto_tree_add_item(ti_flow_spec_subtree
, hf_bthci_cmd_flush_to_us
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3258 dissect_antenna_switching_pattern(tvbuff_t
*tvb
, int offset
, proto_tree
*tree
)
3260 uint8_t length_antenna_pattern
;
3262 proto_tree_add_item(tree
, hf_bthci_cmd_antenna_switching_pattern_length
, tvb
, offset
, 1, ENC_NA
);
3263 length_antenna_pattern
= tvb_get_uint8(tvb
, offset
);
3266 if (length_antenna_pattern
> 0) {
3267 proto_item
*sub_item
;
3268 proto_tree
*sub_tree
;
3270 sub_item
= proto_tree_add_item(tree
, hf_bthci_cmd_antenna_switching_pattern
, tvb
, offset
, length_antenna_pattern
, ENC_NA
);
3271 sub_tree
= proto_item_add_subtree(sub_item
, ett_pattern
);
3272 proto_item_append_text(sub_item
, ": ");
3274 while (length_antenna_pattern
> 0) {
3275 proto_tree_add_item(sub_tree
, hf_bthci_cmd_antenna_id
, tvb
, offset
, 1, ENC_NA
);
3276 proto_item_append_text(sub_item
, "%d ", tvb_get_uint8(tvb
, offset
));
3278 length_antenna_pattern
--;
3285 dissect_link_control_cmd(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
3286 proto_tree
*tree
, uint16_t cmd_ocf
, bluetooth_data_t
*bluetooth_data
)
3289 uint32_t clock_value
;
3292 case 0x0001: /* Inquiry */
3293 proto_tree_add_item(tree
, hf_bthci_cmd_lap
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
3295 item
= proto_tree_add_item(tree
, hf_bthci_cmd_inq_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3296 proto_item_append_text(item
, " (%g sec)", 1.28*tvb_get_uint8(tvb
, offset
));
3298 proto_tree_add_item(tree
, hf_bthci_cmd_num_responses
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3302 case 0x0003: /* Periodic Inquiry Mode */
3303 item
= proto_tree_add_item(tree
, hf_bthci_cmd_max_period_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3304 proto_item_append_text(item
, " (%g sec)", 1.28*tvb_get_letohs(tvb
, offset
));
3306 item
= proto_tree_add_item(tree
, hf_bthci_cmd_min_period_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3307 proto_item_append_text(item
, " (%g sec)", 1.28*tvb_get_letohs(tvb
, offset
));
3309 proto_tree_add_item(tree
, hf_bthci_cmd_lap
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
3311 item
= proto_tree_add_item(tree
, hf_bthci_cmd_inq_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3312 proto_item_append_text(item
, " (%g sec)", 1.28*tvb_get_uint8(tvb
, offset
));
3314 proto_tree_add_item(tree
, hf_bthci_cmd_num_responses
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3318 case 0x0005: /* Create Connection */
3322 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, bd_addr
);
3324 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_packet_type
, ett_packet_type
, hfx_bthci_cmd_packet_type
, ENC_LITTLE_ENDIAN
);
3327 proto_tree_add_item(tree
, hf_bthci_cmd_page_scan_repetition_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3330 proto_tree_add_item(tree
, hf_bthci_cmd_page_scan_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3333 item
= proto_tree_add_item(tree
, hf_bthci_cmd_clock_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3334 clock_value
= tvb_get_letohs(tvb
, 13) & 32767; /* only bit0-14 are valid */
3335 proto_item_append_text(item
, " (%g msec)", 1.25*clock_value
);
3336 proto_tree_add_item(tree
, hf_bthci_cmd_clock_offset_valid
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3339 proto_tree_add_item(tree
, hf_bthci_cmd_allow_role_switch
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3342 if (!pinfo
->fd
->visited
) {
3343 uint32_t interface_id
;
3344 uint32_t adapter_id
;
3345 uint32_t bd_addr_oui
;
3346 uint32_t bd_addr_id
;
3347 uint32_t frame_number
;
3348 wmem_tree_key_t key
[6];
3349 device_role_t
*device_role
;
3351 interface_id
= bluetooth_data
->interface_id
;
3352 adapter_id
= bluetooth_data
->adapter_id
;
3353 frame_number
= pinfo
->num
;
3354 bd_addr_oui
= bd_addr
[0] << 16 | bd_addr
[1] << 8 | bd_addr
[2];
3355 bd_addr_id
= bd_addr
[3] << 16 | bd_addr
[4] << 8 | bd_addr
[5];
3358 key
[0].key
= &interface_id
;
3360 key
[1].key
= &adapter_id
;
3362 key
[2].key
= &bd_addr_id
;
3364 key
[3].key
= &bd_addr_oui
;
3366 key
[4].key
= &frame_number
;
3370 device_role
= (device_role_t
*) wmem_new(wmem_file_scope(), device_role_t
);
3371 device_role
->change_in_frame
= frame_number
;
3372 device_role
->role
= ROLE_PERIPHERAL
;
3374 wmem_tree_insert32_array(bluetooth_data
->bdaddr_to_role
, key
, device_role
);
3379 case 0x0006: /* Disconnect */
3380 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3382 proto_tree_add_item(tree
, hf_bthci_cmd_reason
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3386 case 0x0007: /* Add SCO Connection */
3387 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3389 proto_tree_add_item(tree
, hf_bthci_cmd_packet_type_hv1
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3390 proto_tree_add_item(tree
, hf_bthci_cmd_packet_type_hv2
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3391 proto_tree_add_item(tree
, hf_bthci_cmd_packet_type_hv3
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3395 case 0x0008: /* Create Connection Cancel Request */
3396 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3399 case 0x0009: /* Accept Connection Request */ {
3402 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, bd_addr
);
3404 proto_tree_add_item(tree
, hf_bthci_cmd_acr_role
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3407 if (!pinfo
->fd
->visited
) {
3408 uint32_t interface_id
;
3409 uint32_t adapter_id
;
3410 uint32_t bd_addr_oui
;
3411 uint32_t bd_addr_id
;
3412 uint32_t frame_number
;
3413 wmem_tree_key_t key
[6];
3414 device_role_t
*device_role
;
3416 interface_id
= bluetooth_data
->interface_id
;
3417 adapter_id
= bluetooth_data
->adapter_id
;
3418 frame_number
= pinfo
->num
;
3419 bd_addr_oui
= bd_addr
[0] << 16 | bd_addr
[1] << 8 | bd_addr
[2];
3420 bd_addr_id
= bd_addr
[3] << 16 | bd_addr
[4] << 8 | bd_addr
[5];
3423 key
[0].key
= &interface_id
;
3425 key
[1].key
= &adapter_id
;
3427 key
[2].key
= &bd_addr_id
;
3429 key
[3].key
= &bd_addr_oui
;
3431 key
[4].key
= &frame_number
;
3435 device_role
= (device_role_t
*) wmem_new(wmem_file_scope(), device_role_t
);
3436 device_role
->change_in_frame
= frame_number
;
3437 device_role
->role
= ROLE_CENTRAL
;
3439 wmem_tree_insert32_array(bluetooth_data
->bdaddr_to_role
, key
, device_role
);
3444 case 0x000a: /* Reject Connection Request */
3445 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3447 proto_tree_add_item(tree
, hf_bthci_cmd_reason
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3451 case 0x000b: /* Link Key Request Reply */
3452 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3454 proto_tree_add_item(tree
, hf_bthci_cmd_link_key
, tvb
, offset
, 16, ENC_NA
);
3458 case 0x000c: /* Link Key Request Negative Reply */
3459 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3462 case 0x000d: /* PIN Code Request Reply */
3463 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3465 proto_tree_add_item(tree
, hf_bthci_cmd_pin_code_length
,tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3467 proto_tree_add_item(tree
, hf_bthci_cmd_pin_code
,tvb
, offset
, 16, ENC_ASCII
);
3471 case 0x000e: /* PIN Code Request Negative Reply */
3472 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3475 case 0x000f: /* Change Connection Packet Type */
3476 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3479 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_packet_type
, ett_packet_type
, hfx_bthci_cmd_packet_type
, ENC_LITTLE_ENDIAN
);
3484 case 0x0011: /* Authentication Request */
3485 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3489 case 0x0013: /* Set Connection Encryption */
3490 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3492 proto_tree_add_item(tree
, hf_bthci_cmd_encryption_enable
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3496 case 0x0017: /* Link Key Selection */
3497 proto_tree_add_item(tree
, hf_bthci_cmd_key_flag
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3501 case 0x0019: /* Remote Name Request */
3502 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3504 proto_tree_add_item(tree
, hf_bthci_cmd_page_scan_repetition_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3507 proto_tree_add_item(tree
, hf_bthci_cmd_page_scan_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3510 item
= proto_tree_add_item(tree
, hf_bthci_cmd_clock_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3511 clock_value
= tvb_get_letohs(tvb
, offset
) & 32767; /* only bit0-14 are valid */
3512 proto_item_append_text(item
, " (%g msec)", 1.25*clock_value
);
3513 proto_tree_add_item(tree
, hf_bthci_cmd_clock_offset_valid
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3517 case 0x001a: /* Remote Name Request Cancel */
3518 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3521 case 0x001c: /* Read Remote Extended Features */
3522 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3524 proto_tree_add_item(tree
, hf_bthci_cmd_page_number
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3528 case 0x0028: /* Setup Synchronous Connection */
3529 case 0x0029: /* Accept Synchronous Connection Request */
3530 if (cmd_ocf
== 0x0028) {
3531 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3534 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3537 proto_tree_add_item(tree
, hf_bthci_cmd_transmit_bandwidth
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3540 proto_tree_add_item(tree
, hf_bthci_cmd_receive_bandwidth
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3543 proto_tree_add_item(tree
, hf_bthci_cmd_max_latency_ms
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3546 proto_tree_add_item(tree
, hf_bthci_cmd_input_unused
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3547 proto_tree_add_item(tree
, hf_bthci_cmd_input_coding
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3548 proto_tree_add_item(tree
, hf_bthci_cmd_input_data_format
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3549 proto_tree_add_item(tree
, hf_bthci_cmd_input_sample_size
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3550 proto_tree_add_item(tree
, hf_bthci_cmd_linear_pcm_bit_pos
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3551 proto_tree_add_item(tree
, hf_bthci_cmd_air_coding_format
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3554 proto_tree_add_item(tree
, hf_bthci_cmd_retransmission_effort
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3557 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_sco_packet_type
, ett_sco_packet_type
, hfx_bthci_cmd_sco_packet_type
, ENC_LITTLE_ENDIAN
);
3561 case 0x002a: /* Reject Synchronous Connection Request */
3562 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3564 proto_tree_add_item(tree
, hf_bthci_cmd_reason
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3568 case 0x0015: /* Change Connection Link Key */
3569 case 0x001b: /* Read Remote Supported Features */
3570 case 0x001d: /* Read Remote Version Information */
3571 case 0x001f: /* Read Clock Offset*/
3572 case 0x0020: /* Read LMP Handle */
3573 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3577 case 0x002b: /* IO Capability Response */
3578 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3580 proto_tree_add_item(tree
, hf_bthci_cmd_io_capability
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3582 proto_tree_add_item(tree
, hf_bthci_cmd_oob_data_present
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3584 proto_tree_add_item(tree
, hf_bthci_cmd_auth_requirements
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3588 case 0x0034: /* IO Capability Request Negative Reply */
3589 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3590 proto_tree_add_item(tree
, hf_bthci_cmd_reason
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3594 case 0x002c: /* User Confirmation Request Reply */
3595 case 0x002d: /* User Confirmation Request Negative Reply */
3596 case 0x002f: /* User Passkey Request Negative Reply */
3597 case 0x0033: /* Remote OOB Data Request Negative Reply */
3598 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3601 case 0x002e: /* User Passkey Request Reply */
3602 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3604 proto_tree_add_item(tree
, hf_bthci_cmd_passkey
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3608 case 0x0030: /* Remote OOB Data Request Reply */
3609 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3611 proto_tree_add_item(tree
, hf_bthci_cmd_hash_c
, tvb
, offset
, 16, ENC_NA
);
3613 proto_tree_add_item(tree
, hf_bthci_cmd_randomizer_r
, tvb
, offset
, 16, ENC_NA
);
3617 case 0x0035: /* Create Physical Link */
3618 case 0x0036: /* Accept Physical Link */
3619 proto_tree_add_item(tree
, hf_bthci_cmd_physical_link_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3621 proto_tree_add_item(tree
, hf_bthci_cmd_dedicated_amp_key_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3623 proto_tree_add_item(tree
, hf_bthci_cmd_dedicated_amp_key_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3625 proto_tree_add_item(tree
, hf_bthci_cmd_dedicated_amp_key
, tvb
, offset
, -1, ENC_NA
);
3626 offset
+=tvb_reported_length_remaining(tvb
, offset
);
3629 case 0x0037: /* Disconnect Physical Link */
3630 proto_tree_add_item(tree
, hf_bthci_cmd_physical_link_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3632 proto_tree_add_item(tree
, hf_bthci_cmd_reason
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3636 case 0x0038: /* Create Logical Link */
3637 case 0x0039: /* Accept Logical Link */
3638 proto_tree_add_item(tree
, hf_bthci_cmd_physical_link_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3640 offset
= dissect_bthci_cmd_flow_spec(tvb
, offset
, pinfo
, tree
, true);
3641 offset
= dissect_bthci_cmd_flow_spec(tvb
, offset
, pinfo
, tree
, false);
3644 case 0x003a: /* Disconnect Logical Link */
3645 proto_tree_add_item(tree
, hf_bthci_cmd_logical_link_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3649 case 0x003b: /* Logical Link Cancel */
3650 proto_tree_add_item(tree
, hf_bthci_cmd_physical_link_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3652 proto_tree_add_item(tree
, hf_bthci_cmd_flow_spec_identifier
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3656 case 0x003c: /* Flow Spec Modify */
3657 proto_tree_add_item(tree
, hf_bthci_cmd_logical_link_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3659 offset
= dissect_bthci_cmd_flow_spec(tvb
, offset
, pinfo
, tree
, true);
3660 offset
= dissect_bthci_cmd_flow_spec(tvb
, offset
, pinfo
, tree
, false);
3663 case 0x003D: /* Enhanced Setup Synchronous Connection */
3664 case 0x003E: /* Enhanced Accept Synchronous Connection Request */
3665 if (cmd_ocf
== 0x003D) {
3666 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3669 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3672 proto_tree_add_item(tree
, hf_bthci_cmd_transmit_bandwidth
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3675 proto_tree_add_item(tree
, hf_bthci_cmd_receive_bandwidth
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3678 offset
= dissect_coding_format(tree
, hf_bthci_cmd_transmit_coding_format
, tvb
, offset
, ett_coding_format
);
3680 offset
= dissect_coding_format(tree
, hf_bthci_cmd_receive_coding_format
, tvb
, offset
, ett_coding_format
);
3682 proto_tree_add_item(tree
, hf_bthci_cmd_transmit_codec_frame_size
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3685 proto_tree_add_item(tree
, hf_bthci_cmd_receive_codec_frame_size
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3688 proto_tree_add_item(tree
, hf_bthci_cmd_input_bandwidth
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3691 proto_tree_add_item(tree
, hf_bthci_cmd_output_bandwidth
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3694 offset
= dissect_coding_format(tree
, hf_bthci_cmd_input_coding_format
, tvb
, offset
, ett_coding_format
);
3696 offset
= dissect_coding_format(tree
, hf_bthci_cmd_output_coding_format
, tvb
, offset
, ett_coding_format
);
3698 proto_tree_add_item(tree
, hf_bthci_cmd_input_coded_data_size
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3701 proto_tree_add_item(tree
, hf_bthci_cmd_output_coded_data_size
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3704 proto_tree_add_item(tree
, hf_bthci_cmd_input_pcm_data_format
, tvb
, offset
, 1, ENC_NA
);
3707 proto_tree_add_item(tree
, hf_bthci_cmd_output_pcm_data_format
, tvb
, offset
, 1, ENC_NA
);
3710 proto_tree_add_item(tree
, hf_bthci_cmd_input_pcm_sample_payload_msb_position
, tvb
, offset
, 1, ENC_NA
);
3713 proto_tree_add_item(tree
, hf_bthci_cmd_output_pcm_sample_payload_msb_position
, tvb
, offset
, 1, ENC_NA
);
3716 proto_tree_add_item(tree
, hf_bthci_cmd_input_data_path
, tvb
, offset
, 1, ENC_NA
);
3719 proto_tree_add_item(tree
, hf_bthci_cmd_output_data_path
, tvb
, offset
, 1, ENC_NA
);
3722 proto_tree_add_item(tree
, hf_bthci_cmd_input_transport_unit_size
, tvb
, offset
, 1, ENC_NA
);
3725 proto_tree_add_item(tree
, hf_bthci_cmd_output_transport_unit_size
, tvb
, offset
, 1, ENC_NA
);
3728 /* TODO: Improve this range field output: 0x0000-0x0003 reserved, 0x0004-0xFFFE value in ms, 0xFFFF - "Do not care"*/
3729 proto_tree_add_item(tree
, hf_bthci_cmd_max_latency_ms
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3732 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_sco_packet_type
, ett_sco_packet_type
, hfx_bthci_cmd_sco_packet_type
, ENC_LITTLE_ENDIAN
);
3735 proto_tree_add_item(tree
, hf_bthci_cmd_retransmission_effort
, tvb
, offset
, 1, ENC_NA
);
3739 case 0x003F: /* Truncated Page */
3740 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3742 proto_tree_add_item(tree
, hf_bthci_cmd_page_scan_repetition_mode
, tvb
, offset
, 1, ENC_NA
);
3745 item
= proto_tree_add_item(tree
, hf_bthci_cmd_clock_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3746 clock_value
= tvb_get_letohs(tvb
, 13) & 32767; /* only bit0-14 are valid */
3747 proto_item_append_text(item
, " (%g msec)", 1.25 * clock_value
);
3749 proto_tree_add_item(tree
, hf_bthci_cmd_clock_offset_valid
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3753 case 0x0040: /* Truncated Page Cancel */
3754 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3758 case 0x0002: /* Inquiry Cancel */
3759 case 0x0004: /* Exit Periodic Inquiry Mode */
3760 case 0x0043: /* Start Synchronization Train */
3761 /* NOTE: No parameters */
3764 case 0x0041: /* Set Connectionless Peripheral Broadcast */
3765 proto_tree_add_item(tree
, hf_bthci_cmd_connectionless_peripheral_broadcast
, tvb
, offset
, 1, ENC_NA
);
3768 proto_tree_add_item(tree
, hf_bthci_cmd_lt_addr
, tvb
, offset
, 1, ENC_NA
);
3771 proto_tree_add_item(tree
, hf_bthci_cmd_lpo_allowed
, tvb
, offset
, 1, ENC_NA
);
3774 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_packet_type
, ett_packet_type
, hfx_bthci_cmd_packet_type
, ENC_LITTLE_ENDIAN
);
3777 proto_tree_add_item(tree
, hf_bthci_cmd_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3780 proto_tree_add_item(tree
, hf_bthci_cmd_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3783 proto_tree_add_item(tree
, hf_bthci_cmd_cpb_supervision_to
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3787 case 0x0042: /* Set Connectionless Peripheral Broadcast Receive */
3788 proto_tree_add_item(tree
, hf_bthci_cmd_connectionless_peripheral_broadcast_receive
, tvb
, offset
, 1, ENC_NA
);
3791 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3793 proto_tree_add_item(tree
, hf_bthci_cmd_lt_addr
, tvb
, offset
, 1, ENC_NA
);
3796 proto_tree_add_item(tree
, hf_bthci_cmd_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3799 proto_tree_add_item(tree
, hf_bthci_cmd_clock_offset_32
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3802 proto_tree_add_item(tree
, hf_bthci_cmd_next_cpb_clock
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3805 proto_tree_add_item(tree
, hf_bthci_cmd_cpb_supervision_to
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3808 proto_tree_add_item(tree
, hf_bthci_cmd_remote_timing_accuracy
, tvb
, offset
, 1, ENC_NA
);
3811 proto_tree_add_item(tree
, hf_bthci_cmd_cpb_skip
, tvb
, offset
, 1, ENC_NA
);
3814 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_packet_type
, ett_packet_type
, hfx_bthci_cmd_packet_type
, ENC_LITTLE_ENDIAN
);
3817 proto_tree_add_item(tree
, hf_bthci_cmd_channel_map
, tvb
, offset
, 10, ENC_NA
);
3821 case 0x0044: /* Receive Synchronization Train */
3822 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3824 proto_tree_add_item(tree
, hf_bthci_cmd_synchronization_scan_to
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3827 proto_tree_add_item(tree
, hf_bthci_cmd_window
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3830 proto_tree_add_item(tree
, hf_bthci_cmd_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3834 case 0x0045: /* Remote OOB Extended Data Request Reply */
3835 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3837 proto_tree_add_item(tree
, hf_bthci_cmd_c192
, tvb
, offset
, 16, ENC_NA
);
3840 proto_tree_add_item(tree
, hf_bthci_cmd_r192
, tvb
, offset
, 16, ENC_NA
);
3843 proto_tree_add_item(tree
, hf_bthci_cmd_c256
, tvb
, offset
, 16, ENC_NA
);
3846 proto_tree_add_item(tree
, hf_bthci_cmd_r256
, tvb
, offset
, 16, ENC_NA
);
3851 proto_tree_add_expert(tree
, pinfo
, &ei_command_unknown_command
, tvb
, offset
, -1);
3852 offset
+= tvb_reported_length_remaining(tvb
, offset
);
3859 dissect_link_policy_cmd(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
, proto_tree
*tree
, uint16_t cmd_ocf
, bluetooth_data_t
*bluetooth_data
)
3862 case 0x0001: /* Hold Mode */
3863 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3865 proto_tree_add_item(tree
, hf_bthci_cmd_max_interval_hold
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3867 proto_tree_add_item(tree
, hf_bthci_cmd_min_interval_hold
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3871 case 0x0003: /* sniff mode */
3872 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3874 proto_tree_add_item(tree
, hf_bthci_cmd_max_interval_sniff
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3876 proto_tree_add_item(tree
, hf_bthci_cmd_min_interval_sniff
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3878 proto_tree_add_item(tree
, hf_bthci_cmd_sniff_attempt
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3880 proto_tree_add_item(tree
, hf_bthci_cmd_sniff_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3884 case 0x0005: /* Park Mode */
3885 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3887 proto_tree_add_item(tree
, hf_bthci_cmd_max_interval_beacon
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3889 proto_tree_add_item(tree
, hf_bthci_cmd_min_interval_beacon
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3893 case 0x0007: /* QoS Setup */
3894 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3896 proto_tree_add_item(tree
, hf_bthci_cmd_flags
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3898 proto_tree_add_item(tree
, hf_bthci_cmd_service_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3900 proto_tree_add_item(tree
, hf_bthci_cmd_token_rate
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3902 proto_tree_add_item(tree
, hf_bthci_cmd_peak_bandwidth
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3904 proto_tree_add_item(tree
, hf_bthci_cmd_latency
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3906 proto_tree_add_item(tree
, hf_bthci_cmd_delay_variation
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3910 case 0x000b: /* Switch Role */
3911 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
3913 proto_tree_add_item(tree
, hf_bthci_cmd_role
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3917 case 0x0004: /* Exit Sniff Mode */
3918 case 0x0006: /* Exit Park Mode */
3919 case 0x0009: /* Role Discovery */
3920 case 0x000c: /* Read Link Policy Settings */
3921 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3925 case 0x000d: /* Write Link Policy Settings */
3926 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3929 case 0x000f: /* Write Default Link Policy Settings */
3930 proto_tree_add_item(tree
, hf_bthci_cmd_link_policy_setting_switch
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3931 proto_tree_add_item(tree
, hf_bthci_cmd_link_policy_setting_hold
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3932 proto_tree_add_item(tree
, hf_bthci_cmd_link_policy_setting_sniff
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3933 proto_tree_add_item(tree
, hf_bthci_cmd_link_policy_setting_park
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3937 case 0x0010: /* Flow Specification */
3938 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3940 proto_tree_add_item(tree
, hf_bthci_cmd_flags
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3942 proto_tree_add_item(tree
, hf_bthci_cmd_flow_direction
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3944 proto_tree_add_item(tree
, hf_bthci_cmd_service_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3946 proto_tree_add_item(tree
, hf_bthci_cmd_token_rate
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3948 proto_tree_add_item(tree
, hf_bthci_cmd_token_bucket_size
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3950 proto_tree_add_item(tree
, hf_bthci_cmd_peak_bandwidth
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3952 proto_tree_add_item(tree
, hf_bthci_cmd_latency
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
3956 case 0x0011: /* Sniff Subrating */
3957 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3959 proto_tree_add_item(tree
, hf_bthci_cmd_max_latency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3961 proto_tree_add_item(tree
, hf_bthci_cmd_min_remote_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3963 proto_tree_add_item(tree
, hf_bthci_cmd_min_local_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
3967 case 0x00e: /* Read Default Link Policy Setting */
3968 /* NOTE: No parameters */
3972 proto_tree_add_expert(tree
, pinfo
, &ei_command_unknown_command
, tvb
, offset
, -1);
3973 offset
+= tvb_reported_length_remaining(tvb
, offset
);
3980 dissect_host_controller_baseband_cmd(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
3981 proto_tree
*tree
, uint16_t cmd_ocf
, bluetooth_data_t
*bluetooth_data
,
3982 bthci_cmd_data_t
*bthci_cmd_data
)
3985 uint8_t filter_type
, filter_condition_type
, num8
;
3989 case 0x0001: /* Set Event Mask */
3990 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_00
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3991 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_01
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3992 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_02
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3993 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_03
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3994 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_04
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3995 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_05
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3996 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_06
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
3997 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_07
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4000 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_10
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4001 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_11
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4002 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_12
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4003 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_13
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4004 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_14
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4005 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_17
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4008 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_20
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4009 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_21
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4010 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_23
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4011 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_24
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4012 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_25
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4013 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_26
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4014 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_27
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4017 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_30
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4018 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_31
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4019 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_32
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4020 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_33
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4021 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_34
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4022 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_35
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4023 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_36
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4024 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_37
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4027 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_40
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4028 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_41
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4029 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_42
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4032 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_53
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4033 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_54
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4034 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_55
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4035 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_56
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4036 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_57
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4039 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_60
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4040 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_61
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4041 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_62
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4042 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_63
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4043 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_64
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4044 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_65
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4045 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_67
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4048 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_70
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4049 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_72
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4050 proto_tree_add_item(tree
, hf_bthci_cmd_evt_mask_73
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4054 case 0x0005: /* Set Event Filter */
4055 proto_tree_add_item(tree
, hf_bthci_cmd_filter_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4056 filter_type
= tvb_get_uint8(tvb
, 3);
4058 switch (filter_type
) {
4060 case 0x01: /* Inquiry Result Filter */
4061 proto_tree_add_item(tree
, hf_bthci_cmd_inquiry_result_filter_condition_type
,
4062 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4063 filter_condition_type
= tvb_get_uint8(tvb
, offset
);
4065 switch (filter_condition_type
) {
4067 call_dissector(btcommon_cod_handle
, tvb_new_subset_length(tvb
, offset
, 3), pinfo
, tree
);
4070 offset
=dissect_bthci_cmd_cod_mask(tvb
, offset
, pinfo
, tree
);
4074 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
4083 case 0x02: /* Connection Setup Filter */
4084 proto_tree_add_item(tree
, hf_bthci_cmd_connection_setup_filter_condition_type
,
4085 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4086 filter_condition_type
= tvb_get_uint8(tvb
, offset
);
4088 switch (filter_condition_type
) {
4090 proto_tree_add_item(tree
, hf_bthci_cmd_auto_acc_flag
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4095 call_dissector(btcommon_cod_handle
, tvb_new_subset_length(tvb
, offset
, 3), pinfo
, tree
);
4098 offset
=dissect_bthci_cmd_cod_mask(tvb
, offset
, pinfo
, tree
);
4100 proto_tree_add_item(tree
, hf_bthci_cmd_auto_acc_flag
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4105 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
4107 proto_tree_add_item(tree
, hf_bthci_cmd_auto_acc_flag
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4123 case 0x000a: /* Write PIN Type */
4124 proto_tree_add_item(tree
, hf_bthci_cmd_pin_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4128 case 0x000d: /* Read Stored Link Key */
4129 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
4131 proto_tree_add_item(tree
, hf_bthci_cmd_read_all_flag
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4135 case 0x0011: /* Write Stored Link Key */
4136 proto_tree_add_item(tree
, hf_bthci_cmd_num_link_keys
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4137 num8
= tvb_get_uint8(tvb
, offset
);
4140 for (i
= 0; i
< num8
; i
++) {
4141 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
4142 proto_tree_add_item(tree
, hf_bthci_cmd_link_key
, tvb
, offset
, 16, ENC_NA
);
4147 case 0x0012: /* Delete Stored Link Key */
4148 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
4150 proto_tree_add_item(tree
, hf_bthci_cmd_delete_all_flag
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4154 case 0x0013: /* Change Local Name */
4155 proto_tree_add_item(tree
, hf_bthci_cmd_device_name
, tvb
, offset
, 248, ENC_UTF_8
| ENC_NA
);
4156 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4157 bthci_cmd_data
->data
.name
= tvb_get_string_enc(wmem_file_scope(), tvb
, offset
, 248, ENC_UTF_8
);
4162 case 0x0016: /* Write Connection Accept Timeout */
4163 proto_tree_add_item(tree
, hf_bthci_cmd_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4167 case 0x0018: /* Write Page Timeout */
4168 proto_tree_add_item(tree
, hf_bthci_cmd_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4169 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4170 bthci_cmd_data
->data
.page_timeout
= tvb_get_letohs(tvb
, offset
);
4175 case 0x001a: /* Write Scan Enable */
4176 proto_tree_add_item(tree
, hf_bthci_cmd_scan_enable
,
4177 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4178 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4179 bthci_cmd_data
->data
.scan
= tvb_get_uint8(tvb
, offset
);
4184 case 0x0020: /* Write Authentication Enable */
4185 proto_tree_add_item(tree
, hf_bthci_cmd_authentication_enable
,
4186 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4187 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4188 bthci_cmd_data
->data
.authentication
= tvb_get_uint8(tvb
, offset
);
4193 case 0x0022: /* Write Encryption Mode */
4194 proto_tree_add_item(tree
, hf_bthci_cmd_encrypt_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4195 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4196 bthci_cmd_data
->data
.encryption
= tvb_get_uint8(tvb
, offset
);
4201 case 0x0024: /* Write Class of Device */
4202 call_dissector(btcommon_cod_handle
, tvb_new_subset_length(tvb
, offset
, 3), pinfo
, tree
);
4203 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4204 bthci_cmd_data
->data
.class_of_device
= tvb_get_uint24(tvb
, offset
, ENC_LITTLE_ENDIAN
);
4209 case 0x0026: /* Write Voice Setting */
4210 proto_tree_add_item(tree
, hf_bthci_cmd_input_unused
,
4211 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4212 proto_tree_add_item(tree
, hf_bthci_cmd_input_coding
,
4213 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4214 proto_tree_add_item(tree
, hf_bthci_cmd_input_data_format
,
4215 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4216 proto_tree_add_item(tree
, hf_bthci_cmd_input_sample_size
,
4217 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4218 proto_tree_add_item(tree
, hf_bthci_cmd_linear_pcm_bit_pos
,
4219 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4220 proto_tree_add_item(tree
, hf_bthci_cmd_air_coding_format
,
4221 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4222 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4223 bthci_cmd_data
->data
.voice_setting
= tvb_get_uint16(tvb
, offset
, ENC_LITTLE_ENDIAN
);
4228 case 0x0028: /* Write Automatic Flush Timeout */
4229 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4231 proto_tree_add_item(tree
, hf_bthci_cmd_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4235 case 0x002a: /* Write Num of Broadcast Retransmissions */
4236 proto_tree_add_item(tree
, hf_bthci_cmd_num_broadcast_retransmissions
,
4237 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4241 case 0x002c: /* Write Hold Mode Activity */
4242 proto_tree_add_item(tree
, hf_bthci_cmd_hold_mode_act_page
,
4243 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4244 proto_tree_add_item(tree
, hf_bthci_cmd_hold_mode_act_inquiry
,
4245 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4246 proto_tree_add_item(tree
, hf_bthci_cmd_hold_mode_act_periodic
,
4247 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4251 case 0x002d: /* Read Transmit Power Level */
4252 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
,
4253 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4255 proto_tree_add_item(tree
, hf_bthci_cmd_tx_power_level_type
,
4256 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4260 case 0x002f: /* Write SCO Flow Control Enable */
4261 proto_tree_add_item(tree
, hf_bthci_cmd_sco_flow_control
,
4262 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4266 case 0x0031: /* Set Host Controller To Host Flow Control */
4267 proto_tree_add_item(tree
, hf_bthci_cmd_flow_contr_enable
,
4268 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4272 case 0x0033: /* Host Buffer Size */
4273 proto_tree_add_item(tree
, hf_bthci_cmd_host_data_packet_length_acl
,
4274 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4276 proto_tree_add_item(tree
, hf_bthci_cmd_host_data_packet_length_sco
,
4277 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4279 proto_tree_add_item(tree
, hf_bthci_cmd_host_total_num_acl_data_packets
,
4280 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4282 proto_tree_add_item(tree
, hf_bthci_cmd_host_total_num_sco_data_packets
,
4283 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4286 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4287 bthci_cmd_data
->data
.mtus
.acl_mtu
= tvb_get_uint16(tvb
, offset
- 7, ENC_LITTLE_ENDIAN
);
4288 bthci_cmd_data
->data
.mtus
.sco_mtu
= tvb_get_uint8(tvb
, offset
- 5);
4289 bthci_cmd_data
->data
.mtus
.acl_packets
= tvb_get_uint16(tvb
, offset
- 4, ENC_LITTLE_ENDIAN
);
4290 bthci_cmd_data
->data
.mtus
.sco_packets
= tvb_get_uint16(tvb
, offset
- 2, ENC_LITTLE_ENDIAN
);
4294 case 0x0035: /* Host Number Of Completed Packets */
4295 proto_tree_add_item(tree
, hf_bthci_cmd_num_handles
,
4296 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4297 num8
= tvb_get_uint8(tvb
, offset
);
4300 for (i
=0; i
<num8
; i
++) {
4301 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
,
4302 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4305 proto_tree_add_item(tree
, hf_bthci_cmd_num_compl_packets
,
4306 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4311 case 0x0037: /* Write Link Supervision Timeout */
4312 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
,
4313 tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4315 proto_tree_add_item(tree
, hf_bthci_cmd_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4319 case 0x003a: /* Write Current IAC LAP */
4320 proto_tree_add_item(tree
, hf_bthci_cmd_num_curr_iac
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4321 num8
= tvb_get_uint8(tvb
, offset
);
4323 for (i
=0; i
<num8
; i
++) {
4324 proto_tree_add_item(tree
, hf_bthci_cmd_iac_lap
, tvb
, offset
+(i
*3), 3, ENC_LITTLE_ENDIAN
);
4329 case 0x003c: /* Write Page Scan Period Mode */
4330 proto_tree_add_item(tree
, hf_bthci_cmd_page_scan_period_mode
,
4331 tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4335 case 0x003e: /* Write Page Scan Mode */
4336 proto_tree_add_item(tree
, hf_bthci_cmd_page_scan_mode
,
4337 tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
4340 case 0x003f: /* Set AFH Host Channel Classification */
4341 proto_tree_add_item(tree
, hf_bthci_cmd_ch_classification
, tvb
, offset
, 10, ENC_NA
);
4345 case 0x0008: /* Flush */
4346 case 0x0027: /* Read Automatic Flush Timeout */
4347 case 0x0036: /* Read Link Supervision Timeout */
4348 case 0x0007B: /* Read Authenticated Payload Timeout */
4349 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4353 case 0x001c: /* Write Page Scan Activity */
4354 case 0x001e: /* Write Inquiry Scan Activity */
4355 item
= proto_tree_add_item(tree
, hf_bthci_cmd_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4356 proto_item_append_text(item
, " slots (%g msec)", tvb_get_letohs(tvb
, offset
)*0.625);
4358 item
= proto_tree_add_item(tree
, hf_bthci_cmd_window
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4359 proto_item_append_text(item
, " slots (%g msec)", tvb_get_letohs(tvb
, offset
)*0.625);
4364 case 0x0043: /* Write Inquiry Scan Type */
4365 proto_tree_add_item(tree
, hf_bthci_cmd_scan_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4369 case 0x0045: /* Write Inquiry Mode */
4370 proto_tree_add_item(tree
, hf_bthci_cmd_inq_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4371 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4372 bthci_cmd_data
->data
.inquiry_mode
= tvb_get_uint8(tvb
, offset
);
4377 case 0x0047: /* Write Page Scan Type */
4378 proto_tree_add_item(tree
, hf_bthci_cmd_scan_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4382 case 0x0049: /* Write AFH Channel Assessment Mode */
4383 proto_tree_add_item(tree
, hf_bthci_cmd_afh_ch_assessment_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4387 case 0x0052: /* Write Extended Inquiry Response */
4389 bluetooth_eir_ad_data_t
*eir_data
;
4391 eir_data
= wmem_new0(pinfo
->pool
, bluetooth_eir_ad_data_t
);
4392 eir_data
->interface_id
= bluetooth_data
->interface_id
;
4393 eir_data
->adapter_id
= bluetooth_data
->adapter_id
;
4394 eir_data
->bd_addr
= NULL
;
4396 proto_tree_add_item(tree
, hf_bthci_cmd_fec_required
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4399 call_dissector_with_data(btcommon_eir_handle
, tvb_new_subset_length(tvb
, offset
, 240), pinfo
, tree
, eir_data
);
4400 save_local_device_name_from_eir_ad(tvb
, offset
, pinfo
, 240, bluetooth_data
);
4406 case 0x0053: /* Refresh Encryption Key */
4407 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4411 case 0x0056: /* Write Simple Pairing Mode */
4412 proto_tree_add_item(tree
, hf_bthci_cmd_simple_pairing_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4413 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
4414 bthci_cmd_data
->data
.simple_pairing_mode
= tvb_get_uint8(tvb
, offset
);
4419 case 0x0059: /* Write Inquiry Tx Response Power Level */
4420 proto_tree_add_item(tree
, hf_bthci_cmd_tx_power
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4424 case 0x005b: /* Write Default Erroneous Data Reporting */
4425 proto_tree_add_item(tree
, hf_bthci_cmd_err_data_reporting
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4429 case 0x005f: /* Enhanced Flush */
4430 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4432 proto_tree_add_item(tree
, hf_bthci_cmd_flush_packet_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4436 case 0x0060: /* Send Keypress Notification */
4437 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
4439 proto_tree_add_item(tree
, hf_bthci_cmd_notification_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4443 case 0x0062: /* Write Logical Link Accept Timeout */
4444 proto_tree_add_item(tree
, hf_bthci_cmd_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4448 case 0x0063: /* Set Event Mask Page 2 */
4449 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_evt_mask2
, ett_event_mask_page_2
, hfx_bthci_cmd_event_mask_page_2
, ENC_LITTLE_ENDIAN
);
4453 case 0x0065: /* Write Location Data */
4454 proto_tree_add_item(tree
, hf_bthci_cmd_location_domain_aware
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4456 proto_tree_add_item(tree
, hf_bthci_cmd_location_domain
, tvb
, offset
, 2, ENC_ASCII
| ENC_NA
);
4458 proto_tree_add_item(tree
, hf_bthci_cmd_location_domain_options
, tvb
, offset
, 1, ENC_ASCII
| ENC_NA
);
4460 proto_tree_add_item(tree
, hf_bthci_cmd_location_options
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4464 case 0x0067: /* Write Flow Control Mode */
4465 proto_tree_add_item(tree
, hf_bthci_cmd_flow_control_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4469 case 0x0068: /* Read Enhanced Tx Power Level */
4470 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4472 proto_tree_add_item(tree
, hf_bthci_cmd_tx_power_level_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4476 case 0x0069: /* Read Best Effort Flush Timeout */
4477 proto_tree_add_item(tree
, hf_bthci_cmd_logical_link_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4481 case 0x006a: /* Write Best Effort Flush Timeout */
4482 proto_tree_add_item(tree
, hf_bthci_cmd_logical_link_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4484 proto_tree_add_item(tree
, hf_bthci_cmd_flush_to_us
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
4488 case 0x006b: /* Short Range Mode */
4489 proto_tree_add_item(tree
, hf_bthci_cmd_physical_link_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4491 proto_tree_add_item(tree
, hf_bthci_cmd_short_range_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4495 case 0x006d: /* Write LE Host Supported */
4496 proto_tree_add_item(tree
, hf_bthci_cmd_le_supported_host
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4498 proto_tree_add_item(tree
, hf_bthci_cmd_le_simultaneous_host
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4502 case 0x003: /* Reset */
4503 case 0x009: /* Read PIN Type */
4504 case 0x00B: /* Create New Unit Key */
4505 case 0x014: /* Read Local Name */
4506 case 0x015: /* Read Connection Accept Timeout */
4507 case 0x017: /* Read Page Timeout */
4508 case 0x019: /* Read Scan Enable */
4509 case 0x01B: /* Read Page Scan Activity */
4510 case 0x01D: /* Read Inquiry Scan Activity */
4511 case 0x01F: /* Read Authentication Enable */
4512 case 0x021: /* Read Encryption Mode */
4513 case 0x023: /* Read Class of Device */
4514 case 0x025: /* Read Voice Setting */
4515 case 0x029: /* Read Num Broadcast Retransmissions */
4516 case 0x02B: /* Read Hold Mode Activity */
4517 case 0x02E: /* Read SCO Flow Control Enable */
4518 case 0x038: /* Read Number of Supported IAC */
4519 case 0x039: /* Read Current IAC LAP */
4520 case 0x03B: /* Read Page Scan Period Mode */
4521 case 0x03D: /* Read Page Scan Mode */
4522 case 0x042: /* Read Inquiry Scan Type */
4523 case 0x044: /* Read Inquiry Mode */
4524 case 0x046: /* Read Page Scan Type */
4525 case 0x048: /* Read AFH Channel Assessment Mode */
4526 case 0x051: /* Read Extended Inquiry Response */
4527 case 0x055: /* Read Simple Pairing Mode */
4528 case 0x057: /* Read Local OOB Data */
4529 case 0x058: /* Read Inquiry Response Tx Power Level */
4530 case 0x05A: /* Read Default Erroneous Data Reporting */
4531 case 0x061: /* Read Logical Link Accept Timeout */
4532 case 0x064: /* Read Location Data */
4533 case 0x066: /* Read Flow Control Mode */
4534 case 0x06C: /* Read LE Host Supported */
4535 case 0x077: /* Read Synchronization Train Parameters */
4536 case 0x079: /* Read Secure Connections Host Support */
4537 case 0x07D: /* Read Local OOB Extended Data */
4538 case 0x07E: /* Read Extended Page Timeout */
4539 case 0x080: /* Read Extended Inquiry Length */
4540 /* NOTE: No parameters */
4543 case 0x06E: /* Set MWS Channel Parameters */
4544 proto_tree_add_item(tree
, hf_bthci_mws_channel
, tvb
, offset
, 1, ENC_NA
);
4547 proto_tree_add_item(tree
, hf_bthci_mws_rx_center_frequency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4550 proto_tree_add_item(tree
, hf_bthci_mws_tx_center_frequency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4553 proto_tree_add_item(tree
, hf_bthci_mws_rx_channel_bandwidth
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4556 proto_tree_add_item(tree
, hf_bthci_mws_tx_channel_bandwidth
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4559 proto_tree_add_item(tree
, hf_bthci_mws_channel_type
, tvb
, offset
, 1, ENC_NA
);
4563 case 0x06F: /* Set External Frame Configuration */
4565 proto_item
*sub_item
;
4566 proto_tree
*sub_tree
;
4567 uint32_t number_of_periods
;
4570 proto_tree_add_item(tree
, hf_bthci_external_frame_duration
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4573 proto_tree_add_item(tree
, hf_bthci_external_frame_sync_assert_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4576 proto_tree_add_item(tree
, hf_bthci_external_frame_sync_assert_jitter
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4579 proto_tree_add_item_ret_uint(tree
, hf_bthci_external_frame_number_of_periods
, tvb
, offset
, 1, ENC_NA
, &number_of_periods
);
4582 sub_item
= proto_tree_add_item(tree
, hf_bthci_external_frame_periods
, tvb
, offset
, -1, ENC_NA
);
4583 sub_tree
= proto_item_add_subtree(sub_item
, ett_periods
);
4585 while (number_of_periods
--) {
4586 proto_item
*entry_item
;
4587 proto_tree
*entry_tree
;
4589 entry_item
= proto_tree_add_item(sub_tree
, hf_bthci_external_frame_period
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4590 entry_tree
= proto_item_add_subtree(entry_item
, ett_period
);
4591 proto_item_append_text(entry_item
, " #%u", i_item
);
4593 proto_tree_add_item(entry_tree
, hf_bthci_external_frame_period_duration
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4596 proto_tree_add_item(entry_tree
, hf_bthci_external_frame_period_type
, tvb
, offset
, 1, ENC_NA
);
4604 case 0x070: /* Set MWS Signaling */
4605 proto_tree_add_item(tree
, hf_bthci_mws_rx_assert_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4608 proto_tree_add_item(tree
, hf_bthci_mws_rx_assert_jitter
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4611 proto_tree_add_item(tree
, hf_bthci_mws_rx_deassert_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4614 proto_tree_add_item(tree
, hf_bthci_mws_rx_deassert_jitter
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4618 proto_tree_add_item(tree
, hf_bthci_mws_tx_assert_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4621 proto_tree_add_item(tree
, hf_bthci_mws_tx_assert_jitter
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4624 proto_tree_add_item(tree
, hf_bthci_mws_tx_deassert_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4627 proto_tree_add_item(tree
, hf_bthci_mws_tx_deassert_jitter
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4631 proto_tree_add_item(tree
, hf_bthci_mws_pattern_assert_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4634 proto_tree_add_item(tree
, hf_bthci_mws_pattern_assert_jitter
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4638 proto_tree_add_item(tree
, hf_bthci_mws_inactivity_duration_assert_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4641 proto_tree_add_item(tree
, hf_bthci_mws_inactivity_duration_assert_jitter
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4645 proto_tree_add_item(tree
, hf_bthci_mws_scan_frequency_assert_offset
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4648 proto_tree_add_item(tree
, hf_bthci_mws_scan_frequency_assert_jitter
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4652 proto_tree_add_item(tree
, hf_bthci_mws_priority_assert_offset_request
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4656 case 0x071: /* Set MWS Transport Layer */
4657 proto_tree_add_item(tree
, hf_bthci_mws_transport_layer
, tvb
, offset
, 1, ENC_NA
);
4660 proto_tree_add_item(tree
, hf_bthci_mws_to_baud_rate
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
4663 proto_tree_add_item(tree
, hf_bthci_mws_from_baud_rate
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
4667 case 0x072: /* Set MWS Scan Frequency Table */
4669 proto_item
*sub_item
;
4670 proto_tree
*sub_tree
;
4671 uint32_t number_of_frequencies
;
4674 proto_tree_add_item_ret_uint(tree
, hf_bthci_mws_number_of_frequencies
, tvb
, offset
, 1, ENC_NA
, &number_of_frequencies
);
4677 sub_item
= proto_tree_add_item(tree
, hf_bthci_mws_scan_frequency_table
, tvb
, offset
, -1, ENC_NA
);
4678 sub_tree
= proto_item_add_subtree(sub_item
, ett_table
);
4680 while (number_of_frequencies
--) {
4681 proto_item
*entry_item
;
4682 proto_tree
*entry_tree
;
4684 entry_item
= proto_tree_add_item(sub_tree
, hf_bthci_mws_scan_frequency_table_item
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
4685 entry_tree
= proto_item_add_subtree(entry_item
, ett_table_item
);
4686 proto_item_append_text(entry_item
, " #%u", i_item
);
4688 proto_tree_add_item(entry_tree
, hf_bthci_mws_scan_frequency_table_item_low
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4691 proto_tree_add_item(entry_tree
, hf_bthci_mws_scan_frequency_table_item_high
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4699 case 0x073: /* Set MWS Pattern Configuration */
4701 proto_item
*sub_item
;
4702 proto_tree
*sub_tree
;
4703 uint32_t number_of_intervals
;
4706 proto_tree_add_item(tree
, hf_bthci_mws_pattern_index
, tvb
, offset
, 1, ENC_NA
);
4709 proto_tree_add_item_ret_uint(tree
, hf_bthci_mws_pattern_number_of_intervals
, tvb
, offset
, 1, ENC_NA
, &number_of_intervals
);
4712 sub_item
= proto_tree_add_item(tree
, hf_bthci_mws_patterns
, tvb
, offset
, -1, ENC_NA
);
4713 sub_tree
= proto_item_add_subtree(sub_item
, ett_patterns
);
4715 while (number_of_intervals
--) {
4716 proto_item
*entry_item
;
4717 proto_tree
*entry_tree
;
4719 entry_item
= proto_tree_add_item(sub_tree
, hf_bthci_mws_pattern
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
4720 entry_tree
= proto_item_add_subtree(entry_item
, ett_pattern
);
4721 proto_item_append_text(entry_item
, " #%u", i_item
);
4723 proto_tree_add_item(entry_tree
, hf_bthci_mws_pattern_duration
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4726 proto_tree_add_item(entry_tree
, hf_bthci_mws_pattern_type
, tvb
, offset
, 1, ENC_NA
);
4735 case 0x074: /* Set Reserved LT_ADDR */
4736 case 0x075: /* Delete Reserved LT_ADDR */
4737 proto_tree_add_item(tree
, hf_bthci_cmd_lt_addr
, tvb
, offset
, 1, ENC_NA
);
4741 case 0x076: /* Set Connectionless Peripheral Broadcast Data */
4743 uint32_t data_length
;
4745 proto_tree_add_item(tree
, hf_bthci_cmd_lt_addr
, tvb
, offset
, 1, ENC_NA
);
4748 proto_tree_add_item(tree
, hf_bthci_cmd_cpb_fragment
, tvb
, offset
, 1, ENC_NA
);
4751 proto_tree_add_item_ret_uint(tree
, hf_bthci_cmd_cpb_data_length
, tvb
, offset
, 1, ENC_NA
, &data_length
);
4754 proto_tree_add_item(tree
, hf_bthci_cmd_cpb_data
, tvb
, offset
, data_length
, ENC_NA
);
4755 offset
+= data_length
;
4759 case 0x078: /* Write Synchronization Train Parameters */
4760 proto_tree_add_item(tree
, hf_bthci_cmd_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4763 proto_tree_add_item(tree
, hf_bthci_cmd_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4766 proto_tree_add_item(tree
, hf_bthci_cmd_sync_train_to
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
4769 proto_tree_add_item(tree
, hf_bthci_cmd_service_data
, tvb
, offset
, 1, ENC_NA
);
4773 case 0x07A: /* Write Secure Connections Host Support */
4774 proto_tree_add_item(tree
, hf_bthci_cmd_secure_connection_host_support
, tvb
, offset
, 1, ENC_NA
);
4778 case 0x07C: /* Write Authenticated Payload Timeout */
4779 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4782 proto_tree_add_item(tree
, hf_bthci_cmd_authenticated_payload_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4786 case 0x07F: /* Write Extended Page Timeout */
4787 proto_tree_add_item(tree
, hf_bthci_cmd_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4791 case 0x081: /* Write Extended Inquiry Length */
4792 proto_tree_add_item(tree
, hf_bthci_cmd_extended_inquiry_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4796 case 0x082: /* Set Ecosystem Base Interval */
4798 uint16_t interval
= tvb_get_letohs(tvb
, offset
);
4799 item
= proto_tree_add_item(tree
, hf_bthci_cmd_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4801 proto_item_append_text(item
, " (%g msec)", interval
* 1.25);
4803 proto_item_append_text(item
, " (Ignore Any Previous Hint)");
4809 case 0x083: /* Configure Data Path */
4811 uint8_t codec_length
;
4812 proto_tree_add_item(tree
, hf_bthci_cmd_data_path_direction
, tvb
, offset
, 1, ENC_NA
);
4814 proto_tree_add_item(tree
, hf_bthci_cmd_data_path_id
, tvb
, offset
, 1, ENC_NA
);
4816 codec_length
= tvb_get_uint8(tvb
, offset
);
4817 proto_tree_add_item(tree
, hf_bthci_cmd_codec_config_length
, tvb
, offset
, 1, ENC_NA
);
4819 proto_tree_add_item(tree
, hf_bthci_cmd_codec_config
, tvb
, offset
, codec_length
, ENC_NA
);
4820 offset
+= codec_length
;
4824 case 0x084: /* Set Min Encryption Key Size */
4825 proto_tree_add_item(tree
, hf_bthci_cmd_min_encryption_key_size
, tvb
, offset
, 1, ENC_NA
);
4830 proto_tree_add_expert(tree
, pinfo
, &ei_command_unknown_command
, tvb
, offset
, -1);
4831 offset
+= tvb_reported_length_remaining(tvb
, offset
);
4838 dissect_informational_parameters_cmd(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
4839 proto_tree
*tree
, uint16_t cmd_ocf
)
4843 case 0x0004: /* Read Local Extended Features */
4844 proto_tree_add_item(tree
, hf_bthci_cmd_page_number
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4848 case 0x001: /* Read Local Version Information */
4849 case 0x002: /* Read Local Supported Commands */
4850 case 0x003: /* Read Local Supported Features */
4851 case 0x005: /* Read Buffer Size */
4852 case 0x007: /* Read Country Code */
4853 case 0x009: /* Read BD ADDR */
4854 case 0x00A: /* Read Data Block Size */
4855 case 0x00B: /* Read Local Supported Codecs */
4856 case 0x00C: /* Read Local Simple Pairing Options */
4857 /* NOTE: No parameters */
4861 proto_tree_add_expert(tree
, pinfo
, &ei_command_unknown_command
, tvb
, offset
, -1);
4862 offset
+= tvb_reported_length_remaining(tvb
, offset
);
4869 dissect_status_parameters_cmd(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
,
4870 proto_tree
*tree
, uint16_t cmd_ocf
)
4874 case 0x0001: /* Read Failed Contact Counter */
4875 case 0x0002: /* Reset Failed Contact Counter */
4876 case 0x0003: /* Get Link Quality */
4877 case 0x0005: /* Read RSSI */
4878 case 0x0006: /* Read AFH Channel Map */
4879 case 0x0008: /* Read Encryption Key Size */
4880 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4884 case 0x0007: /* Read Clock */
4885 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4887 proto_tree_add_item(tree
, hf_bthci_cmd_which_clock
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4891 case 0x0009: /* Read Local AMP Info */
4894 case 0x000a: /* Read Local AMP Assoc */
4895 proto_tree_add_item(tree
, hf_bthci_cmd_physical_link_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4897 proto_tree_add_item(tree
, hf_bthci_cmd_length_so_far
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4899 proto_tree_add_item(tree
, hf_bthci_cmd_amp_assoc_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4903 case 0x000b: /* Write Remote AMP Assoc */
4904 proto_tree_add_item(tree
, hf_bthci_cmd_physical_link_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4906 proto_tree_add_item(tree
, hf_bthci_cmd_length_so_far
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4908 proto_tree_add_item(tree
, hf_bthci_cmd_amp_remaining_assoc_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4910 proto_tree_add_item(tree
, hf_bthci_cmd_amp_assoc_fragment
, tvb
, offset
, -1, ENC_NA
);
4911 offset
+=tvb_reported_length_remaining(tvb
, offset
);
4915 case 0x000C: /* Get MWS Transport Layer Configuration */
4916 /* NOTE: No parameters */
4919 case 0x000D: /* Set Triggered Clock Capture */
4920 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4923 proto_tree_add_item(tree
, hf_bthci_cmd_triggered_clock_capture
, tvb
, offset
, 1, ENC_NA
);
4926 proto_tree_add_item(tree
, hf_bthci_cmd_which_clock
, tvb
, offset
, 1, ENC_NA
);
4929 proto_tree_add_item(tree
, hf_bthci_cmd_lpo_allowed
, tvb
, offset
, 1, ENC_NA
);
4932 proto_tree_add_item(tree
, hf_bthci_cmd_number_of_clock_captures_to_filter
, tvb
, offset
, 1, ENC_NA
);
4937 proto_tree_add_expert(tree
, pinfo
, &ei_command_unknown_command
, tvb
, offset
, -1);
4938 offset
+= tvb_reported_length_remaining(tvb
, offset
);
4945 dissect_testing_cmd(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
, proto_tree
*tree
, uint16_t cmd_ocf
)
4949 case 0x0002: /* Write Loopback Mode */
4950 proto_tree_add_item(tree
, hf_bthci_cmd_loopback_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4954 case 0x0004: /* Write Simple Pairing Debug Mode */
4955 proto_tree_add_item(tree
, hf_bthci_cmd_simple_pairing_debug_mode
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4959 case 0x0007: /* Enable AMP Receiver Reports */
4960 proto_tree_add_item(tree
, hf_bthci_cmd_enable_amp_recv_reports
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4962 proto_tree_add_item(tree
, hf_bthci_cmd_amp_recv_report_interval
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
4966 case 0x001: /* Read Loopback Mode */
4967 case 0x003: /* Enable Device Under Test Mode */
4968 case 0x008: /* AMP Test End */
4969 /* NOTE: No parameters */
4972 case 0x009: /* AMP Test */
4973 proto_tree_add_item(tree
, hf_bthci_cmd_amp_controller_type
, tvb
, offset
, 1, ENC_NA
);
4977 case 0x00A: /* Write Secure Connections Test Mode */
4978 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
4981 proto_tree_add_item(tree
, hf_bthci_cmd_dm1_acl_u_mode
, tvb
, offset
, 1, ENC_NA
);
4984 proto_tree_add_item(tree
, hf_bthci_cmd_esco_loopback_mode
, tvb
, offset
, 1, ENC_NA
);
4989 proto_tree_add_expert(tree
, pinfo
, &ei_command_unknown_command
, tvb
, offset
, -1);
4990 offset
+= tvb_reported_length_remaining(tvb
, offset
);
4997 dissect_le_cmd(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
, proto_tree
*tree
, uint16_t cmd_ocf
, bluetooth_data_t
*bluetooth_data
)
5000 proto_item
*sub_item
;
5001 proto_tree
*sub_tree
;
5005 case 0x0001: /* LE Set Event Mask */
5006 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_le_event_mask
, ett_le_event_mask
, hfx_bthci_cmd_le_event_mask
, ENC_LITTLE_ENDIAN
);
5010 case 0x0005: /* LE Set Random Address */
5011 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5014 case 0x0006: /* LE Set Advertising Parameters */
5015 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5016 proto_item_append_text(item
, " (%g msec)", tvb_get_letohs(tvb
, offset
)*0.625);
5018 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5019 proto_item_append_text(item
, " (%g msec)", tvb_get_letohs(tvb
, offset
)*0.625);
5021 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5023 proto_tree_add_item(tree
, hf_bthci_cmd_le_own_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5025 proto_tree_add_item(tree
, hf_bthci_cmd_le_direct_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5027 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5028 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_channel_map_1
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5029 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_channel_map_2
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5030 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_channel_map_3
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5032 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_filter_policy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5036 case 0x0008: /* LE Set Advertising Data */
5037 case 0x0009: /* LE Set Scan Response Data */
5039 bluetooth_eir_ad_data_t
*ad_data
;
5041 ad_data
= wmem_new0(pinfo
->pool
, bluetooth_eir_ad_data_t
);
5042 ad_data
->interface_id
= bluetooth_data
->interface_id
;
5043 ad_data
->adapter_id
= bluetooth_data
->adapter_id
;
5044 ad_data
->bd_addr
= NULL
;
5046 proto_tree_add_item(tree
, hf_bthci_cmd_le_data_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5049 call_dissector_with_data(btcommon_ad_handle
, tvb_new_subset_length(tvb
, offset
, 31), pinfo
, tree
, ad_data
);
5050 save_local_device_name_from_eir_ad(tvb
, offset
, pinfo
, 31, bluetooth_data
);
5056 case 0x000a: /* LE Set Advertise Enable */
5057 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_enable
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5061 case 0x000b: /* LE Set Scan Parameters */
5062 proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5064 proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5066 proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_window
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5068 proto_tree_add_item(tree
, hf_bthci_cmd_le_own_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5070 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_le_scan_filter_policy
, ett_filter_policy
, hfx_bthci_cmd_scan_filter_policy
, ENC_NA
);
5074 case 0x000c: /* LE Set Scan Enable */
5075 proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_enable
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5077 proto_tree_add_item(tree
, hf_bthci_cmd_le_filter_duplicates
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5081 case 0x000d: /* LE Create Connection */
5082 proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5084 proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_window
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5086 proto_tree_add_item(tree
, hf_bthci_cmd_le_initiator_filter_policy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5088 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5090 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5091 proto_tree_add_item(tree
, hf_bthci_cmd_le_own_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5093 proto_tree_add_item(tree
, hf_bthci_cmd_le_con_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5095 proto_tree_add_item(tree
, hf_bthci_cmd_le_con_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5097 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_con_latency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5098 proto_item_append_text(item
, " (number events)");
5100 proto_tree_add_item(tree
, hf_bthci_cmd_le_supervision_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5102 proto_tree_add_item(tree
, hf_bthci_cmd_le_min_ce_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5104 proto_tree_add_item(tree
, hf_bthci_cmd_le_max_ce_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5108 case 0x0011: /* LE Add Device To Filter Accept List */
5109 case 0x0012: /* LE Remove Device From Filter Accept List */
5110 proto_tree_add_item(tree
, hf_bthci_cmd_le_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5112 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5115 case 0x0013: /* LE Connection Update */
5116 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5118 proto_tree_add_item(tree
, hf_bthci_cmd_le_con_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5120 proto_tree_add_item(tree
, hf_bthci_cmd_le_con_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5122 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_con_latency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5123 proto_item_append_text(item
, " (number events)");
5125 proto_tree_add_item(tree
, hf_bthci_cmd_le_supervision_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5127 proto_tree_add_item(tree
, hf_bthci_cmd_le_min_ce_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5129 proto_tree_add_item(tree
, hf_bthci_cmd_le_max_ce_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5133 case 0x0014: /* LE Set Host Channel Classification */
5134 sub_item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_channel_map
, tvb
, offset
, 5, ENC_NA
);
5135 sub_tree
= proto_item_add_subtree(sub_item
, ett_le_channel_map
);
5137 call_dissector(btcommon_le_channel_map_handle
, tvb_new_subset_length(tvb
, offset
, 5), pinfo
, sub_tree
);
5142 case 0x0015: /* LE Read Channel Map */
5143 case 0x0016: /* LE Read Remote Features */
5144 case 0x001b: /* LE Long Term Key Request Negative Reply */
5145 case 0x0030: /* LE Read PHY */
5146 case 0x006D: /* LE Request Peer SCA */
5147 case 0x008A: /* LE CS Read Remote Supported Capabilities */
5148 case 0x008C: /* LE CS Security Enable */
5149 case 0x008E: /* LE CS Read Remote FAE Table */
5150 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5154 case 0x0017: /* LE Encrypt */
5155 proto_tree_add_item(tree
, hf_bthci_cmd_key
, tvb
, offset
, 16, ENC_NA
);
5157 proto_tree_add_item(tree
, hf_bthci_cmd_plaintext_data
, tvb
, offset
, 16, ENC_NA
);
5161 case 0x0019: /* LE Enable Encryption */
5162 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5164 proto_tree_add_item(tree
, hf_bthci_cmd_random_number
, tvb
, offset
, 8, ENC_NA
);
5166 proto_tree_add_item(tree
, hf_bthci_cmd_encrypted_diversifier
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5168 proto_tree_add_item(tree
, hf_bthci_cmd_le_long_term_key
, tvb
, offset
, 16, ENC_NA
);
5172 case 0x001a: /* LE Long Term Key Request Reply */
5173 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5175 proto_tree_add_item(tree
, hf_bthci_cmd_le_long_term_key
, tvb
, offset
, 16, ENC_NA
);
5179 case 0x001d: /* LE Receiver Test [v1] */
5180 case 0x0033: /* LE Receiver Test [v2] */
5181 case 0x004f: /* LE Receiver Test [v3] */
5182 item
= proto_tree_add_item(tree
, hf_bthci_cmd_rx_frequency
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5183 proto_item_append_text(item
, " (%d MHz)", 2402 + 2*tvb_get_uint8(tvb
, offset
));
5186 if (cmd_ocf
>= 0x0033) {
5187 proto_tree_add_item(tree
, hf_bthci_cmd_phy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5189 proto_tree_add_item(tree
, hf_bthci_cmd_modulation_index
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5193 if (cmd_ocf
>= 0x004f) {
5194 item
= proto_tree_add_item(tree
, hf_bthci_cmd_cte_length
, tvb
, offset
, 1, ENC_NA
);
5195 proto_item_append_text(item
, " (%d usec)", tvb_get_uint8(tvb
, offset
)*8);
5197 proto_tree_add_item(tree
, hf_bthci_cmd_cte_type
, tvb
, offset
, 1, ENC_NA
);
5199 proto_tree_add_item(tree
, hf_bthci_cmd_slot_durations
, tvb
, offset
, 1, ENC_NA
);
5201 offset
= dissect_antenna_switching_pattern(tvb
, offset
, tree
);
5205 case 0x001e: /* LE Transmitter Test [v1] */
5206 case 0x0034: /* LE Transmitter Test [v2] */
5207 case 0x0050: /* LE Transmitter Test [v3] */
5208 case 0x007B: /* LE Transmitter Test [v4] */
5209 item
= proto_tree_add_item(tree
, hf_bthci_cmd_tx_frequency
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5210 proto_item_append_text(item
, " (%d MHz)", 2402 + 2*tvb_get_uint8(tvb
, offset
));
5212 proto_tree_add_item(tree
, hf_bthci_cmd_test_data_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5214 proto_tree_add_item(tree
, hf_bthci_cmd_test_packet_payload
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5217 if (cmd_ocf
>= 0x0034) {
5218 proto_tree_add_item(tree
, hf_bthci_cmd_phy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5222 if (cmd_ocf
>= 0x0050) {
5223 item
= proto_tree_add_item(tree
, hf_bthci_cmd_cte_length
, tvb
, offset
, 1, ENC_NA
);
5224 proto_item_append_text(item
, " (%d usec)", tvb_get_uint8(tvb
, offset
)*8);
5226 proto_tree_add_item(tree
, hf_bthci_cmd_cte_type
, tvb
, offset
, 1, ENC_NA
);
5228 offset
= dissect_antenna_switching_pattern(tvb
, offset
, tree
);
5231 if (cmd_ocf
>= 0x007B) {
5232 proto_tree_add_item(tree
, hf_bthci_cmd_tx_power_setting
, tvb
, offset
, 1, ENC_NA
);
5237 case 0x0020: /*LE Remote Connection Parameter Request Reply */
5238 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5240 proto_tree_add_item(tree
, hf_bthci_cmd_le_con_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5242 proto_tree_add_item(tree
, hf_bthci_cmd_le_con_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5244 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_con_latency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5245 proto_item_append_text(item
, " (number events)");
5247 proto_tree_add_item(tree
, hf_bthci_cmd_le_supervision_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5249 proto_tree_add_item(tree
, hf_bthci_cmd_le_min_ce_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5251 proto_tree_add_item(tree
, hf_bthci_cmd_le_max_ce_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5255 case 0x0021: /* LE Remote Connection Parameter Request Negative Reply */
5256 case 0x0067: /* LE Reject CIS Request */
5257 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5259 proto_tree_add_item(tree
, hf_bthci_cmd_reason
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5263 case 0x0022: /* LE Set Data Length */
5264 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5266 proto_tree_add_item(tree
, hf_bthci_cmd_le_tx_octets
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5268 proto_tree_add_item(tree
, hf_bthci_cmd_le_tx_time
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5272 case 0x0024: /* LE Write Suggested Default Data Length */
5273 proto_tree_add_item(tree
, hf_bthci_cmd_le_suggested_max_tx_octets
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5275 proto_tree_add_item(tree
, hf_bthci_cmd_le_suggested_max_tx_time
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5279 case 0x0026: /* LE Generate DHKey [v1] */
5280 proto_tree_add_item(tree
, hf_bthci_cmd_le_remote_p_256_public_key
, tvb
, offset
, 64, ENC_NA
);
5284 case 0x0027: /* LE Add Device to Resolving List */
5285 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_identity_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5287 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5288 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_irk
, tvb
, offset
, 16, ENC_NA
);
5290 proto_tree_add_item(tree
, hf_bthci_cmd_le_local_irk
, tvb
, offset
, 16, ENC_NA
);
5294 case 0x0028: /* LE Remove Device From Resolving List */
5295 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_identity_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5297 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5300 case 0x002B: /* LE Read Peer Resolvable Address */
5301 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_identity_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5303 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5306 case 0x002C: /* LE Read Local Resolvable Address" */
5307 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_identity_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5309 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5312 case 0x002D: /* Set Address Resolution Enable */
5313 proto_tree_add_item(tree
, hf_bthci_cmd_le_address_resolution_enable
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5317 case 0x002E: /* LE Set Resolvable Private Address Timeout */
5318 proto_tree_add_item(tree
, hf_bthci_cmd_le_rpa_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5322 case 0x0031: /* LE Set Default PHY */
5323 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_all_phys
, ett_phys_flags
, hfx_btcmd_all_phys
, ENC_NA
);
5325 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_tx_phys
, ett_phys_flags
, hfx_btcmd_phys_pref
, ENC_NA
);
5327 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_rx_phys
, ett_phys_flags
, hfx_btcmd_phys_pref
, ENC_NA
);
5331 case 0x0032: /* LE Set PHY */
5332 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5334 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_all_phys
, ett_phys_flags
, hfx_btcmd_all_phys
, ENC_NA
);
5336 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_tx_phys
, ett_phys_flags
, hfx_btcmd_phys_pref
, ENC_NA
);
5338 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_rx_phys
, ett_phys_flags
, hfx_btcmd_phys_pref
, ENC_NA
);
5340 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_phy_options
, ett_phys_flags
, hfx_btcmd_phy_options
, ENC_LITTLE_ENDIAN
);
5344 case 0x0035: /* LE Set Advertising Set Random Address */
5345 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5347 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5350 case 0x0036: /* LE Set Extended Advertising Parameters [v1] */
5351 case 0x007F: /* LE Set Extended Advertising Parameters [v2] */
5352 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5354 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_advertising_properties
, ett_adv_properties
, hfx_bthci_cmd_adv_properties
, ENC_LITTLE_ENDIAN
);
5356 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_ext_interval_min
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5358 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_ext_interval_max
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5360 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_channel_map_1
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5361 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_channel_map_2
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5362 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_channel_map_3
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5364 proto_tree_add_item(tree
, hf_bthci_cmd_le_own_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5366 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5368 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5369 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_filter_policy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5371 proto_tree_add_item(tree
, hf_bthci_cmd_tx_power
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5373 proto_tree_add_item(tree
, hf_bthci_cmd_primary_advertising_phy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5375 proto_tree_add_item(tree
, hf_bthci_cmd_sec_adv_max_skip
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5377 proto_tree_add_item(tree
, hf_bthci_cmd_secondary_advertising_phy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5379 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_sid
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5381 proto_tree_add_item(tree
, hf_bthci_cmd_scan_req_notif_en
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5383 if (cmd_ocf
== 0x007F) {
5384 proto_tree_add_item(tree
, hf_bthci_cmd_primary_adv_phy_options
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5386 proto_tree_add_item(tree
, hf_bthci_cmd_secondary_adv_phy_options
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5391 case 0x0037: /* LE Set Extended Advertising Data */
5392 case 0x0038: /* LE Set Extended Scan Response Data */
5394 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5396 proto_tree_add_item(tree
, hf_bthci_cmd_le_adv_data_operation
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5398 proto_tree_add_item(tree
, hf_bthci_cmd_le_adv_data_frag_pref
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5401 bluetooth_eir_ad_data_t
*ad_data
;
5402 ad_data
= wmem_new0(pinfo
->pool
, bluetooth_eir_ad_data_t
);
5403 ad_data
->interface_id
= bluetooth_data
->interface_id
;
5404 ad_data
->adapter_id
= bluetooth_data
->adapter_id
;
5405 ad_data
->bd_addr
= NULL
;
5407 uint8_t data_length
= tvb_get_uint8(tvb
, offset
);
5408 proto_tree_add_item(tree
, hf_bthci_cmd_le_data_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5410 call_dissector_with_data(btcommon_ad_handle
, tvb_new_subset_length(tvb
, offset
, data_length
), pinfo
, tree
, ad_data
);
5411 save_local_device_name_from_eir_ad(tvb
, offset
, pinfo
, data_length
, bluetooth_data
);
5412 offset
+= data_length
;
5416 case 0x0039: /* LE Set Extended Advertising Enable */
5418 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_enable
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5421 uint8_t number_of_sets
= tvb_get_uint8(tvb
, offset
);
5422 proto_tree_add_item(tree
, hf_bthci_cmd_le_adv_en_sets
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5425 for (int i
= 0; i
< number_of_sets
; i
++) {
5426 sub_item
= proto_tree_add_none_format(tree
, hf_bthci_cmd_le_adv_set
, tvb
, offset
, 4, "Set, Handle: %u", tvb_get_uint8(tvb
, offset
));
5427 sub_tree
= proto_item_add_subtree(sub_item
, ett_adv_sets
);
5428 proto_tree_add_item(sub_tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5430 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_adv_duration
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5432 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_adv_max_extended_events
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5438 case 0x003C: /* LE Remove Advertising Set */
5439 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5443 case 0x003E: /* LE Set Periodic Advertising Parameters [v1] */
5444 case 0x0086: /* LE Set Periodic Advertising Parameters [v2] */
5445 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5447 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5448 proto_item_append_text(item
, " (%g msec)", tvb_get_letohs(tvb
, offset
)*1.25);
5450 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5451 proto_item_append_text(item
, " (%g msec)", tvb_get_letohs(tvb
, offset
)*1.25);
5453 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_periodic_advertising_properties
, ett_adv_properties
,
5454 hfx_bthci_cmd_periodic_adv_properties
, ENC_LITTLE_ENDIAN
);
5456 if (cmd_ocf
== 0x0086) {
5457 proto_tree_add_item(tree
, hf_bthci_cmd_num_subevents
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5459 proto_tree_add_item(tree
, hf_bthci_cmd_subevent_interval
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5461 proto_tree_add_item(tree
, hf_bthci_cmd_response_slot_delay
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5463 proto_tree_add_item(tree
, hf_bthci_cmd_response_slot_spacing
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5465 proto_tree_add_item(tree
, hf_bthci_cmd_num_response_slots
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5470 case 0x003F: /* LE Set Periodic Advertising Data */
5472 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5474 proto_tree_add_item(tree
, hf_bthci_cmd_le_adv_data_operation
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5477 bluetooth_eir_ad_data_t
*ad_data
;
5478 ad_data
= wmem_new0(pinfo
->pool
, bluetooth_eir_ad_data_t
);
5479 ad_data
->interface_id
= bluetooth_data
->interface_id
;
5480 ad_data
->adapter_id
= bluetooth_data
->adapter_id
;
5481 ad_data
->bd_addr
= NULL
;
5483 uint8_t data_length
= tvb_get_uint8(tvb
, offset
);
5484 proto_tree_add_item(tree
, hf_bthci_cmd_le_data_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5486 call_dissector_with_data(btcommon_ad_handle
, tvb_new_subset_length(tvb
, offset
, data_length
), pinfo
, tree
, ad_data
);
5487 save_local_device_name_from_eir_ad(tvb
, offset
, pinfo
, data_length
, bluetooth_data
);
5488 offset
+= data_length
;
5492 case 0x0040: /* LE Set Periodic Advertising Enable */
5493 proto_tree_add_item(tree
, hf_bthci_cmd_le_advts_enable
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5495 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5499 case 0x0041: /* LE Set Extended Scan Parameters */
5501 uint8_t scanning_phys
, phy
= 0;
5502 proto_tree_add_item(tree
, hf_bthci_cmd_le_own_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5504 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_le_scan_filter_policy
, ett_filter_policy
, hfx_bthci_cmd_scan_filter_policy
, ENC_NA
);
5506 scanning_phys
= tvb_get_uint8(tvb
, offset
);
5507 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_le_scan_phys
, ett_phy_param
, hfx_btcmd_le_scan_phys
, ENC_NA
);
5509 for (int i
= 1; i
< 0x08; i
<<=1) {
5511 if (scanning_phys
& i
) {
5512 sub_item
= proto_tree_add_none_format(tree
, hf_bthci_cmd_le_scan_phy_param
, tvb
, offset
, 5, "Scanning PHY: %s",
5513 val_to_str_const(phy
, cmd_le_phy_vals
, "Unknown"));
5514 sub_tree
= proto_item_add_subtree(sub_item
, ett_phy_param
);
5515 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_scan_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5517 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_scan_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5519 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_scan_window
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5526 case 0x0042: /* LE Set Extended Scan Enable */
5527 proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_enable
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5529 proto_tree_add_item(tree
, hf_bthci_cmd_le_filter_duplicates
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5531 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_duration
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5532 proto_item_append_text(item
, " (%g msec)", tvb_get_letohs(tvb
, offset
)*10.0);
5534 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_scan_period
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5535 proto_item_append_text(item
, " (%g sec)", tvb_get_letohs(tvb
, offset
)*1.28);
5539 case 0x0085: /* LE Extended Create Connection [v2] */
5540 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5542 item
= proto_tree_add_item(tree
, hf_bthci_cmd_subevent
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5543 if (tvb_get_uint8(tvb
, offset
) == 0xff) {
5544 proto_item_append_text(item
, " (not used)");
5549 case 0x0043: /* LE Extended Create Connection [v1] */
5551 uint8_t initiating_phys
, phy
= 0;
5552 proto_tree_add_item(tree
, hf_bthci_cmd_le_initiator_filter_policy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5554 proto_tree_add_item(tree
, hf_bthci_cmd_le_own_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5556 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_address_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
5558 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5559 initiating_phys
= tvb_get_uint8(tvb
, offset
);
5560 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_le_phys
, ett_phy_param
, hfx_btcmd_le_phys
, ENC_NA
);
5562 for (int i
= 1; i
< 0x08; i
<<=1) {
5564 if (initiating_phys
& i
) {
5565 sub_item
= proto_tree_add_none_format(tree
, hf_bthci_cmd_le_init_phy_param
, tvb
, offset
, 16, "Initiating PHY: %s",
5566 val_to_str_const(phy
, cmd_le_phy_vals
, "Unknown"));
5567 sub_tree
= proto_item_add_subtree(sub_item
, ett_phy_param
);
5568 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_scan_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5570 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_scan_window
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5572 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_con_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5574 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_con_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5576 item
= proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_con_latency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5577 proto_item_append_text(item
, " (number events)");
5579 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_supervision_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5581 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_min_ce_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5583 proto_tree_add_item(sub_tree
, hf_bthci_cmd_le_max_ce_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5590 case 0x0044: /* LE Periodic Advertising Create Sync */
5591 proto_tree_add_item(tree
, hf_bthci_cmd_sync_filter_policy
, tvb
, offset
, 1, ENC_NA
);
5593 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_sid
, tvb
, offset
, 1, ENC_NA
);
5595 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_address_type
, tvb
, offset
, 1, ENC_NA
);
5597 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5598 proto_tree_add_item(tree
, hf_bthci_cmd_skip
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5600 proto_tree_add_item(tree
, hf_bthci_cmd_le_supervision_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5602 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_sync_cte_type
, ett_sync_cte_type
, hfx_btcmd_sync_cte_type
, ENC_NA
);
5606 case 0x0046: /* LE Periodic Advertising Terminate Sync */
5607 proto_tree_add_item(tree
, hf_bthci_cmd_sync_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5611 case 0x0047: /* LE Add Device To Periodic Advertiser List */
5612 case 0x0048: /* LE Remove Device From Periodic Advertiser List */
5613 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_address_type
, tvb
, offset
, 1, ENC_NA
);
5615 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5616 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_sid
, tvb
, offset
, 1, ENC_NA
);
5620 case 0x004D: /* LE Write RF Path Compensation */
5621 item
= proto_tree_add_item(tree
, hf_bthci_cmd_rf_tx_path_compensation_value
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5622 proto_item_append_text(item
, " (%g dB)", tvb_get_letohis(tvb
, offset
)*0.1);
5624 item
= proto_tree_add_item(tree
, hf_bthci_cmd_rf_rx_path_compensation_value
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5625 proto_item_append_text(item
, " (%g dB)", tvb_get_letohis(tvb
, offset
)*0.1);
5629 case 0x004E: /* LE Set Privacy Mode */
5630 proto_tree_add_item(tree
, hf_bthci_cmd_le_peer_identity_address_type
, tvb
, offset
, 1, ENC_NA
);
5632 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
5633 proto_tree_add_item(tree
, hf_bthci_cmd_le_privacy_mode
, tvb
, offset
, 1, ENC_NA
);
5637 case 0x0051: /* LE Set Connectionless CTE Transmit Parameters */
5638 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_NA
);
5640 item
= proto_tree_add_item(tree
, hf_bthci_cmd_cte_length
, tvb
, offset
, 1, ENC_NA
);
5641 proto_item_append_text(item
, " (%d usec)", tvb_get_uint8(tvb
, offset
)*8);
5643 proto_tree_add_item(tree
, hf_bthci_cmd_cte_type
, tvb
, offset
, 1, ENC_NA
);
5645 proto_tree_add_item(tree
, hf_bthci_cmd_cte_count
, tvb
, offset
, 1, ENC_NA
);
5647 offset
= dissect_antenna_switching_pattern(tvb
, offset
, tree
);
5650 case 0x0052: /* LE Set Connectionless CTE Transmit Enable */
5651 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_NA
);
5653 proto_tree_add_item(tree
, hf_bthci_cmd_cte_enable
, tvb
, offset
, 1, ENC_NA
);
5657 case 0x0053: /* LE Set Connectionless IQ Sampling Enable */
5658 proto_tree_add_item(tree
, hf_bthci_cmd_sync_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5660 proto_tree_add_item(tree
, hf_bthci_cmd_iq_sampling_enable
, tvb
, offset
, 1, ENC_NA
);
5662 proto_tree_add_item(tree
, hf_bthci_cmd_slot_durations
, tvb
, offset
, 1, ENC_NA
);
5664 item
= proto_tree_add_item(tree
, hf_bthci_cmd_max_sampled_ctes
, tvb
, offset
, 1, ENC_NA
);
5665 if (tvb_get_uint8(tvb
, offset
) == 0)
5666 proto_item_append_text(item
, " (Sample and report all available CTEs)");
5668 offset
= dissect_antenna_switching_pattern(tvb
, offset
, tree
);
5671 case 0x0054: /* LE Set Connection CTE Receive Parameters */
5672 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5674 proto_tree_add_item(tree
, hf_bthci_cmd_iq_sampling_enable
, tvb
, offset
, 1, ENC_NA
);
5676 proto_tree_add_item(tree
, hf_bthci_cmd_slot_durations
, tvb
, offset
, 1, ENC_NA
);
5678 offset
= dissect_antenna_switching_pattern(tvb
, offset
, tree
);
5681 case 0x0055: /* LE Set Connection CTE Transmit Parameters */
5682 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5684 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_cte_types
, ett_sync_cte_type
, hfx_btcmd_cte_types
, ENC_NA
);
5686 offset
= dissect_antenna_switching_pattern(tvb
, offset
, tree
);
5689 case 0x0056: /* LE Connection CTE Request Enable */
5690 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5692 proto_tree_add_item(tree
, hf_bthci_cmd_cte_enable
, tvb
, offset
, 1, ENC_NA
);
5694 item
= proto_tree_add_item(tree
, hf_bthci_cmd_cte_request_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5695 if (tvb_get_letohs(tvb
, offset
) == 0)
5696 proto_item_append_text(item
, " (Initiate once, at earliest opportunity)");
5698 proto_item_append_text(item
, " (Connection Events)");
5700 item
= proto_tree_add_item(tree
, hf_bthci_cmd_cte_length
, tvb
, offset
, 1, ENC_NA
);
5701 proto_item_append_text(item
, " (%d usec)", tvb_get_uint8(tvb
, offset
)*8);
5703 proto_tree_add_item(tree
, hf_bthci_cmd_cte_type
, tvb
, offset
, 1, ENC_NA
);
5707 case 0x0057: /* LE Connection CTE Response Enable */
5708 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5710 proto_tree_add_item(tree
, hf_bthci_cmd_cte_enable
, tvb
, offset
, 1, ENC_NA
);
5714 case 0x0059: /* LE Set Periodic Advertising Receive Enable */
5715 proto_tree_add_item(tree
, hf_bthci_cmd_sync_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5717 proto_tree_add_item(tree
, hf_bthci_cmd_reporting_enable
, tvb
, offset
, 1, ENC_NA
);
5721 case 0x005A: /* LE Periodic Advertising Sync Transfer */
5722 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5724 proto_tree_add_item(tree
, hf_bthci_cmd_service_data_past
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5726 proto_tree_add_item(tree
, hf_bthci_cmd_sync_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5730 case 0x005B: /* LE Periodic Advertising Set Info Transfer */
5731 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5733 proto_tree_add_item(tree
, hf_bthci_cmd_service_data_past
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5735 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_NA
);
5739 case 0x005C: /* LE Set Periodic Advertising Sync Transfer Parameters */
5740 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5744 case 0x005D: /* LE Set Default Periodic Advertising Sync Transfer Parameters */
5745 proto_tree_add_item(tree
, hf_bthci_cmd_sync_mode
, tvb
, offset
, 1, ENC_NA
);
5747 proto_tree_add_item(tree
, hf_bthci_cmd_skip
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5749 proto_tree_add_item(tree
, hf_bthci_cmd_le_supervision_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5751 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_sync_cte_type
, ett_sync_cte_type
, hfx_btcmd_sync_cte_type
, ENC_NA
);
5755 case 0x005E: /* LE Generate DHKey [v2] */
5756 proto_tree_add_item(tree
, hf_bthci_cmd_le_remote_p_256_public_key
, tvb
, offset
, 64, ENC_NA
);
5758 proto_tree_add_item(tree
, hf_bthci_cmd_key_type
, tvb
, offset
, 1, ENC_NA
);
5762 case 0x005F: /* LE Modify Sleep Clock Accuracy */
5763 proto_tree_add_item(tree
, hf_bthci_cmd_sca_action
, tvb
, offset
, 1, ENC_NA
);
5767 case 0x0061: /* LE Read ISO Tx Sync */
5768 case 0x0072: /* LE ISO Read Test Counters */
5769 case 0x0073: /* LE ISO Test End */
5770 case 0x0075: /* LE Read ISO Link Quality */
5771 proto_tree_add_item(tree
, hf_bthci_cmd_cis_bis_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5775 case 0x0062: /* LE Set CIG Parameters */
5778 proto_tree_add_item(tree
, hf_bthci_cmd_cig_id
, tvb
, offset
, 1, ENC_NA
);
5780 proto_tree_add_item(tree
, hf_bthci_cmd_sdu_interval_c_to_p
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5782 proto_tree_add_item(tree
, hf_bthci_cmd_sdu_interval_p_to_c
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5784 proto_tree_add_item(tree
, hf_bthci_cmd_peripherals_clock_accuracy
, tvb
, offset
, 1, ENC_NA
);
5786 proto_tree_add_item(tree
, hf_bthci_cmd_packing
, tvb
, offset
, 1, ENC_NA
);
5788 proto_tree_add_item(tree
, hf_bthci_cmd_framing
, tvb
, offset
, 1, ENC_NA
);
5790 proto_tree_add_item(tree
, hf_bthci_cmd_max_transport_latency_c_to_p
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5792 proto_tree_add_item(tree
, hf_bthci_cmd_max_transport_latency_p_to_c
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5794 proto_tree_add_item(tree
, hf_bthci_cmd_cis_count
, tvb
, offset
, 1, ENC_NA
);
5795 cis_count
= tvb_get_uint8(tvb
, offset
);
5798 for (int i
= 0; i
< cis_count
; i
++) {
5799 sub_item
= proto_tree_add_none_format(tree
, hf_bthci_cmd_cis_params
, tvb
, offset
, 9, "CIS Parameters, CIS Id: 0x%x", tvb_get_uint8(tvb
, offset
));
5800 sub_tree
= proto_item_add_subtree(sub_item
, ett_cis_params
);
5801 proto_tree_add_item(sub_tree
, hf_bthci_cmd_cis_id
, tvb
, offset
, 1, ENC_NA
);
5803 proto_tree_add_item(sub_tree
, hf_bthci_cmd_max_sdu_c_to_p
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5805 proto_tree_add_item(sub_tree
, hf_bthci_cmd_max_sdu_p_to_c
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5807 proto_tree_add_bitmask(sub_tree
, tvb
, offset
, hf_bthci_cmd_phy_c_to_p
, ett_phy_param
, hfx_btcmd_le_phys
, ENC_NA
);
5809 proto_tree_add_bitmask(sub_tree
, tvb
, offset
, hf_bthci_cmd_phy_p_to_c
, ett_phy_param
, hfx_btcmd_le_phys
, ENC_NA
);
5811 proto_tree_add_item(sub_tree
, hf_bthci_cmd_rtn_c_to_p
, tvb
, offset
, 1, ENC_NA
);
5813 proto_tree_add_item(sub_tree
, hf_bthci_cmd_rtn_p_to_c
, tvb
, offset
, 1, ENC_NA
);
5819 case 0x0063: /* LE Set CIG Parameters Test */
5822 proto_tree_add_item(tree
, hf_bthci_cmd_cig_id
, tvb
, offset
, 1, ENC_NA
);
5824 proto_tree_add_item(tree
, hf_bthci_cmd_sdu_interval_c_to_p
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5826 proto_tree_add_item(tree
, hf_bthci_cmd_sdu_interval_p_to_c
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5828 item
= proto_tree_add_item(tree
, hf_bthci_cmd_ft_c_to_p
, tvb
, offset
, 1, ENC_NA
);
5829 proto_item_append_text(item
, " ISO Intervals");
5831 item
= proto_tree_add_item(tree
, hf_bthci_cmd_ft_p_to_c
, tvb
, offset
, 1, ENC_NA
);
5832 proto_item_append_text(item
, " ISO Intervals");
5834 proto_tree_add_item(tree
, hf_bthci_cmd_iso_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5836 proto_tree_add_item(tree
, hf_bthci_cmd_peripherals_clock_accuracy
, tvb
, offset
, 1, ENC_NA
);
5838 proto_tree_add_item(tree
, hf_bthci_cmd_packing
, tvb
, offset
, 1, ENC_NA
);
5840 proto_tree_add_item(tree
, hf_bthci_cmd_framing
, tvb
, offset
, 1, ENC_NA
);
5842 proto_tree_add_item(tree
, hf_bthci_cmd_cis_count
, tvb
, offset
, 1, ENC_NA
);
5843 cis_count
= tvb_get_uint8(tvb
, offset
);
5846 for (int i
= 0; i
< cis_count
; i
++) {
5847 sub_item
= proto_tree_add_none_format(tree
, hf_bthci_cmd_cis_params
, tvb
, offset
, 14, "CIS Parameters, CIS Id: 0x%x", tvb_get_uint8(tvb
, offset
));
5848 sub_tree
= proto_item_add_subtree(sub_item
, ett_cis_params
);
5849 proto_tree_add_item(sub_tree
, hf_bthci_cmd_cis_id
, tvb
, offset
, 1, ENC_NA
);
5851 proto_tree_add_item(sub_tree
, hf_bthci_cmd_nse
, tvb
, offset
, 1, ENC_NA
);
5853 proto_tree_add_item(sub_tree
, hf_bthci_cmd_max_sdu_c_to_p
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5855 proto_tree_add_item(sub_tree
, hf_bthci_cmd_max_sdu_p_to_c
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5857 proto_tree_add_item(sub_tree
, hf_bthci_cmd_max_pdu_c_to_p
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5859 proto_tree_add_item(sub_tree
, hf_bthci_cmd_max_pdu_p_to_c
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5861 proto_tree_add_bitmask(sub_tree
, tvb
, offset
, hf_bthci_cmd_phy_c_to_p
, ett_phy_param
, hfx_btcmd_le_phys
, ENC_NA
);
5863 proto_tree_add_bitmask(sub_tree
, tvb
, offset
, hf_bthci_cmd_phy_p_to_c
, ett_phy_param
, hfx_btcmd_le_phys
, ENC_NA
);
5865 item
= proto_tree_add_item(sub_tree
, hf_bthci_cmd_bn_c_to_p
, tvb
, offset
, 1, ENC_NA
);
5866 if (tvb_get_uint8(tvb
, offset
) == 0)
5867 proto_item_append_text(item
, " (No data)");
5869 proto_tree_add_item(sub_tree
, hf_bthci_cmd_bn_p_to_c
, tvb
, offset
, 1, ENC_NA
);
5870 if (tvb_get_uint8(tvb
, offset
) == 0)
5871 proto_item_append_text(item
, " (No data)");
5877 case 0x0064: /* LE Create CIS */
5880 uint32_t k_shandle
, chandle
;
5881 proto_tree_add_item(tree
, hf_bthci_cmd_cis_count
, tvb
, offset
, 1, ENC_NA
);
5882 cis_count
= tvb_get_uint8(tvb
, offset
);
5884 for (int i
= 0; i
< cis_count
; i
++) {
5885 sub_item
= proto_tree_add_none_format(tree
, hf_bthci_cmd_cis_params
, tvb
, offset
, 4, "CIS Handle: 0x%03x, Connection Handle: 0x%03x",
5886 tvb_get_letohs(tvb
, offset
), tvb_get_letohs(tvb
, offset
+2));
5887 sub_tree
= proto_item_add_subtree(sub_item
, ett_cis_params
);
5888 proto_tree_add_item(sub_tree
, hf_bthci_cmd_cis_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5889 k_shandle
= tvb_get_letohs(tvb
, offset
) & 0xfff;
5891 proto_tree_add_item(sub_tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5892 chandle
= tvb_get_letohs(tvb
, offset
) & 0xfff;
5895 if (!pinfo
->fd
->visited
) {
5896 wmem_tree_key_t key
[5];
5897 uint32_t interface_id
;
5898 uint32_t adapter_id
;
5899 uint32_t frame_number
;
5900 stream_connection_handle_pair_t
*stream_connection_handle_pair
;
5902 interface_id
= bluetooth_data
->interface_id
;
5903 adapter_id
= bluetooth_data
->adapter_id
;
5904 frame_number
= pinfo
->num
;
5907 key
[0].key
= &interface_id
;
5909 key
[1].key
= &adapter_id
;
5911 key
[2].key
= &k_shandle
;
5913 key
[3].key
= &frame_number
;
5917 stream_connection_handle_pair
=
5918 (stream_connection_handle_pair_t
*) wmem_new(wmem_file_scope(), stream_connection_handle_pair_t
);
5919 stream_connection_handle_pair
->chandle
= chandle
;
5920 stream_connection_handle_pair
->change_in_frame
= frame_number
;
5922 wmem_tree_insert32_array(bluetooth_data
->shandle_to_chandle
, key
, stream_connection_handle_pair
);
5928 case 0x0065: /* LE Remove CIG */
5929 proto_tree_add_item(tree
, hf_bthci_cmd_cig_id
, tvb
, offset
, 1, ENC_NA
);
5933 case 0x0066: /* LE Accept CIS Request */
5934 proto_tree_add_item(tree
, hf_bthci_cmd_cis_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5938 case 0x0068: /* LE Create BIG */
5939 proto_tree_add_item(tree
, hf_bthci_cmd_big_handle
, tvb
, offset
, 1, ENC_NA
);
5941 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_NA
);
5943 proto_tree_add_item(tree
, hf_bthci_cmd_num_bis
, tvb
, offset
, 1, ENC_NA
);
5945 proto_tree_add_item(tree
, hf_bthci_cmd_sdu_interval
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5947 proto_tree_add_item(tree
, hf_bthci_cmd_max_sdu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5949 proto_tree_add_item(tree
, hf_bthci_cmd_max_transport_latency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5951 proto_tree_add_item(tree
, hf_bthci_cmd_rtn
, tvb
, offset
, 1, ENC_NA
);
5953 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_phy
, ett_phy_param
, hfx_btcmd_le_phys
, ENC_NA
);
5955 proto_tree_add_item(tree
, hf_bthci_cmd_packing
, tvb
, offset
, 1, ENC_NA
);
5957 proto_tree_add_item(tree
, hf_bthci_cmd_framing
, tvb
, offset
, 1, ENC_NA
);
5959 proto_tree_add_item(tree
, hf_bthci_cmd_encryption
, tvb
, offset
, 1, ENC_NA
);
5961 proto_tree_add_item(tree
, hf_bthci_cmd_broadcast_code
, tvb
, offset
, 16, ENC_NA
);
5965 case 0x0069: /* LE Create BIG Test */
5966 proto_tree_add_item(tree
, hf_bthci_cmd_big_handle
, tvb
, offset
, 1, ENC_NA
);
5968 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_NA
);
5970 proto_tree_add_item(tree
, hf_bthci_cmd_num_bis
, tvb
, offset
, 1, ENC_NA
);
5972 proto_tree_add_item(tree
, hf_bthci_cmd_sdu_interval
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
5974 proto_tree_add_item(tree
, hf_bthci_cmd_iso_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5976 proto_tree_add_item(tree
, hf_bthci_cmd_nse
, tvb
, offset
, 1, ENC_NA
);
5978 proto_tree_add_item(tree
, hf_bthci_cmd_max_sdu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5980 proto_tree_add_item(tree
, hf_bthci_cmd_max_pdu
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
5982 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_phy
, ett_phy_param
, hfx_btcmd_le_phys
, ENC_NA
);
5984 proto_tree_add_item(tree
, hf_bthci_cmd_packing
, tvb
, offset
, 1, ENC_NA
);
5986 proto_tree_add_item(tree
, hf_bthci_cmd_framing
, tvb
, offset
, 1, ENC_NA
);
5988 proto_tree_add_item(tree
, hf_bthci_cmd_bn
, tvb
, offset
, 1, ENC_NA
);
5990 proto_tree_add_item(tree
, hf_bthci_cmd_irc
, tvb
, offset
, 1, ENC_NA
);
5992 proto_tree_add_item(tree
, hf_bthci_cmd_pto
, tvb
, offset
, 1, ENC_NA
);
5994 proto_tree_add_item(tree
, hf_bthci_cmd_encryption
, tvb
, offset
, 1, ENC_NA
);
5996 proto_tree_add_item(tree
, hf_bthci_cmd_broadcast_code
, tvb
, offset
, 16, ENC_NA
);
6000 case 0x006A: /* LE Terminate BIG */
6001 proto_tree_add_item(tree
, hf_bthci_cmd_big_handle
, tvb
, offset
, 1, ENC_NA
);
6003 proto_tree_add_item(tree
, hf_bthci_cmd_reason
, tvb
, offset
, 1, ENC_NA
);
6007 case 0x006B: /* LE BIG Create Sync */
6011 proto_tree_add_item(tree
, hf_bthci_cmd_big_handle
, tvb
, offset
, 1, ENC_NA
);
6013 proto_tree_add_item(tree
, hf_bthci_cmd_sync_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6015 proto_tree_add_item(tree
, hf_bthci_cmd_encryption
, tvb
, offset
, 1, ENC_NA
);
6017 proto_tree_add_item(tree
, hf_bthci_cmd_broadcast_code
, tvb
, offset
, 16, ENC_NA
);
6019 proto_tree_add_item(tree
, hf_bthci_cmd_mse
, tvb
, offset
, 1, ENC_NA
);
6021 proto_tree_add_item(tree
, hf_bthci_cmd_sync_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6023 proto_tree_add_item(tree
, hf_bthci_cmd_num_bis
, tvb
, offset
, 1, ENC_NA
);
6024 num_bis
= tvb_get_uint8(tvb
, offset
);
6026 for (int i
= 0; i
< num_bis
; i
++) {
6027 proto_tree_add_item(tree
, hf_bthci_cmd_bis_index
, tvb
, offset
, 1, ENC_NA
);
6033 case 0x006C: /* LE BIG Terminate Sync */
6034 proto_tree_add_item(tree
, hf_bthci_cmd_big_handle
, tvb
, offset
, 1, ENC_NA
);
6038 case 0x006E: /* LE Setup ISO Data Path */
6040 uint8_t codec_length
;
6041 const char *str
= "Disabled";
6043 proto_tree_add_item(tree
, hf_bthci_cmd_cis_bis_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6045 proto_tree_add_item(tree
, hf_bthci_cmd_data_path_direction
, tvb
, offset
, 1, ENC_NA
);
6047 item
= proto_tree_add_item(tree
, hf_bthci_cmd_data_path_id
, tvb
, offset
, 1, ENC_NA
);
6048 if (tvb_get_uint8(tvb
, offset
) == 0)
6050 else if (tvb_get_uint8(tvb
, offset
) < 0xff)
6051 str
= "Logical Channel Number";
6052 proto_item_append_text(item
, " (%s)", str
);
6054 offset
= dissect_coding_format(tree
, hf_bthci_cmd_coding_format
, tvb
, offset
, ett_coding_format
);
6055 proto_tree_add_item(tree
, hf_bthci_cmd_controller_delay
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
6057 codec_length
= tvb_get_uint8(tvb
, offset
);
6058 proto_tree_add_item(tree
, hf_bthci_cmd_codec_config_length
, tvb
, offset
, 1, ENC_NA
);
6060 proto_tree_add_item(tree
, hf_bthci_cmd_codec_config
, tvb
, offset
, codec_length
, ENC_NA
);
6061 offset
+= codec_length
;
6065 case 0x006F: /* LE Remove ISO Data Path */
6066 proto_tree_add_item(tree
, hf_bthci_cmd_cis_bis_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6068 proto_tree_add_item(tree
, hf_bthci_cmd_data_path_direction
, tvb
, offset
, 1, ENC_NA
);
6072 case 0x0070: /* LE ISO Transmit Test */
6073 case 0x0071: /* LE ISO Receive Test */
6074 proto_tree_add_item(tree
, hf_bthci_cmd_cis_bis_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6076 proto_tree_add_item(tree
, hf_bthci_cmd_payload_type
, tvb
, offset
, 1, ENC_NA
);
6080 case 0x0074: /* LE Set Host Feature */
6081 proto_tree_add_item(tree
, hf_bthci_cmd_feature_bit_number
, tvb
, offset
, 1, ENC_NA
);
6083 proto_tree_add_item(tree
, hf_bthci_cmd_feature_bit_value
, tvb
, offset
, 1, ENC_NA
);
6087 case 0x0076: /* LE Enhanced Read Transmit Power Level */
6088 case 0x0077: /* LE Read Remote Transmit Power Level */
6089 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6091 proto_tree_add_item(tree
, hf_bthci_cmd_phy_and_coding
, tvb
, offset
, 1, ENC_NA
);
6095 case 0x0078: /* LE Set Path Loss Reporting Parameters */
6096 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6098 proto_tree_add_item(tree
, hf_bthci_cmd_high_threshold
, tvb
, offset
, 1, ENC_NA
);
6100 proto_tree_add_item(tree
, hf_bthci_cmd_high_hysteresis
, tvb
, offset
, 1, ENC_NA
);
6102 proto_tree_add_item(tree
, hf_bthci_cmd_low_threshold
, tvb
, offset
, 1, ENC_NA
);
6104 proto_tree_add_item(tree
, hf_bthci_cmd_low_hysteresis
, tvb
, offset
, 1, ENC_NA
);
6106 proto_tree_add_item(tree
, hf_bthci_cmd_min_time_spent
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6110 case 0x0079: /* LE Set Path Loss Reporting Enable */
6111 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6113 proto_tree_add_item(tree
, hf_bthci_cmd_reporting_enable
, tvb
, offset
, 1, ENC_NA
);
6117 case 0x007A: /* LE Set Transmit Power Reporting Enable */
6118 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6120 proto_tree_add_item(tree
, hf_bthci_cmd_local_reporting_enable
, tvb
, offset
, 1, ENC_NA
);
6122 proto_tree_add_item(tree
, hf_bthci_cmd_remote_reporting_enable
, tvb
, offset
, 1, ENC_NA
);
6126 case 0x007C: /* LE Set Data Related Changes */
6127 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_NA
);
6129 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_addr_change_reasons
, ett_addr_change_reasons
, hfx_btcmd_addr_change_reasons
, ENC_NA
);
6133 case 0x007E: /* LE Subrate Request */
6134 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6138 case 0x007D: /* LE Set Default Subrate */
6139 proto_tree_add_item(tree
, hf_bthci_cmd_subrate_factor_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6141 proto_tree_add_item(tree
, hf_bthci_cmd_subrate_factor_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6143 item
= proto_tree_add_item(tree
, hf_bthci_cmd_le_con_latency
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6144 proto_item_append_text(item
, " (subrated events)");
6146 item
= proto_tree_add_item(tree
, hf_bthci_cmd_continuation_number
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6147 proto_item_append_text(item
, " (underlying events)");
6149 proto_tree_add_item(tree
, hf_bthci_cmd_le_supervision_timeout
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6153 case 0x0080: /* LE Set Decision Data */
6154 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_NA
);
6156 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_adv_decision_flags
, ett_adv_properties
, hfx_bthci_cmd_adv_decision_flags
, ENC_NA
);
6158 uint8_t data_length
= tvb_get_uint8(tvb
, offset
);
6159 proto_tree_add_item(tree
, hf_bthci_cmd_le_data_length
, tvb
, offset
, 1, ENC_NA
);
6161 proto_tree_add_item(tree
, hf_bthci_cmd_adv_decision_data
, tvb
, offset
, data_length
, ENC_NA
);
6162 offset
+=data_length
;
6165 case 0x0081: /* LE Set Decision Instructions */
6167 uint8_t num_tests
, test_field
;
6168 proto_tree_add_item(tree
, hf_bthci_cmd_num_tests
, tvb
, offset
, 1, ENC_NA
);
6169 num_tests
= tvb_get_uint8(tvb
, offset
);
6171 for (int i
= 0; i
< num_tests
; i
++) {
6172 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_adv_test_flags
, ett_adv_test_flags
, hfx_bthci_cmd_adv_test_flags
, ENC_NA
);
6174 test_field
= tvb_get_uint8(tvb
, offset
);
6175 item
= proto_tree_add_item(tree
, hf_bthci_cmd_adv_test_field
, tvb
, offset
, 1, ENC_NA
);
6176 if (test_field
> 16) {
6177 if (test_field
<= 24)
6178 proto_item_append_text(item
, " (Arbitrary Data, exactly %u octets)", test_field
- 16);
6179 else if (test_field
> 32 && test_field
<= 40)
6180 proto_item_append_text(item
, " (Arbitrary Data, at least %u octets)", test_field
- 32);
6181 else if (test_field
> 48 && test_field
<= 56)
6182 proto_item_append_text(item
, " (Arbitrary Data, at most %u octets)", test_field
- 48);
6183 else if (test_field
>= 240)
6184 proto_item_append_text(item
, " (Vendor specific)");
6187 proto_tree_add_item(tree
, hf_bthci_cmd_adv_test_params
, tvb
, offset
, 16, ENC_NA
);
6193 case 0x0082: /* LE Set Periodic Advertising Subevent */
6195 uint8_t sub_events
, length
;
6196 proto_tree_add_item(tree
, hf_bthci_cmd_advertising_handle
, tvb
, offset
, 1, ENC_NA
);
6198 proto_tree_add_item(tree
, hf_bthci_cmd_num_subevents
, tvb
, offset
, 1, ENC_NA
);
6199 sub_events
= tvb_get_uint8(tvb
, offset
);
6201 for (int i
= 0; i
< sub_events
; i
++) {
6202 length
= 4 + tvb_get_uint8(tvb
, offset
+3);
6203 sub_item
= proto_tree_add_none_format(tree
, hf_bthci_cmd_subevents
, tvb
, offset
, length
,
6204 "Sub-event: %u", tvb_get_uint8(tvb
, offset
));
6205 sub_tree
= proto_item_add_subtree(sub_item
, ett_adv_subevents
);
6207 proto_tree_add_item(sub_tree
, hf_bthci_cmd_subevent
, tvb
, offset
, 1, ENC_NA
);
6209 proto_tree_add_item(sub_tree
, hf_bthci_cmd_response_slot_start
, tvb
, offset
, 1, ENC_NA
);
6211 proto_tree_add_item(sub_tree
, hf_bthci_cmd_response_slot_count
, tvb
, offset
, 1, ENC_NA
);
6213 proto_tree_add_item(sub_tree
, hf_bthci_cmd_subevent_data_length
, tvb
, offset
, 1, ENC_NA
);
6214 length
= tvb_get_uint8(tvb
, offset
);
6217 bluetooth_eir_ad_data_t
*ad_data
;
6218 ad_data
= wmem_new0(pinfo
->pool
, bluetooth_eir_ad_data_t
);
6219 ad_data
->interface_id
= bluetooth_data
->interface_id
;
6220 ad_data
->adapter_id
= bluetooth_data
->adapter_id
;
6221 ad_data
->bd_addr
= NULL
;
6222 call_dissector_with_data(btcommon_ad_handle
, tvb_new_subset_length(tvb
, offset
, length
), pinfo
, sub_tree
, ad_data
);
6228 case 0x0083: /* LE Set Periodic Advertising Response Data */
6231 proto_tree_add_item(tree
, hf_bthci_cmd_sync_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6233 proto_tree_add_item(tree
, hf_bthci_cmd_request_event
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6235 proto_tree_add_item(tree
, hf_bthci_cmd_request_subevent
, tvb
, offset
, 1, ENC_NA
);
6237 proto_tree_add_item(tree
, hf_bthci_cmd_response_subevent
, tvb
, offset
, 1, ENC_NA
);
6239 proto_tree_add_item(tree
, hf_bthci_cmd_response_slot
, tvb
, offset
, 1, ENC_NA
);
6241 proto_tree_add_item(tree
, hf_bthci_cmd_response_data_length
, tvb
, offset
, 1, ENC_NA
);
6242 length
= tvb_get_uint8(tvb
, offset
);
6245 bluetooth_eir_ad_data_t
*ad_data
;
6246 ad_data
= wmem_new0(pinfo
->pool
, bluetooth_eir_ad_data_t
);
6247 ad_data
->interface_id
= bluetooth_data
->interface_id
;
6248 ad_data
->adapter_id
= bluetooth_data
->adapter_id
;
6249 ad_data
->bd_addr
= NULL
;
6250 call_dissector_with_data(btcommon_ad_handle
, tvb_new_subset_length(tvb
, offset
, length
), pinfo
, tree
, ad_data
);
6255 case 0x0084: /* LE Set Periodic Sync Subevent */
6258 proto_tree_add_item(tree
, hf_bthci_cmd_sync_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6260 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_advertising_properties
, ett_adv_properties
, hfx_bthci_cmd_adv_properties
, ENC_LITTLE_ENDIAN
);
6262 proto_tree_add_item(tree
, hf_bthci_cmd_num_subevents
, tvb
, offset
, 1, ENC_NA
);
6263 sub_events
= tvb_get_uint8(tvb
, offset
);
6265 sub_item
= proto_tree_add_none_format(tree
, hf_bthci_cmd_subevents
, tvb
, offset
, sub_events
, "Sub-events");
6266 sub_tree
= proto_item_add_subtree(sub_item
, ett_adv_subevents
);
6267 for (int i
= 0; i
< sub_events
; i
++) {
6268 proto_tree_add_item(sub_tree
, hf_bthci_cmd_subevent
, tvb
, offset
, 1, ENC_NA
);
6274 case 0x0088: /* LE Read All Remote Features */
6275 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6277 proto_tree_add_item(tree
, hf_bthci_cmd_pages_requested
, tvb
, offset
, 1, ENC_NA
);
6281 case 0x008B: /* LE CS Write Cached Remote Supported Capabilities */
6282 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6284 proto_tree_add_item(tree
, hf_bthci_cmd_num_config
, tvb
, offset
, 1, ENC_NA
);
6286 proto_tree_add_item(tree
, hf_bthci_cmd_max_consecutive_procedures
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6288 proto_tree_add_item(tree
, hf_bthci_cmd_num_antennas_supported
, tvb
, offset
, 1, ENC_NA
);
6290 proto_tree_add_item(tree
, hf_bthci_cmd_max_antenna_paths_supported
, tvb
, offset
, 1, ENC_NA
);
6292 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_cs_roles
, ett_cs_roles
, hfx_bthci_cmd_cs_roles
, ENC_NA
);
6294 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_cs_modes_supported
, ett_cs_modes
, hfx_bthci_cmd_cs_modes_supported
, ENC_NA
);
6296 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_rtt_capability
, ett_cs_capability
, hfx_bthci_cmd_rtt_capability
, ENC_NA
);
6298 proto_tree_add_item(tree
, hf_bthci_cmd_rtt_aa_only_n
, tvb
, offset
, 1, ENC_NA
);
6300 proto_tree_add_item(tree
, hf_bthci_cmd_rtt_sounding_n
, tvb
, offset
, 1, ENC_NA
);
6302 proto_tree_add_item(tree
, hf_bthci_cmd_rtt_random_n
, tvb
, offset
, 1, ENC_NA
);
6304 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_nadm_sounding_capability
, ett_cs_capability
, hfx_bthci_cmd_nadm_sounding_capability
, ENC_NA
);
6306 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_nadm_random_capability
, ett_cs_capability
, hfx_bthci_cmd_nadm_random_capability
, ENC_NA
);
6308 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_cs_sync_phys_supported
, ett_cs_capability
, hfx_bthci_cmd_cs_sync_phys_supported
, ENC_NA
);
6310 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_cs_subfeatures_supported
, ett_cs_capability
, hfx_bthci_cmd_cs_subfeatures
, ENC_NA
);
6312 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_tip1_times_supported
, ett_cs_times
, hfx_bthci_cmd_tip_times_supported
, ENC_NA
);
6314 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_tip2_times_supported
, ett_cs_times
, hfx_bthci_cmd_tip_times_supported
, ENC_NA
);
6316 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_tfcs_times_supported
, ett_cs_times
, hfx_bthci_cmd_tfcs_times_supported
, ENC_NA
);
6318 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_tpm_times_supported
, ett_cs_times
, hfx_bthci_cmd_tpm_times_supported
, ENC_NA
);
6320 proto_tree_add_item(tree
, hf_bthci_cmd_tsw_time_supported
, tvb
, offset
, 1, ENC_NA
);
6322 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_tx_snr_capability
, ett_cs_capability
, hfx_bthci_cmd_tx_snr_capability
, ENC_NA
);
6326 case 0x008D: /* LE CS Set Default Settings */
6327 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6329 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_cs_roles
, ett_cs_roles
, hfx_bthci_cmd_cs_roles
, ENC_NA
);
6331 proto_tree_add_item(tree
, hf_bthci_cmd_cs_sync_antenna_selection
, tvb
, offset
, 1, ENC_NA
);
6333 proto_tree_add_item(tree
, hf_bthci_cmd_tx_power
, tvb
, offset
, 1, ENC_NA
);
6337 case 0x008F: /* LE CS Write Cached Remote FAE Table */
6338 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6340 proto_tree_add_item(tree
, hf_bthci_cmd_fae_table
, tvb
, offset
, 72, ENC_NA
);
6344 case 0x0090: /* LE CS Create Config */
6345 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6347 proto_tree_add_item(tree
, hf_bthci_cmd_config_id
, tvb
, offset
, 1, ENC_NA
);
6349 proto_tree_add_item(tree
, hf_bthci_cmd_create_context
, tvb
, offset
, 1, ENC_NA
);
6351 proto_tree_add_item(tree
, hf_bthci_cmd_main_mode_type
, tvb
, offset
, 1, ENC_NA
);
6353 proto_tree_add_item(tree
, hf_bthci_cmd_sub_mode_type
, tvb
, offset
, 1, ENC_NA
);
6355 proto_tree_add_item(tree
, hf_bthci_cmd_min_main_mode_steps
, tvb
, offset
, 1, ENC_NA
);
6357 proto_tree_add_item(tree
, hf_bthci_cmd_max_main_mode_steps
, tvb
, offset
, 1, ENC_NA
);
6359 proto_tree_add_item(tree
, hf_bthci_cmd_main_mode_repetition
, tvb
, offset
, 1, ENC_NA
);
6361 proto_tree_add_item(tree
, hf_bthci_cmd_mode0_steps
, tvb
, offset
, 1, ENC_NA
);
6363 proto_tree_add_item(tree
, hf_bthci_cmd_cs_role
, tvb
, offset
, 1, ENC_NA
);
6365 proto_tree_add_item(tree
, hf_bthci_cmd_rtt_type
, tvb
, offset
, 1, ENC_NA
);
6367 proto_tree_add_item(tree
, hf_bthci_cmd_cs_sync_phy
, tvb
, offset
, 1, ENC_NA
);
6369 proto_tree_add_item(tree
, hf_bthci_cmd_channel_map
, tvb
, offset
, 10, ENC_NA
);
6371 proto_tree_add_item(tree
, hf_bthci_cmd_channel_map_repetition
, tvb
, offset
, 1, ENC_NA
);
6373 proto_tree_add_item(tree
, hf_bthci_cmd_channel_selection_type
, tvb
, offset
, 1, ENC_NA
);
6375 proto_tree_add_item(tree
, hf_bthci_cmd_ch3c_shape
, tvb
, offset
, 1, ENC_NA
);
6377 proto_tree_add_item(tree
, hf_bthci_cmd_ch3c_jump
, tvb
, offset
, 1, ENC_NA
);
6379 proto_tree_add_item(tree
, hf_bthci_cmd_companion_signal_enable
, tvb
, offset
, 1, ENC_NA
);
6383 case 0x0091: /* LE CS Remove Config */
6384 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6386 proto_tree_add_item(tree
, hf_bthci_cmd_config_id
, tvb
, offset
, 1, ENC_NA
);
6390 case 0x0092: /* LE CS Channel Classification */
6391 proto_tree_add_item(tree
, hf_bthci_cmd_ch_classification
, tvb
, offset
, 10, ENC_NA
);
6395 case 0x0093: /* LE CS Set Procedure Parametes */
6396 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6398 proto_tree_add_item(tree
, hf_bthci_cmd_config_id
, tvb
, offset
, 1, ENC_NA
);
6400 proto_tree_add_item(tree
, hf_bthci_cmd_max_procedure_len
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6402 proto_tree_add_item(tree
, hf_bthci_cmd_min_procedure_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6404 proto_tree_add_item(tree
, hf_bthci_cmd_max_procedure_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6406 proto_tree_add_item(tree
, hf_bthci_cmd_max_procedure_count
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6408 proto_tree_add_item(tree
, hf_bthci_cmd_min_subevent_len
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
6410 proto_tree_add_item(tree
, hf_bthci_cmd_max_subevent_len
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
6412 proto_tree_add_item(tree
, hf_bthci_cmd_tone_antenna_selection
, tvb
, offset
, 1, ENC_NA
);
6414 proto_tree_add_item(tree
, hf_bthci_cmd_phy_and_coding
, tvb
, offset
, 1, ENC_NA
);
6416 proto_tree_add_item(tree
, hf_bthci_cmd_tx_pwr_delta
, tvb
, offset
, 1, ENC_NA
);
6418 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_preferred_peer_antenna
, ett_pref_antenna
,
6419 hfx_bthci_cmd_preferred_peer_antenna
, ENC_NA
);
6421 proto_tree_add_item(tree
, hf_bthci_cmd_snr_control_initiator
, tvb
, offset
, 1, ENC_NA
);
6423 proto_tree_add_item(tree
, hf_bthci_cmd_snr_control_reflector
, tvb
, offset
, 1, ENC_NA
);
6427 case 0x0094: /* LE CS Procedure Enable */
6428 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6430 proto_tree_add_item(tree
, hf_bthci_cmd_config_id
, tvb
, offset
, 1, ENC_NA
);
6432 proto_tree_add_item(tree
, hf_bthci_cmd_cs_enable
, tvb
, offset
, 1, ENC_NA
);
6436 case 0x0095: /* LE CS Test */
6438 uint8_t role
, rtt_type
, length
;
6439 proto_tree_add_item(tree
, hf_bthci_cmd_main_mode_type
, tvb
, offset
, 1, ENC_NA
);
6441 proto_tree_add_item(tree
, hf_bthci_cmd_sub_mode_type
, tvb
, offset
, 1, ENC_NA
);
6443 proto_tree_add_item(tree
, hf_bthci_cmd_main_mode_repetition
, tvb
, offset
, 1, ENC_NA
);
6445 proto_tree_add_item(tree
, hf_bthci_cmd_mode0_steps
, tvb
, offset
, 1, ENC_NA
);
6447 proto_tree_add_item(tree
, hf_bthci_cmd_cs_role
, tvb
, offset
, 1, ENC_NA
);
6448 role
= tvb_get_uint8(tvb
, offset
);
6450 proto_tree_add_item(tree
, hf_bthci_cmd_rtt_type
, tvb
, offset
, 1, ENC_NA
);
6451 rtt_type
= tvb_get_uint8(tvb
, offset
);
6453 proto_tree_add_item(tree
, hf_bthci_cmd_cs_sync_phy
, tvb
, offset
, 1, ENC_NA
);
6455 proto_tree_add_item(tree
, hf_bthci_cmd_cs_sync_antenna_selection
, tvb
, offset
, 1, ENC_NA
);
6457 proto_tree_add_item(tree
, hf_bthci_cmd_subevent_len
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
6459 proto_tree_add_item(tree
, hf_bthci_cmd_cs_subevent_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6461 proto_tree_add_item(tree
, hf_bthci_cmd_max_num_subevents
, tvb
, offset
, 1, ENC_NA
);
6463 proto_tree_add_item(tree
, hf_bthci_cmd_tx_power_setting
, tvb
, offset
, 1, ENC_NA
);
6465 proto_tree_add_item(tree
, hf_bthci_cmd_t_ip1_time
, tvb
, offset
, 1, ENC_NA
);
6467 proto_tree_add_item(tree
, hf_bthci_cmd_t_ip2_time
, tvb
, offset
, 1, ENC_NA
);
6469 proto_tree_add_item(tree
, hf_bthci_cmd_t_fcs_time
, tvb
, offset
, 1, ENC_NA
);
6471 proto_tree_add_item(tree
, hf_bthci_cmd_t_pm_time
, tvb
, offset
, 1, ENC_NA
);
6473 proto_tree_add_item(tree
, hf_bthci_cmd_t_sw_time
, tvb
, offset
, 1, ENC_NA
);
6475 proto_tree_add_item(tree
, hf_bthci_cmd_tone_antenna_selection
, tvb
, offset
, 1, ENC_NA
);
6477 /* 1 byte reserved for future use */
6479 proto_tree_add_item(tree
, hf_bthci_cmd_snr_control_initiator
, tvb
, offset
, 1, ENC_NA
);
6481 proto_tree_add_item(tree
, hf_bthci_cmd_snr_control_reflector
, tvb
, offset
, 1, ENC_NA
);
6483 proto_tree_add_item(tree
, hf_bthci_cmd_drbg_nonce
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6485 proto_tree_add_item(tree
, hf_bthci_cmd_channel_map_repetition
, tvb
, offset
, 1, ENC_NA
);
6487 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_cs_override_config
, ett_override_config
, hfx_bthci_cmd_override_config
, ENC_NA
);
6489 proto_tree_add_item(tree
, hf_bthci_cmd_cs_override_param_length
, tvb
, offset
, 1, ENC_NA
);
6490 length
= tvb_get_uint8(tvb
, offset
);
6492 proto_tree_add_item(tree
, hf_bthci_cmd_cs_override_param_data
, tvb
, offset
, length
, ENC_NA
);
6494 if (!pinfo
->fd
->visited
) {
6495 /* store CS role and RTT type configuration for later dissection of CS results */
6496 wmem_tree_key_t key
[6];
6497 uint32_t interface_id
;
6498 uint32_t adapter_id
;
6499 uint32_t frame_number
;
6500 uint32_t connection_handle
= 0xfff;
6501 uint32_t config_id
= 0;
6502 cs_configuration_t
*cs_configuration
;
6504 interface_id
= bluetooth_data
->interface_id
;
6505 adapter_id
= bluetooth_data
->adapter_id
;
6506 frame_number
= pinfo
->num
;
6509 key
[0].key
= &interface_id
;
6511 key
[1].key
= &adapter_id
;
6513 key
[2].key
= &connection_handle
;
6515 key
[3].key
= &config_id
;
6517 key
[4].key
= &frame_number
;
6521 cs_configuration
= (cs_configuration_t
*) wmem_new(wmem_file_scope(), cs_configuration_t
);
6522 cs_configuration
->cs_role
= role
;
6523 cs_configuration
->rtt_type
= rtt_type
;
6524 wmem_tree_insert32_array(bluetooth_data
->cs_configurations
, key
, cs_configuration
);
6529 case 0x0097: /* LE Set Host Feature [v2] */
6530 proto_tree_add_item(tree
, hf_bthci_cmd_feature_bit_number2
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6532 proto_tree_add_item(tree
, hf_bthci_cmd_feature_bit_value
, tvb
, offset
, 1, ENC_NA
);
6536 case 0x0098: /* LE Add Device To Monitored Advertisers List */
6537 proto_tree_add_item(tree
, hf_bthci_cmd_le_address_type
, tvb
, offset
, 1, ENC_NA
);
6539 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
6540 proto_tree_add_item(tree
, hf_bthci_cmd_rssi_threshold_low
, tvb
, offset
, 1, ENC_NA
);
6542 proto_tree_add_item(tree
, hf_bthci_cmd_rssi_threshold_high
, tvb
, offset
, 1, ENC_NA
);
6544 proto_tree_add_item(tree
, hf_bthci_cmd_rssi_threshold_timeout
, tvb
, offset
, 1, ENC_NA
);
6548 case 0x0099: /* LE Remove Device From Monitored Advertisers List */
6549 proto_tree_add_item(tree
, hf_bthci_cmd_le_address_type
, tvb
, offset
, 1, ENC_NA
);
6551 offset
= dissect_bd_addr(hf_bthci_cmd_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_data
->interface_id
, bluetooth_data
->adapter_id
, NULL
);
6554 case 0x009C: /* LE Enable Monitored Advertisers */
6555 proto_tree_add_item(tree
, hf_bthci_cmd_adv_monitoring_enable
, tvb
, offset
, 1, ENC_NA
);
6559 case 0x009D: /* LE Frame Space Update */
6560 proto_tree_add_item(tree
, hf_bthci_cmd_connection_handle
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6562 proto_tree_add_item(tree
, hf_bthci_cmd_frame_space_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6564 proto_tree_add_item(tree
, hf_bthci_cmd_frame_space_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6566 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_le_phys
, ett_phy_param
, hfx_btcmd_le_phys
, ENC_NA
);
6568 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_bthci_cmd_spacing_types
, ett_spacing_types
, hfx_bthci_cmd_spacing_types
, ENC_NA
);
6572 case 0x0002: /* LE Read Buffer Size [v1] */
6573 case 0x0003: /* LE Read Local Supported Features */
6574 case 0x0007: /* LE Read Advertising Channel Tx Power */
6575 case 0x000E: /* LE Create Connection Cancel */
6576 case 0x000F: /* LE Read Filter Accept List Size */
6577 case 0x0010: /* LE Clear Filter Accept List */
6578 case 0x0018: /* LE Rand */
6579 case 0x001C: /* LE Read Supported States */
6580 case 0x001F: /* LE Test End */
6581 case 0x0023: /* LE Read Suggested Default Data Length */
6582 case 0x0025: /* LE Read Local P-256 Public Key */
6583 case 0x0029: /* LE Clear Resolving List */
6584 case 0x002A: /* LE Read Resolving List Size */
6585 case 0x002F: /* LE Read Maximum Data Length */
6586 case 0x003A: /* LE Read Maximum Advertising Data Length */
6587 case 0x003B: /* LE Read Number of Supported Advertising Sets */
6588 case 0x003D: /* LE Clear Advertising Sets */
6589 case 0x0045: /* LE Periodic Advertising Create Sync Cancel */
6590 case 0x0049: /* LE Clear Periodic Advertiser List */
6591 case 0x004A: /* LE Read Periodic Advertiser List Size */
6592 case 0x004B: /* LE Read Transmit Power */
6593 case 0x004C: /* LE Read RF Path Compensation */
6594 case 0x0058: /* LE Read Antenna Information */
6595 case 0x0060: /* LE Read Buffer Size [v2] */
6596 case 0x0087: /* LE Read All Local Supported Features */
6597 case 0x0089: /* LE CS Read Local Supported Capabilities */
6598 case 0x0096: /* LE CS Test End */
6599 case 0x009A: /* LE Clear Monitored Advertisers List */
6600 case 0x009B: /* LE Read Monitored Advertisres List Size */
6602 /* NOTE: No parameters */
6606 proto_tree_add_expert(tree
, pinfo
, &ei_command_unknown_command
, tvb
, offset
, -1);
6607 offset
+= tvb_reported_length_remaining(tvb
, offset
);
6613 /* Code to actually dissect the packets */
6615 dissect_bthci_cmd(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
)
6618 proto_tree
*bthci_cmd_tree
;
6621 uint8_t param_length
;
6624 proto_item
*ti_opcode
;
6625 proto_tree
*opcode_tree
;
6627 bluetooth_data_t
*bluetooth_data
;
6628 uint32_t interface_id
;
6629 uint32_t adapter_id
;
6630 uint32_t frame_number
;
6631 wmem_tree_key_t key
[5];
6632 bthci_cmd_data_t
*bthci_cmd_data
= NULL
;
6633 proto_tree
*sub_item
;
6634 wmem_tree_t
*subtree
;
6637 /* Reject the packet if data is NULL */
6640 bluetooth_data
= (bluetooth_data_t
*) data
;
6642 interface_id
= bluetooth_data
->interface_id
;
6643 adapter_id
= bluetooth_data
->adapter_id
;
6644 frame_number
= pinfo
->num
;
6646 ti_cmd
= proto_tree_add_item(tree
, proto_bthci_cmd
, tvb
, offset
, -1, ENC_NA
);
6647 bthci_cmd_tree
= proto_item_add_subtree(ti_cmd
, ett_bthci_cmd
);
6649 switch (pinfo
->p2p_dir
) {
6651 col_set_str(pinfo
->cinfo
, COL_INFO
, "Sent ");
6654 col_set_str(pinfo
->cinfo
, COL_INFO
, "Rcvd ");
6657 col_set_str(pinfo
->cinfo
, COL_INFO
, "UnknownDirection ");
6661 set_address(&pinfo
->src
, AT_STRINGZ
, 5, "host");
6662 set_address(&pinfo
->dst
, AT_STRINGZ
, 11, "controller");
6663 set_address(&pinfo
->net_src
, AT_STRINGZ
, 5, "host");
6664 set_address(&pinfo
->net_dst
, AT_STRINGZ
, 11, "controller");
6665 set_address(&pinfo
->dl_src
, AT_STRINGZ
, 5, "host");
6666 set_address(&pinfo
->dl_dst
, AT_STRINGZ
, 11, "controller");
6667 if (!pinfo
->fd
->visited
) {
6670 addr
= (address
*) wmem_memdup(wmem_file_scope(), &pinfo
->dl_src
, sizeof(address
));
6671 addr
->data
= wmem_memdup(wmem_file_scope(), pinfo
->dl_src
.data
, pinfo
->dl_src
.len
);
6672 p_add_proto_data(wmem_file_scope(), pinfo
, proto_bluetooth
, BLUETOOTH_DATA_SRC
, addr
);
6674 addr
= (address
*) wmem_memdup(wmem_file_scope(), &pinfo
->dl_dst
, sizeof(address
));
6675 addr
->data
= wmem_memdup(wmem_file_scope(), pinfo
->dl_dst
.data
, pinfo
->dl_dst
.len
);
6676 p_add_proto_data(wmem_file_scope(), pinfo
, proto_bluetooth
, BLUETOOTH_DATA_DST
, addr
);
6679 opcode
= tvb_get_letohs(tvb
, offset
);
6680 ocf
= opcode
& 0x03ff;
6681 ogf
= (uint8_t) (opcode
>> 10);
6683 if (ogf
== HCI_OGF_VENDOR_SPECIFIC
)
6684 proto_item_append_text(ti_cmd
," - %s", val_to_str_ext(opcode
, &bthci_cmd_opcode_vals_ext
, "Vendor Command 0x%04x"));
6686 proto_item_append_text(ti_cmd
," - %s", val_to_str_ext(opcode
, &bthci_cmd_opcode_vals_ext
, "Unknown 0x%04x"));
6688 if (have_tap_listener(bluetooth_hci_summary_tap
)) {
6689 bluetooth_hci_summary_tap_t
*tap_hci_summary
;
6691 tap_hci_summary
= wmem_new(pinfo
->pool
, bluetooth_hci_summary_tap_t
);
6693 tap_hci_summary
->interface_id
= bluetooth_data
->interface_id
;
6694 tap_hci_summary
->adapter_id
= bluetooth_data
->adapter_id
;
6696 tap_hci_summary
->type
= BLUETOOTH_HCI_SUMMARY_OPCODE
;
6697 tap_hci_summary
->ogf
= ogf
;
6698 tap_hci_summary
->ocf
= ocf
;
6699 if (try_val_to_str_ext(opcode
, &bthci_cmd_opcode_vals_ext
))
6700 tap_hci_summary
->name
= val_to_str_ext(opcode
, &bthci_cmd_opcode_vals_ext
, "Unknown 0x%04x");
6702 tap_hci_summary
->name
= NULL
;
6703 tap_queue_packet(bluetooth_hci_summary_tap
, pinfo
, tap_hci_summary
);
6706 if (!pinfo
->fd
->visited
) {
6707 bthci_cmd_data
= (bthci_cmd_data_t
*) wmem_new(wmem_file_scope(), bthci_cmd_data_t
);
6708 bthci_cmd_data
->opcode
= opcode
;
6709 bthci_cmd_data
->command_in_frame
= frame_number
;
6710 bthci_cmd_data
->command_abs_ts
= pinfo
->abs_ts
;
6711 bthci_cmd_data
->pending_in_frame
= bluetooth_max_disconnect_in_frame
;
6712 bthci_cmd_data
->pending_abs_ts
= pinfo
->abs_ts
;
6713 bthci_cmd_data
->response_in_frame
= bluetooth_max_disconnect_in_frame
;
6714 bthci_cmd_data
->response_abs_ts
= pinfo
->abs_ts
;
6717 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "HCI_CMD");
6719 ti_opcode
= proto_tree_add_item(bthci_cmd_tree
, hf_bthci_cmd_opcode
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6720 opcode_tree
= proto_item_add_subtree(ti_opcode
, ett_opcode
);
6721 proto_tree_add_item(opcode_tree
, hf_bthci_cmd_ogf
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6723 if (ogf
== HCI_OGF_LINK_CONTROL
)
6724 hfx
= hf_bthci_cmd_ocf_link_control
;
6725 else if (ogf
== HCI_OGF_LINK_POLICY
)
6726 hfx
= hf_bthci_cmd_ocf_link_policy
;
6727 else if (ogf
== HCI_OGF_HOST_CONTROLLER
)
6728 hfx
= hf_bthci_cmd_ocf_host_controller_and_baseband
;
6729 else if (ogf
== HCI_OGF_INFORMATIONAL
)
6730 hfx
= hf_bthci_cmd_ocf_informational
;
6731 else if (ogf
== HCI_OGF_STATUS
)
6732 hfx
= hf_bthci_cmd_ocf_status
;
6733 else if (ogf
== HCI_OGF_TESTING
)
6734 hfx
= hf_bthci_cmd_ocf_testing
;
6735 else if (ogf
== HCI_OGF_LOW_ENERGY
)
6736 hfx
= hf_bthci_cmd_ocf_low_energy
;
6737 else if (ogf
== HCI_OGF_LOGO_TESTING
)
6738 hfx
= hf_bthci_cmd_ocf_logo_testing
;
6740 hfx
= hf_bthci_cmd_ocf
;
6741 proto_tree_add_item(opcode_tree
, hfx
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
6744 proto_tree_add_item(bthci_cmd_tree
, hf_bthci_cmd_param_length
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
6745 param_length
= tvb_get_uint8(tvb
, offset
);
6748 if (ogf
== HCI_OGF_VENDOR_SPECIFIC
) {
6749 col_append_fstr(pinfo
->cinfo
, COL_INFO
, "Vendor Command 0x%04X (opcode 0x%04X)", ocf
, opcode
);
6751 if (!dissector_try_payload_new(vendor_dissector_table
, tvb
, pinfo
, tree
, true, bluetooth_data
)) {
6752 if (bluetooth_data
) {
6753 hci_vendor_data_t
*hci_vendor_data
;
6756 key
[0].key
= &interface_id
;
6758 key
[1].key
= &adapter_id
;
6762 hci_vendor_data
= (hci_vendor_data_t
*) wmem_tree_lookup32_array(bluetooth_data
->hci_vendors
, key
);
6763 if (hci_vendor_data
) {
6766 sub_offset
= dissector_try_uint_new(hci_vendor_table
, hci_vendor_data
->manufacturer
, tvb
, pinfo
, tree
, true, bluetooth_data
);
6768 if (sub_offset
> 0 && sub_offset
< tvb_captured_length_remaining(tvb
, offset
))
6769 proto_tree_add_expert(bthci_cmd_tree
, pinfo
, &ei_command_parameter_unexpected
, tvb
, offset
+ sub_offset
, tvb_captured_length_remaining(tvb
, sub_offset
+ offset
));
6774 proto_tree_add_item(bthci_cmd_tree
, hf_bthci_cmd_parameter
, tvb
, offset
, tvb_captured_length_remaining(tvb
, offset
), ENC_NA
);
6776 col_append_str(pinfo
->cinfo
, COL_INFO
, val_to_str_ext(opcode
, &bthci_cmd_opcode_vals_ext
, "Unknown 0x%04x"));
6778 if (param_length
> 0) {
6780 case HCI_OGF_LINK_CONTROL
:
6781 offset
= dissect_link_control_cmd(tvb
, offset
, pinfo
, bthci_cmd_tree
, ocf
, bluetooth_data
);
6784 case HCI_OGF_LINK_POLICY
:
6785 offset
= dissect_link_policy_cmd(tvb
, offset
, pinfo
, bthci_cmd_tree
, ocf
, bluetooth_data
);
6788 case HCI_OGF_HOST_CONTROLLER
:
6789 offset
= dissect_host_controller_baseband_cmd(tvb
, offset
, pinfo
, bthci_cmd_tree
, ocf
, bluetooth_data
, bthci_cmd_data
);
6792 case HCI_OGF_INFORMATIONAL
:
6793 offset
= dissect_informational_parameters_cmd(tvb
, offset
, pinfo
, bthci_cmd_tree
, ocf
);
6796 case HCI_OGF_STATUS
:
6797 offset
= dissect_status_parameters_cmd(tvb
, offset
, pinfo
, bthci_cmd_tree
, ocf
);
6800 case HCI_OGF_TESTING
:
6801 offset
= dissect_testing_cmd(tvb
, offset
, pinfo
, bthci_cmd_tree
, ocf
);
6804 case HCI_OGF_LOW_ENERGY
:
6805 offset
= dissect_le_cmd(tvb
, offset
, pinfo
, bthci_cmd_tree
, ocf
, bluetooth_data
);
6808 proto_tree_add_expert(bthci_cmd_tree
, pinfo
, &ei_command_unknown_command
, tvb
, 3, -1);
6809 offset
+= tvb_reported_length_remaining(tvb
, offset
);
6815 if (!pinfo
->fd
->visited
&& bthci_cmd_data
) {
6817 key
[0].key
= &interface_id
;
6819 key
[1].key
= &adapter_id
;
6821 key
[2].key
= &opcode
;
6823 key
[3].key
= &frame_number
;
6827 wmem_tree_insert32_array(bthci_cmds
, key
, bthci_cmd_data
);
6830 if (ogf
!= HCI_OGF_VENDOR_SPECIFIC
&& tvb_reported_length_remaining(tvb
, offset
) > 0) {
6831 proto_tree_add_expert(bthci_cmd_tree
, pinfo
, &ei_command_parameter_unexpected
, tvb
, offset
, -1);
6832 offset
+= tvb_reported_length_remaining(tvb
, offset
);
6836 key
[0].key
= &interface_id
;
6838 key
[1].key
= &adapter_id
;
6840 key
[2].key
= &opcode
;
6844 subtree
= (wmem_tree_t
*) wmem_tree_lookup32_array(bthci_cmds
, key
);
6845 bthci_cmd_data
= (subtree
) ? (bthci_cmd_data_t
*) wmem_tree_lookup32_le(subtree
, pinfo
->num
) : NULL
;
6846 if (bthci_cmd_data
&& bthci_cmd_data
->pending_in_frame
< bluetooth_max_disconnect_in_frame
) {
6849 sub_item
= proto_tree_add_uint(bthci_cmd_tree
, hf_pending_in_frame
, tvb
, 0, 0, bthci_cmd_data
->pending_in_frame
);
6850 proto_item_set_generated(sub_item
);
6852 nstime_delta(&delta
, &bthci_cmd_data
->pending_abs_ts
, &bthci_cmd_data
->command_abs_ts
);
6853 sub_item
= proto_tree_add_double(bthci_cmd_tree
, hf_command_pending_time_delta
, tvb
, 0, 0, nstime_to_msec(&delta
));
6854 proto_item_set_generated(sub_item
);
6856 if (bthci_cmd_data
&& bthci_cmd_data
->response_in_frame
< bluetooth_max_disconnect_in_frame
) {
6859 sub_item
= proto_tree_add_uint(bthci_cmd_tree
, hf_response_in_frame
, tvb
, 0, 0, bthci_cmd_data
->response_in_frame
);
6860 proto_item_set_generated(sub_item
);
6862 nstime_delta(&delta
, &bthci_cmd_data
->response_abs_ts
, &bthci_cmd_data
->command_abs_ts
);
6863 sub_item
= proto_tree_add_double(bthci_cmd_tree
, hf_command_response_time_delta
, tvb
, 0, 0, nstime_to_msec(&delta
));
6864 proto_item_set_generated(sub_item
);
6871 /* Register the protocol with Wireshark */
6873 /* this format is require because a script is used to build the C function
6874 that calls all the protocol registration.
6877 proto_register_bthci_cmd(void)
6880 expert_module_t
*expert_bthci_cmd
;
6882 /* Setup list of header fields See Section 1.6.1 for details*/
6883 static hf_register_info hf
[] = {
6884 { &hf_bthci_cmd_opcode
,
6885 { "Command Opcode", "bthci_cmd.opcode",
6886 FT_UINT16
, BASE_HEX
|BASE_EXT_STRING
, &bthci_cmd_opcode_vals_ext
, 0x0,
6887 "HCI Command Opcode", HFILL
}
6889 { &hf_bthci_cmd_ogf
,
6890 { "Opcode Group Field", "bthci_cmd.opcode.ogf",
6891 FT_UINT16
, BASE_HEX
|BASE_EXT_STRING
, &bthci_cmd_ogf_vals_ext
, 0xfc00,
6894 { &hf_bthci_cmd_ocf_link_control
,
6895 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6896 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_ocf_link_control_vals_ext
, 0x03ff,
6899 { &hf_bthci_cmd_ocf_link_policy
,
6900 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6901 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_ocf_link_policy_vals_ext
, 0x03ff,
6904 { &hf_bthci_cmd_ocf_host_controller_and_baseband
,
6905 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6906 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_ocf_host_controller_and_baseband_vals_ext
, 0x03ff,
6909 { &hf_bthci_cmd_ocf_informational
,
6910 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6911 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_ocf_informational_vals_ext
, 0x03ff,
6914 { &hf_bthci_cmd_ocf_status
,
6915 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6916 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_ocf_status_vals_ext
, 0x03ff,
6919 { &hf_bthci_cmd_ocf_testing
,
6920 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6921 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_ocf_testing_vals_ext
, 0x03ff,
6924 { &hf_bthci_cmd_ocf_low_energy
,
6925 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6926 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_ocf_low_energy_vals_ext
, 0x03ff,
6929 { &hf_bthci_cmd_ocf_logo_testing
,
6930 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6931 FT_UINT16
, BASE_HEX
, NULL
, 0x03ff,
6934 { &hf_bthci_cmd_ocf
,
6935 { "Opcode Command Field", "bthci_cmd.opcode.ocf",
6936 FT_UINT16
, BASE_HEX
, NULL
, 0x03ff,
6939 { &hf_bthci_cmd_param_length
,
6940 { "Parameter Total Length", "bthci_cmd.param_length",
6941 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6944 { &hf_bthci_cmd_lap
,
6945 { "LAP", "bthci_cmd.lap",
6946 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
6947 "LAP for the inquiry access code", HFILL
}
6949 { &hf_bthci_cmd_inq_length
,
6950 { "Inquiry Length", "bthci_cmd.inq_length",
6951 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6952 "Inquiry Length (*1.28s)", HFILL
}
6954 { &hf_bthci_cmd_num_responses
,
6955 { "Num Responses", "bthci_cmd.num_responses",
6956 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6957 "Number of Responses", HFILL
}
6959 { &hf_bthci_cmd_encrypt_mode
,
6960 { "Encryption Mode", "bthci_cmd.encrypt_mode",
6961 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_encrypt_mode_vals
), 0x0,
6964 { &hf_bthci_cmd_bd_addr
,
6965 { "BD_ADDR", "bthci_cmd.bd_addr",
6966 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
6967 "Bluetooth Device Address", HFILL
}
6969 { &hf_bthci_cmd_packet_type
,
6970 { "Packet Type", "bthci_cmd.packet_type",
6971 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
6974 { &hf_bthci_cmd_packet_type_reserved_0
,
6975 { "Reserved", "bthci_cmd.packet_type.reserved.0",
6976 FT_BOOLEAN
, 16, NULL
, 0x0001,
6979 { &hf_bthci_cmd_packet_type_2dh1
,
6980 { "2-DH1", "bthci_cmd.packet_type.2dh1",
6981 FT_BOOLEAN
, 16, NULL
, 0x0002,
6984 { &hf_bthci_cmd_packet_type_3dh1
,
6985 { "3-DH1", "bthci_cmd.packet_type.3dh1",
6986 FT_BOOLEAN
, 16, NULL
, 0x0004,
6989 { &hf_bthci_cmd_packet_type_dm1
,
6990 { "DM1", "bthci_cmd.packet_type.dm1",
6991 FT_BOOLEAN
, 16, NULL
, 0x0008,
6994 { &hf_bthci_cmd_packet_type_dh1
,
6995 { "DH1", "bthci_cmd.packet_type.dh1",
6996 FT_BOOLEAN
, 16, NULL
, 0x0010,
6999 { &hf_bthci_cmd_packet_type_reserved_5_7
,
7000 { "Reserved", "bthci_cmd.packet_type.reserved.5_7",
7001 FT_UINT16
, BASE_HEX
, NULL
, 0x00E0,
7004 { &hf_bthci_cmd_packet_type_2dh3
,
7005 { "2-DH3", "bthci_cmd.packet_type.2dh3",
7006 FT_BOOLEAN
, 16, NULL
, 0x0100,
7009 { &hf_bthci_cmd_packet_type_3dh3
,
7010 { "3-DH3", "bthci_cmd.packet_type.3dh3",
7011 FT_BOOLEAN
, 16, NULL
, 0x0200,
7014 { &hf_bthci_cmd_packet_type_dm3
,
7015 { "DM3", "bthci_cmd.packet_type.dm3",
7016 FT_BOOLEAN
, 16, NULL
, 0x0400,
7019 { &hf_bthci_cmd_packet_type_dh3
,
7020 { "DH3", "bthci_cmd.packet_type.dh3",
7021 FT_BOOLEAN
, 16, NULL
, 0x0800,
7024 { &hf_bthci_cmd_packet_type_2dh5
,
7025 { "2-DH5", "bthci_cmd.packet_type.2dh5",
7026 FT_BOOLEAN
, 16, NULL
, 0x1000,
7029 { &hf_bthci_cmd_packet_type_3dh5
,
7030 { "3-DH5", "bthci_cmd.packet_type.3dh5",
7031 FT_BOOLEAN
, 16, NULL
, 0x2000,
7034 { &hf_bthci_cmd_packet_type_dm5
,
7035 { "DM5", "bthci_cmd.packet_type.dm5",
7036 FT_BOOLEAN
, 16, NULL
, 0x4000,
7039 { &hf_bthci_cmd_packet_type_dh5
,
7040 { "DH5", "bthci_cmd.packet_type.dh5",
7041 FT_BOOLEAN
, 16, NULL
, 0x8000,
7044 { &hf_bthci_cmd_page_scan_mode
,
7045 { "Page Scan Mode", "bthci_cmd.page_scan_mode",
7046 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_page_scan_modes
), 0x0,
7049 { &hf_bthci_cmd_page_scan_repetition_mode
,
7050 { "Page Scan Repetition Mode", "bthci_cmd.page_scan_repetition_mode",
7051 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_page_scan_repetition_modes
), 0x0,
7054 { &hf_bthci_cmd_page_scan_period_mode
,
7055 { "Page Scan Period Mode", "bthci_cmd.page_scan_period_mode",
7056 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_page_scan_period_modes
), 0x0,
7059 { &hf_bthci_cmd_clock_offset
,
7060 { "Clock Offset", "bthci_cmd.clock_offset",
7061 FT_UINT16
, BASE_HEX
, NULL
, 0x7FFF,
7062 "Bit 2-16 of the Clock Offset, CLKNPeripheral-CLK", HFILL
}
7064 { &hf_bthci_cmd_clock_offset_valid
,
7065 { "Clock_Offset_Valid_Flag", "bthci_cmd.clock_offset_valid",
7066 FT_UINT16
, BASE_DEC
, VALS(cmd_boolean
), 0x8000,
7067 "Indicates if clock offset is valid", HFILL
}
7069 { &hf_bthci_cmd_allow_role_switch
,
7070 { "Allow Role Switch", "bthci_cmd.allow_role_switch",
7071 FT_UINT8
, BASE_HEX
, VALS(cmd_role_switch_modes
), 0x0,
7074 { &hf_bthci_cmd_max_period_length
,
7075 { "Max Period Length", "bthci_cmd.max_period_length",
7076 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7077 "Maximum amount of time specified between consecutive inquiries.", HFILL
}
7079 { &hf_bthci_cmd_min_period_length
,
7080 { "Min Period Length", "bthci_cmd.min_period_length",
7081 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7082 "Minimum amount of time specified between consecutive inquiries.", HFILL
}
7084 { &hf_bthci_cmd_connection_handle
,
7085 { "Connection Handle", "bthci_cmd.connection_handle",
7086 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
7089 { &hf_bthci_cmd_reason
,
7090 { "Reason", "bthci_cmd.reason",
7091 FT_UINT8
, BASE_HEX
|BASE_EXT_STRING
, &bthci_cmd_status_vals_ext
, 0x0,
7094 { &hf_bthci_cmd_num_link_keys
,
7095 { "Number of Link Keys", "bthci_cmd.num_link_keys",
7096 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7099 { &hf_bthci_cmd_link_key
,
7100 { "Link Key", "bthci_cmd.link_key",
7101 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7102 "Link Key for the associated BD_ADDR", HFILL
}
7104 { &hf_bthci_cmd_packet_type_hv1
,
7105 { "Packet Type HV1", "bthci_cmd.packet_type_hv1",
7106 FT_UINT16
, BASE_DEC
, VALS(cmd_boolean
), 0x0020,
7109 { &hf_bthci_cmd_packet_type_hv2
,
7110 { "Packet Type HV2", "bthci_cmd.packet_type_hv2",
7111 FT_UINT16
, BASE_DEC
, VALS(cmd_boolean
), 0x0040,
7114 { &hf_bthci_cmd_packet_type_hv3
,
7115 { "Packet Type HV3", "bthci_cmd.packet_type_hv3",
7116 FT_UINT16
, BASE_DEC
, VALS(cmd_boolean
), 0x0080,
7119 { &hf_bthci_cmd_role
,
7120 { "Role", "bthci_cmd.role",
7121 FT_UINT8
, BASE_HEX
, VALS(cmd_role_vals
), 0x0,
7124 { &hf_bthci_cmd_acr_role
,
7125 { "Role", "bthci_cmd.acr.role",
7126 FT_UINT8
, BASE_HEX
, VALS(cmd_acr_role_vals
), 0x0,
7129 { &hf_bthci_cmd_pin_code_length
,
7130 { "PIN Code Length", "bthci_cmd.pin_code_length",
7131 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7134 { &hf_bthci_cmd_pin_code
,
7135 { "PIN Code", "bthci_cmd.pin_code",
7136 FT_STRING
, BASE_NONE
, NULL
, 0x0,
7139 { &hf_bthci_cmd_pin_type
,
7140 { "PIN Type", "bthci_cmd.pin_type",
7141 FT_UINT8
, BASE_HEX
, VALS(cmd_pin_types
), 0x0,
7142 "PIN Types", HFILL
}
7144 { &hf_bthci_cmd_encryption_enable
,
7145 { "Encryption Enable", "bthci_cmd.encryption_enable",
7146 FT_UINT8
, BASE_HEX
, VALS(cmd_encryption_enable
), 0x0,
7149 { &hf_bthci_cmd_key_flag
,
7150 { "Key Flag", "bthci_cmd.key_flag",
7151 FT_UINT8
, BASE_HEX
, VALS(cmd_key_flag
), 0x0,
7154 { &hf_bthci_cmd_max_interval_hold
,
7155 { "Hold Mode Max Interval", "bthci_cmd.hold_mode_max_int",
7156 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7157 "Maximal acceptable number of Baseband slots to wait in Hold Mode.", HFILL
}
7159 { &hf_bthci_cmd_min_interval_hold
,
7160 { "Hold Mode Min Interval", "bthci_cmd.hold_mode_min_int",
7161 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7162 "Minimum acceptable number of Baseband slots to wait in Hold Mode.", HFILL
}
7164 { &hf_bthci_cmd_max_interval_sniff
,
7165 { "Sniff Max Interval", "bthci_cmd.sniff_max_int",
7166 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7167 "Maximal acceptable number of Baseband slots between each sniff period.", HFILL
}
7169 { &hf_bthci_cmd_min_interval_sniff
,
7170 { "Sniff Min Interval", "bthci_cmd.sniff_min_int",
7171 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7172 "Minimum acceptable number of Baseband slots between each sniff period.", HFILL
}
7174 { &hf_bthci_cmd_sniff_attempt
,
7175 { "Sniff Attempt", "bthci_cmd.sniff_attempt",
7176 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_1p25_ms
), 0x0,
7177 "Number of Baseband receive slots for sniff attempt.", HFILL
}
7179 { &hf_bthci_cmd_sniff_timeout
,
7180 { "Timeout", "bthci_cmd.sniff_timeout",
7181 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_1p25_ms
), 0x0,
7184 { &hf_bthci_cmd_timeout
,
7185 { "Timeout", "bthci_cmd.timeout",
7186 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7187 "Number of Baseband slots for timeout.", HFILL
}
7189 { &hf_bthci_cmd_max_interval_beacon
,
7190 { "Beacon Max Interval", "bthci_cmd.beacon_max_int",
7191 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7192 "Maximal acceptable number of Baseband slots between consecutive beacons.", HFILL
}
7194 { &hf_bthci_cmd_min_interval_beacon
,
7195 { "Beacon Min Interval", "bthci_cmd.beacon_min_int",
7196 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7197 "Minimum acceptable number of Baseband slots between consecutive beacons.", HFILL
}
7199 { &hf_bthci_cmd_flags
,
7200 { "Flags", "bthci_cmd.flags",
7201 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
7204 { &hf_bthci_cmd_flow_direction
,
7205 { "Flow Direction", "bthci_cmd.flow_direction",
7206 FT_UINT8
, BASE_HEX
, VALS(cmd_flow_directions
), 0x0,
7209 { &hf_bthci_cmd_service_type
,
7210 { "Service Type", "bthci_cmd.service_type",
7211 FT_UINT8
, BASE_HEX
, VALS(cmd_service_types
), 0x0,
7214 { &hf_bthci_cmd_token_rate
,
7215 { "Available Token Rate", "bthci_cmd.token_rate",
7216 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7217 "Token Rate, in bytes per second", HFILL
}
7219 { &hf_bthci_cmd_token_bucket_size
,
7220 { "Available Token Bucket Size", "bthci_cmd.token_bucket_size",
7221 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7222 "Token Bucket Size in bytes", HFILL
}
7224 { &hf_bthci_cmd_peak_bandwidth
,
7225 { "Peak Bandwidth", "bthci_cmd.peak_bandwidth",
7226 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7227 "Peak Bandwidth, in bytes per second", HFILL
}
7229 { &hf_bthci_cmd_latency
,
7230 { "Latency", "bthci_cmd.latency",
7231 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7232 "Latency, in microseconds", HFILL
}
7234 { &hf_bthci_cmd_delay_variation
,
7235 { "Delay Variation", "bthci_cmd.delay_variation",
7236 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7237 "Delay Variation, in microseconds", HFILL
}
7239 { &hf_bthci_cmd_link_policy_setting_switch
,
7240 { "Enable Role Switch", "bthci_cmd.link_policy_switch",
7241 FT_UINT16
, BASE_DEC
, VALS(cmd_boolean
), 0x0001,
7244 { &hf_bthci_cmd_link_policy_setting_hold
,
7245 { "Enable Hold Mode", "bthci_cmd.link_policy_hold",
7246 FT_UINT16
, BASE_DEC
, VALS(cmd_boolean
), 0x0002,
7249 { &hf_bthci_cmd_link_policy_setting_sniff
,
7250 { "Enable Sniff Mode", "bthci_cmd.link_policy_sniff",
7251 FT_UINT16
, BASE_DEC
, VALS(cmd_boolean
), 0x0004,
7254 { &hf_bthci_cmd_link_policy_setting_park
,
7255 { "Enable Park Mode", "bthci_cmd.link_policy_park",
7256 FT_UINT16
, BASE_DEC
, VALS(cmd_boolean
), 0x0008,
7259 { &hf_bthci_cmd_filter_type
,
7260 { "Filter Type", "bthci_cmd.filter_type",
7261 FT_UINT8
, BASE_HEX
, VALS(cmd_filter_types
), 0x0,
7264 { &hf_bthci_cmd_inquiry_result_filter_condition_type
,
7265 { "Filter Condition Type", "bthci_cmd.filter_condition_type",
7266 FT_UINT8
, BASE_HEX
, VALS(cmd_inquiry_result_filter_condition_types
), 0x0,
7269 { &hf_bthci_cmd_connection_setup_filter_condition_type
,
7270 { "Filter Condition Type", "bthci_cmd.filter_condition_type",
7271 FT_UINT8
, BASE_HEX
, VALS(cmd_connection_setup_filter_condition_types
), 0x0,
7274 { &hf_bthci_cmd_cod_class_of_device_mask
,
7275 { "Class of Device Mask", "bthci_cmd.class_of_device_mask",
7276 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
7277 "Bit Mask used to determine which bits of the Class of Device parameter are of interest.", HFILL
}
7279 { &hf_bthci_cmd_cod_major_device_class_mask
,
7280 { "Major Device Class Mask", "bthci_cmd.class_of_device_mask.major_device_class",
7281 FT_UINT16
, BASE_HEX
, NULL
, 0x1F,
7284 { &hf_bthci_cmd_cod_major_service_class_information_mask
,
7285 { "Major Service Classes Mask: Information", "bthci_cmd.class_of_device_mask.major_service_classes.information",
7286 FT_BOOLEAN
, 16, NULL
, 0x8000,
7289 { &hf_bthci_cmd_cod_major_service_class_telephony_mask
,
7290 { "Major Service Classes Mask: Telephony", "bthci_cmd.class_of_device_mask.major_service_classes.telephony",
7291 FT_BOOLEAN
, 16, NULL
, 0x4000,
7294 { &hf_bthci_cmd_cod_major_service_class_audio_mask
,
7295 { "Major Service Classes Mask: Audio", "bthci_cmd.class_of_device_mask.major_service_classes.audio",
7296 FT_BOOLEAN
, 16, NULL
, 0x2000,
7299 { &hf_bthci_cmd_cod_major_service_class_object_transfer_mask
,
7300 { "Major Service Classes Mask: Object Transfer", "bthci_cmd.class_of_device_mask.major_service_classes.object_transfer",
7301 FT_BOOLEAN
, 16, NULL
, 0x1000,
7304 { &hf_bthci_cmd_cod_major_service_class_capturing_mask
,
7305 { "Major Service Classes Mask: Capturing", "bthci_cmd.class_of_device_mask.major_service_classes.capturing",
7306 FT_BOOLEAN
, 16, NULL
, 0x0800,
7309 { &hf_bthci_cmd_cod_major_service_class_rendering_mask
,
7310 { "Major Service Classes Mask: Rendering", "bthci_cmd.class_of_device_mask.major_service_classes.rendering",
7311 FT_BOOLEAN
, 16, NULL
, 0x0400,
7314 { &hf_bthci_cmd_cod_major_service_class_networking_mask
,
7315 { "Major Service Classes Mask: Networking", "bthci_cmd.class_of_device_mask.major_service_classes.networking",
7316 FT_BOOLEAN
, 16, NULL
, 0x0200,
7319 { &hf_bthci_cmd_cod_major_service_class_positioning_mask
,
7320 { "Major Service Classes Mask: Positioning", "bthci_cmd.class_of_device_mask.major_service_classes.positioning",
7321 FT_BOOLEAN
, 16, NULL
, 0x0100,
7324 { &hf_bthci_cmd_cod_major_service_class_reserved_mask
,
7325 { "Major Service Classes Mask: Reserved", "bthci_cmd.class_of_device_mask.major_service_classes.reserved",
7326 FT_UINT16
, BASE_HEX
, NULL
, 0x0080,
7329 { &hf_bthci_cmd_cod_major_service_class_le_audio_mask
,
7330 { "Major Service Classes Mask: LE Audio", "bthci_cmd.class_of_device_mask.major_service_classes.le_audio",
7331 FT_UINT16
, BASE_HEX
, NULL
, 0x0040,
7334 { &hf_bthci_cmd_cod_major_service_class_limited_discoverable_mode_mask
,
7335 { "Major Service Classes Mask: Limited Discoverable Mode", "bthci_cmd.class_of_device_mask.major_service_classes.limited_discoverable_mode",
7336 FT_BOOLEAN
, 16, NULL
, 0x0020,
7339 { &hf_bthci_cmd_cod_minor_device_class_mask
,
7340 { "Minor Device Class Mask", "bthci_cmd.class_of_device_mask.minor_device_class",
7341 FT_UINT8
, BASE_HEX
, NULL
, 0xFC,
7344 { &hf_bthci_cmd_cod_format_type_mask
,
7345 { "Format Type Mask", "bthci_cmd.class_of_device_mask.format_type",
7346 FT_UINT8
, BASE_HEX
, NULL
, 0x03,
7349 { &hf_bthci_cmd_auto_acc_flag
,
7350 { "Auto Accept Flag", "bthci_cmd.auto_accept_flag",
7351 FT_UINT8
, BASE_HEX
, VALS(cmd_auto_acc_flag_values
), 0x0,
7352 "Class of Device of Interest", HFILL
}
7354 { &hf_bthci_cmd_read_all_flag
,
7355 { "Read All Flag", "bthci_cmd.read_all_flag",
7356 FT_UINT8
, BASE_HEX
, VALS(cmd_read_all_flag_values
), 0x0,
7359 { &hf_bthci_cmd_delete_all_flag
,
7360 { "Delete All Flag", "bthci_cmd.delete_all_flag",
7361 FT_UINT8
, BASE_HEX
, VALS(cmd_delete_all_flag_values
), 0x0,
7364 { &hf_bthci_cmd_authentication_enable
,
7365 { "Authentication Enable", "bthci_cmd.auth_enable",
7366 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_authentication_enable_values
), 0x0,
7369 { &hf_bthci_cmd_input_unused
,
7370 { "Unused bits", "bthci_cmd.voice.unused",
7371 FT_UINT16
, BASE_HEX
, NULL
, 0xfc00,
7374 { &hf_bthci_cmd_input_coding
,
7375 { "Input Coding", "bthci_cmd.voice.input_coding",
7376 FT_UINT16
, BASE_DEC
, VALS(cmd_input_coding_values
), 0x0300,
7379 { &hf_bthci_cmd_input_data_format
,
7380 { "Input Data Format", "bthci_cmd.voice.input_data_format",
7381 FT_UINT16
, BASE_DEC
, VALS(cmd_input_data_format_values
), 0x00c0,
7384 { &hf_bthci_cmd_input_sample_size
,
7385 { "Input Sample Size", "bthci_cmd.voice.input_sample_size",
7386 FT_UINT16
, BASE_DEC
, VALS(cmd_input_sample_size_values
), 0x0020,
7389 { &hf_bthci_cmd_linear_pcm_bit_pos
,
7390 { "Linear PCM Bit Position", "bthci_cmd.voice.linear_pcm_bit_pos",
7391 FT_UINT16
, BASE_DEC
, NULL
, 0x001c,
7392 "# bit pos. that MSB of sample is away from starting at MSB", HFILL
}
7394 { &hf_bthci_cmd_air_coding_format
,
7395 { "Air Coding Format", "bthci_cmd.voice.air_coding_format",
7396 FT_UINT16
, BASE_DEC
, VALS(cmd_air_coding_format_values
), 0x0003,
7399 { &hf_bthci_cmd_num_broadcast_retransmissions
,
7400 { "Num Broadcast Retran", "bthci_cmd.num_broad_retran",
7401 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7402 "Number of Broadcast Retransmissions", HFILL
}
7404 { &hf_bthci_cmd_hold_mode_act_page
,
7405 { "Suspend Page Scan", "bthci_cmd.hold_mode_page",
7406 FT_UINT8
, BASE_DEC
, VALS(cmd_boolean
), 0x1,
7407 "Device can enter low power state", HFILL
}
7409 { &hf_bthci_cmd_hold_mode_act_inquiry
,
7410 { "Suspend Inquiry Scan", "bthci_cmd.hold_mode_inquiry",
7411 FT_UINT8
, BASE_DEC
, VALS(cmd_boolean
), 0x2,
7412 "Device can enter low power state", HFILL
}
7414 { &hf_bthci_cmd_hold_mode_act_periodic
,
7415 { "Suspend Periodic Inquiries", "bthci_cmd.hold_mode_periodic",
7416 FT_UINT8
, BASE_DEC
, VALS(cmd_boolean
), 0x4,
7417 "Device can enter low power state", HFILL
}
7419 { &hf_bthci_cmd_scan_enable
,
7420 { "Scan Enable", "bthci_cmd.scan_enable",
7421 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_scan_enable_values
), 0x0,
7424 { &hf_bthci_cmd_interval
,
7425 { "Interval", "bthci_cmd.interval",
7426 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7429 { &hf_bthci_cmd_window
,
7430 { "Window", "bthci_cmd.window",
7431 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7434 { &hf_bthci_cmd_device_name
,
7435 { "Device Name", "bthci_cmd.device_name",
7436 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0,
7437 "Userfriendly descriptive name for the device", HFILL
}
7439 { &hf_bthci_cmd_num_curr_iac
,
7440 { "Number of Current IAC", "bthci_cmd.num_curr_iac",
7441 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7442 "Number of IACs which are currently in use", HFILL
}
7444 { &hf_bthci_cmd_iac_lap
,
7445 { "IAC LAP", "bthci_cmd.num_iac_lap",
7446 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
7447 "LAP(s)used to create IAC", HFILL
}
7449 { &hf_bthci_cmd_evt_mask_00
,
7450 { "Inquiry Complete", "bthci_cmd.evt_mask_00",
7451 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
7452 "Inquiry Complete Bit", HFILL
}
7454 { &hf_bthci_cmd_evt_mask_01
,
7455 { "Inquiry Result", "bthci_cmd.evt_mask_01",
7456 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
7457 "Inquiry Result Bit", HFILL
}
7459 { &hf_bthci_cmd_evt_mask_02
,
7460 { "Connect Complete", "bthci_cmd.evt_mask_02",
7461 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
7462 "Connection Complete Bit", HFILL
}
7464 { &hf_bthci_cmd_evt_mask_03
,
7465 { "Connect Request", "bthci_cmd.evt_mask_03",
7466 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x08,
7467 "Connect Request Bit", HFILL
}
7469 { &hf_bthci_cmd_evt_mask_04
,
7470 { "Disconnect Complete", "bthci_cmd.evt_mask_04",
7471 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x10,
7472 "Disconnect Complete Bit", HFILL
}
7474 { &hf_bthci_cmd_evt_mask_05
,
7475 { "Auth Complete", "bthci_cmd.evt_mask_05",
7476 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x20,
7477 "Auth Complete Bit", HFILL
}
7479 { &hf_bthci_cmd_evt_mask_06
,
7480 { "Remote Name Req Complete", "bthci_cmd.evt_mask_06",
7481 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x40,
7482 "Remote Name Req Complete Bit", HFILL
}
7484 { &hf_bthci_cmd_evt_mask_07
,
7485 { "Encrypt Change", "bthci_cmd.evt_mask_07",
7486 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x80,
7487 "Encrypt Change Bit", HFILL
}
7489 { &hf_bthci_cmd_evt_mask_10
,
7490 { "Change Connection Link Key Complete", "bthci_cmd.evt_mask_10",
7491 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
7492 "Change Connection Link Key Complete Bit", HFILL
}
7494 { &hf_bthci_cmd_evt_mask_11
,
7495 { "Link Key Type Changed Complete", "bthci_cmd.evt_mask_11",
7496 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
7497 "Link Key Type Changed Complete Bit", HFILL
}
7499 { &hf_bthci_cmd_evt_mask_12
,
7500 { "Read Remote Supported Features", "bthci_cmd.evt_mask_12",
7501 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
7502 "Read Remote Supported Features Bit", HFILL
}
7504 { &hf_bthci_cmd_evt_mask_13
,
7505 { "Read Remote Ver Info Complete", "bthci_cmd.evt_mask_13",
7506 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x08,
7507 "Read Remote Ver Info Complete Bit", HFILL
}
7509 { &hf_bthci_cmd_evt_mask_14
,
7510 { "QoS Setup Complete", "bthci_cmd.evt_mask_14",
7511 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x10,
7512 "QoS Setup Complete Bit", HFILL
}
7514 { &hf_bthci_cmd_evt_mask_17
,
7515 { "Hardware Error", "bthci_cmd.evt_mask_17",
7516 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x80,
7517 "Hardware Error Bit", HFILL
}
7519 { &hf_bthci_cmd_evt_mask_20
,
7520 { "Flush Occurred", "bthci_cmd.evt_mask_20",
7521 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
7522 "Flush Occurred Bit", HFILL
}
7524 { &hf_bthci_cmd_evt_mask_21
,
7525 { "Role Change", "bthci_cmd.evt_mask_21",
7526 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
7527 "Role Change Bit", HFILL
}
7529 { &hf_bthci_cmd_evt_mask_23
,
7530 { "Mode Change", "bthci_cmd.evt_mask_23",
7531 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x08,
7532 "Mode Change Bit", HFILL
}
7534 { &hf_bthci_cmd_evt_mask_24
,
7535 { "Return Link Keys", "bthci_cmd.evt_mask_24",
7536 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x10,
7537 "Return Link Keys Bit", HFILL
}
7539 { &hf_bthci_cmd_evt_mask_25
,
7540 { "PIN Code Request", "bthci_cmd.evt_mask_25",
7541 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x20,
7542 "PIN Code Request Bit", HFILL
}
7544 { &hf_bthci_cmd_evt_mask_26
,
7545 { "Link Key Request", "bthci_cmd.evt_mask_26",
7546 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x40,
7547 "Link Key Request Bit", HFILL
}
7549 { &hf_bthci_cmd_evt_mask_27
,
7550 { "Link Key Notification", "bthci_cmd.evt_mask_27",
7551 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x80,
7552 "Link Key Notification Bit", HFILL
}
7554 { &hf_bthci_cmd_evt_mask_30
,
7555 { "Loopback Command", "bthci_cmd.evt_mask_30",
7556 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
7557 "Loopback Command Bit", HFILL
}
7559 { &hf_bthci_cmd_evt_mask_31
,
7560 { "Data Buffer Overflow", "bthci_cmd.evt_mask_31",
7561 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
7562 "Data Buffer Overflow Bit", HFILL
}
7564 { &hf_bthci_cmd_evt_mask_32
,
7565 { "Max Slots Change", "bthci_cmd.evt_mask_32",
7566 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
7567 "Max Slots Change Bit", HFILL
}
7569 { &hf_bthci_cmd_evt_mask_33
,
7570 { "Read Clock Offset Complete", "bthci_cmd.evt_mask_33",
7571 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x08,
7572 "Read Clock Offset Complete Bit", HFILL
}
7574 { &hf_bthci_cmd_evt_mask_34
,
7575 { "Connection Packet Type Changed", "bthci_cmd.evt_mask_34",
7576 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x10,
7577 "Connection Packet Type Changed Bit", HFILL
}
7579 { &hf_bthci_cmd_evt_mask_35
,
7580 { "QoS Violation", "bthci_cmd.evt_mask_35",
7581 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x20,
7582 "QoS Violation Bit", HFILL
}
7584 { &hf_bthci_cmd_evt_mask_36
,
7585 { "Page Scan Mode Change", "bthci_cmd.evt_mask_36",
7586 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x40,
7587 "Page Scan Mode Change Bit", HFILL
}
7589 { &hf_bthci_cmd_evt_mask_37
,
7590 { "Page Scan Repetition Mode Change", "bthci_cmd.evt_mask_37",
7591 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x80,
7592 "Page Scan Repetition Mode Change Bit", HFILL
}
7594 { &hf_bthci_cmd_evt_mask_40
,
7595 { "Flow Specification Complete", "bthci_cmd.evt_mask_40",
7596 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
7597 "Flow Specification Complete Bit", HFILL
}
7599 { &hf_bthci_cmd_evt_mask_41
,
7600 { "Inquiry Result With RSSI", "bthci_cmd.evt_mask_41",
7601 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
7602 "Inquiry Result With RSSI Bit", HFILL
}
7604 { &hf_bthci_cmd_evt_mask_42
,
7605 { "Read Remote Ext. Features Complete", "bthci_cmd.evt_mask_42",
7606 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
7607 "Read Remote Ext. Features Complete Bit", HFILL
}
7609 { &hf_bthci_cmd_evt_mask_53
,
7610 { "Synchronous Connection Complete", "bthci_cmd.evt_mask_53",
7611 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x08,
7612 "Synchronous Connection Complete Bit", HFILL
}
7614 { &hf_bthci_cmd_evt_mask_54
,
7615 { "Synchronous Connection Changed", "bthci_cmd.evt_mask_54",
7616 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x10,
7617 "Synchronous Connection Changed Bit", HFILL
}
7619 { &hf_bthci_cmd_evt_mask_55
,
7620 { "Sniff Subrate", "bthci_cmd.evt_mask_55",
7621 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x20,
7622 "Sniff Subrate Bit", HFILL
}
7624 { &hf_bthci_cmd_evt_mask_56
,
7625 { "Extended Inquiry Result", "bthci_cmd.evt_mask_56",
7626 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x40,
7627 "Extended Inquiry Result Bit", HFILL
}
7629 { &hf_bthci_cmd_evt_mask_57
,
7630 { "Encryption Key Refresh Complete", "bthci_cmd.evt_mask_57",
7631 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x80,
7632 "Encryption Key Refresh Complete Bit", HFILL
}
7634 { &hf_bthci_cmd_evt_mask_60
,
7635 { "IO Capability Request", "bthci_cmd.evt_mask_60",
7636 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
7637 "IO Capability Request Bit", HFILL
}
7639 { &hf_bthci_cmd_evt_mask_61
,
7640 { "IO Capability Response", "bthci_cmd.evt_mask_61",
7641 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
7642 "IO Capability Response Bit", HFILL
}
7644 { &hf_bthci_cmd_evt_mask_62
,
7645 { "User Confirmation Request", "bthci_cmd.evt_mask_62",
7646 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
7647 "User Confirmation Request Bit", HFILL
}
7649 { &hf_bthci_cmd_evt_mask_63
,
7650 { "User Passkey Request", "bthci_cmd.evt_mask_63",
7651 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x08,
7652 "User Passkey Request Bit", HFILL
}
7654 { &hf_bthci_cmd_evt_mask_64
,
7655 { "Remote OOB Data Request", "bthci_cmd.evt_mask_64",
7656 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x10,
7657 "Remote OOB Data Request Bit", HFILL
}
7659 { &hf_bthci_cmd_evt_mask_65
,
7660 { "Simple Pairing Complete", "bthci_cmd.evt_mask_65",
7661 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x20,
7662 "Simple Pairing Complete Bit", HFILL
}
7664 { &hf_bthci_cmd_evt_mask_67
,
7665 { "Link Supervision Timeout Changed", "bthci_cmd.evt_mask_67",
7666 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x80,
7667 "Link Supervision Timeout Changed Bit", HFILL
}
7669 { &hf_bthci_cmd_evt_mask_70
,
7670 { "Enhanced Flush Complete", "bthci_cmd.evt_mask_70",
7671 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
7672 "Enhanced Flush Complete Bit", HFILL
}
7674 { &hf_bthci_cmd_evt_mask_72
,
7675 { "User Passkey Notification", "bthci_cmd.evt_mask_72",
7676 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
7677 "User Passkey Notification Bit", HFILL
}
7679 { &hf_bthci_cmd_evt_mask_73
,
7680 { "Keypress Notification", "bthci_cmd.evt_mask_73",
7681 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x08,
7682 "Keypress Notification Bit", HFILL
}
7684 { &hf_bthci_cmd_sco_flow_control
,
7685 { "SCO Flow Control","bthci_cmd.flow_control",
7686 FT_UINT8
, BASE_HEX
, VALS(cmd_en_disabled
), 0x0,
7689 { &hf_bthci_cmd_num_handles
,
7690 { "Number of Connection Handles", "bthci_cmd.num_handles",
7691 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7695 { &hf_bthci_cmd_num_compl_packets
,
7696 { "Number of Completed Packets", "bthci_cmd.num_compl_packets",
7697 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7698 "Number of Completed HCI Data Packets", HFILL
}
7700 { &hf_bthci_cmd_flow_contr_enable
,
7701 { "Flow Control Enable", "bthci_cmd.flow_contr_enable",
7702 FT_UINT8
, BASE_HEX
, VALS(cmd_flow_contr_enable
), 0x0,
7705 { &hf_bthci_cmd_host_data_packet_length_acl
,
7706 {"Host ACL Data Packet Length (bytes)", "bthci_cmd.max_data_length_acl",
7707 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7708 "Max Host ACL Data Packet length of data portion host is able to accept", HFILL
}
7710 { &hf_bthci_cmd_host_data_packet_length_sco
,
7711 {"Host SCO Data Packet Length (bytes)", "bthci_cmd.max_data_length_sco",
7712 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7713 "Max Host SCO Data Packet length of data portion host is able to accept", HFILL
}
7715 { &hf_bthci_cmd_host_total_num_acl_data_packets
,
7716 {"Host Total Num ACL Data Packets", "bthci_cmd.max_data_num_acl",
7717 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7718 "Total Number of HCI ACL Data Packets that can be stored in the data buffers of the Host", HFILL
}
7720 { &hf_bthci_cmd_host_total_num_sco_data_packets
,
7721 {"Host Total Num SCO Data Packets", "bthci_cmd.max_data_num_sco",
7722 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7723 "Total Number of HCI SCO Data Packets that can be stored in the data buffers of the Host", HFILL
}
7725 { &hf_bthci_cmd_loopback_mode
,
7726 {"Loopback Mode", "bthci_cmd.loopback_mode",
7727 FT_UINT8
, BASE_HEX
, VALS(cmd_loopback_modes
), 0x0,
7730 { &hf_bthci_cmd_page_number
,
7731 {"Page Number", "bthci_cmd.page_number",
7732 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7735 { &hf_bthci_cmd_transmit_bandwidth
,
7736 {"Tx Bandwidth (bytes/s)", "bthci_cmd.tx_bandwidth",
7737 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7740 { &hf_bthci_cmd_receive_bandwidth
,
7741 {"Rx Bandwidth (bytes/s)", "bthci_cmd.rx_bandwidth",
7742 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7745 { &hf_bthci_cmd_max_latency_ms
,
7746 {"Max. Latency (ms)", "bthci_cmd.max_latency_ms",
7747 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7750 { &hf_bthci_cmd_max_latency
,
7751 {"Max. Latency", "bthci_cmd.max_latency",
7752 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7753 "Max. Latency in baseband slots", HFILL
}
7755 { &hf_bthci_cmd_retransmission_effort
,
7756 {"Retransmission Effort", "bthci_cmd.retransmission_effort",
7757 FT_UINT8
, BASE_DEC
, VALS(cmd_rtx_effort
), 0x0,
7760 { &hf_bthci_cmd_scan_type
,
7761 {"Scan Type", "bthci_cmd.inq_scan_type",
7762 FT_UINT8
, BASE_DEC
, VALS(cmd_scan_types
), 0x0,
7765 { &hf_bthci_cmd_inq_mode
,
7766 {"Inquiry Mode", "bthci_cmd.inq_mode",
7767 FT_UINT8
, BASE_DEC
, VALS(bthci_cmd_inq_modes
), 0x0,
7770 { &hf_bthci_cmd_fec_required
,
7771 {"FEC Required", "bthci_cmd.fec_required",
7772 FT_UINT8
, BASE_DEC
, VALS(cmd_boolean
), 0x0,
7775 { &hf_bthci_cmd_err_data_reporting
,
7776 {"Erroneous Data Reporting", "bthci_cmd.err_data_reporting",
7777 FT_UINT8
, BASE_DEC
, VALS(cmd_en_disabled
), 0x0,
7780 { &hf_bthci_cmd_tx_power
,
7781 {"Power Level (dBm)", "bthci_cmd.power_level",
7782 FT_INT8
, BASE_DEC
, NULL
, 0x0,
7785 { &hf_bthci_cmd_sco_packet_type
,
7786 { "Packet Type", "bthci_cmd.sco_packet_type",
7787 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
7790 { &hf_bthci_cmd_sco_packet_type_hv1
,
7791 { "HV1 may be used", "bthci_cmd.sco_packet_type.hv1",
7792 FT_BOOLEAN
, 16, NULL
, 0x0001,
7795 { &hf_bthci_cmd_sco_packet_type_hv2
,
7796 { "HV2 may be used", "bthci_cmd.sco_packet_type.hv2",
7797 FT_BOOLEAN
, 16, NULL
, 0x0002,
7800 { &hf_bthci_cmd_sco_packet_type_hv3
,
7801 { "HV3 may be used", "bthci_cmd.sco_packet_type.hv3",
7802 FT_BOOLEAN
, 16, NULL
, 0x0004,
7805 { &hf_bthci_cmd_sco_packet_type_ev3
,
7806 { "EV3 may be used", "bthci_cmd.sco_packet_type.ev3",
7807 FT_BOOLEAN
, 16, NULL
, 0x0008,
7810 { &hf_bthci_cmd_sco_packet_type_ev4
,
7811 { "EV4 may be used", "bthci_cmd.sco_packet_type.ev4",
7812 FT_BOOLEAN
, 16, NULL
, 0x0010,
7815 { &hf_bthci_cmd_sco_packet_type_ev5
,
7816 { "EV5 may be used", "bthci_cmd.sco_packet_type.ev5",
7817 FT_BOOLEAN
, 16, NULL
, 0x0020,
7820 { &hf_bthci_cmd_sco_packet_type_2ev3
,
7821 { "2-EV3 may NOT be used", "bthci_cmd.sco_packet_type.2ev3",
7822 FT_BOOLEAN
, 16, NULL
, 0x0040,
7825 { &hf_bthci_cmd_sco_packet_type_3ev3
,
7826 { "3-EV3 may NOT be used", "bthci_cmd.sco_packet_type.3ev3",
7827 FT_BOOLEAN
, 16, NULL
, 0x0080,
7830 { &hf_bthci_cmd_sco_packet_type_2ev5
,
7831 { "2-EV5 may NOT be used", "bthci_cmd.sco_packet_type.2ev5",
7832 FT_BOOLEAN
, 16, NULL
, 0x0100,
7835 { &hf_bthci_cmd_sco_packet_type_3ev5
,
7836 { "3-EV5 may NOT be used", "bthci_cmd.sco_packet_type.3ev5",
7837 FT_BOOLEAN
, 16, NULL
, 0x0200,
7840 { &hf_bthci_cmd_sco_packet_type_reserved
,
7841 { "Reserved", "bthci_cmd.sco_packet_type.reserved",
7842 FT_UINT16
, BASE_HEX
, NULL
, 0xFC00,
7845 { &hf_bthci_cmd_min_remote_timeout
,
7846 {"Min. Remote Timeout", "bthci_cmd.min_remote_timeout",
7847 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7848 "Min. Remote Timeout in baseband slots", HFILL
}
7850 { &hf_bthci_cmd_min_local_timeout
,
7851 {"Min. Local Timeout", "bthci_cmd.min_local_timeout",
7852 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
7853 "Min. Local Timeout in baseband slots", HFILL
}
7855 { &hf_bthci_cmd_flush_packet_type
,
7856 {"Packet Type", "bthci_cmd.flush_packet_type",
7857 FT_UINT8
, BASE_DEC
, VALS(cmd_flush_pkt_type
), 0x0,
7860 { &hf_bthci_cmd_afh_ch_assessment_mode
,
7861 {"AFH Channel Assessment Mode", "bthci_cmd.afh_ch_assessment_mode",
7862 FT_UINT8
, BASE_DEC
, VALS(cmd_en_disabled
), 0x0,
7865 { &hf_bthci_cmd_ch_classification
,
7866 { "Channel Classification", "bthci_cmd.ch_classification",
7867 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7870 { &hf_bthci_cmd_which_clock
,
7871 {"Which Clock", "bthci_cmd.which_clock",
7872 FT_UINT8
, BASE_DEC
, VALS(cmd_which_clock
), 0x0,
7875 { &hf_bthci_cmd_io_capability
,
7876 {"IO Capability", "bthci_cmd.io_capability",
7877 FT_UINT8
, BASE_DEC
, VALS(bthci_cmd_io_capability_vals
), 0x0,
7880 { &hf_bthci_cmd_oob_data_present
,
7881 {"OOB Data Present", "bthci_cmd.oob_data_present",
7882 FT_UINT8
, BASE_DEC
, VALS(bthci_cmd_oob_data_present_vals
), 0x0,
7885 { &hf_bthci_cmd_auth_requirements
,
7886 {"Authentication Requirements", "bthci_cmd.auth_requirements",
7887 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &bthci_cmd_auth_req_vals_ext
, 0x0,
7890 { &hf_bthci_cmd_passkey
,
7891 {"Passkey", "bthci_cmd.passkey",
7892 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7895 { &hf_bthci_cmd_hash_c
,
7896 {"Hash C", "bthci_cmd.hash_c",
7897 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7900 { &hf_bthci_cmd_randomizer_r
,
7901 {"Randomizer R", "bthci_cmd.randomizer_r",
7902 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7905 { &hf_bthci_cmd_simple_pairing_mode
,
7906 {"Simple Pairing Mode", "bthci_cmd.simple_pairing_mode",
7907 FT_UINT8
, BASE_DEC
, VALS(cmd_en_disabled
), 0x0,
7910 { &hf_bthci_cmd_simple_pairing_debug_mode
,
7911 {"Simple Pairing Debug Mode", "bthci_cmd.simple_pairing_debug_mode",
7912 FT_UINT8
, BASE_DEC
, VALS(cmd_en_disabled
), 0x0,
7915 { &hf_bthci_cmd_notification_type
,
7916 {"Notification Type", "bthci_cmd.notification_type",
7917 FT_UINT8
, BASE_DEC
, VALS(bthci_cmd_notification_types
), 0x0,
7920 { &hf_bthci_cmd_physical_link_handle
,
7921 {"Physical Link Handle", "bthci_cmd.physical_link_handle",
7922 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
7925 { &hf_bthci_cmd_dedicated_amp_key_length
,
7926 {"Dedicated AMP Key Length", "bthci_cmd.dedicated_amp_key_length",
7927 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7930 { &hf_bthci_cmd_dedicated_amp_key_type
,
7931 {"Dedicated AMP Key Type", "bthci_cmd.dedicated_amp_key_type",
7932 FT_UINT8
, BASE_DEC
, VALS(bthci_cmd_amp_key_type
), 0x0,
7935 { &hf_bthci_cmd_dedicated_amp_key
,
7936 {"Dedicated AMP Key Type", "bthci_cmd.dedicated_amp_key",
7937 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7940 { &hf_bthci_cmd_flow_spec
,
7941 { "Flow Spec", "bthci_cmd.flow_spec",
7942 FT_NONE
, BASE_NONE
, NULL
, 0x0,
7945 { &hf_bthci_cmd_flow_spec_sdu_size
,
7946 { "Maximum SDU Size", "bthci_cmd.sdu_size",
7947 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7950 { &hf_bthci_cmd_flow_spec_sdu_arrival_time
,
7951 { "SDU Inter-arrival Time (us)", "bthci_cmd.sdu_arrival_time",
7952 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7955 { &hf_bthci_cmd_flow_spec_identifier
,
7956 { "Identifier", "bthci_cmd.ident",
7957 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
7960 { &hf_bthci_cmd_flow_spec_access_latency
,
7961 { "Access Latency (us)", "bthci_cmd.access_latency",
7962 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7965 { &hf_bthci_cmd_flow_spec_service_type
,
7966 { "Service Type", "bthci_cmd.servicetype",
7967 FT_UINT8
, BASE_HEX
, VALS(cmd_flow_spec_servicetype
), 0x0,
7968 "Level of service required", HFILL
}
7970 { &hf_bthci_cmd_flush_to_us
,
7971 { "Flush Timeout (us)", "bthci_cmd.flushto",
7972 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7975 { &hf_bthci_cmd_logical_link_handle
,
7976 { "Logical Link Handle", "bthci_cmd.logical_link_handle",
7977 FT_UINT16
, BASE_HEX
, NULL
, 0x0FFF,
7981 { &hf_bthci_cmd_evt_mask2
,
7982 { "Event Mask Page 2", "bthci_cmd.evt_mask2",
7983 FT_UINT64
, BASE_HEX
, NULL
, 0x0,
7986 { &hf_bthci_cmd_evt_mask2_00
,
7987 { "Physical Link Complete", "bthci_cmd.evt_mask2_00",
7988 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x01),
7991 { &hf_bthci_cmd_evt_mask2_01
,
7992 { "Channel Selected", "bthci_cmd.evt_mask2_01",
7993 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x02),
7996 { &hf_bthci_cmd_evt_mask2_02
,
7997 { "Disconnection Physical Link", "bthci_cmd.evt_mask2_02",
7998 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x04),
8001 { &hf_bthci_cmd_evt_mask2_03
,
8002 { "Physical Link Loss Early Warning", "bthci_cmd.evt_mask2_03",
8003 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x08),
8006 { &hf_bthci_cmd_evt_mask2_04
,
8007 { "Physical Link Recovery", "bthci_cmd.evt_mask2_04",
8008 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x10),
8011 { &hf_bthci_cmd_evt_mask2_05
,
8012 { "Logical Link Complete", "bthci_cmd.evt_mask2_05",
8013 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x20),
8016 { &hf_bthci_cmd_evt_mask2_06
,
8017 { "Disconnection Logical Link Complete", "bthci_cmd.evt_mask2_06",
8018 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x40),
8021 { &hf_bthci_cmd_evt_mask2_07
,
8022 { "Flow Spec Modify Complete", "bthci_cmd.evt_mask2_07",
8023 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x80),
8026 { &hf_bthci_cmd_evt_mask2_08
,
8027 { "Number Of Completed Data Blocks", "bthci_cmd.evt_mask2_8",
8028 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x100),
8031 { &hf_bthci_cmd_evt_mask2_09
,
8032 { "AMP Start Test", "bthci_cmd.evt_mask2_9",
8033 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x200),
8036 { &hf_bthci_cmd_evt_mask2_10
,
8037 { "AMP Test End", "bthci_cmd.evt_mask2_10",
8038 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x400),
8041 { &hf_bthci_cmd_evt_mask2_11
,
8042 { "AMP Receiver Report", "bthci_cmd.evt_mask2_11",
8043 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x800),
8046 { &hf_bthci_cmd_evt_mask2_12
,
8047 { "Short Range Mode Change Complete", "bthci_cmd.evt_mask2_12",
8048 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x1000),
8051 { &hf_bthci_cmd_evt_mask2_13
,
8052 { "AMP Status Change", "bthci_cmd.evt_mask2_13",
8053 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x2000),
8056 { &hf_bthci_cmd_evt_mask2_14
,
8057 { "Triggered Clock Capture", "bthci_cmd.evt_mask2_14",
8058 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x4000),
8061 { &hf_bthci_cmd_evt_mask2_15
,
8062 { "Synchronization Train Complete", "bthci_cmd.evt_mask2_15",
8063 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x8000),
8066 { &hf_bthci_cmd_evt_mask2_16
,
8067 { "Synchronization Train Received", "bthci_cmd.evt_mask2_16",
8068 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x10000),
8071 { &hf_bthci_cmd_evt_mask2_17
,
8072 { "Connectionless Peripheral Broadcast Receive", "bthci_cmd.evt_mask2_17",
8073 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x20000),
8076 { &hf_bthci_cmd_evt_mask2_18
,
8077 { "Connectionless Peripheral Broadcast Timeout", "bthci_cmd.evt_mask2_18",
8078 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x40000),
8081 { &hf_bthci_cmd_evt_mask2_19
,
8082 { "Truncated Page Complete", "bthci_cmd.evt_mask2_19",
8083 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x80000),
8086 { &hf_bthci_cmd_evt_mask2_20
,
8087 { "Peripheral Page Response Timeout", "bthci_cmd.evt_mask2_20",
8088 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x100000),
8091 { &hf_bthci_cmd_evt_mask2_21
,
8092 { "Connectionless Peripheral Broadcast Channel Map Change", "bthci_cmd.evt_mask2_21",
8093 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x200000),
8096 { &hf_bthci_cmd_evt_mask2_22
,
8097 { "Inquiry Response Notification", "bthci_cmd.evt_mask2_22",
8098 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x400000),
8101 { &hf_bthci_cmd_evt_mask2_23
,
8102 { "Authenticated Payload Timeout Expired", "bthci_cmd.evt_mask2_23",
8103 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x800000),
8106 { &hf_bthci_cmd_evt_mask2_24
,
8107 { "SAM Status Change", "bthci_cmd.evt_mask2_24",
8108 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x1000000),
8111 { &hf_bthci_cmd_evt_mask2_25
,
8112 { "Encryption Change [v2]", "bthci_cmd.evt_mask2_25",
8113 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x2000000),
8116 { &hf_bthci_cmd_evt_mask2_reserved
,
8117 { "Reserved", "bthci_cmd.evt_mask2_25_reserved",
8118 FT_UINT64
, BASE_HEX
, NULL
, UINT64_C(0xFFFFFFFFFC000000),
8121 { &hf_bthci_cmd_location_domain_aware
,
8122 { "Location Domain Aware", "bthci_cmd.location_domain_aware",
8123 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
8126 { &hf_bthci_cmd_location_domain
,
8127 { "Location Domain", "bthci_cmd.location_domain",
8128 FT_STRING
, BASE_NONE
, NULL
, 0x0,
8129 "ISO 3166-1 Country Code", HFILL
}
8131 { &hf_bthci_cmd_location_domain_options
,
8132 { "Location Domain Options", "bthci_cmd.location_domain_options",
8133 FT_STRING
, BASE_NONE
, NULL
, 0x0,
8136 { &hf_bthci_cmd_location_options
,
8137 { "Location Options", "bthci_cmd.location_options",
8138 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8141 { &hf_bthci_cmd_flow_control_mode
,
8142 { "Flow Control Mode", "bthci_cmd.flow_control_mode",
8143 FT_UINT8
, BASE_HEX
, VALS(cmd_flow_ctrl_mode
), 0x0,
8146 { &hf_bthci_cmd_tx_power_level_type
,
8147 { "Tx Power Level Type", "bthci_cmd.tx_power_level_type",
8148 FT_UINT8
, BASE_HEX
, VALS(cmd_power_level_types
), 0x0,
8151 { &hf_bthci_cmd_short_range_mode
,
8152 { "Short Range Mode", "bthci_cmd.short_range_mode",
8153 FT_UINT8
, BASE_HEX
, VALS(cmd_en_disabled
), 0x0,
8156 { &hf_bthci_cmd_enable_amp_recv_reports
,
8157 { "Enable AMP Receiver Reports", "bthci_cmd.enable_amp_recv_reports",
8158 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
8161 { &hf_bthci_cmd_amp_recv_report_interval
,
8162 { "AMP Receiver Report Interval (s)", "bthci_cmd.amp_recv_report_interval",
8163 FT_UINT8
, BASE_DEC
, 0x0, 0x0,
8166 { &hf_bthci_cmd_length_so_far
,
8167 { "Length So Far", "bthci_cmd.length_so_far",
8168 FT_UINT16
, BASE_DEC
, 0x0, 0x0,
8171 { &hf_bthci_cmd_amp_assoc_length
,
8172 { "AMP Assoc Length", "bthci_cmd.amp_assoc_length",
8173 FT_UINT16
, BASE_DEC
, 0x0, 0x0,
8176 { &hf_bthci_cmd_amp_remaining_assoc_length
,
8177 { "AMP Remaining Assoc Length", "bthci_cmd.amp_remaining_assoc_length",
8178 FT_UINT16
, BASE_DEC
, 0x0, 0x0,
8181 { &hf_bthci_cmd_amp_assoc_fragment
,
8182 { "AMP Assoc Fragment", "bthci_cmd.amp_assoc_fragment",
8183 FT_BYTES
, BASE_NONE
, 0x0, 0x0,
8186 { &hf_bthci_cmd_le_supported_host
,
8187 { "LE Supported Host", "bthci_cmd.le_supported_host",
8188 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
8191 { &hf_bthci_cmd_le_simultaneous_host
,
8192 { "Simultaneous LE Host", "bthci_cmd.le_simultaneous_host",
8193 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
8194 "Support for both LE and BR/EDR to same device", HFILL
}
8196 { &hf_bthci_cmd_le_event_mask
,
8197 { "LE Event Mask", "bthci_cmd.le_event_mask",
8198 FT_UINT64
, BASE_HEX
, NULL
, 0x0,
8201 { &hf_bthci_cmd_le_event_mask_le_connection_complete
,
8202 { "LE Connection Complete", "bthci_cmd.le_event_mask.le_connection_complete",
8203 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x01),
8206 { &hf_bthci_cmd_le_event_mask_le_advertising_report
,
8207 { "LE Advertising Report", "bthci_cmd.le_event_mask.le_advertising_report",
8208 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x02),
8211 { &hf_bthci_cmd_le_event_mask_le_connection_update_complete
,
8212 { "LE Connection Update Complete", "bthci_cmd.le_event_mask.le_connection_update_complete",
8213 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x04),
8216 { &hf_bthci_cmd_le_event_mask_le_read_remote_features_complete
,
8217 { "LE Read Remote Features (Page 0) Complete", "bthci_cmd.le_event_mask.le_read_remote_features_complete",
8218 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x08),
8221 { &hf_bthci_cmd_le_event_mask_le_long_term_key_request
,
8222 { "LE Long Term Key Request", "bthci_cmd.le_event_mask.le_long_term_key_request",
8223 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x10),
8226 { &hf_bthci_cmd_le_event_mask_le_remote_connection_parameter_request
,
8227 { "LE Remote Connection Parameter Request", "bthci_cmd.le_event_mask.le_remote_connection_parameter_request",
8228 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x20),
8231 { &hf_bthci_cmd_le_event_mask_le_data_length_change
,
8232 { "LE Data Length Change", "bthci_cmd.le_event_mask.le_data_length_change",
8233 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x40),
8236 { &hf_bthci_cmd_le_event_mask_le_read_local_p256_public_key_complete
,
8237 { "LE Read Local P-256 Public Key Complete", "bthci_cmd.le_event_mask.le_read_local_p256_public_key_complete",
8238 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x80),
8241 { &hf_bthci_cmd_le_event_mask_le_generate_dhkey_complete
,
8242 { "LE Generate DHKey Complete", "bthci_cmd.le_event_mask.le_generate_dhkey_complete",
8243 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x100),
8246 { &hf_bthci_cmd_le_event_mask_le_enhanced_connection_complete_v1
,
8247 { "LE Enhanced Connection Complete [v1]", "bthci_cmd.le_event_mask.le_enhanced_connection_complete_v1",
8248 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x200),
8251 { &hf_bthci_cmd_le_event_mask_le_direct_advertising_report
,
8252 { "LE Direct Advertising Report", "bthci_cmd.le_event_mask.le_direct_advertising_report",
8253 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x400),
8256 { &hf_bthci_cmd_le_event_mask_le_phy_update_complete
,
8257 { "LE PHY Update Complete", "bthci_cmd.le_event_mask.le_phy_update_complete",
8258 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x800),
8261 { &hf_bthci_cmd_le_event_mask_le_extended_advertising_report
,
8262 { "LE Extended Advertising Report", "bthci_cmd.le_event_mask.le_extended_advertising_report",
8263 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x1000),
8266 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_established_v1
,
8267 { "LE Periodic Advertising Sync Established [v1]", "bthci_cmd.le_event_mask.le_periodic_advertising_sync_established_v1",
8268 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x2000),
8271 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_report_v1
,
8272 { "LE Periodic Advertising Report [v1]", "bthci_cmd.le_event_mask.le_periodic_advertising_report_v1",
8273 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x4000),
8276 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_lost
,
8277 { "LE Periodic Advertising Sync Lost", "bthci_cmd.le_event_mask.le_periodic_advertising_sync_lost",
8278 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x8000),
8281 { &hf_bthci_cmd_le_event_mask_le_extended_scan_timeout
,
8282 { "LE Extended Scan Timeout", "bthci_cmd.le_event_mask.le_extended_scan_timeout",
8283 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x10000),
8286 { &hf_bthci_cmd_le_event_mask_le_extended_advertising_set_terminated
,
8287 { "LE Extended Advertising Set Terminated", "bthci_cmd.le_event_mask.le_extended_advertising_set_terminated",
8288 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x20000),
8291 { &hf_bthci_cmd_le_event_mask_le_scan_request_received
,
8292 { "LE Scan Request Received", "bthci_cmd.le_event_mask.le_scan_request_received",
8293 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x40000),
8296 { &hf_bthci_cmd_le_event_mask_le_channel_selection_algorithm
,
8297 { "LE Channel Selection Algorithm", "bthci_cmd.le_event_mask.le_channel_selection_algorithm",
8298 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x80000),
8301 { &hf_bthci_cmd_le_event_mask_le_connectionless_iq_report
,
8302 { "LE Connectionless IQ Report", "bthci_cmd.le_event_mask.le_connectionless_iq_report",
8303 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x100000),
8306 { &hf_bthci_cmd_le_event_mask_le_connection_iq_report
,
8307 { "LE Connection IQ Report", "bthci_cmd.le_event_mask.le_connection_iq_report",
8308 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x200000),
8311 { &hf_bthci_cmd_le_event_mask_le_cte_request_failed
,
8312 { "LE CTE Request Failed", "bthci_cmd.le_event_mask.le_cte_request_failed",
8313 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x400000),
8316 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_transfer_received_v1
,
8317 { "LE Periodic Advertising Sync Transfer Received [v1]", "bthci_cmd.le_event_mask.le_periodic_advertising_sync_transfer_received_v1",
8318 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x800000),
8321 { &hf_bthci_cmd_le_event_mask_le_cis_established_v1
,
8322 { "LE CIS Established [v1]", "bthci_cmd.le_event_mask.le_cis_established_v1",
8323 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x1000000),
8326 { &hf_bthci_cmd_le_event_mask_le_cis_request
,
8327 { "LE CIS Request", "bthci_cmd.le_event_mask.le_cis_request",
8328 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x2000000),
8331 { &hf_bthci_cmd_le_event_mask_le_create_big_complete
,
8332 { "LE Create BIG Complete", "bthci_cmd.le_event_mask.le_create_big_complete",
8333 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x4000000),
8336 { &hf_bthci_cmd_le_event_mask_le_terminate_big_complete
,
8337 { "LE Terminate BIG Complete", "bthci_cmd.le_event_mask.le_terminate_big_complete",
8338 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x8000000),
8341 { &hf_bthci_cmd_le_event_mask_le_big_sync_established
,
8342 { "LE BIG Sync Established", "bthci_cmd.le_event_mask.le_big_sync_established",
8343 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x10000000),
8346 { &hf_bthci_cmd_le_event_mask_le_big_sync_lost
,
8347 { "LE BIG Sync Lost", "bthci_cmd.le_event_mask.le_big_sync_lost",
8348 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x20000000),
8351 { &hf_bthci_cmd_le_event_mask_le_request_peer_sca_complete
,
8352 { "LE Request Peer SCA Complete", "bthci_cmd.le_event_mask.le_request_peer_sca_complete",
8353 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x40000000),
8356 { &hf_bthci_cmd_le_event_mask_le_path_loss_threshold
,
8357 { "LE Path Loss Threshold", "bthci_cmd.le_event_mask.le_path_loss_threshold",
8358 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x80000000),
8361 { &hf_bthci_cmd_le_event_mask_le_transmit_power_reporting
,
8362 { "LE Transmit Power Reporting", "bthci_cmd.le_event_mask.le_transmit_power_reporting",
8363 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x100000000),
8366 { &hf_bthci_cmd_le_event_mask_le_biginfo_advertising_report
,
8367 { "LE BIGInfo Advertising Report", "bthci_cmd.le_event_mask.le_biginfo_advertising_report",
8368 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x200000000),
8371 { &hf_bthci_cmd_le_event_mask_le_subrate_changed
,
8372 { "LE Subrate Changed", "bthci_cmd.le_event_mask.le_subrate_changed",
8373 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x400000000),
8376 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_established_v2
,
8377 { "LE Periodic Advertising Sync Established [v2]", "bthci_cmd.le_event_mask.le_periodic_advertising_sync_established_v2",
8378 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x800000000),
8381 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_report_v2
,
8382 { "LE Periodic Advertising Report [v2]", "bthci_cmd.le_event_mask.le_event_mask_le_periodic_advertising_report_v2",
8383 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x1000000000),
8386 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_sync_transfer_received_v2
,
8387 { "LE Periodic Advertising Sync Transfer Received [v2]", "bthci_cmd.le_event_mask.le_periodic_advertising_sync_transfer_received_v2",
8388 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x2000000000),
8391 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_subevent_data_request
,
8392 { "LE Periodic Advertising Subevent Data Request", "bthci_cmd.le_event_mask.le_periodic_advertising_subevent_data_request",
8393 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x4000000000),
8396 { &hf_bthci_cmd_le_event_mask_le_periodic_advertising_response_report
,
8397 { "LE Periodic Advertising Response Report", "bthci_cmd.le_event_mask.le_periodic_advertising_response_report",
8398 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x8000000000),
8401 { &hf_bthci_cmd_le_event_mask_le_enhanced_connection_complete_v2
,
8402 { "LE Enhanced Connection Complete [v2]", "bthci_cmd.le_event_mask.le_enhanced_connection_complete_v2",
8403 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x10000000000),
8406 { &hf_bthci_cmd_le_event_mask_le_cis_established_v2
,
8407 { "LE CIS Established [v2]", "bthci_cmd.le_event_mask.le_cis_established_v2",
8408 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x20000000000),
8411 { &hf_bthci_cmd_le_event_mask_le_read_all_remote_features_complete
,
8412 { "LE Read All Remote Features Complete", "bthci_cmd.le_event_mask.le_read_all_remote_features_complete",
8413 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x40000000000),
8416 { &hf_bthci_cmd_le_event_mask_le_cs_read_remote_supported_capabilities_complete
,
8417 { "LE CS Read Remote Supported Capabilities Complete", "bthci_cmd.le_event_mask.le_cs_read_remote_supported_capabilities_complete",
8418 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x80000000000),
8421 { &hf_bthci_cmd_le_event_mask_le_cs_read_remote_fae_table_complete
,
8422 { "LE CS Read Remote FAE Table Complete", "bthci_cmd.le_event_mask.le_cs_read_remote_fae_table_complete",
8423 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x100000000000),
8426 { &hf_bthci_cmd_le_event_mask_le_cs_security_enable_complete
,
8427 { "LE CS Security Enable Complete", "bthci_cmd.le_event_mask.le_cs_security_enable_complete",
8428 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x200000000000),
8431 { &hf_bthci_cmd_le_event_mask_le_cs_config_complete
,
8432 { "LE CS Config Complete", "bthci_cmd.le_event_mask.le_cs_config_complete",
8433 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x400000000000),
8436 { &hf_bthci_cmd_le_event_mask_le_cs_procedure_enable_complete
,
8437 { "LE CS Procedure Enable Complete", "bthci_cmd.le_event_mask.le_cs_procedure_enable_complete",
8438 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x800000000000),
8441 { &hf_bthci_cmd_le_event_mask_le_cs_subevent_result
,
8442 { "LE CS Subevent Result", "bthci_cmd.le_event_mask.le_cs_subevent_result",
8443 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x1000000000000),
8446 { &hf_bthci_cmd_le_event_mask_le_cs_subevent_result_continue
,
8447 { "LE CS Subevent Result Continue", "bthci_cmd.le_event_mask.le_cs_subevent_result_continue",
8448 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x2000000000000),
8451 { &hf_bthci_cmd_le_event_mask_le_cs_test_end_complete
,
8452 { "LE CS Test End Complete", "bthci_cmd.le_event_mask.le_cs_test_end_complete",
8453 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x4000000000000),
8456 { &hf_bthci_cmd_le_event_mask_le_monitored_advertisers_report
,
8457 { "LE Monitored Advertisers Report", "bthci_cmd.le_event_mask.le_monitored_advertisers_report",
8458 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x8000000000000),
8461 { &hf_bthci_cmd_le_event_mask_le_frame_space_update_complete
,
8462 { "LE Frame Space Update Complete", "bthci_cmd.le_event_mask.le_frame_space_update_complete",
8463 FT_BOOLEAN
, 64, NULL
, UINT64_C(0x10000000000000),
8466 { &hf_bthci_cmd_le_event_mask_le_reserved
,
8467 { "Reserved", "bthci_cmd.le_event_mask.reserved",
8468 FT_UINT64
, BASE_HEX
, NULL
, UINT64_C(0xFFE0000000000000),
8471 { &hf_bthci_cmd_le_advts_interval_min
,
8472 { "Advertising Interval Min", "bthci_cmd.le_advts_interval_min",
8473 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8476 { &hf_bthci_cmd_le_advts_interval_max
,
8477 { "Advertising Interval Max", "bthci_cmd.le_advts_interval_max",
8478 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8481 { &hf_bthci_cmd_le_advts_type
,
8482 { "Advertising Type", "bthci_cmd.le_advts_type",
8483 FT_UINT8
, BASE_HEX
, VALS(cmd_le_advertising_types
), 0x0,
8486 { &hf_bthci_cmd_le_address_type
,
8487 { "Address Type", "bthci_cmd.le_address_type",
8488 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_address_types_vals
), 0x0,
8491 { &hf_bthci_cmd_le_own_address_type
,
8492 { "Own Address Type", "bthci_cmd.le_own_address_type",
8493 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_address_types_vals
), 0x0,
8496 { &hf_bthci_cmd_le_peer_address_type
,
8497 { "Peer Address Type", "bthci_cmd.le_peer_address_type",
8498 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_address_types_vals
), 0x0,
8501 { &hf_bthci_cmd_le_peer_identity_address_type
,
8502 { "Peer Identity Address Type", "bthci_cmd.le_peer_identity_address_type",
8503 FT_UINT8
, BASE_HEX
, VALS(cmd_identity_address_types_vals
), 0x0,
8506 { &hf_bthci_cmd_le_direct_address_type
,
8507 { "Direct Address Type", "bthci_cmd.le_direct_address_type",
8508 FT_UINT8
, BASE_HEX
, VALS(bthci_cmd_address_types_vals
), 0x0,
8511 { &hf_bthci_cmd_le_advts_channel_map_1
,
8512 { "Channel 37", "bthci_cmd.le_advts_ch_map_1",
8513 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
8516 { &hf_bthci_cmd_le_advts_channel_map_2
,
8517 { "Channel 38", "bthci_cmd.le_advts_ch_map_2",
8518 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
8521 { &hf_bthci_cmd_le_advts_channel_map_3
,
8522 { "Channel 39", "bthci_cmd.le_advts_ch_map_3",
8523 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
8526 { &hf_bthci_cmd_le_advts_filter_policy
,
8527 { "Advertising Filter Policy", "bthci_cmd.le_advts_filter_policy",
8528 FT_UINT8
, BASE_HEX
, VALS(cmd_le_advertising_filter_policy
), 0x0,
8531 { &hf_bthci_cmd_le_data_length
,
8532 { "Data Length", "bthci_cmd.le_data_length",
8533 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8536 { &hf_bthci_cmd_le_advts_enable
,
8537 { "Advertising Enable", "bthci_cmd.le_advts_enable",
8538 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
8541 { &hf_bthci_cmd_le_scan_enable
,
8542 { "Scan Enable", "bthci_cmd.le_scan_enable",
8543 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
8546 { &hf_bthci_cmd_le_filter_duplicates
,
8547 { "Filter Duplicates", "bthci_cmd.le_filter_duplicates",
8548 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
8551 { &hf_bthci_cmd_le_scan_type
,
8552 { "Scan Type", "bthci_cmd.le_scan_type",
8553 FT_UINT8
, BASE_HEX
, VALS(cmd_le_scan_types
), 0x0,
8556 { &hf_bthci_cmd_le_scan_interval
,
8557 { "Scan Interval", "bthci_cmd.le_scan_interval",
8558 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
8561 { &hf_bthci_cmd_le_scan_window
,
8562 { "Scan Window", "bthci_cmd.le_scan_window",
8563 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
8566 { &hf_bthci_cmd_le_scan_filter_policy
,
8567 { "Scan Filter Policy", "bthci_cmd.le_scan_filter_policy",
8568 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8571 { &hf_bthci_cmd_scan_filter_policy_filtered
,
8572 { "Filtered (Use Filter Accept List)", "bthci_cmd.scan_filter_policy.filtered",
8573 FT_BOOLEAN
, 8, NULL
, 0x01,
8576 { &hf_bthci_cmd_scan_filter_policy_extended
,
8577 { "Extended (Allow Unresolvable TargetA Address)", "bthci_cmd.scan_filter_policy.extended",
8578 FT_BOOLEAN
, 8, NULL
, 0x02,
8581 { &hf_bthci_cmd_scan_filter_policy_decision_mode
,
8582 { "Decision Mode", "bthci_cmd.scan_filter_policy.decision_mode",
8583 FT_UINT8
, BASE_HEX
, VALS(cmd_decision_mode_filter_policy
), 0x0C,
8586 { &hf_bthci_cmd_scan_filter_policy_reserved
,
8587 { "Reserved", "bthci_cmd.scan_filter_policy.reserved",
8588 FT_UINT8
, BASE_HEX
, NULL
, 0xF0,
8591 { &hf_bthci_cmd_le_initiator_filter_policy
,
8592 { "Initiator Filter Policy", "bthci_cmd.le_initiator_filter_policy",
8593 FT_UINT8
, BASE_HEX
, VALS(cmd_init_filter_policy
), 0x0,
8596 { &hf_bthci_cmd_le_con_interval_min
,
8597 { "Connection Interval Min", "bthci_cmd.le_con_interval_min",
8598 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_1p25_ms
), 0x0,
8601 { &hf_bthci_cmd_le_con_interval_max
,
8602 { "Connection Interval Max", "bthci_cmd.le_con_interval_max",
8603 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_1p25_ms
), 0x0,
8606 { &hf_bthci_cmd_le_con_latency
,
8607 { "Max Connection Latency", "bthci_cmd.le_con_latency",
8608 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8611 { &hf_bthci_cmd_le_supervision_timeout
,
8612 { "Supervision Timeout", "bthci_cmd.le_supv_timeout",
8613 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p01_sec
), 0x0,
8616 { &hf_bthci_cmd_le_min_ce_length
,
8617 { "Min CE Length", "bthci_cmd.le_min_ce_length",
8618 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
8619 "Min. Connection Event Length", HFILL
}
8621 { &hf_bthci_cmd_le_max_ce_length
,
8622 { "Max CE Length", "bthci_cmd.le_max_ce_length",
8623 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
8624 "Max. Connection Event Length", HFILL
}
8626 { &hf_bthci_cmd_le_channel_map
,
8627 { "Channel Map", "bthci_cmd.le_channel_map",
8628 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8631 { &hf_bthci_cmd_key
,
8632 { "Key", "bthci_cmd.le_key",
8633 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8634 "Encryption Key", HFILL
}
8636 { &hf_bthci_cmd_plaintext_data
,
8637 { "Plaintext", "bthci_cmd.le_plaintext",
8638 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8641 { &hf_bthci_cmd_random_number
,
8642 { "Random Number", "bthci_cmd.le_random_number",
8643 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8646 { &hf_bthci_cmd_encrypted_diversifier
,
8647 { "Encrypted Diversifier", "bthci_cmd.le_encrypted_diversifier",
8648 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8651 { &hf_bthci_cmd_le_long_term_key
,
8652 { "Long Term Key", "bthci_cmd.le_long_term_key",
8653 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8656 { &hf_bthci_cmd_rx_frequency
,
8657 { "Rx Frequency", "bthci_cmd.rx_frequency",
8658 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8661 { &hf_bthci_cmd_tx_frequency
,
8662 { "Tx Frequency", "bthci_cmd.tx_frequency",
8663 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8666 { &hf_bthci_cmd_test_data_length
,
8667 { "Test Data Length", "bthci_cmd.le_test_data_length",
8668 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8671 { &hf_bthci_cmd_test_packet_payload
,
8672 { "Packet Payload", "bthci_cmd.le_test_payload",
8673 FT_UINT8
, BASE_HEX
, VALS(cmd_le_test_pkt_payload
), 0x0,
8676 { &hf_bthci_cmd_parameter
,
8677 { "Parameter", "bthci_cmd.parameter",
8678 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8681 { &hf_response_in_frame
,
8682 { "Response in frame", "bthci_cmd.response_in_frame",
8683 FT_FRAMENUM
, BASE_NONE
, FRAMENUM_TYPE(FT_FRAMENUM_RESPONSE
), 0x0,
8686 { &hf_command_response_time_delta
,
8687 { "Command-Response Delta", "bthci_cmd.command_response_delta",
8688 FT_DOUBLE
, BASE_NONE
|BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x00,
8691 { &hf_pending_in_frame
,
8692 { "Pending in frame", "bthci_cmd.pending_in_frame",
8693 FT_FRAMENUM
, BASE_NONE
, FRAMENUM_TYPE(FT_FRAMENUM_RESPONSE
), 0x0,
8696 { &hf_command_pending_time_delta
,
8697 { "Command-Pending Delta", "bthci_cmd.command_pending_delta",
8698 FT_DOUBLE
, BASE_NONE
|BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x00,
8701 { &hf_bthci_cmd_le_tx_octets
,
8702 { "TxOctets", "bthci_cmd.le_tx_octets",
8703 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8706 { &hf_bthci_cmd_le_tx_time
,
8707 { "TxTime", "bthci_cmd.le_tx_time",
8708 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
8711 { &hf_bthci_cmd_le_suggested_max_tx_octets
,
8712 { "SuggestedMaxTxOctets", "bthci_cmd.le_suggested_max_tx_octets",
8713 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8716 { &hf_bthci_cmd_le_suggested_max_tx_time
,
8717 { "SuggestedMaxTxTime", "bthci_cmd.le_suggested_max_tx_time",
8718 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
8721 { &hf_bthci_cmd_le_remote_p_256_public_key
,
8722 { "Remote_P-256_Public_Key", "bthci_cmd.le_remote_p_256_public_key",
8723 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8726 { &hf_bthci_cmd_le_peer_irk
,
8727 { "Peer IRK", "bthci_cmd.le_peer_irk",
8728 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8731 { &hf_bthci_cmd_le_local_irk
,
8732 { "Local IRK", "bthci_cmd.le_local_irk",
8733 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8736 { &hf_bthci_cmd_le_address_resolution_enable
,
8737 { "Address Resolution Enable", "bthci_cmd.le_address_resolution_enable",
8738 FT_UINT8
, BASE_HEX
, VALS(cmd_le_address_resolution_enable
), 0x0,
8741 { &hf_bthci_cmd_le_rpa_timeout
,
8742 { "RPA Timeout", "bthci_cmd.le_rpa_timeout",
8743 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_second_seconds
), 0x0,
8746 { &hf_bthci_cmd_advertising_handle
,
8747 { "Advertising Handle", "bthci_cmd.advertising_handle",
8748 FT_UINT8
, BASE_HEX
|BASE_SPECIAL_VALS
, VALS(bluetooth_not_used_0xff_special
), 0x0,
8751 { &hf_bthci_cmd_advertising_ext_interval_min
,
8752 { "Advertising Interval Min", "bthci_cmd.le_advts_interval_min",
8753 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
8756 { &hf_bthci_cmd_advertising_ext_interval_max
,
8757 { "Advertising Interval Max", "bthci_cmd.le_advts_interval_max",
8758 FT_UINT24
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
8761 { &hf_bthci_cmd_advertising_properties
,
8762 { "Advertising Event Properties", "bthci_cmd.advertising_properties",
8763 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8766 { &hf_bthci_cmd_advertising_properties_decision_pdu_incl_adi
,
8767 { "Include ADI in Decision PDUs", "bthci_cmd.adv_properties.decision_pdu_incl_adi",
8768 FT_BOOLEAN
, 16, NULL
, 0x0200,
8771 { &hf_bthci_cmd_advertising_properties_decision_pdu_incl_adva
,
8772 { "Include AdvA in Decision PDUs", "bthci_cmd.adv_properties.decision_pdu_incl_adva",
8773 FT_BOOLEAN
, 16, NULL
, 0x0100,
8776 { &hf_bthci_cmd_advertising_properties_use_decision_pdus
,
8777 { "Use Decision PDUs", "bthci_cmd.adv_properties.use_decision_pdus",
8778 FT_BOOLEAN
, 16, NULL
, 0x0080,
8781 { &hf_bthci_cmd_advertising_properties_incl_txpower
,
8782 { "Include Tx Power", "bthci_cmd.adv_properties.txpower",
8783 FT_BOOLEAN
, 16, NULL
, 0x0040,
8786 { &hf_bthci_cmd_advertising_properties_anonymous_adv
,
8787 { "Anonymous Advertisement", "bthci_cmd.adv_properties.anonymous_adv",
8788 FT_BOOLEAN
, 16, NULL
, 0x0020,
8791 { &hf_bthci_cmd_advertising_properties_legacy_adv
,
8792 { "Use Legacy PDUs", "bthci_cmd.adv_properties.legacy_adv",
8793 FT_BOOLEAN
, 16, NULL
, 0x0010,
8796 { &hf_bthci_cmd_advertising_properties_hdc_connectable_directed
,
8797 { "High Duty Cycle Connectable Directed", "bthci_cmd.adv_properties.hdc_connectable_directed",
8798 FT_BOOLEAN
, 16, NULL
, 0x0008,
8801 { &hf_bthci_cmd_advertising_properties_directed
,
8802 { "Directed", "bthci_cmd.adv_properties.directed",
8803 FT_BOOLEAN
, 16, NULL
, 0x0004,
8806 { &hf_bthci_cmd_advertising_properties_scannable
,
8807 { "Scannable", "bthci_cmd.adv_properties.scannable",
8808 FT_BOOLEAN
, 16, NULL
, 0x0002,
8811 { &hf_bthci_cmd_advertising_properties_connectable
,
8812 { "Connectable", "bthci_cmd.adv_properties.connectable",
8813 FT_BOOLEAN
, 16, NULL
, 0x0001,
8816 { &hf_bthci_cmd_advertising_properties_reserved
,
8817 { "Reserved", "bthci_cmd.adv_properties.reserved",
8818 FT_UINT16
, BASE_HEX
, NULL
, 0xFC00,
8821 { &hf_bthci_cmd_periodic_advertising_properties
,
8822 { "Periodic Advertising Properties", "bthci_cmd.periodic_adv_properties",
8823 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8826 { &hf_bthci_cmd_periodic_advertising_properties_reserved
,
8827 { "Reserved", "bthci_cmd.periodic_adv_properties.reserved",
8828 FT_UINT16
, BASE_HEX
, NULL
, 0xFFBF,
8831 { &hf_bthci_cmd_primary_advertising_phy
,
8832 { "Primary Advertising PHY", "bthci_cmd.primary_advertising_phy",
8833 FT_UINT8
, BASE_HEX
, VALS(cmd_le_phy_vals
), 0x0,
8836 { &hf_bthci_cmd_sec_adv_max_skip
,
8837 { "Secondary Advertising Max Skip", "bthci_cmd.secondary_advertising_max_skip",
8838 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8841 { &hf_bthci_cmd_secondary_advertising_phy
,
8842 { "Secondary Advertising PHY", "bthci_cmd.secondary_advertising_phy",
8843 FT_UINT8
, BASE_HEX
, VALS(cmd_le_phy_vals
), 0x0,
8846 { &hf_bthci_cmd_advertising_sid
,
8847 { "Advertising SID", "bthci_cmd.advertising_sid",
8848 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8851 { &hf_bthci_cmd_scan_req_notif_en
,
8852 { "Scan Request Notification Enable", "bthci_cmd.scan_request_notification_enable",
8853 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8856 { &hf_bthci_cmd_le_adv_data_operation
,
8857 { "Data Operation", "bthci_cmd.adv_data_operation",
8858 FT_UINT8
, BASE_HEX
, VALS(cmd_le_adv_data_operation
), 0x0,
8861 { &hf_bthci_cmd_le_adv_data_frag_pref
,
8862 { "Fragment Preference", "bthci_cmd.adv_fragment_preference",
8863 FT_UINT8
, BASE_HEX
, VALS(cmd_le_adv_data_frag_pref
), 0x0,
8866 { &hf_bthci_cmd_le_adv_set
,
8867 { "Advertising Set", "bthci_cmd.le_adv_set",
8868 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8871 { &hf_bthci_cmd_le_adv_en_sets
,
8872 { "Number of Sets", "bthci_cmd.adv_num_sets",
8873 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8876 { &hf_bthci_cmd_le_adv_duration
,
8877 { "Duration", "bthci_cmd.adv_duration",
8878 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p01_sec
), 0x0,
8881 { &hf_bthci_cmd_le_adv_max_extended_events
,
8882 { "Max Extended Events", "bthci_cmd.max_extended_advertising_events",
8883 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8886 {&hf_bthci_cmd_all_phys
,
8887 {"All PHYs", "bthci_cmd.all_phys",
8888 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8891 { &hf_bthci_cmd_all_phys_tx_pref
,
8892 { "The Host has no Tx PHY preference", "bthci_cmd.all_phys.tx_preference",
8893 FT_BOOLEAN
, 8, NULL
, 0x1,
8896 { &hf_bthci_cmd_all_phys_rx_pref
,
8897 { "The Host has no Rx PHY preference", "bthci_cmd.all_phys.rx_preference",
8898 FT_BOOLEAN
, 8, NULL
, 0x2,
8901 { &hf_bthci_cmd_all_phys_reserved
,
8902 { "Reserved", "bthci_cmd.all_phys.reserved",
8903 FT_UINT8
, BASE_HEX
, NULL
, 0xFC,
8906 {&hf_bthci_cmd_tx_phys
,
8907 {"Tx PHYs", "bthci_cmd.tx_phys",
8908 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8911 {&hf_bthci_cmd_rx_phys
,
8912 {"Rx PHYs", "bthci_cmd.rx_phys",
8913 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8916 { &hf_bthci_cmd_phys_pref_le_1m
,
8917 { "The Host prefers LE 1M", "bthci_cmd.phys_pref.le_1m",
8918 FT_BOOLEAN
, 8, NULL
, 0x1,
8921 { &hf_bthci_cmd_phys_pref_le_2m
,
8922 { "The Host prefers LE 2M", "bthci_cmd.phys_pref.le_2m",
8923 FT_BOOLEAN
, 8, NULL
, 0x2,
8926 { &hf_bthci_cmd_phys_pref_le_coded
,
8927 { "The Host prefers LE Coded", "bthci_cmd.phys_pref.le_coded",
8928 FT_BOOLEAN
, 8, NULL
, 0x4,
8931 { &hf_bthci_cmd_phys_pref_reserved
,
8932 { "Reserved", "bthci_cmd.phys_pref.reserved",
8933 FT_UINT8
, BASE_HEX
, NULL
, 0xF8,
8936 { &hf_bthci_cmd_phy_options
,
8937 { "PHY Options", "bthci_cmd.phy_options",
8938 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
8941 { &hf_bthci_cmd_phy_options_coding
,
8942 { "Coding", "bthci_cmd.phy_options.coding",
8943 FT_UINT16
, BASE_HEX
, VALS(cmd_le_phy_options_vals
), 0x3,
8946 { &hf_bthci_cmd_phy_options_reserved
,
8947 { "Reserved", "bthci_cmd.phy_options.reserved",
8948 FT_UINT16
, BASE_HEX
, NULL
, 0xFFFC,
8951 { &hf_bthci_cmd_phy
,
8952 { "PHY", "bthci_cmd.phy",
8953 FT_UINT8
, BASE_HEX
, VALS(cmd_le_phy_vals
), 0x0,
8956 { &hf_bthci_cmd_modulation_index
,
8957 { "Modulation Index", "bthci_cmd.modulation_index",
8958 FT_UINT8
, BASE_HEX
, VALS(cmd_le_modulation_index_vals
), 0x0,
8961 { &hf_bthci_cmd_le_scan_phys
,
8962 { "Scanning PHYs", "bthci_cmd.le_scan_phys",
8963 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
8966 { &hf_bthci_cmd_le_scan_phys_le_1m
,
8967 { "LE 1M", "bthci_cmd.le_scan_phys.le_1m",
8968 FT_BOOLEAN
, 8, NULL
, 0x1,
8971 { &hf_bthci_cmd_le_scan_phys_le_coded
,
8972 { "LE Coded", "bthci_cmd.le_scan_phys.le_coded",
8973 FT_BOOLEAN
, 8, NULL
, 0x4,
8976 { &hf_bthci_cmd_le_scan_phys_reserved
,
8977 { "Reserved", "bthci_cmd.le_scan_phys.reserved",
8978 FT_UINT8
, BASE_HEX
, NULL
, 0xFA,
8981 { &hf_bthci_cmd_le_scan_phy_param
,
8982 { "Scanning PHY", "bthci_cmd.le_scan_phy_param",
8983 FT_NONE
, BASE_NONE
, NULL
, 0x0,
8986 { &hf_bthci_cmd_le_scan_duration
,
8987 { "Duration", "bthci_cmd.scan_duration",
8988 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8991 { &hf_bthci_cmd_le_scan_period
,
8992 { "Period", "bthci_cmd.scan_period",
8993 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8996 { &hf_bthci_cmd_le_phys
,
8997 { "PHYs", "bthci_cmd.le_phys",
8998 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9001 { &hf_bthci_cmd_le_phys_le_1m
,
9002 { "LE 1M", "bthci_cmd.le_phys.le_1m",
9003 FT_BOOLEAN
, 8, NULL
, 0x1,
9006 { &hf_bthci_cmd_le_phys_le_2m
,
9007 { "LE 2M", "bthci_cmd.le_phys.le_2m",
9008 FT_BOOLEAN
, 8, NULL
, 0x2,
9011 { &hf_bthci_cmd_le_phys_le_coded
,
9012 { "LE Coded", "bthci_cmd.le_phys.le_coded",
9013 FT_BOOLEAN
, 8, NULL
, 0x4,
9016 { &hf_bthci_cmd_le_phys_reserved
,
9017 { "Reserved", "bthci_cmd.le_phys.reserved",
9018 FT_UINT8
, BASE_HEX
, NULL
, 0xF8,
9021 { &hf_bthci_cmd_le_init_phy_param
,
9022 { "Initiating PHY", "bthci_cmd.le_init_phy_param",
9023 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9026 { &hf_bthci_cmd_le_privacy_mode
,
9027 { "Privacy Mode", "bthci_cmd.le_privacy_mode",
9028 FT_UINT8
, BASE_HEX
, VALS(cmd_privacy_mode
), 0x0,
9031 { &hf_bthci_cmd_sync_filter_policy
,
9032 { "Filter Policy", "bthci_cmd.le_sync_filter_policy",
9033 FT_UINT8
, BASE_HEX
, VALS(cmd_sync_filter_policy
), 0x0,
9036 { &hf_bthci_cmd_skip
,
9037 { "Skip", "bthci_cmd.skip",
9038 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9041 { &hf_bthci_cmd_sync_handle
,
9042 { "Sync Handle", "bthci_cmd.sync_handle",
9043 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9046 { &hf_bthci_cmd_rf_tx_path_compensation_value
,
9047 { "RF Tx Path Compensation Value", "bthci_cmd.rf_tx_path_compensation_value",
9048 FT_INT16
, BASE_DEC
, NULL
, 0x0,
9051 { &hf_bthci_cmd_rf_rx_path_compensation_value
,
9052 { "RF Rx Path Compensation Value", "bthci_cmd.rf_rx_path_compensation_value",
9053 FT_INT16
, BASE_DEC
, NULL
, 0x0,
9056 { &hf_bthci_cmd_cte_length
,
9057 { "CTE Length", "bthci_cmd.cte_length",
9058 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9061 { &hf_bthci_cmd_cte_type
,
9062 { "CTE Type", "bthci_cmd.cte_type",
9063 FT_UINT8
, BASE_HEX
, VALS(cmd_cte_type_vals
), 0x0,
9066 { &hf_bthci_cmd_slot_durations
,
9067 { "Slot Durations", "bthci_cmd.slot_durations",
9068 FT_UINT8
, BASE_HEX
, VALS(cmd_slot_durations_vals
), 0x0,
9071 { &hf_bthci_cmd_antenna_switching_pattern_length
,
9072 { "Antenna Switching Pattern Length", "bthci_cmd.antenna_switching_pattern_length",
9073 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9076 { &hf_bthci_cmd_antenna_switching_pattern
,
9077 { "Antenna Switching Pattern", "bthci_cmd.antenna_switching_pattern",
9078 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9081 { &hf_bthci_cmd_antenna_id
,
9082 { "Antenna Id", "bthci_cmd.antenna_id",
9083 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9086 { &hf_bthci_cmd_cte_count
,
9087 { "CTE Count", "bthci_cmd.cte_count",
9088 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9091 { &hf_bthci_cmd_cte_enable
,
9092 { "CTE Enable", "bthci_cmd.cte_enable",
9093 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
9096 { &hf_bthci_cmd_iq_sampling_enable
,
9097 { "IQ Sampling Enable", "bthci_cmd.iq_sampling_enable",
9098 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
9101 { &hf_bthci_cmd_max_sampled_ctes
,
9102 { "Max Sampled CTEs", "bthci_cmd.max_sampled_ctes",
9103 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9106 { &hf_bthci_cmd_cte_request_interval
,
9107 { "CTE Request Interval", "bthci_cmd.cte_request_interval",
9108 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9111 { &hf_bthci_cmd_reporting_enable
,
9112 { "Reporting Enable", "bthci_cmd.reporting_enable",
9113 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
9116 { &hf_bthci_cmd_sync_cte_type
,
9117 { "Sync CTE Type", "bthci_cmd.sync_cte_type",
9118 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9121 { &hf_bthci_cmd_sync_cte_type_no_sync_aoa
,
9122 { "No sync to packets with AoA CTE", "bthci_cmd.sync_cte_type.no_sync_aoa",
9123 FT_BOOLEAN
, 8, NULL
, 0x01,
9126 { &hf_bthci_cmd_sync_cte_type_no_sync_aod_1us
,
9127 { "No sync to packets with AoD 1 usec CTE", "bthci_cmd.sync_cte_type.no_sync_aod_1us",
9128 FT_BOOLEAN
, 8, NULL
, 0x02,
9131 { &hf_bthci_cmd_sync_cte_type_no_sync_aod_2us
,
9132 { "No sync to packets with AoD 2 usec CTE", "bthci_cmd.sync_cte_type.no_sync_aod_2us",
9133 FT_BOOLEAN
, 8, NULL
, 0x04,
9136 { &hf_bthci_cmd_sync_cte_type_sync_only_with_cte
,
9137 { "Sync only to packets with CTE", "bthci_cmd.sync_cte_type.sync_only_with_cte",
9138 FT_BOOLEAN
, 8, NULL
, 0x10,
9141 { &hf_bthci_cmd_sync_cte_type_reserved
,
9142 { "Reserved", "bthci_cmd.sync_cte_type.reserved",
9143 FT_UINT8
, BASE_HEX
, NULL
, 0xE8,
9146 { &hf_bthci_cmd_cte_types
,
9147 { "Allowed CTE Types", "bthci_cmd.cte_types",
9148 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9151 { &hf_bthci_cmd_cte_types_aoa
,
9152 { "AoA", "bthci_cmd.cte_types.aoa",
9153 FT_BOOLEAN
, 8, NULL
, 0x01,
9156 { &hf_bthci_cmd_cte_types_aod_1us
,
9157 { "AoD 1 usec slots", "bthci_cmd.cte_types.aod_1us",
9158 FT_BOOLEAN
, 8, NULL
, 0x02,
9161 { &hf_bthci_cmd_cte_types_aod_2us
,
9162 { "AoD 2 usec slots", "bthci_cmd.cte_types.aod_2us",
9163 FT_BOOLEAN
, 8, NULL
, 0x04,
9166 { &hf_bthci_cmd_cte_types_reserved
,
9167 { "Reserved", "bthci_cmd.cte_types.reserved",
9168 FT_UINT8
, BASE_HEX
, NULL
, 0xF8,
9171 { &hf_bthci_cmd_service_data_past
,
9172 { "Service Data", "bthci_cmd.service_data_past",
9173 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9176 { &hf_bthci_cmd_sync_mode
,
9177 { "Mode", "bthci_cmd.sync_mode",
9178 FT_UINT8
, BASE_HEX
, VALS(cmd_sync_mode_vals
), 0x0,
9181 { &hf_bthci_cmd_key_type
,
9182 { "Key Type", "bthci_cmd.key_type",
9183 FT_UINT8
, BASE_HEX
, VALS(cmd_key_type_vals
), 0x0,
9186 { &hf_bthci_cmd_sca_action
,
9187 { "Action", "bthci_cmd.sca_action",
9188 FT_UINT8
, BASE_HEX
, VALS(cmd_sca_action_vals
), 0x0,
9191 { &hf_bthci_cmd_cig_id
,
9192 { "CIG Id", "bthci_cmd.cig_id",
9193 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9196 { &hf_bthci_cmd_sdu_interval_c_to_p
,
9197 { "SDU Interval Central to Peripheral", "bthci_cmd.sdu_interval_c_to_p",
9198 FT_UINT24
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
9201 { &hf_bthci_cmd_sdu_interval_p_to_c
,
9202 { "SDU Interval Peripheral to Central", "bthci_cmd.sdu_interval_p_to_c",
9203 FT_UINT24
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
9206 { &hf_bthci_cmd_sdu_interval
,
9207 { "SDU Interval", "bthci_cmd.sdu_interval",
9208 FT_UINT24
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
9211 { &hf_bthci_cmd_peripherals_clock_accuracy
,
9212 { "Peripherals Clock Accuracy", "bthci_cmd.peripherals_clock_accuracy",
9213 FT_UINT8
, BASE_HEX
, VALS(cmd_clock_accuray_vals
), 0x0,
9216 { &hf_bthci_cmd_packing
,
9217 { "Packing", "bthci_cmd.packing",
9218 FT_UINT8
, BASE_HEX
, VALS(cmd_packing_vals
), 0x0,
9221 { &hf_bthci_cmd_framing
,
9222 { "Framing", "bthci_cmd.framing",
9223 FT_UINT8
, BASE_HEX
, VALS(cmd_framing_vals
), 0x0,
9226 { &hf_bthci_cmd_ft_c_to_p
,
9227 { "Flush Timeout Central to Peripheral", "bthci_cmd.ft_c_to_p",
9228 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9231 { &hf_bthci_cmd_ft_p_to_c
,
9232 { "Flush Timeout Peripheral to Central", "bthci_cmd.ft_p_to_c",
9233 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9236 { &hf_bthci_cmd_iso_interval
,
9237 { "ISO Interval", "bthci_cmd.iso_interval",
9238 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_1p25_ms
), 0x0,
9241 { &hf_bthci_cmd_cis_count
,
9242 { "CIS Count", "bthci_cmd.cis_count",
9243 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9246 { &hf_bthci_cmd_cis_params
,
9247 { "CIS Parameters", "bthci_cmd.cis_params",
9248 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9251 { &hf_bthci_cmd_cis_id
,
9252 { "CIS Id", "bthci_cmd.cis_id",
9253 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9256 { &hf_bthci_cmd_nse
,
9257 { "Number of Sub-Events", "bthci_cmd.nse",
9258 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9261 { &hf_bthci_cmd_max_sdu_c_to_p
,
9262 { "Max SDU Central to Peripheral", "bthci_cmd.max_sdu_c_to_p",
9263 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_octet_octets
), 0x0,
9266 { &hf_bthci_cmd_max_sdu_p_to_c
,
9267 { "Max SDU Peripheral to Central", "bthci_cmd.max_sdu_p_to_c",
9268 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_octet_octets
), 0x0,
9271 { &hf_bthci_cmd_max_sdu
,
9272 { "Max SDU", "bthci_cmd.max_sdu",
9273 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_octet_octets
), 0x0,
9276 { &hf_bthci_cmd_max_pdu_c_to_p
,
9277 { "Max PDU Central to Peripheral", "bthci_cmd.max_pdu_c_to_p",
9278 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_octet_octets
), 0x0,
9281 { &hf_bthci_cmd_max_pdu_p_to_c
,
9282 { "Max PDU Peripheral to Central", "bthci_cmd.max_pdu_p_to_c",
9283 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_octet_octets
), 0x0,
9286 { &hf_bthci_cmd_max_pdu
,
9287 { "Max PDU", "bthci_cmd.max_pdu",
9288 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_octet_octets
), 0x0,
9291 { &hf_bthci_cmd_phy_c_to_p
,
9292 { "PHY Central to Peripheral", "bthci_cmd.phy_c_to_p",
9293 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9296 { &hf_bthci_cmd_phy_p_to_c
,
9297 { "PHY Peripheral to Central", "bthci_cmd.phy_p_to_c",
9298 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9301 { &hf_bthci_cmd_bn_c_to_p
,
9302 { "Burst Number Central to Peripheral", "bthci_cmd.bn_c_to_p",
9303 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9306 { &hf_bthci_cmd_bn_p_to_c
,
9307 { "Burst Number Peripheral to Central", "bthci_cmd.bn_p_to_c",
9308 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9312 { "Burst Number", "bthci_cmd.bn",
9313 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9316 { &hf_bthci_cmd_max_transport_latency_c_to_p
,
9317 { "Max Transport Latency Central to Peripheral", "bthci_cmd.max_transport_latency_c_to_p",
9318 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x0,
9321 { &hf_bthci_cmd_max_transport_latency_p_to_c
,
9322 { "Max Transport Latency Peripheral to Central", "bthci_cmd.max_transport_latency_p_to_c",
9323 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x0,
9326 { &hf_bthci_cmd_max_transport_latency
,
9327 { "Max Transport Latency", "bthci_cmd.max_transport_latency",
9328 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x0,
9331 { &hf_bthci_cmd_rtn_c_to_p
,
9332 { "Max Retransmissions Central to Peripheral", "bthci_cmd.rtn_c_to_p",
9333 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9336 { &hf_bthci_cmd_rtn_p_to_c
,
9337 { "Max Retransmissions Peripheral to Central", "bthci_cmd.rtn_p_to_c",
9338 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9341 { &hf_bthci_cmd_rtn
,
9342 { "Max Retransmissions", "bthci_cmd.rtn",
9343 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9346 { &hf_bthci_cmd_cis_handle
,
9347 { "CIS Handle", "bthci_cmd.cis_handle",
9348 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9351 { &hf_bthci_cmd_big_handle
,
9352 { "BIG Handle", "bthci_cmd.big_handle",
9353 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9356 { &hf_bthci_cmd_cis_bis_handle
,
9357 { "CIS/BIS Handle", "bthci_cmd.cis_bis_handle",
9358 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9361 { &hf_bthci_cmd_num_bis
,
9362 { "Number of BISes", "bthci_cmd.num_bis",
9363 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9366 { &hf_bthci_cmd_irc
,
9367 { "Scheduled Payload Retransmissions", "bthci_cmd.irc",
9368 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9371 { &hf_bthci_cmd_pto
,
9372 { "Pre-Transmission Offset", "bthci_cmd.pto",
9373 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9376 { &hf_bthci_cmd_encryption
,
9377 { "Encryption", "bthci_cmd.encryption",
9378 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
9381 { &hf_bthci_cmd_broadcast_code
,
9382 { "Broadcast Code", "bthci_cmd.broadcast_code",
9383 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9386 { &hf_bthci_cmd_mse
,
9387 { "Max Sub-Events", "bthci_cmd.mse",
9388 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9391 { &hf_bthci_cmd_bis_index
,
9392 { "BIS Index", "bthci_cmd.bis_index",
9393 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9396 { &hf_bthci_cmd_sync_timeout
,
9397 { "Sync Timeout", "bthci_cmd.sync_timeout",
9398 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p01_sec
), 0x0,
9401 { &hf_bthci_cmd_data_path_direction
,
9402 { "Data Path Direction", "bthci_cmd.data_path_direction",
9403 FT_UINT8
, BASE_HEX
, VALS(cmd_data_path_direction_vals
), 0x0,
9406 { &hf_bthci_cmd_data_path_id
,
9407 { "Data Path Id", "bthci_cmd.data_path_id",
9408 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9411 { &hf_bthci_cmd_coding_format
,
9412 { "Coding Format", "bthci_cmd.coding_format",
9413 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9416 { &hf_bthci_cmd_controller_delay
,
9417 { "Controller Delay", "bthci_cmd.controller_delay",
9418 FT_UINT24
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
9421 { &hf_bthci_cmd_codec_config_length
,
9422 { "Codec Configuration Length", "bthci_cmd.codec_config_length",
9423 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9426 { &hf_bthci_cmd_codec_config
,
9427 { "Codec Configuration", "bthci_cmd.codec_config",
9428 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9431 { &hf_bthci_cmd_payload_type
,
9432 { "Payload Type", "bthci_cmd.payload_type",
9433 FT_UINT8
, BASE_HEX
, VALS(cmd_payload_type_vals
), 0x0,
9436 { &hf_bthci_cmd_feature_bit_number
,
9437 { "Feature Bit Number", "bthci_cmd.feature_bit_number",
9438 FT_UINT8
, BASE_DEC
, VALS(cmd_host_enabled_feature_bit_vals
), 0x0,
9441 { &hf_bthci_cmd_feature_bit_number2
,
9442 { "Feature Bit Number", "bthci_cmd.feature_bit_number",
9443 FT_UINT16
, BASE_DEC
, VALS(cmd_host_enabled_feature_bit_vals
), 0x0,
9446 { &hf_bthci_cmd_feature_bit_value
,
9447 { "Feature Bit Value", "bthci_cmd.feature_bit_value",
9448 FT_UINT8
, BASE_HEX
, VALS(cmd_en_disabled
), 0x0,
9451 { &hf_bthci_cmd_phy_and_coding
,
9452 { "PHY", "bthci_cmd.phy_and_coding",
9453 FT_UINT8
, BASE_HEX
, VALS(cmd_phy_and_coding_vals
), 0x0,
9456 { &hf_bthci_cmd_high_threshold
,
9457 { "High Threshold", "bthci_cmd.high_threshold",
9458 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_decibels
), 0x0,
9461 { &hf_bthci_cmd_high_hysteresis
,
9462 { "High Hysteresis", "bthci_cmd.high_hysteresis",
9463 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_decibels
), 0x0,
9466 { &hf_bthci_cmd_low_threshold
,
9467 { "Low Threshold", "bthci_cmd.low_threshold",
9468 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_decibels
), 0x0,
9471 { &hf_bthci_cmd_low_hysteresis
,
9472 { "Low Hysteresis", "bthci_cmd.low_hysteresis",
9473 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_decibels
), 0x0,
9476 { &hf_bthci_cmd_min_time_spent
,
9477 { "Minimum Observation Time", "bthci_cmd.min_time_spent",
9478 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9481 { &hf_bthci_cmd_local_reporting_enable
,
9482 { "Local Reporting Enable", "bthci_cmd.local_reporting_enable",
9483 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
9486 { &hf_bthci_cmd_remote_reporting_enable
,
9487 { "Remote Reporting Enable", "bthci_cmd.remote_reporting_enable",
9488 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
9491 { &hf_bthci_cmd_addr_change_reasons
,
9492 { "Address Change Reasons", "bthci_cmd.addr_change_reasons",
9493 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9496 { &hf_bthci_cmd_addr_change_reasons_adv_data
,
9497 { "Advertising Data Changed", "bthci_cmd.addr_change_reasons.adv_data",
9498 FT_BOOLEAN
, 8, NULL
, 0x01,
9501 { &hf_bthci_cmd_addr_change_reasons_scan_rsp_data
,
9502 { "Scan Response Data Changed", "bthci_cmd.addr_change_reasons.scan_rsp_data",
9503 FT_BOOLEAN
, 8, NULL
, 0x02,
9506 { &hf_bthci_cmd_addr_change_reasons_reserved
,
9507 { "Reserved", "bthci_cmd.addr_change_reasons.reserved",
9508 FT_UINT8
, BASE_HEX
, NULL
, 0xFC,
9511 { &hf_bthci_cmd_subrate_factor_min
,
9512 { "Minimum Subrate Factor", "bthci_cmd.subrate_min",
9513 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9516 { &hf_bthci_cmd_subrate_factor_max
,
9517 { "Maximum Subrate Factor", "bthci_cmd.subrate_max",
9518 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9521 { &hf_bthci_cmd_continuation_number
,
9522 { "Continuation Number", "bthci_cmd.continuation_number",
9523 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9526 { &hf_bthci_cmd_primary_adv_phy_options
,
9527 { "Primary Adv PHY Options", "bthci_cmd.primary_adv_phy_options",
9528 FT_UINT8
, BASE_HEX
, VALS(cmd_le_phy_options_vals
), 0x0,
9531 { &hf_bthci_cmd_secondary_adv_phy_options
,
9532 { "Primary Adv PHY Options", "bthci_cmd.secondary_adv_phy_options",
9533 FT_UINT8
, BASE_HEX
, VALS(cmd_le_phy_options_vals
), 0x0,
9536 { &hf_bthci_cmd_num_subevents
,
9537 { "Number of Sub-events", "bthci_cmd.num_subevents",
9538 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9541 { &hf_bthci_cmd_subevent_interval
,
9542 { "Sub-event Interval", "bthci_cmd.subevent_interval",
9543 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_1p25_ms
), 0x0,
9546 { &hf_bthci_cmd_response_slot_delay
,
9547 { "Response Slot Delay", "bthci_cmd.resp_slot_delay",
9548 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_1p25_ms
), 0x0,
9551 { &hf_bthci_cmd_response_slot_spacing
,
9552 { "Response Slot Spacing", "bthci_cmd.resp_slot_spacing",
9553 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_1p25_ms
), 0x0,
9556 { &hf_bthci_cmd_num_response_slots
,
9557 { "Response Slots", "bthci_cmd.num_resp_slots",
9558 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9561 { &hf_bthci_cmd_subevent
,
9562 { "Sub-event", "bthci_cmd.subevent",
9563 FT_UINT8
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(bluetooth_not_used_0xff_special
), 0x0,
9566 { &hf_bthci_cmd_subevents
,
9567 { "Sub-events", "bthci_cmd.subevents",
9568 FT_NONE
, BASE_NONE
, NULL
, 0x0,
9571 { &hf_bthci_cmd_response_slot_start
,
9572 { "Response Slot Start", "bthci_cmd.resp_slot_start",
9573 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9576 { &hf_bthci_cmd_response_slot_count
,
9577 { "Response Slot Count", "bthci_cmd.resp_slot_count",
9578 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9581 { &hf_bthci_cmd_subevent_data_length
,
9582 { "Sub-event Data Length", "bthci_cmd.subevent_data_length",
9583 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9586 { &hf_bthci_cmd_request_event
,
9587 { "Request Event", "bthci_cmd.request_event",
9588 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9591 { &hf_bthci_cmd_request_subevent
,
9592 { "Request Sub-event", "bthci_cmd.request_subevent",
9593 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9596 { &hf_bthci_cmd_response_subevent
,
9597 { "Response Sub-event", "bthci_cmd.response_subevent",
9598 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9601 { &hf_bthci_cmd_response_slot
,
9602 { "Response Slot", "bthci_cmd.response_slot",
9603 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9606 { &hf_bthci_cmd_response_data_length
,
9607 { "Response Data Length", "bthci_cmd.response_data_length",
9608 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9611 { &hf_bthci_cmd_pages_requested
,
9612 { "Pages Requested", "bthci_cmd.pages_requested",
9613 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9616 { &hf_bthci_cmd_config_id
,
9617 { "Config Id", "bthci_cmd.config_id",
9618 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9621 { &hf_bthci_cmd_cs_roles
,
9622 { "Roles", "bthci_cmd.cs_roles",
9623 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9626 { &hf_bthci_cmd_cs_roles_initiator
,
9627 { "Initiator", "bthci_cmd.cs_roles.initiator",
9628 FT_BOOLEAN
, 8, NULL
, 0x01,
9631 { &hf_bthci_cmd_cs_roles_reflector
,
9632 { "Reflector", "bthci_cmd.cs_roles.reflector",
9633 FT_BOOLEAN
, 8, NULL
, 0x02,
9636 { &hf_bthci_cmd_cs_roles_reserved
,
9637 { "Reserved", "bthci_cmd.cs_roles.reserved",
9638 FT_UINT8
, BASE_HEX
, NULL
, 0xfc,
9641 { &hf_bthci_cmd_cs_sync_antenna_selection
,
9642 { "CS Sync Antenna Selection", "bthci_cmd.cs_sync_antenna_selection",
9643 FT_UINT8
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(cs_sync_antenna_special
), 0x0,
9646 { &hf_bthci_cmd_num_config
,
9647 { "Number of Configurations", "bthci_cmd.num_config",
9648 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9651 { &hf_bthci_cmd_max_consecutive_procedures
,
9652 { "Max Consecutive Procedures", "bthci_cmd.max_consecutive_procedures",
9653 FT_UINT16
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(bluetooth_procedure_count_special
), 0x0,
9656 { &hf_bthci_cmd_num_antennas_supported
,
9657 { "Number of Antennas Supported", "bthci_cmd.num_antennas_supported",
9658 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9661 { &hf_bthci_cmd_max_antenna_paths_supported
,
9662 { "Max Antenna Paths Supported", "bthci_cmd.max_antenna_paths_supported",
9663 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9666 { &hf_bthci_cmd_cs_modes_supported
,
9667 { "Modes Supported", "bthci_cmd.cs_modes_supported",
9668 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9671 { &hf_bthci_cmd_cs_modes_supported_3
,
9672 { "Mode-3", "bthci_cmd.cs_modes_supported.3",
9673 FT_BOOLEAN
, 8, NULL
, 0x01,
9676 { &hf_bthci_cmd_cs_modes_supported_reserved
,
9677 { "Reserved", "bthci_cmd.cs_modes_supported.reserved",
9678 FT_BOOLEAN
, 8, NULL
, 0xfe,
9681 { &hf_bthci_cmd_rtt_capability
,
9682 { "RTT Capability", "bthci_cmd.rtt_capability",
9683 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9686 { &hf_bthci_cmd_rtt_capability_coarse_precision
,
9687 { "10ns Coarse Precision", "bthci_cmd.rtt_capability.coarse_precision",
9688 FT_BOOLEAN
, 8, NULL
, 0x01,
9691 { &hf_bthci_cmd_rtt_capability_sounding_precision
,
9692 { "10ns Sounding Precision", "bthci_cmd.rtt_capability.sounding_precision",
9693 FT_BOOLEAN
, 8, NULL
, 0x02,
9696 { &hf_bthci_cmd_rtt_capability_random_precision
,
9697 { "10ns Random Precision", "bthci_cmd.rtt_capability.random_precision",
9698 FT_BOOLEAN
, 8, NULL
, 0x04,
9701 { &hf_bthci_cmd_rtt_capability_reserved
,
9702 { "Reserved", "bthci_cmd.rtt_capability.reserved",
9703 FT_UINT8
, BASE_HEX
, NULL
, 0xf8,
9706 { &hf_bthci_cmd_rtt_aa_only_n
,
9707 { "RTT Coarse, CS Sync exchanges needed", "bthci_cmd.rtt_aa_only_n",
9708 FT_UINT8
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(bluetooth_not_supported_0x00_special
), 0x0,
9711 { &hf_bthci_cmd_rtt_sounding_n
,
9712 { "RTT Sounding, CS Sync exchanges needed", "bthci_cmd.rtt_sounding_n",
9713 FT_UINT8
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(bluetooth_not_supported_0x00_special
), 0x0,
9716 { &hf_bthci_cmd_rtt_random_n
,
9717 { "RTT Random Payload, CS Sync exchanges needed", "bthci_cmd.rtt_random_n",
9718 FT_UINT8
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(bluetooth_not_supported_0x00_special
), 0x0,
9721 { &hf_bthci_cmd_nadm_sounding_capability
,
9722 { "Optional NADM Sounding Capability", "bthci_cmd.optional_nadm_sounding_capability",
9723 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9726 { &hf_bthci_cmd_nadm_sounding_capability_supported
,
9727 { "Phase-based NADM Metric", "bthci_cmd.optional_nadm_sounding_capability.supported",
9728 FT_BOOLEAN
, 16, NULL
, 0x01,
9731 { &hf_bthci_cmd_nadm_sounding_capability_reserved
,
9732 { "Reserved", "bthci_cmd.optional_nadm_sounding_capability.reserved",
9733 FT_UINT16
, BASE_HEX
, NULL
, 0xfe,
9736 { &hf_bthci_cmd_nadm_random_capability
,
9737 { "Optional NADM Random Capability", "bthci_cmd.optional_nadm_random_capability",
9738 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9741 { &hf_bthci_cmd_nadm_random_capability_supported
,
9742 { "Phase-based NADM Metric", "bthci_cmd.optional_nadm_random_capability.supported",
9743 FT_BOOLEAN
, 16, NULL
, 0x01,
9746 { &hf_bthci_cmd_nadm_random_capability_reserved
,
9747 { "Reserved", "bthci_cmd.optional_nadm_random_capability.reserved",
9748 FT_UINT16
, BASE_HEX
, NULL
, 0xfe,
9751 { &hf_bthci_cmd_cs_sync_phys_supported
,
9752 { "Optional CS_SYNC PHYs", "bthci_cmd.cs_sync_phys_supported",
9753 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9756 { &hf_bthci_cmd_cs_sync_phys_supported_2m
,
9757 { "LE 2M", "bthci_cmd.cs_sync_phys_supported.2m",
9758 FT_BOOLEAN
, 8, NULL
, 0x02,
9761 { &hf_bthci_cmd_cs_sync_phys_supported_2m2bt
,
9762 { "LE 2M 2BT", "bthci_cmd.cs_sync_phys_supported.2m2bt",
9763 FT_BOOLEAN
, 8, NULL
, 0x04,
9766 { &hf_bthci_cmd_cs_sync_phys_supported_reserved
,
9767 { "Reserved", "bthci_cmd.cs_sync_phys_supported.reserved",
9768 FT_UINT8
, BASE_HEX
, NULL
, 0xf9,
9771 { &hf_bthci_cmd_cs_subfeatures_supported
,
9772 { "Subfeatures Suported", "bthci_cmd.optional_cs_subfeatures",
9773 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9776 { &hf_bthci_cmd_cs_subfeatures_companion_signal
,
9777 { "Companion Signal", "bthci_cmd.optional_cs_subfeatures.companion_signal",
9778 FT_BOOLEAN
, 16, NULL
, 0x01,
9781 { &hf_bthci_cmd_cs_subfeatures_freq_actuation_error
,
9782 { "Zero Freq. Actuation Error Relative to Mode-0 Tx in Reflector", "bthci_cmd.optional_cs_subfeatures.freq_actuation_error",
9783 FT_BOOLEAN
, 16, NULL
, 0x02,
9786 { &hf_bthci_cmd_cs_subfeatures_channel_selection_3c
,
9787 { "Channel Selection Algorithm #3c", "bthci_cmd.optional_cs_subfeatures.channel_selection_3c",
9788 FT_BOOLEAN
, 16, NULL
, 0x04,
9791 { &hf_bthci_cmd_cs_subfeatures_pbr_from_rtt
,
9792 { "Phase-based Ranging from RTT sounding sequence", "bthci_cmd.optional_cs_subfeatures.pbr_from_rtt",
9793 FT_BOOLEAN
, 16, NULL
, 0x08,
9796 { &hf_bthci_cmd_cs_subfeatures_reserved
,
9797 { "Reserved", "bthci_cmd.optional_cs_subfeatures.reserved",
9798 FT_UINT16
, BASE_HEX
, NULL
, 0xfff0,
9801 { &hf_bthci_cmd_tip1_times_supported
,
9802 { "T_IP1 Times Supported", "bthci_cmd.tip1_times_supported",
9803 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9806 { &hf_bthci_cmd_tip2_times_supported
,
9807 { "T_IP2 Times Supported", "bthci_cmd.tip2_times_supported",
9808 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9811 { &hf_bthci_cmd_tip_times_supported_10us
,
9812 { "10 microseconds", "bthci_cmd.tip_times_supported_10us",
9813 FT_BOOLEAN
, 16, NULL
, 0x0001,
9816 { &hf_bthci_cmd_tip_times_supported_20us
,
9817 { "20 microseconds", "bthci_cmd.tip_times_supported_20us",
9818 FT_BOOLEAN
, 16, NULL
, 0x0002,
9821 { &hf_bthci_cmd_tip_times_supported_30us
,
9822 { "30 microseconds", "bthci_cmd.tip_times_supported_30us",
9823 FT_BOOLEAN
, 16, NULL
, 0x0004,
9826 { &hf_bthci_cmd_tip_times_supported_40us
,
9827 { "40 microseconds", "bthci_cmd.tip_times_supported_40us",
9828 FT_BOOLEAN
, 16, NULL
, 0x0008,
9831 { &hf_bthci_cmd_tip_times_supported_50us
,
9832 { "50 microseconds", "bthci_cmd.tip_times_supported_50us",
9833 FT_BOOLEAN
, 16, NULL
, 0x0010,
9836 { &hf_bthci_cmd_tip_times_supported_60us
,
9837 { "60 microseconds", "bthci_cmd.tip_times_supported_60us",
9838 FT_BOOLEAN
, 16, NULL
, 0x0020,
9841 { &hf_bthci_cmd_tip_times_supported_80us
,
9842 { "80 microseconds", "bthci_cmd.tip_times_supported_80us",
9843 FT_BOOLEAN
, 16, NULL
, 0x0040,
9846 { &hf_bthci_cmd_tip_times_supported_reserved
,
9847 { "Reserved", "bthci_cmd.tip_times_supported_reserved",
9848 FT_UINT16
, BASE_HEX
, NULL
, 0xff80,
9851 { &hf_bthci_cmd_tfcs_times_supported
,
9852 { "T_FCS Times Supported", "bthci_cmd.tfcs_times_supported",
9853 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9856 { &hf_bthci_cmd_tfcs_times_supported_15us
,
9857 { "15 microseconds", "bthci_cmd.tfcs_times_supported_15us",
9858 FT_BOOLEAN
, 16, NULL
, 0x0001,
9861 { &hf_bthci_cmd_tfcs_times_supported_20us
,
9862 { "20 microseconds", "bthci_cmd.tfcs_times_supported_20us",
9863 FT_BOOLEAN
, 16, NULL
, 0x0002,
9866 { &hf_bthci_cmd_tfcs_times_supported_30us
,
9867 { "30 microseconds", "bthci_cmd.tfcs_times_supported_30us",
9868 FT_BOOLEAN
, 16, NULL
, 0x0004,
9871 { &hf_bthci_cmd_tfcs_times_supported_40us
,
9872 { "40 microseconds", "bthci_cmd.tfcs_times_supported_40us",
9873 FT_BOOLEAN
, 16, NULL
, 0x0008,
9876 { &hf_bthci_cmd_tfcs_times_supported_50us
,
9877 { "50 microseconds", "bthci_cmd.tfcs_times_supported_50us",
9878 FT_BOOLEAN
, 16, NULL
, 0x0010,
9881 { &hf_bthci_cmd_tfcs_times_supported_60us
,
9882 { "60 microseconds", "bthci_cmd.tfcs_times_supported_60us",
9883 FT_BOOLEAN
, 16, NULL
, 0x0020,
9886 { &hf_bthci_cmd_tfcs_times_supported_80us
,
9887 { "80 microseconds", "bthci_cmd.tfcs_times_supported_80us",
9888 FT_BOOLEAN
, 16, NULL
, 0x0040,
9891 { &hf_bthci_cmd_tfcs_times_supported_100us
,
9892 { "100 microseconds", "bthci_cmd.tfcs_times_supported_100us",
9893 FT_BOOLEAN
, 16, NULL
, 0x0080,
9896 { &hf_bthci_cmd_tfcs_times_supported_120us
,
9897 { "120 microseconds", "bthci_cmd.tfcs_times_supported_120us",
9898 FT_BOOLEAN
, 16, NULL
, 0x0100,
9901 { &hf_bthci_cmd_tfcs_times_supported_reserved
,
9902 { "Reserved", "bthci_cmd.tfcs_times_supported_reserved",
9903 FT_UINT16
, BASE_HEX
, NULL
, 0xfe00,
9906 { &hf_bthci_cmd_tpm_times_supported
,
9907 { "T_PM Times Supported", "bthci_cmd.tpm_times_supported",
9908 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9911 { &hf_bthci_cmd_tpm_times_supported_10us
,
9912 { "10 microseconds", "bthci_cmd.tpm_times_supported_10us",
9913 FT_BOOLEAN
, 16, NULL
, 0x0001,
9916 { &hf_bthci_cmd_tpm_times_supported_20us
,
9917 { "20 microseconds", "bthci_cmd.tpm_times_supported_20us",
9918 FT_BOOLEAN
, 16, NULL
, 0x0002,
9921 { &hf_bthci_cmd_tpm_times_supported_reserved
,
9922 { "Reserved", "bthci_cmd.tpm_times_supported_reserved",
9923 FT_UINT16
, BASE_HEX
, NULL
, 0xfffc,
9926 { &hf_bthci_cmd_tsw_time_supported
,
9927 { "T_SW Time Supported", "bthci_cmd.tsw_time_supported",
9928 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
9931 { &hf_bthci_cmd_tx_snr_capability
,
9932 { "Tx SNR Capability", "bthci_cmd.tx_snr_capability",
9933 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9936 { &hf_bthci_cmd_tx_snr_capability_18dB
,
9937 { "18 dB", "bthci_cmd.tx_snr_capability_18dB",
9938 FT_BOOLEAN
, 8, NULL
, 0x01,
9941 { &hf_bthci_cmd_tx_snr_capability_21dB
,
9942 { "21 dB", "bthci_cmd.tx_snr_capability_21dB",
9943 FT_BOOLEAN
, 8, NULL
, 0x02,
9946 { &hf_bthci_cmd_tx_snr_capability_24dB
,
9947 { "24 dB", "bthci_cmd.tx_snr_capability_24dB",
9948 FT_BOOLEAN
, 8, NULL
, 0x04,
9951 { &hf_bthci_cmd_tx_snr_capability_27dB
,
9952 { "27 dB", "bthci_cmd.tx_snr_capability_27dB",
9953 FT_BOOLEAN
, 8, NULL
, 0x08,
9956 { &hf_bthci_cmd_tx_snr_capability_30dB
,
9957 { "30 dB", "bthci_cmd.tx_snr_capability_30dB",
9958 FT_BOOLEAN
, 8, NULL
, 0x10,
9961 { &hf_bthci_cmd_tx_snr_capability_reserved
,
9962 { "Reserved", "bthci_cmd.tx_snr_capability_reserved",
9963 FT_UINT8
, BASE_HEX
, NULL
, 0xe0,
9966 { &hf_bthci_cmd_fae_table
,
9967 { "FAE Table", "bthci_cmd.fae_table",
9968 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9971 { &hf_bthci_cmd_create_context
,
9972 { "Create Context", "bthci_cmd.create_context",
9973 FT_UINT8
, BASE_HEX
, VALS(cmd_cs_create_context_vals
), 0x0,
9976 { &hf_bthci_cmd_main_mode_type
,
9977 { "Main Mode Type", "bthci_cmd.main_mode_type",
9978 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9981 { &hf_bthci_cmd_sub_mode_type
,
9982 { "Sub Mode Type", "bthci_cmd.sub_mode_type",
9983 FT_UINT8
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(bluetooth_not_used_0xff_special
), 0x0,
9986 { &hf_bthci_cmd_min_main_mode_steps
,
9987 { "Min Main Mode Steps", "bthci_cmd.min_main_mode_steps",
9988 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9991 { &hf_bthci_cmd_max_main_mode_steps
,
9992 { "Max Main Mode Steps", "bthci_cmd.max_main_mode_steps",
9993 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9996 { &hf_bthci_cmd_main_mode_repetition
,
9997 { "Main Mode Repetitions", "bthci_cmd.main_mode_repetition",
9998 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10001 { &hf_bthci_cmd_mode0_steps
,
10002 { "Mode-0 Steps", "bthci_cmd.mode0_steps",
10003 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10006 { &hf_bthci_cmd_cs_role
,
10007 { "Role", "bthci_cmd.cs_role",
10008 FT_UINT8
, BASE_HEX
, VALS(cmd_cs_role_vals
), 0x0,
10011 { &hf_bthci_cmd_rtt_type
,
10012 { "RTT Type", "bthci_cmd.rtt_type",
10013 FT_UINT8
, BASE_HEX
, VALS(cmd_cs_rtt_type_vals
), 0x0,
10016 { &hf_bthci_cmd_cs_sync_phy
,
10017 { "CS Sync PHY", "bthci_cmd.cs_sync_phy",
10018 FT_UINT8
, BASE_HEX
, VALS(cmd_cs_sync_phy_vals
), 0x0,
10021 { &hf_bthci_cmd_channel_map_repetition
,
10022 { "Channel Map Repetitions", "bthci_cmd.channel_map_repetition",
10023 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10026 { &hf_bthci_cmd_channel_selection_type
,
10027 { "Channel Selection Type", "bthci_cmd.channel_selection_type",
10028 FT_UINT8
, BASE_HEX
, VALS(cmd_cs_ch_selection_type_vals
), 0x0,
10031 { &hf_bthci_cmd_ch3c_shape
,
10032 { "Ch3c Shape", "bthci_cmd.ch3c_shape",
10033 FT_UINT8
, BASE_HEX
, VALS(cmd_cs_shape_vals
), 0x0,
10036 { &hf_bthci_cmd_ch3c_jump
,
10037 { "Ch3c Jump", "bthci_cmd.ch3c_jump",
10038 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10041 { &hf_bthci_cmd_companion_signal_enable
,
10042 { "Companion Signal Enable", "bthci_cmd.companion_signal_enable",
10043 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
10046 { &hf_bthci_cmd_cs_enable
,
10047 { "CS Enable", "bthci_cmd.cs_enable",
10048 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
10051 { &hf_bthci_cmd_max_procedure_len
,
10052 { "Max Procedure Length", "bthci_cmd.max_procedure_len",
10053 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
10056 { &hf_bthci_cmd_min_procedure_interval
,
10057 { "Min Procedure Interval", "bthci_cmd.min_procedure_interval",
10058 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10061 { &hf_bthci_cmd_max_procedure_interval
,
10062 { "Max Procedure Interval", "bthci_cmd.max_procedure_interval",
10063 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10066 { &hf_bthci_cmd_max_procedure_count
,
10067 { "Max Procedure Count", "bthci_cmd.max_procedure_count",
10068 FT_UINT16
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(bluetooth_procedure_count_special
), 0x0,
10071 { &hf_bthci_cmd_min_subevent_len
,
10072 { "Min Subevent Length", "bthci_cmd.min_subevent_len",
10073 FT_UINT24
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10076 { &hf_bthci_cmd_max_subevent_len
,
10077 { "Max Subevent Length", "bthci_cmd.max_subevent_len",
10078 FT_UINT24
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10081 { &hf_bthci_cmd_subevent_len
,
10082 { "Subevent Length", "bthci_cmd.subevent_len",
10083 FT_UINT24
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10086 { &hf_bthci_cmd_tone_antenna_selection
,
10087 { "Antenna Config Selection Index", "bthci_cmd.tone_antenna_selection",
10088 FT_UINT8
, BASE_HEX
, VALS(cmd_aci_vals
), 0x0,
10091 { &hf_bthci_cmd_tx_pwr_delta
,
10092 {"Tx Power Delta (dB)", "bthci_cmd.tx_pwr_delta",
10093 FT_INT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_decibels
), 0x0,
10096 { &hf_bthci_cmd_preferred_peer_antenna
,
10097 { "Preferred Peer Antenna", "bthci_cmd.preferred_peer_antenna",
10098 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
10101 { &hf_bthci_cmd_preferred_peer_antenna_first
,
10102 { "1st Ordered Element", "bthci_cmd.preferred_peer_antenna.first",
10103 FT_BOOLEAN
, 8, NULL
, 0x01,
10106 { &hf_bthci_cmd_preferred_peer_antenna_second
,
10107 { "2nd Ordered Element", "bthci_cmd.preferred_peer_antenna.second",
10108 FT_BOOLEAN
, 8, NULL
, 0x02,
10111 { &hf_bthci_cmd_preferred_peer_antenna_third
,
10112 { "3rd Ordered Element", "bthci_cmd.preferred_peer_antenna.third",
10113 FT_BOOLEAN
, 8, NULL
, 0x04,
10116 { &hf_bthci_cmd_preferred_peer_antenna_fourth
,
10117 { "4th Ordered Element", "bthci_cmd.preferred_peer_antenna.fourth",
10118 FT_BOOLEAN
, 8, NULL
, 0x08,
10121 { &hf_bthci_cmd_preferred_peer_antenna_reserved
,
10122 { "Reserved", "bthci_cmd.preferred_peer_antenna.reserved",
10123 FT_UINT8
, BASE_HEX
, NULL
, 0xF0,
10126 { &hf_bthci_cmd_snr_control_initiator
,
10127 { "SNR Adjustment, Initiator", "bthci_cmd.snr_control_initiator",
10128 FT_UINT8
, BASE_HEX
, VALS(cmd_snr_control_vals
), 0x0,
10131 { &hf_bthci_cmd_snr_control_reflector
,
10132 { "SNR Adjustment, Reflector", "bthci_cmd.snr_control_reflector",
10133 FT_UINT8
, BASE_HEX
, VALS(cmd_snr_control_vals
), 0x0,
10136 { &hf_bthci_cmd_cs_subevent_interval
,
10137 { "Subevent Interval", "bthci_cmd.cs_subevent_interval",
10138 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p625_ms
), 0x0,
10141 { &hf_bthci_cmd_max_num_subevents
,
10142 { "Max Num Subevents", "bthci_cmd.max_num_subevents",
10143 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10146 { &hf_bthci_cmd_tx_power_setting
,
10147 { "Tx Power Level", "bthci_cmd.tx_power_setting",
10148 FT_INT8
, BASE_CUSTOM
, CF_FUNC(tx_power_setting
), 0x0,
10151 { &hf_bthci_cmd_t_ip1_time
,
10152 { "T_IP1 Time", "bthci_cmd.t_ip1_time",
10153 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10156 { &hf_bthci_cmd_t_ip2_time
,
10157 { "T_IP2 Time", "bthci_cmd.t_ip2_time",
10158 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10161 { &hf_bthci_cmd_t_fcs_time
,
10162 { "T_FCS Time", "bthci_cmd.t_fcs_time",
10163 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10166 { &hf_bthci_cmd_t_pm_time
,
10167 { "T_PM Time", "bthci_cmd.t_pm_time",
10168 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10171 { &hf_bthci_cmd_t_sw_time
,
10172 { "T_SW Time", "bthci_cmd.t_sw_time",
10173 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10176 { &hf_bthci_cmd_drbg_nonce
,
10177 { "DRBG Nonce", "bthci_cmd.drbg_nonce",
10178 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10181 { &hf_bthci_cmd_cs_override_config
,
10182 { "Override Config", "bthci_cmd.cs_override_config",
10183 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10186 { &hf_bthci_cmd_override_config_reserved
,
10187 { "Reserved", "bthci_cmd.override_config.reserved",
10188 FT_UINT16
, BASE_HEX
, NULL
, 0xFA02,
10191 { &hf_bthci_cmd_override_config_channel_list
,
10192 { "Channel List", "bthci_cmd.override_config.channel_list",
10193 FT_BOOLEAN
, 16, NULL
, 0x0001,
10196 { &hf_bthci_cmd_override_config_main_mode_steps
,
10197 { "Main Mode Steps", "bthci_cmd.override_config.main_mode_steps",
10198 FT_BOOLEAN
, 16, NULL
, 0x0004,
10201 { &hf_bthci_cmd_override_config_tpm_tone_ext
,
10202 { "T_PM Tone Extension", "bthci_cmd.override_config.tpm_tone_ext",
10203 FT_BOOLEAN
, 16, NULL
, 0x0008,
10206 { &hf_bthci_cmd_override_config_tone_ant_permutation
,
10207 { "Tone Antenna Permutation", "bthci_cmd.override_config.tone_ant_permutation",
10208 FT_BOOLEAN
, 16, NULL
, 0x0010,
10211 { &hf_bthci_cmd_override_config_cs_sync_aa
,
10212 { "CS Sync Access Address", "bthci_cmd.override_config.cs_sync_aa",
10213 FT_BOOLEAN
, 16, NULL
, 0x0020,
10216 { &hf_bthci_cmd_override_config_ss_marker_position
,
10217 { "SS Marker Position", "bthci_cmd.override_config.ss_marker_position",
10218 FT_BOOLEAN
, 16, NULL
, 0x0040,
10221 { &hf_bthci_cmd_override_config_ss_marker_value
,
10222 { "SS Marker Value", "bthci_cmd.override_config.ss_marker_value",
10223 FT_BOOLEAN
, 16, NULL
, 0x0080,
10226 { &hf_bthci_cmd_override_config_cs_sync_data
,
10227 { "CS Sync Data", "bthci_cmd.override_config.cs_sync_data",
10228 FT_BOOLEAN
, 16, NULL
, 0x0100,
10231 { &hf_bthci_cmd_override_config_stable_phase_test
,
10232 { "Stable Phase Test", "bthci_cmd.override_config.stable_phase_test",
10233 FT_BOOLEAN
, 16, NULL
, 0x0400,
10236 { &hf_bthci_cmd_cs_override_param_length
,
10237 { "Override Parameter Length", "bthci_cmd.cs_override_param_length",
10238 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10241 { &hf_bthci_cmd_cs_override_param_data
,
10242 { "Override Parameter Data", "bthci_cmd.cs_override_param_data",
10243 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10246 { &hf_bthci_cmd_adv_monitoring_enable
,
10247 { "Advertiser Monitoring Enable", "bthci_cmd.adv_monitoring_enable",
10248 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x0,
10251 { &hf_bthci_cmd_adv_decision_data
,
10252 { "Decision Data", "bthci_cmd.decision_data",
10253 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10256 { &hf_bthci_cmd_adv_decision_flags
,
10257 { "Decision Flags", "bthci_cmd.adv_decision_flags",
10258 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
10261 { &hf_bthci_cmd_adv_decision_flags_resolvable_tag
,
10262 { "Resolvable Tag Present", "bthci_cmd.adv_decision_flags.resolvable_tag",
10263 FT_BOOLEAN
, 8, NULL
, 0x01,
10266 { &hf_bthci_cmd_adv_decision_flags_reserved
,
10267 { "Reserved", "bthci_cmd.adv_decision_flags.reserved",
10268 FT_UINT8
, BASE_HEX
, NULL
, 0xFE,
10271 { &hf_bthci_cmd_num_tests
,
10272 { "Number of Tests", "bthci_cmd.num_tests",
10273 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10276 { &hf_bthci_cmd_adv_test_flags
,
10277 { "Test Flags", "bthci_cmd.adv_test_flags",
10278 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
10281 { &hf_bthci_cmd_adv_test_flags_start_group
,
10282 { "Start of New Test Group", "bthci_cmd.adv_test_flags.start_group",
10283 FT_BOOLEAN
, 8, NULL
, 0x01,
10286 { &hf_bthci_cmd_adv_test_flags_data_contains_field_check_pass
,
10287 { "Pass If Contains Field & Match", "bthci_cmd.adv_test_flags.data_contains_field_check_pass",
10288 FT_BOOLEAN
, 8, NULL
, 0x02,
10291 { &hf_bthci_cmd_adv_test_flags_data_contains_field_check_fail
,
10292 { "Pass If Contains Field & No Match", "bthci_cmd.adv_test_flags.data_contains_field_check_fail",
10293 FT_BOOLEAN
, 8, NULL
, 0x04,
10296 { &hf_bthci_cmd_adv_test_flags_data_not_contain_field
,
10297 { "Pass If Does Not Contain Field", "bthci_cmd.adv_test_flags.data_not_contain_field",
10298 FT_BOOLEAN
, 8, NULL
, 0x08,
10301 { &hf_bthci_cmd_adv_test_flags_reserved
,
10302 { "Reserved", "bthci_cmd.adv_test_flags.reserved",
10303 FT_UINT8
, BASE_HEX
, NULL
, 0xF0,
10306 { &hf_bthci_cmd_adv_test_field
,
10307 { "Test Field", "bthci_cmd.adv_test_field",
10308 FT_UINT8
, BASE_HEX
|BASE_SPECIAL_VALS
, VALS(adv_test_field_special
), 0x0,
10311 { &hf_bthci_cmd_adv_test_params
,
10312 { "Test Parameters", "bthci_cmd.adv_test_params",
10313 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10316 { &hf_bthci_cmd_rssi_threshold_low
,
10317 { "RSSI Threshold Low", "bthci_cmd.rssi_threshold_low",
10318 FT_INT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_dbm
), 0x0,
10321 { &hf_bthci_cmd_rssi_threshold_high
,
10322 { "RSSI Threshold High", "bthci_cmd.rssi_threshold_high",
10323 FT_INT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_dbm
), 0x0,
10326 { &hf_bthci_cmd_rssi_threshold_timeout
,
10327 { "Timeout", "bthci_cmd.rssi_threshold_timeout",
10328 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_seconds
), 0x0,
10331 { &hf_bthci_cmd_frame_space_min
,
10332 { "Minimum Frame Space", "bthci_cmd.frame_space_min",
10333 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10336 { &hf_bthci_cmd_frame_space_max
,
10337 { "Maximum Frame Space", "bthci_cmd.frame_space_max",
10338 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microseconds
), 0x0,
10341 { &hf_bthci_cmd_spacing_types
,
10342 { "Spacing Types", "bthci_cmd.spacing_types",
10343 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10346 { &hf_bthci_cmd_spacing_types_tifs_acl_cp
,
10347 { "T_IFS_ACL_CP", "bthci_cmd.spacing_types.tifs_acl_cp",
10348 FT_BOOLEAN
, 16, NULL
, 0x0001,
10351 { &hf_bthci_cmd_spacing_types_tifs_acl_pc
,
10352 { "T_IFS_ACL_PC", "bthci_cmd.spacing_types.tifs_acl_pc",
10353 FT_BOOLEAN
, 16, NULL
, 0x0002,
10356 { &hf_bthci_cmd_spacing_types_tmces
,
10357 { "T_MCES", "bthci_cmd.spacing_types.tmces",
10358 FT_BOOLEAN
, 16, NULL
, 0x0004,
10361 { &hf_bthci_cmd_spacing_types_tifs_cis
,
10362 { "T_IFS_CIS", "bthci_cmd.spacing_types.tifs_cis",
10363 FT_BOOLEAN
, 16, NULL
, 0x0008,
10366 { &hf_bthci_cmd_spacing_types_tmss_cis
,
10367 { "T_MSS_CIS", "bthci_cmd.spacing_types.tmss_cis",
10368 FT_BOOLEAN
, 16, NULL
, 0x0010,
10371 { &hf_bthci_cmd_spacing_types_reserved
,
10372 { "Reserved", "bthci_cmd.spacing_types.reserved",
10373 FT_UINT16
, BASE_HEX
, NULL
, 0xFFE0,
10376 { &hf_bthci_cmd_triggered_clock_capture
,
10377 { "Triggered Clock Capture", "bthci_cmd.triggered_clock_capture",
10378 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
10381 { &hf_bthci_cmd_lpo_allowed
,
10382 { "LPO Allowed", "bthci_cmd.lpo_allowed",
10383 FT_UINT8
, BASE_HEX
, VALS(lpo_allowed_vals
), 0x0,
10386 { &hf_bthci_cmd_number_of_clock_captures_to_filter
,
10387 { "Number of Clock Captures to Filter", "bthci_cmd.number_of_clock_captures_to_filter",
10388 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10391 { &hf_bthci_cmd_amp_controller_type
,
10392 { "Controller Type", "bthci_cmd.controller_type",
10393 FT_UINT8
, BASE_HEX
, VALS(bthci_evt_controller_types
), 0x0,
10396 { &hf_bthci_cmd_dm1_acl_u_mode
,
10397 {"DM1 ACL-U Mode", "bthci_cmd.dm1_acl_u_mode",
10398 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
10401 { &hf_bthci_cmd_esco_loopback_mode
,
10402 {"eSCO Loopback Mode", "bthci_cmd.esco_loopback_mode",
10403 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
10406 { &hf_bthci_cmd_transmit_coding_format
,
10407 { "Transmit Coding Format", "bthci_cmd.transmit_coding_format",
10408 FT_NONE
, BASE_NONE
, NULL
, 0x0,
10411 { &hf_bthci_cmd_receive_coding_format
,
10412 { "Receive Coding Format", "bthci_cmd.receive_coding_format",
10413 FT_NONE
, BASE_NONE
, NULL
, 0x0,
10416 { &hf_bthci_cmd_input_coding_format
,
10417 { "Input Coding Format", "bthci_cmd.input_coding_format",
10418 FT_NONE
, BASE_NONE
, NULL
, 0x0,
10421 { &hf_bthci_cmd_output_coding_format
,
10422 { "Output Coding Format", "bthci_cmd.output_coding_format",
10423 FT_NONE
, BASE_NONE
, NULL
, 0x0,
10426 { &hf_bthci_cmd_codec_id
,
10427 { "Codec", "bthci_cmd.codec_id",
10428 FT_UINT8
, BASE_HEX
, VALS(bthci_evt_codec_id_vals
), 0x0,
10431 { &hf_bthci_cmd_company_id
,
10432 { "Company ID", "bthci_cmd.company_id",
10433 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
10436 { &hf_bthci_cmd_vendor_codec_id
,
10437 { "Vendor Codec ID", "bthci_cmd.vendor_codec_id",
10438 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10441 { &hf_bthci_cmd_transmit_codec_frame_size
,
10442 { "Transmit Codec Frame Size", "bthci_cmd.transmit_codec_frame_size",
10443 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10446 { &hf_bthci_cmd_receive_codec_frame_size
,
10447 { "Receive Codec Frame Size", "bthci_cmd.receive_codec_frame_size",
10448 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10451 { &hf_bthci_cmd_input_bandwidth
,
10452 { "Input Bandwidth", "bthci_cmd.input_bandwidth",
10453 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10456 { &hf_bthci_cmd_output_bandwidth
,
10457 { "Output Bandwidth", "bthci_cmd.output_bandwidth",
10458 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10461 { &hf_bthci_cmd_input_coded_data_size
,
10462 { "Input Coded Data Size", "bthci_cmd.input_coded_data_size",
10463 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10466 { &hf_bthci_cmd_output_coded_data_size
,
10467 { "Output Coded Data Size", "bthci_cmd.output_coded_data_size",
10468 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10471 { &hf_bthci_cmd_input_pcm_data_format
,
10472 { "Input PCM Data Format", "bthci_cmd.input_pcm_data_format",
10473 FT_UINT8
, BASE_HEX
, VALS(pcm_data_format_vals
), 0x0,
10476 { &hf_bthci_cmd_output_pcm_data_format
,
10477 { "Output PCM Data Format", "bthci_cmd.output_pcm_data_format",
10478 FT_UINT8
, BASE_HEX
, VALS(pcm_data_format_vals
), 0x0,
10481 { &hf_bthci_cmd_input_pcm_sample_payload_msb_position
,
10482 { "Input PCM Sample Payload MSB Position", "bthci_cmd.input_pcm_sample_payload_msb_position",
10483 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10486 { &hf_bthci_cmd_output_pcm_sample_payload_msb_position
,
10487 { "Output PCM Sample Payload MSB Position", "bthci_cmd.output_pcm_sample_payload_msb_position",
10488 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10491 { &hf_bthci_cmd_input_data_path
,
10492 { "Input Data Path", "bthci_cmd.input_data_path",
10493 FT_UINT8
, BASE_RANGE_STRING
, RVALS(audio_data_path_rvals
), 0x0,
10496 { &hf_bthci_cmd_output_data_path
,
10497 { "Output Data Path", "bthci_cmd.output_data_path",
10498 FT_UINT8
, BASE_RANGE_STRING
, RVALS(audio_data_path_rvals
), 0x0,
10501 { &hf_bthci_cmd_input_transport_unit_size
,
10502 { "Input Transport Unit Size", "bthci_cmd.input_transport_unit_size",
10503 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10506 { &hf_bthci_cmd_output_transport_unit_size
,
10507 { "Output Transport Unit Size", "bthci_cmd.output_transport_unit_size",
10508 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10511 { &hf_bthci_cmd_connectionless_peripheral_broadcast
,
10512 { "Connectionless Peripheral Broadcast", "bthci_cmd.connectionless_peripheral_broadcast",
10513 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
10516 { &hf_bthci_cmd_lt_addr
,
10517 { "LT_ADDR", "bthci_cmd.lt_addr",
10518 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
10521 { &hf_bthci_cmd_interval_min
,
10522 { "Min Interval", "bthci_cmd.interval.min",
10523 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10526 { &hf_bthci_cmd_interval_max
,
10527 { "Max Interval", "bthci_cmd.interval.max",
10528 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10531 { &hf_bthci_cmd_cpb_supervision_to
,
10532 { "Supervision To", "bthci_cmd.cpb_supervision_to",
10533 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10536 { &hf_bthci_cmd_connectionless_peripheral_broadcast_receive
,
10537 { "Connectionless Peripheral Broadcast Receive", "bthci_cmd.connectionless_peripheral_broadcast_receive",
10538 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
10541 { &hf_bthci_cmd_clock_offset_32
,
10542 { "Clock Offset", "bthci_cmd.clock_offset_32",
10543 FT_UINT32
, BASE_HEX
, NULL
, 0x0FFFFFFF,
10544 "Bits 0-27 of the Clock Offset between CLKNreceiver-CLKNtransmitter", HFILL
}
10546 { &hf_bthci_cmd_next_cpb_clock
,
10547 { "Next CPB Clock", "bthci_cmd.next_cpb_clock",
10548 FT_UINT32
, BASE_HEX
, NULL
, 0x0FFFFFFF,
10549 "Bits 0-27 of the Clock Offset between CLKperipheral-CLK", HFILL
}
10551 { &hf_bthci_cmd_remote_timing_accuracy
,
10552 { "Remote Timing Accuracy", "bthci_cmd.remote_timing_accuracy",
10553 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10556 { &hf_bthci_cmd_cpb_skip
,
10557 { "CPB Skip", "bthci_cmd.cpb_skip",
10558 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10561 /* TODO: More detailed dissection */
10562 { &hf_bthci_cmd_channel_map
,
10563 {"Channel Map", "bthci_cmd.channel_map",
10564 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10567 { &hf_bthci_cmd_synchronization_scan_to
,
10568 { "Synchronization Scan To", "bthci_cmd.synchronization_scan_to",
10569 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10572 { &hf_bthci_cmd_c192
,
10573 { "C 192", "bthci_cmd.c192",
10574 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10577 { &hf_bthci_cmd_r192
,
10578 { "R 192", "bthci_cmd.r192",
10579 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10582 { &hf_bthci_cmd_c256
,
10583 { "C 256", "bthci_cmd.c256",
10584 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10587 { &hf_bthci_cmd_r256
,
10588 { "R 256", "bthci_cmd.r256",
10589 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10592 { &hf_bthci_mws_channel
,
10593 { "MWS Channel", "bthci_cmd.mws_channel",
10594 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
10597 /* TODO: Add units */
10598 { &hf_bthci_mws_rx_center_frequency
,
10599 { "MWS RX Center Frequency", "bthci_cmd.mws_rx_center_frequency",
10600 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10603 { &hf_bthci_mws_tx_center_frequency
,
10604 { "MWS TX Center Frequency", "bthci_cmd.mws_tx_center_frequency",
10605 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10608 /* TODO: Add units */
10609 { &hf_bthci_mws_rx_channel_bandwidth
,
10610 { "MWS RX Channel Bandwidth", "bthci_cmd.mws_rx_channel_bandwidth",
10611 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10614 { &hf_bthci_mws_tx_channel_bandwidth
,
10615 { "MWS TX Channel Bandwidth", "bthci_cmd.mws_tx_channel_bandwidth",
10616 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10619 { &hf_bthci_mws_channel_type
,
10620 { "MWS Channel Type", "bthci_cmd.mws_channel_type",
10621 FT_UINT8
, BASE_HEX
, VALS(mws_channel_type_vals
), 0x0,
10624 { &hf_bthci_external_frame_duration
,
10625 { "Frame Duration", "bthci_cmd.external_frame.duration",
10626 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10629 { &hf_bthci_external_frame_sync_assert_offset
,
10630 { "Frame Duration", "bthci_cmd.external_frame.sync_assert.offset",
10631 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10634 { &hf_bthci_external_frame_sync_assert_jitter
,
10635 { "Frame Sync Assert Jitter", "bthci_cmd.external_frame.sync_assert.jitter",
10636 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10639 { &hf_bthci_external_frame_number_of_periods
,
10640 { "Number of Periods", "bthci_cmd.external_frame.number_of_periods",
10641 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10644 { &hf_bthci_external_frame_periods
,
10645 { "Periods", "bthci_cmd.external_frame.periods",
10646 FT_NONE
, BASE_NONE
, NULL
, 0x0,
10649 { &hf_bthci_external_frame_period
,
10650 { "Period", "bthci_cmd.external_frame.period",
10651 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
10654 { &hf_bthci_external_frame_period_duration
,
10655 { "Duration", "bthci_cmd.external_frame.period.duration",
10656 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10659 { &hf_bthci_external_frame_period_type
,
10660 { "Type", "bthci_cmd.external_frame.period.type",
10661 FT_UINT8
, BASE_HEX
, VALS(external_frame_period_type_vals
), 0x0,
10664 { &hf_bthci_mws_rx_assert_offset
,
10665 { "RX Assert Offset", "bthci_cmd.mws.rx_assert.offset",
10666 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10669 { &hf_bthci_mws_rx_assert_jitter
,
10670 { "RX Assert Jitter", "bthci_cmd.mws.rx_assert.jitter",
10671 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10674 { &hf_bthci_mws_rx_deassert_offset
,
10675 { "RX Deassert Offset", "bthci_cmd.mws.rx_deassert.offset",
10676 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10679 { &hf_bthci_mws_rx_deassert_jitter
,
10680 { "RX Deassert Jitter", "bthci_cmd.mws.rx_deassert.jitter",
10681 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10684 { &hf_bthci_mws_tx_assert_offset
,
10685 { "TX Assert Offset", "bthci_cmd.mws.tx_assert.offset",
10686 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10689 { &hf_bthci_mws_tx_assert_jitter
,
10690 { "TX Assert Jitter", "bthci_cmd.mws.tx_assert.jitter",
10691 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10694 { &hf_bthci_mws_tx_deassert_offset
,
10695 { "TX Deassert Offset", "bthci_cmd.mws.tx_deassert.offset",
10696 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10699 { &hf_bthci_mws_tx_deassert_jitter
,
10700 { "TX Deassert Jitter", "bthci_cmd.mws.tx_deassert.jitter",
10701 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10704 { &hf_bthci_mws_pattern_assert_offset
,
10705 { "Pattern Assert Offset", "bthci_cmd.mws.pattern_assert.offset",
10706 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10709 { &hf_bthci_mws_pattern_assert_jitter
,
10710 { "Pattern Assert Jitter", "bthci_cmd.mws.pattern_assert.jitter",
10711 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10714 { &hf_bthci_mws_inactivity_duration_assert_offset
,
10715 { "Inactivity Duration Assert Offset", "bthci_cmd.mws.inactivity_duration_assert.offset",
10716 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10719 { &hf_bthci_mws_inactivity_duration_assert_jitter
,
10720 { "Inactivity Duration Assert Jitter", "bthci_cmd.mws.inactivity_duration_assert.jitter",
10721 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10724 { &hf_bthci_mws_scan_frequency_assert_offset
,
10725 { "Scan Frequency Assert Offset", "bthci_cmd.mws.scan_frequency_assert.offset",
10726 FT_INT16
, BASE_DEC
, NULL
, 0x0,
10729 { &hf_bthci_mws_scan_frequency_assert_jitter
,
10730 { "Scan Frequency Assert Jitter", "bthci_cmd.mws.scan_frequency_assert.jitter",
10731 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10734 { &hf_bthci_mws_priority_assert_offset_request
,
10735 { "Priority Assert Offset Request", "bthci_cmd.mws.priority_assert_offset_request",
10736 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10739 { &hf_bthci_mws_transport_layer
,
10740 { "Transport Layer", "bthci_cmd.mws.transport_layer",
10741 FT_UINT8
, BASE_HEX
, VALS(bthci_evt_mws_transport_layer_vals
), 0x0,
10744 { &hf_bthci_mws_to_baud_rate
,
10745 { "To Baud Rate", "bthci_cmd.mws.to_baud_rate",
10746 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10749 { &hf_bthci_mws_from_baud_rate
,
10750 { "From Baud Rate", "bthci_cmd.mws.from_baud_rate",
10751 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10754 { &hf_bthci_mws_number_of_frequencies
,
10755 { "Number of Frequencies", "bthci_cmd.mws.number_of_frequencies",
10756 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10759 { &hf_bthci_mws_scan_frequency_table
,
10760 { "Scan Frequency Table", "bthci_cmd.mws.scan_frequency_table",
10761 FT_NONE
, BASE_NONE
, NULL
, 0x0,
10764 { &hf_bthci_mws_scan_frequency_table_item
,
10765 { "Item", "bthci_cmd.mws.scan_frequency_table.item",
10766 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
10769 { &hf_bthci_mws_scan_frequency_table_item_low
,
10770 { "Low Frequency", "bthci_cmd.mws.scan_frequency_table.item.low",
10771 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10774 { &hf_bthci_mws_scan_frequency_table_item_high
,
10775 { "High Frequency", "bthci_cmd.mws.scan_frequency_table.item.high",
10776 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10779 { &hf_bthci_mws_pattern_index
,
10780 { "Index", "bthci_cmd.mws_pattern.index",
10781 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10784 { &hf_bthci_mws_pattern_number_of_intervals
,
10785 { "Number of Intervals", "bthci_cmd.mws_pattern.number_of_intervals",
10786 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10789 { &hf_bthci_mws_patterns
,
10790 { "Patterns", "bthci_cmd.mws_pattern.patterns",
10791 FT_NONE
, BASE_NONE
, NULL
, 0x0,
10794 { &hf_bthci_mws_pattern
,
10795 { "Pattern", "bthci_cmd.mws_pattern.pattern",
10796 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
10799 { &hf_bthci_mws_pattern_duration
,
10800 { "Duration", "bthci_cmd.mws_pattern.pattern.duration",
10801 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10804 { &hf_bthci_mws_pattern_type
,
10805 { "Type", "bthci_cmd.mws_pattern.pattern.type",
10806 FT_UINT8
, BASE_HEX
, VALS(mws_pattern_type_vals
), 0x0,
10809 { &hf_bthci_cmd_sync_train_to
,
10810 { "Synchronization Train To", "bthci_cmd.sync_train_to",
10811 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10814 { &hf_bthci_cmd_service_data
,
10815 { "Service Data", "bthci_cmd.service_data",
10816 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
10819 { &hf_bthci_cmd_secure_connection_host_support
,
10820 { "Secure Connection Host Support", "bthci_cmd.secure_connection_host_support",
10821 FT_UINT8
, BASE_HEX
, VALS(disable_enable_vals
), 0x0,
10824 { &hf_bthci_cmd_cpb_fragment
,
10825 { "CPB Fragment", "bthci_cmd.cpb.fragment",
10826 FT_UINT8
, BASE_HEX
, VALS(cpb_fragment_vals
), 0x0,
10829 { &hf_bthci_cmd_cpb_data_length
,
10830 { "CPB Data Length", "bthci_cmd.cpb.data_length",
10831 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10834 { &hf_bthci_cmd_cpb_data
,
10835 { "CPB Data", "bthci_cmd.cpb.data",
10836 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10839 { &hf_bthci_cmd_authenticated_payload_timeout
,
10840 { "Authenticated Payload Timeout", "bthci_cmd.authenticated_payload_timeout",
10841 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(bluetooth_unit_0p01_sec
), 0x0,
10844 { &hf_bthci_cmd_extended_inquiry_length
,
10845 { "Extended Inquiry Length", "bthci_cmd.extended_inquiry_length",
10846 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10849 { &hf_bthci_cmd_min_encryption_key_size
,
10850 { "Minimum Encryption Key Size", "bthci_cmd.min_encryption_key_size",
10851 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_octet_octets
), 0x0,
10856 static ei_register_info ei
[] = {
10857 { &ei_command_unknown_command
, { "bthci_cmd.expert.command.unknown_command", PI_PROTOCOL
, PI_WARN
, "Unknown command", EXPFILL
}},
10858 { &ei_command_parameter_unexpected
, { "bthci_cmd.expert.parameter.unexpected", PI_PROTOCOL
, PI_WARN
, "Unexpected command parameter", EXPFILL
}},
10859 { &ei_command_undecoded
, { "bthci_cmd.expert.command.undecoded", PI_UNDECODED
, PI_NOTE
, "Command undecoded", EXPFILL
}}
10862 static int *ett
[] = {
10867 &ett_flow_spec_subtree
,
10868 &ett_le_channel_map
,
10869 &ett_event_mask_page_2
,
10870 &ett_le_event_mask
,
10871 &ett_adv_properties
,
10875 &ett_filter_policy
,
10876 &ett_sync_cte_type
,
10877 &ett_coding_format
,
10879 &ett_sco_packet_type
,
10887 &ett_addr_change_reasons
,
10888 &ett_adv_subevents
,
10892 &ett_cs_capability
,
10894 &ett_adv_test_flags
,
10895 &ett_override_config
,
10899 proto_bthci_cmd
= proto_register_protocol("Bluetooth HCI Command", "HCI_CMD", "bthci_cmd");
10900 bthci_cmd_handle
= register_dissector("bthci_cmd", dissect_bthci_cmd
, proto_bthci_cmd
);
10902 /* Required function calls to register the header fields and subtrees used */
10903 proto_register_field_array(proto_bthci_cmd
, hf
, array_length(hf
));
10904 proto_register_subtree_array(ett
, array_length(ett
));
10906 expert_bthci_cmd
= expert_register_protocol(proto_bthci_cmd
);
10907 expert_register_field_array(expert_bthci_cmd
, ei
, array_length(ei
));
10909 bthci_cmds
= wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
10911 module
= prefs_register_protocol_subtree("Bluetooth", proto_bthci_cmd
, NULL
);
10912 prefs_register_static_text_preference(module
, "hci_cmd.version",
10913 "Bluetooth HCI version: 4.0 (Core)",
10914 "Version of protocol supported by this dissector.");
10916 vendor_dissector_table
= register_decode_as_next_proto(proto_bthci_cmd
, "bthci_cmd.vendor",
10917 "BT HCI Command Vendor", bthci_cmd_vendor_prompt
);
10921 /* If this dissector uses sub-dissector registration add a registration routine.
10922 This format is required because a script is used to find these routines and
10923 create the code that calls these routines.
10926 proto_reg_handoff_bthci_cmd(void)
10928 hci_vendor_table
= find_dissector_table("bluetooth.vendor");
10930 dissector_add_uint("hci_h4.type", HCI_H4_TYPE_CMD
, bthci_cmd_handle
);
10931 dissector_add_uint("hci_h1.type", BTHCI_CHANNEL_COMMAND
, bthci_cmd_handle
);
10934 #define PROTO_DATA_BLUETOOTH_EIR_AD_MANUFACTURER_COMPANY_ID 0
10935 #define PROTO_DATA_BLUETOOTH_EIR_AD_TDS_ORGANIZATION_ID 1
10937 static void bluetooth_eir_ad_manufacturer_company_id_prompt(packet_info
*pinfo
, char* result
)
10939 uint16_t *value_data
;
10941 value_data
= (uint16_t *) p_get_proto_data(pinfo
->pool
, pinfo
, proto_btcommon
, PROTO_DATA_BLUETOOTH_EIR_AD_MANUFACTURER_COMPANY_ID
);
10943 snprintf(result
, MAX_DECODE_AS_PROMPT_LEN
, "EIR/AD Manufacturer Company ID 0x%02x as", (unsigned) *value_data
);
10945 snprintf(result
, MAX_DECODE_AS_PROMPT_LEN
, "Unknown EIR/AD Manufacturer");
10948 static void *bluetooth_eir_ad_manufacturer_company_id_value(packet_info
*pinfo
)
10950 uint16_t *value_data
;
10952 value_data
= (uint16_t *) p_get_proto_data(pinfo
->pool
, pinfo
, proto_btcommon
, PROTO_DATA_BLUETOOTH_EIR_AD_MANUFACTURER_COMPANY_ID
);
10955 return GUINT_TO_POINTER((unsigned long)*value_data
);
10960 static void bluetooth_eir_ad_tds_organization_id_prompt(packet_info
*pinfo
, char* result
)
10962 uint8_t *value_data
;
10964 value_data
= (uint8_t *) p_get_proto_data(pinfo
->pool
, pinfo
, proto_btcommon
, PROTO_DATA_BLUETOOTH_EIR_AD_TDS_ORGANIZATION_ID
);
10966 snprintf(result
, MAX_DECODE_AS_PROMPT_LEN
, "TDS Organization ID 0x%02x as", (unsigned) *value_data
);
10968 snprintf(result
, MAX_DECODE_AS_PROMPT_LEN
, "Unknown TDS Organization ID");
10971 static void *bluetooth_eir_ad_tds_organization_id_value(packet_info
*pinfo
)
10973 uint8_t *value_data
;
10975 value_data
= (uint8_t *) p_get_proto_data(pinfo
->pool
, pinfo
, proto_btcommon
, PROTO_DATA_BLUETOOTH_EIR_AD_TDS_ORGANIZATION_ID
);
10978 return GUINT_TO_POINTER((unsigned long)*value_data
);
10984 dissect_eir_ad_data(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, bluetooth_eir_ad_data_t
*bluetooth_eir_ad_data
)
10986 proto_item
*entry_item
;
10987 proto_tree
*entry_tree
;
10988 proto_item
*sub_item
;
10989 proto_tree
*sub_tree
;
10993 uint8_t sub_length
;
10997 int64_t end_offset
;
10998 bool has_bd_addr
= false;
10999 uint8_t bd_addr
[6];
11000 uint8_t *name
= NULL
;
11001 bluetooth_uuid_t uuid
;
11002 uint32_t interval
, num_bis
;
11004 DISSECTOR_ASSERT(bluetooth_eir_ad_data
);
11006 data_size
= tvb_reported_length(tvb
);
11008 while (offset
< data_size
) {
11009 length
= tvb_get_uint8(tvb
, offset
);
11010 if (length
<= 0) break;
11012 type
= tvb_get_uint8(tvb
, offset
+ 1);
11014 entry_item
= proto_tree_add_none_format(tree
, hf_btcommon_eir_ad_entry
, tvb
, offset
, length
+ 1, "%s",
11015 val_to_str_const(type
, bthci_cmd_eir_data_type_vals
, "Unknown"));
11016 entry_tree
= proto_item_add_subtree(entry_item
, ett_eir_ad_entry
);
11018 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_length
, tvb
, offset
, 1, ENC_NA
);
11021 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_type
, tvb
, offset
, 1, ENC_NA
);
11025 offset_start
= offset
;
11028 case 0x01: /* Flags */
11029 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_flags_reserved
, tvb
, offset
, 1, ENC_NA
);
11030 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_flags_le_bredr_support_host
, tvb
, offset
, 1, ENC_NA
);
11031 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_flags_le_bredr_support_controller
, tvb
, offset
, 1, ENC_NA
);
11032 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_flags_bredr_not_support
, tvb
, offset
, 1, ENC_NA
);
11033 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_flags_le_general_discoverable_mode
, tvb
, offset
, 1, ENC_NA
);
11034 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_flags_le_limited_discoverable_mode
, tvb
, offset
, 1, ENC_NA
);
11038 case 0x02: /* 16-bit Service Class UUIDs (incomplete) */
11039 case 0x03: /* 16-bit Service Class UUIDs */
11040 case 0x14: /* List of 16-bit Service Solicitation UUIDs */
11041 end_offset
= offset
+ length
;
11042 while (offset
< end_offset
) {
11043 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_uuid_16
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11048 case 0x04: /* 32-bit Service Class UUIDs (incomplete) */
11049 case 0x05: /* 32-bit Service Class UUIDs */
11050 case 0x1F: /* List of 32-bit Service Solicitation UUIDs */
11051 end_offset
= offset
+ length
;
11052 while (offset
< end_offset
) {
11053 uuid
= get_bluetooth_uuid(tvb
, offset
, 4);
11054 if (uuid
.bt_uuid
) {
11055 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_uuid_32
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11056 proto_item_append_text(sub_item
, " (%s)", val_to_str_ext_const(uuid
.bt_uuid
, &bluetooth_uuid_vals_ext
, "Unknown"));
11058 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_custom_uuid_32
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11059 proto_item_append_text(sub_item
, " (%s)", print_bluetooth_uuid(pinfo
->pool
, &uuid
));
11066 case 0x06: /* 128-bit Service Class UUIDs (incomplete) */
11067 case 0x07: /* 128-bit Service Class UUIDs */
11068 case 0x15: /* List of 128-bit Service Solicitation UUIDs */
11069 end_offset
= offset
+ length
;
11070 while (offset
< end_offset
) {
11071 uuid
= get_bluetooth_uuid(tvb
, offset
, 16);
11072 if (uuid
.bt_uuid
) {
11073 sub_item
= proto_tree_add_bytes_format_value(entry_tree
, hf_btcommon_eir_ad_uuid_128
, tvb
, offset
, 16, uuid
.data
, "%s", print_numeric_bluetooth_uuid(pinfo
->pool
, &uuid
));
11074 proto_item_append_text(sub_item
, " (%s)", val_to_str_ext_const(uuid
.bt_uuid
, &bluetooth_uuid_vals_ext
, "Unknown"));
11077 sub_item
= proto_tree_add_bytes_format_value(entry_tree
, hf_btcommon_eir_ad_custom_uuid_128
, tvb
, offset
, 16, uuid
.data
, "%s", print_numeric_bluetooth_uuid(pinfo
->pool
, &uuid
));
11078 proto_item_append_text(sub_item
, " (%s)", print_bluetooth_uuid(pinfo
->pool
, &uuid
));
11086 case 0x08: /* Device Name (shortened) */
11087 case 0x09: /* Device Name */
11088 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_name
, tvb
, offset
, length
, ENC_UTF_8
| ENC_NA
);
11089 proto_item_append_text(entry_item
, ": %s", tvb_format_text(pinfo
->pool
, tvb
, offset
, length
));
11090 if (!name
|| type
== 0x09)
11091 name
= tvb_get_string_enc(pinfo
->pool
, tvb
, offset
, length
, ENC_UTF_8
);
11095 case 0x10: /* Device ID / Security Manager TK Value */
11096 if (length
== 16) { /* little heuristic for recognize Security Manager TK Value */
11097 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_data
, tvb
, offset
, 16, ENC_NA
);
11098 expert_add_info(pinfo
, sub_item
, &ei_eir_ad_undecoded
);
11100 else if (length
== 8) { /* DID */
11101 uint16_t vendor_id_source
;
11102 uint16_t vendor_id
;
11103 uint16_t product_id
;
11104 const char *str_val
;
11106 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_did_vendor_id_source
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11107 vendor_id_source
= tvb_get_letohs(tvb
, offset
);
11110 if (vendor_id_source
== DID_VENDOR_ID_SOURCE_BLUETOOTH_SIG
) {
11111 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_did_vendor_id_bluetooth_sig
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11113 else if (vendor_id_source
== DID_VENDOR_ID_SOURCE_USB_FORUM
) {
11114 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_did_vendor_id_usb_forum
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11117 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_did_vendor_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11119 vendor_id
= tvb_get_letohs(tvb
, offset
);
11122 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_did_product_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11123 product_id
= tvb_get_letohs(tvb
, offset
);
11126 if (vendor_id_source
== DID_VENDOR_ID_SOURCE_USB_FORUM
) {
11127 str_val
= val_to_str_ext_const(vendor_id
<< 16 | product_id
, &ext_usb_products_vals
, "Unknown");
11128 proto_item_append_text(sub_item
, " (%s)", str_val
);
11131 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_did_version
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11135 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_data
, tvb
, offset
, length
, ENC_NA
);
11136 expert_add_info(pinfo
, sub_item
, &ei_command_unknown_command
);
11140 case 0x0A: /* Tx Power Level */
11141 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_tx_power
, tvb
, offset
, 1, ENC_NA
);
11145 case 0x0B: /* OOB Optional Data Length */
11146 /* From CSS v3.pdf */
11147 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_ssp_oob_length
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11151 case 0x0C: /* BD_ADDR */
11152 /* From CSS v3.pdf */
11153 offset
= dissect_bd_addr(hf_btcommon_eir_ad_bd_addr
, pinfo
, tree
, tvb
, offset
, false, bluetooth_eir_ad_data
->interface_id
, bluetooth_eir_ad_data
->adapter_id
, bd_addr
);
11154 has_bd_addr
= true;
11157 case 0x0D: /* Class Of Device */
11158 call_dissector(btcommon_cod_handle
, tvb_new_subset_length(tvb
, offset
, 3), pinfo
, entry_tree
);
11162 case 0x0E: /* Simple Pairing Hash C */
11163 case 0x1D: /* Simple Pairing Hash C-256 */
11164 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_hash_c
, tvb
, offset
, 16, ENC_NA
);
11168 case 0x0F: /* Simple Pairing Randomizer R */
11169 case 0x1E: /* Simple Pairing Randomizer R-256 */
11170 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_randomizer_r
, tvb
, offset
, 16, ENC_NA
);
11174 case 0x11: /* Security Manager Out of Band Flags */
11175 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_oob_flags_reserved
, tvb
, offset
, 1, ENC_NA
);
11176 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_oob_flags_address_type
, tvb
, offset
, 1, ENC_NA
);
11177 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_oob_flags_le_bredr_support
, tvb
, offset
, 1, ENC_NA
);
11178 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_oob_flags_le_supported_host
, tvb
, offset
, 1, ENC_NA
);
11179 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_oob_flags_data_present
, tvb
, offset
, 1, ENC_NA
);
11183 case 0x12: /* Peripheral Connection Interval Range */
11184 sub_item
= proto_tree_add_item(tree
, hf_btcommon_eir_ad_connection_interval_min
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11185 proto_item_append_text(sub_item
, " (%g msec)", tvb_get_letohs(tvb
, offset
) * 1.25);
11188 sub_item
= proto_tree_add_item(tree
, hf_btcommon_eir_ad_connection_interval_max
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11189 proto_item_append_text(sub_item
, " (%g msec)", tvb_get_letohs(tvb
, offset
) * 1.25);
11192 proto_item_append_text(entry_item
, ": %g - %g msec", tvb_get_letohs(tvb
, offset
- 4) * 1.25, tvb_get_letohs(tvb
, offset
- 2) * 1.25);
11195 case 0x16: /* Service Data - 16 bit UUID */
11196 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_uuid_16
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11199 if (length
- 2 > 0) {
11200 uuid
= get_bluetooth_uuid(tvb
, offset
-2, 2);
11201 if (!dissector_try_string(bluetooth_eir_ad_service_uuid
, print_numeric_bluetooth_uuid(pinfo
->pool
, &uuid
),
11202 tvb_new_subset_length(tvb
, offset
, length
- 2), pinfo
, entry_tree
, bluetooth_eir_ad_data
)) {
11203 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_service_data
, tvb
, offset
, length
- 2, ENC_NA
);
11205 offset
+= length
- 2;
11208 case 0x20: /* Service Data - 32 bit UUID */
11209 uuid
= get_bluetooth_uuid(tvb
, offset
, 4);
11210 if (!dissector_try_string(bluetooth_eir_ad_service_uuid
, print_numeric_bluetooth_uuid(pinfo
->pool
, &uuid
),
11211 tvb_new_subset_length(tvb
, offset
+ 4, length
- 4), pinfo
, entry_tree
, bluetooth_eir_ad_data
)) {
11212 if (uuid
.bt_uuid
) {
11213 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_uuid_32
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11214 proto_item_append_text(sub_item
, " (%s)", val_to_str_ext_const(uuid
.bt_uuid
, &bluetooth_uuid_vals_ext
, "Unknown"));
11217 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_custom_uuid_32
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11218 proto_item_append_text(sub_item
, " (%s)", print_bluetooth_uuid(pinfo
->pool
, &uuid
));
11223 if (length
- 4 > 0) {
11224 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_service_data
, tvb
, offset
, length
- 4, ENC_NA
);
11225 offset
+= length
- 4;
11228 case 0x21: /* Service Data - 128 bit UUID */
11229 uuid
= get_bluetooth_uuid(tvb
, offset
, 16);
11230 if (!dissector_try_string(bluetooth_eir_ad_service_uuid
, print_numeric_bluetooth_uuid(pinfo
->pool
, &uuid
),
11231 tvb_new_subset_length(tvb
, offset
+ 16, length
- 16), pinfo
, entry_tree
, bluetooth_eir_ad_data
)) {
11232 if (uuid
.bt_uuid
) {
11233 sub_item
= proto_tree_add_bytes_format_value(entry_tree
, hf_btcommon_eir_ad_uuid_128
, tvb
, offset
, 16, uuid
.data
, "%s", print_numeric_bluetooth_uuid(pinfo
->pool
, &uuid
));
11234 proto_item_append_text(sub_item
, " (%s)", val_to_str_ext_const(uuid
.bt_uuid
, &bluetooth_uuid_vals_ext
, "Unknown"));
11237 sub_item
= proto_tree_add_bytes_format_value(entry_tree
, hf_btcommon_eir_ad_custom_uuid_128
, tvb
, offset
, 16, uuid
.data
, "%s", print_numeric_bluetooth_uuid(pinfo
->pool
, &uuid
));
11238 proto_item_append_text(sub_item
, " (%s)", print_bluetooth_uuid(pinfo
->pool
, &uuid
));
11243 if (length
- 16 > 0) {
11244 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_service_data
, tvb
, offset
, length
- 16, ENC_NA
);
11245 offset
+= length
- 16;
11248 case 0x17: /* Public Target Address */
11249 case 0x18: /* Random Target Address */
11250 end_offset
= offset
+ length
;
11251 while (offset
< end_offset
) {
11252 offset
= dissect_bd_addr(hf_btcommon_eir_ad_bd_addr
, pinfo
, entry_tree
, tvb
, offset
, false, bluetooth_eir_ad_data
->interface_id
, bluetooth_eir_ad_data
->adapter_id
, NULL
);
11256 case 0x19: /* Appearance */
11257 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_appearance
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11258 proto_item_append_text(entry_item
, ": %s", val_to_str_const(tvb_get_letohs(tvb
, offset
), bthci_cmd_appearance_vals
, "Unknown"));
11262 case 0x1A: /* Advertising Interval */
11263 /* From CSS v3.pdf */
11264 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_advertising_interval
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11265 proto_item_append_text(sub_item
, " (%g msec)", tvb_get_letohs(tvb
, offset
) * 0.625);
11269 case 0x1B: /* LE Bluetooth Device Address */
11270 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_le_bd_addr_reserved
, tvb
, offset
, 1, ENC_NA
);
11271 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_le_bd_addr_type
, tvb
, offset
, 1, ENC_NA
);
11274 offset
= dissect_bd_addr(hf_btcommon_eir_ad_bd_addr
, pinfo
, entry_tree
, tvb
, offset
, false, bluetooth_eir_ad_data
->interface_id
, bluetooth_eir_ad_data
->adapter_id
, NULL
);
11277 case 0x1C: /* LE Role */
11278 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_le_role
, tvb
, offset
, 1, ENC_NA
);
11282 case 0x22: /* LE Secure Connections Confirmation Value" */
11283 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_le_secure_confirmation_value
, tvb
, offset
, 16, ENC_NA
);
11287 case 0x23: /* LE Secure Connections Random Value" */
11288 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_le_secure_random_value
, tvb
, offset
, 16, ENC_NA
);
11292 case 0x24: /* URI */
11293 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_uri
, tvb
, offset
, length
, ENC_UTF_8
| ENC_NA
);
11297 case 0x25: /* Indoor Positioning */
11301 sub_item
= proto_tree_add_bitmask(entry_tree
, tvb
, offset
, hf_btcommon_eir_ad_ips_flags
, ett_eir_ad_entry
, hfx_btcommon_eir_ad_ips_flags
, ENC_LITTLE_ENDIAN
);
11302 flags
= tvb_get_uint8(tvb
, offset
);
11305 if (flags
& 0x01) {
11306 proto_tree_add_item(tree
, hf_btcommon_eir_ad_ips_latitude
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11309 proto_tree_add_item(tree
, hf_btcommon_eir_ad_ips_longitude
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11312 proto_tree_add_item(tree
, hf_btcommon_eir_ad_ips_local_north_coordinate
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11315 proto_tree_add_item(tree
, hf_btcommon_eir_ad_ips_local_east_coordinate
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11319 if (flags
& 0x04) {
11320 proto_tree_add_item(tree
, hf_btcommon_eir_ad_ips_tx_power_level
, tvb
, offset
, 1, ENC_NA
);
11324 if (flags
& 0x08) {
11325 proto_tree_add_item(tree
, hf_btcommon_eir_ad_ips_altitude
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11329 if (flags
& 0x10) {
11330 proto_tree_add_item(tree
, hf_btcommon_eir_ad_ips_floor_number
, tvb
, offset
, 1, ENC_NA
);
11334 if (flags
& 0x20) {
11335 proto_tree_add_bitmask(tree
, tvb
, offset
, hf_btcommon_eir_ad_ips_uncertainty
, ett_eir_ad_entry
, hfx_btcommon_eir_ad_ips_uncertainty
, ENC_NA
);
11339 if (flags
& 0xC0) {
11340 expert_add_info(pinfo
, sub_item
, &ei_eir_ad_not_used
);
11344 case 0x26: /* Transport Discovery Data */
11345 end_offset
= offset
+ length
;
11346 while (offset
< end_offset
) {
11347 uint8_t organization_id
;
11349 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_tds_organization_id
, tvb
, offset
, 1, ENC_NA
);
11350 organization_id
= tvb_get_uint8(tvb
, offset
);
11353 if (p_get_proto_data(pinfo
->pool
, pinfo
, proto_btcommon
, PROTO_DATA_BLUETOOTH_EIR_AD_TDS_ORGANIZATION_ID
) == NULL
) {
11354 uint8_t *value_data
;
11356 value_data
= wmem_new(wmem_file_scope(), uint8_t);
11357 *value_data
= organization_id
;
11359 p_add_proto_data(pinfo
->pool
, pinfo
, proto_btcommon
, PROTO_DATA_BLUETOOTH_EIR_AD_TDS_ORGANIZATION_ID
, value_data
);
11362 proto_tree_add_bitmask(entry_tree
, tvb
, offset
, hf_btcommon_eir_ad_tds_flags
, ett_eir_ad_entry
, hfx_btcommon_eir_ad_tds_flags
, ENC_NA
);
11365 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_tds_data_length
, tvb
, offset
, 1, ENC_NA
);
11366 sub_length
= tvb_get_uint8(tvb
, offset
);
11369 if (length
> 3 && sub_length
> length
- 3) {
11370 expert_add_info(pinfo
, sub_item
, &ei_eir_ad_invalid_length
);
11373 if (sub_length
> 0) {
11376 new_tvb
= tvb_new_subset_length(tvb
, offset
, sub_length
);
11378 if (!dissector_try_uint_new(bluetooth_eir_ad_tds_organization_id
, organization_id
, new_tvb
, pinfo
, tree
, true, bluetooth_eir_ad_data
)) {
11379 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_tds_data
, tvb
, offset
, sub_length
, ENC_NA
);
11380 expert_add_info(pinfo
, sub_item
, &ei_eir_ad_undecoded
);
11386 length
-= (3 + sub_length
);
11390 case 0x27: {/* LE Supported Features */
11391 for (uint8_t i
=0; (tvb_captured_length_remaining(tvb
, offset
) > 0) && (i
< 8); i
++) {
11392 proto_tree_add_bitmask(entry_tree
, tvb
, offset
, hf_btcommon_eir_ad_le_features
, ett_eir_ad_le_features
, hfx_btcommon_eir_ad_le_features
[i
], ENC_NA
);
11396 sub_length
= tvb_captured_length_remaining(tvb
, offset
);
11397 if (sub_length
> 0) {
11398 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_data
, tvb
, offset
, sub_length
, ENC_NA
);
11399 expert_add_info(pinfo
, sub_item
, &ei_eir_ad_unknown
);
11400 offset
+= sub_length
;
11404 case 0x28: /* Channel Map Update Indication */
11405 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_le_channel_map
, tvb
, offset
, 5, ENC_NA
);
11406 sub_tree
= proto_item_add_subtree(sub_item
, ett_le_channel_map
);
11408 call_dissector(btcommon_le_channel_map_handle
, tvb_new_subset_length(tvb
, offset
, 5), pinfo
, sub_tree
);
11411 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_instant
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11415 case 0x3D: /* 3D Information Data */
11416 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_factory_test_mode
, tvb
, offset
, 1, ENC_NA
);
11417 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_reserved
, tvb
, offset
, 1, ENC_NA
);
11418 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_send_battery_level_report_on_startup
, tvb
, offset
, 1, ENC_NA
);
11419 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_battery_level_reporting
, tvb
, offset
, 1, ENC_NA
);
11420 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_association_notification
, tvb
, offset
, 1, ENC_NA
);
11423 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_path_loss_threshold
, tvb
, offset
, 1, ENC_NA
);
11427 case 0x29: /* PB-ADV */
11428 if (btmesh_pbadv_handle
) {
11429 call_dissector(btmesh_pbadv_handle
, tvb_new_subset_length(tvb
, offset
, length
), pinfo
, proto_tree_get_root(tree
));
11431 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_mesh_pbadv
, tvb
, offset
, length
, ENC_NA
);
11436 case 0x2a: /* Mesh Message */
11437 if (btmesh_handle
) {
11438 call_dissector(btmesh_handle
, tvb_new_subset_length(tvb
, offset
, length
), pinfo
, proto_tree_get_root(tree
));
11440 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_mesh_msg
, tvb
, offset
, length
, ENC_NA
);
11445 case 0x2b: /* Mesh Beacon */
11446 if (btmesh_beacon_handle
) {
11447 call_dissector(btmesh_beacon_handle
, tvb_new_subset_length(tvb
, offset
, length
), pinfo
, proto_tree_get_root(tree
));
11449 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_mesh_beacon
, tvb
, offset
, length
, ENC_NA
);
11454 case 0x2c: /* BIGInfo */
11455 sub_item
= proto_tree_add_item_ret_uint(entry_tree
, hf_btcommon_eir_ad_biginfo_big_offset
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
, &interval
);
11456 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_big_offset_units
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11457 proto_item_append_text(sub_item
, " (%u usec)", interval
* ((tvb_get_uint32(tvb
, offset
, ENC_LITTLE_ENDIAN
) & 0x00004000) != 0 ? 300 : 30));
11458 sub_item
= proto_tree_add_item_ret_uint(entry_tree
, hf_btcommon_eir_ad_biginfo_iso_interval
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
, &interval
);
11459 proto_item_append_text(sub_item
, " (%g msec)", interval
* 1.25);
11460 proto_tree_add_item_ret_uint(entry_tree
, hf_btcommon_eir_ad_biginfo_num_bis
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
, &num_bis
);
11462 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_nse
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11463 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_bn
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11464 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_sub_interval
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11465 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_pto
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11467 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_bis_spacing
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
11468 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_irc
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
11470 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_max_pdu
, tvb
, offset
, 1, ENC_NA
);
11472 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_rfu
, tvb
, offset
, 1, ENC_NA
);
11474 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_seed_access_address
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11475 sub_tree
= proto_item_add_subtree(sub_item
, ett_eir_ad_biginfo_seedaa
);
11476 for (uint32_t bis
= 0; bis
<= num_bis
; ++bis
) {
11477 uint32_t aa
= tvb_get_uint32(tvb
, offset
, ENC_LITTLE_ENDIAN
);
11478 uint8_t d
= (35 * bis
+ 42) & 0x7f;
11479 uint32_t dw
= (0xfc000000 * (d
& 1)) | ((d
& 0x02) << 24) | ((d
& 0x40) << 18) | ((d
& 0x02) << 22) | ((d
& 0x30) << 16) | ((d
& 0x0c) << 15);
11481 proto_tree_add_uint(sub_tree
, bis
? hf_btcommon_eir_ad_biginfo_bis_access_address
: hf_btcommon_eir_ad_biginfo_big_control_access_address
, tvb
, 0, 0, aa
);
11484 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_sdu_interval
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11485 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_max_sdu
, tvb
, offset
, 4, ENC_LITTLE_ENDIAN
);
11487 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_base_crc_init
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11489 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_channel_map
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
11490 sub_tree
= proto_item_add_subtree(sub_item
, ett_le_channel_map
);
11491 call_dissector(btcommon_le_channel_map_handle
, tvb_new_subset_length(tvb
, offset
, 5), pinfo
, sub_tree
);
11492 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_phy
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
11494 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_bis_payload_count
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
11495 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_framing
, tvb
, offset
, 5, ENC_LITTLE_ENDIAN
);
11497 if (length
>= 57) {
11498 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_giv
, tvb
, offset
, 8, ENC_NA
);
11500 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_biginfo_gskd
, tvb
, offset
, 16, ENC_NA
);
11505 case 0x2d: /* Broadcast Code */
11506 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_broadcast_code
, tvb
, offset
, length
, ENC_UTF_8
| ENC_NA
);
11507 proto_item_append_text(entry_item
, ": %s", tvb_format_text(pinfo
->pool
, tvb
, offset
, length
));
11511 case 0x2e: /* Resolvable Set Identifier */
11512 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_rsi
, tvb
, offset
, length
, ENC_NA
);
11516 case 0x30: /* Broadcast Name */
11517 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_broadcast_name
, tvb
, offset
, length
, ENC_UTF_8
| ENC_NA
);
11521 case 0xFF: /* Manufacturer Specific */ {
11522 uint16_t company_id
;
11524 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_company_id
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11525 company_id
= tvb_get_letohs(tvb
, offset
);
11529 if (p_get_proto_data(pinfo
->pool
, pinfo
, proto_btcommon
, PROTO_DATA_BLUETOOTH_EIR_AD_MANUFACTURER_COMPANY_ID
) == NULL
) {
11530 uint16_t *value_data
;
11532 value_data
= wmem_new(wmem_file_scope(), uint16_t);
11533 *value_data
= company_id
;
11535 p_add_proto_data(pinfo
->pool
, pinfo
, proto_btcommon
, PROTO_DATA_BLUETOOTH_EIR_AD_MANUFACTURER_COMPANY_ID
, value_data
);
11538 if (company_id
== 0x000F && tvb_get_uint8(tvb
, offset
) == 0) { /* 3DS profile Legacy Devices */
11539 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_legacy_fixed
, tvb
, offset
, 1, ENC_NA
);
11542 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_legacy_test_mode
, tvb
, offset
, 1, ENC_NA
);
11543 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_legacy_fixed_6
, tvb
, offset
, 1, ENC_NA
);
11544 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_legacy_ignored_5
, tvb
, offset
, 1, ENC_NA
);
11545 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_legacy_fixed_4
, tvb
, offset
, 1, ENC_NA
);
11546 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_legacy_ignored_1_3
, tvb
, offset
, 1, ENC_NA
);
11547 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_legacy_3d_capable_tv
, tvb
, offset
, 1, ENC_NA
);
11550 proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_3ds_legacy_path_loss_threshold
, tvb
, offset
, 1, ENC_NA
);
11555 new_tvb
= tvb_new_subset_length(tvb
, offset
, length
);
11557 if (!dissector_try_uint_new(bluetooth_eir_ad_manufacturer_company_id
, company_id
, new_tvb
, pinfo
, entry_tree
, true, bluetooth_eir_ad_data
)) {
11558 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_data
, tvb
, offset
, length
, ENC_NA
);
11559 expert_add_info(pinfo
, sub_item
, &ei_eir_ad_undecoded
);
11567 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_data
, tvb
, offset
, length
, ENC_NA
);
11568 expert_add_info(pinfo
, sub_item
, &ei_eir_ad_unknown
);
11572 if (offset
- offset_start
> 0 && offset
- offset_start
< length
) {
11573 sub_item
= proto_tree_add_item(entry_tree
, hf_btcommon_eir_ad_data
, tvb
, offset
, length
- (offset
- offset_start
), ENC_NA
);
11574 expert_add_info(pinfo
, sub_item
, &ei_eir_ad_unknown
);
11575 offset
+= length
- (offset
- offset_start
);
11579 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
11580 proto_tree_add_item(tree
, hf_btcommon_eir_ad_unused
, tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ENC_NA
);
11581 offset
= tvb_reported_length(tvb
);
11584 if (bluetooth_eir_ad_data
&& bluetooth_eir_ad_data
->bd_addr
&& name
&& have_tap_listener(bluetooth_device_tap
)) {
11585 bluetooth_device_tap_t
*tap_device
;
11587 tap_device
= wmem_new(pinfo
->pool
, bluetooth_device_tap_t
);
11588 tap_device
->interface_id
= bluetooth_eir_ad_data
->interface_id
;
11589 tap_device
->adapter_id
= bluetooth_eir_ad_data
->adapter_id
;
11590 memcpy(tap_device
->bd_addr
, bluetooth_eir_ad_data
->bd_addr
, 6);
11591 tap_device
->has_bd_addr
= true;
11592 tap_device
->is_local
= false;
11593 tap_device
->type
= BLUETOOTH_DEVICE_NAME
;
11594 tap_device
->data
.name
= name
;
11595 tap_queue_packet(bluetooth_device_tap
, pinfo
, tap_device
);
11598 if (has_bd_addr
&& name
&& have_tap_listener(bluetooth_device_tap
)) {
11599 bluetooth_device_tap_t
*tap_device
;
11601 tap_device
= wmem_new(pinfo
->pool
, bluetooth_device_tap_t
);
11602 if (bluetooth_eir_ad_data
) {
11603 tap_device
->interface_id
= bluetooth_eir_ad_data
->interface_id
;
11604 tap_device
->adapter_id
= bluetooth_eir_ad_data
->adapter_id
;
11606 tap_device
->interface_id
= HCI_INTERFACE_DEFAULT
;
11607 tap_device
->adapter_id
= HCI_ADAPTER_DEFAULT
;
11609 memcpy(tap_device
->bd_addr
, bd_addr
, 6);
11610 tap_device
->has_bd_addr
= true;
11611 tap_device
->is_local
= false;
11612 tap_device
->type
= BLUETOOTH_DEVICE_NAME
;
11613 tap_device
->data
.name
= name
;
11614 tap_queue_packet(bluetooth_device_tap
, pinfo
, tap_device
);
11617 return offset
+ data_size
;
11621 dissect_btcommon_cod(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
11623 proto_item
*cod_item
;
11624 proto_item
*cod_tree
;
11625 uint16_t major_service_classes
;
11626 uint8_t major_device_class
;
11627 uint8_t minor_device_class
;
11628 const char *minor_device_class_name
;
11631 cod_item
= proto_tree_add_item(tree
, hf_btcommon_cod_class_of_device
, tvb
, offset
, 3, ENC_LITTLE_ENDIAN
);
11632 cod_tree
= proto_item_add_subtree(cod_item
, ett_cod
);
11634 major_device_class
= tvb_get_uint8(tvb
, offset
+ 1) & 0x1F;
11635 minor_device_class
= tvb_get_uint8(tvb
, offset
) >> 2;
11637 switch(major_device_class
) {
11638 case 0x01: /* Computer */
11639 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_computer
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11640 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_computer_vals_ext
, "Unknown");
11642 case 0x02: /* Phone */
11643 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_phone
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11644 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_phone_vals_ext
, "Unknown");
11646 case 0x03: /* LAN/Network Access Point */
11647 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_lan_net_load_factor
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11648 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_lan_net_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11649 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_lan_net_load_factor_vals_ext
, "Unknown");
11651 case 0x04: /* Audio/Video */
11652 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_audio_video
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11653 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_audio_video_vals_ext
, "Unknown");
11655 case 0x05: /* Peripheral */
11656 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_peripheral_class
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11657 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_peripheral_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11658 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_peripheral_class_vals_ext
, "Unknown");
11660 case 0x06: /* Imaging */
11661 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_imaging_class_printer
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11662 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_imaging_class_scanner
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11663 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_imaging_class_camera
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11664 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_imaging_class_display
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11666 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_imaging_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11667 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_imaging_type_vals_ext
, "Unknown");
11669 case 0x07: /* Wearable */
11670 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_wearable
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11671 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_wearable_vals_ext
, "Unknown");
11673 case 0x08: /* Toy */
11674 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_toy
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11675 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_toy_vals_ext
, "Unknown");
11677 case 0x09: /* Health */
11678 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_health
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11679 minor_device_class_name
= val_to_str_ext_const(minor_device_class
, &bthci_cmd_cod_minor_device_class_health_vals_ext
, "Unknown");
11682 minor_device_class_name
= "Unknown";
11683 proto_tree_add_item(cod_tree
, hf_btcommon_cod_minor_device_class_unknown
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11686 proto_tree_add_item(cod_tree
, hf_btcommon_cod_format_type
, tvb
, offset
, 1, ENC_LITTLE_ENDIAN
);
11689 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_information
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11690 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_telephony
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11691 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_audio
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11692 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_object_transfer
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11693 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_capturing
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11694 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_rendering
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11695 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_networking
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11696 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_positioning
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11697 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_reserved
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11698 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_le_audio
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11699 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_service_class_limited_discoverable_mode
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11700 major_service_classes
= tvb_get_letohs(tvb
, offset
) >> 5;
11702 proto_tree_add_item(cod_tree
, hf_btcommon_cod_major_device_class
, tvb
, offset
, 2, ENC_LITTLE_ENDIAN
);
11705 proto_item_append_text(cod_item
, " (%s:%s - services:",
11706 val_to_str_ext_const(major_device_class
, &bthci_cmd_cod_major_device_class_vals_ext
, "Unknown"),
11707 minor_device_class_name
);
11709 if (major_service_classes
& 0x001) proto_item_append_text(cod_item
, " LimitedDiscoverableMode");
11710 if (major_service_classes
& 0x008) proto_item_append_text(cod_item
, " Positioning");
11711 if (major_service_classes
& 0x010) proto_item_append_text(cod_item
, " Networking");
11713 if (major_service_classes
& 0x020) proto_item_append_text(cod_item
, " Rendering");
11714 if (major_service_classes
& 0x040) proto_item_append_text(cod_item
, " Capturing");
11715 if (major_service_classes
& 0x080) proto_item_append_text(cod_item
, " ObjectTransfer");
11716 if (major_service_classes
& 0x100) proto_item_append_text(cod_item
, " Audio");
11717 if (major_service_classes
& 0x200) proto_item_append_text(cod_item
, " Telephony");
11718 if (major_service_classes
& 0x400) proto_item_append_text(cod_item
, " Information");
11720 proto_item_append_text(cod_item
, ")");
11726 dissect_btcommon_ad(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
)
11728 proto_item
*main_item
;
11729 proto_tree
*main_tree
;
11731 main_item
= proto_tree_add_item(tree
, hf_btcommon_eir_ad_advertising_data
, tvb
, 0, -1, ENC_NA
);
11732 main_tree
= proto_item_add_subtree(main_item
, ett_eir_ad
);
11734 return dissect_eir_ad_data(tvb
, pinfo
, main_tree
, (bluetooth_eir_ad_data_t
*) data
);
11738 dissect_btcommon_eir(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
)
11740 proto_item
*main_item
;
11741 proto_tree
*main_tree
;
11743 main_item
= proto_tree_add_item(tree
, hf_btcommon_eir_ad_extended_inquiry_response_data
, tvb
, 0, -1, ENC_NA
);
11744 main_tree
= proto_item_add_subtree(main_item
, ett_eir_ad
);
11746 return dissect_eir_ad_data(tvb
, pinfo
, main_tree
, (bluetooth_eir_ad_data_t
*) data
);
11750 dissect_btcommon_le_channel_map(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data
)
11753 int *reserved_bits_offset
= (int *)data
;
11755 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_0
, tvb
, offset
, 1, ENC_NA
);
11756 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_1
, tvb
, offset
, 1, ENC_NA
);
11757 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_2
, tvb
, offset
, 1, ENC_NA
);
11758 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_3
, tvb
, offset
, 1, ENC_NA
);
11759 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_4
, tvb
, offset
, 1, ENC_NA
);
11760 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_5
, tvb
, offset
, 1, ENC_NA
);
11761 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_6
, tvb
, offset
, 1, ENC_NA
);
11762 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_7
, tvb
, offset
, 1, ENC_NA
);
11765 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_8
, tvb
, offset
, 1, ENC_NA
);
11766 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_9
, tvb
, offset
, 1, ENC_NA
);
11767 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_10
, tvb
, offset
, 1, ENC_NA
);
11768 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_11
, tvb
, offset
, 1, ENC_NA
);
11769 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_12
, tvb
, offset
, 1, ENC_NA
);
11770 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_13
, tvb
, offset
, 1, ENC_NA
);
11771 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_14
, tvb
, offset
, 1, ENC_NA
);
11772 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_15
, tvb
, offset
, 1, ENC_NA
);
11775 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_16
, tvb
, offset
, 1, ENC_NA
);
11776 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_17
, tvb
, offset
, 1, ENC_NA
);
11777 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_18
, tvb
, offset
, 1, ENC_NA
);
11778 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_19
, tvb
, offset
, 1, ENC_NA
);
11779 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_20
, tvb
, offset
, 1, ENC_NA
);
11780 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_21
, tvb
, offset
, 1, ENC_NA
);
11781 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_22
, tvb
, offset
, 1, ENC_NA
);
11782 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_23
, tvb
, offset
, 1, ENC_NA
);
11785 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_24
, tvb
, offset
, 1, ENC_NA
);
11786 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_25
, tvb
, offset
, 1, ENC_NA
);
11787 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_26
, tvb
, offset
, 1, ENC_NA
);
11788 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_27
, tvb
, offset
, 1, ENC_NA
);
11789 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_28
, tvb
, offset
, 1, ENC_NA
);
11790 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_29
, tvb
, offset
, 1, ENC_NA
);
11791 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_30
, tvb
, offset
, 1, ENC_NA
);
11792 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_31
, tvb
, offset
, 1, ENC_NA
);
11795 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_32
, tvb
, offset
, 1, ENC_NA
);
11796 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_33
, tvb
, offset
, 1, ENC_NA
);
11797 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_34
, tvb
, offset
, 1, ENC_NA
);
11798 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_35
, tvb
, offset
, 1, ENC_NA
);
11799 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_36
, tvb
, offset
, 1, ENC_NA
);
11801 if (reserved_bits_offset
) {
11802 *reserved_bits_offset
= offset
;
11804 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_37
, tvb
, offset
, 1, ENC_NA
);
11805 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_38
, tvb
, offset
, 1, ENC_NA
);
11806 proto_tree_add_item(tree
, hf_btcommon_le_channel_map_39
, tvb
, offset
, 1, ENC_NA
);
11815 proto_register_btcommon(void)
11817 expert_module_t
*expert_module
;
11819 static hf_register_info hf
[] = {
11820 { &hf_btcommon_eir_ad_extended_inquiry_response_data
,
11821 { "Extended Inquiry Response Data", "btcommon.eir_ad.extended_inquiry_response_data",
11822 FT_NONE
, BASE_NONE
, NULL
, 0x0,
11825 { &hf_btcommon_eir_ad_advertising_data
,
11826 { "Advertising Data", "btcommon.eir_ad.advertising_data",
11827 FT_NONE
, BASE_NONE
, NULL
, 0x0,
11830 { &hf_btcommon_eir_ad_entry
,
11831 { "Entry", "btcommon.eir_ad.entry",
11832 FT_NONE
, BASE_NONE
, NULL
, 0x0,
11835 { &hf_btcommon_eir_ad_unused
,
11836 { "Unused", "btcommon.eir_ad.unused",
11837 FT_NONE
, BASE_NONE
, NULL
, 0x0,
11840 { &hf_btcommon_eir_ad_data
,
11841 {"Data", "btcommon.eir_ad.entry.data",
11842 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11845 { &hf_btcommon_eir_ad_service_data
,
11846 {"Service Data", "btcommon.eir_ad.entry.service_data",
11847 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11850 { &hf_btcommon_eir_ad_length
,
11851 { "Length", "btcommon.eir_ad.entry.length",
11852 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11855 { &hf_btcommon_eir_ad_type
,
11856 { "Type", "btcommon.eir_ad.entry.type",
11857 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_eir_data_type_vals_ext
, 0x0,
11860 { &hf_btcommon_eir_ad_company_id
,
11861 { "Company ID", "btcommon.eir_ad.entry.company_id",
11862 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
11865 { &hf_btcommon_eir_ad_flags_reserved
,
11866 { "Reserved", "btcommon.eir_ad.entry.flags.reserved",
11867 FT_UINT8
, BASE_HEX
, NULL
, 0xE0,
11870 { &hf_btcommon_eir_ad_flags_le_bredr_support_host
,
11871 { "Simultaneous LE and BR/EDR to Same Device Capable (Host)", "btcommon.eir_ad.entry.flags.le_bredr_support_host",
11872 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x10,
11875 { &hf_btcommon_eir_ad_flags_le_bredr_support_controller
,
11876 { "Simultaneous LE and BR/EDR to Same Device Capable (Controller)", "btcommon.eir_ad.entry.flags.le_bredr_support_controller",
11877 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x08,
11880 { &hf_btcommon_eir_ad_flags_bredr_not_support
,
11881 { "BR/EDR Not Supported", "btcommon.eir_ad.entry.flags.bredr_not_supported",
11882 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
11885 { &hf_btcommon_eir_ad_flags_le_general_discoverable_mode
,
11886 { "LE General Discoverable Mode", "btcommon.eir_ad.entry.flags.le_general_discoverable_mode",
11887 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
11890 { &hf_btcommon_eir_ad_flags_le_limited_discoverable_mode
,
11891 { "LE Limited Discoverable Mode", "btcommon.eir_ad.entry.flags.le_limited_discoverable_mode",
11892 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
11895 { &hf_btcommon_eir_ad_uuid_16
,
11896 { "UUID 16", "btcommon.eir_ad.entry.uuid_16",
11897 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_uuid_vals_ext
, 0x0,
11900 { &hf_btcommon_eir_ad_uuid_32
,
11901 { "UUID 32", "btcommon.eir_ad.entry.uuid_32",
11902 FT_UINT32
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_uuid_vals_ext
, 0x0,
11905 { &hf_btcommon_eir_ad_uuid_128
,
11906 { "UUID 128", "btcommon.eir_ad.entry.uuid_128",
11907 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11910 { &hf_btcommon_eir_ad_custom_uuid_32
,
11911 { "Custom UUID", "btcommon.eir_ad.entry.custom_uuid_32",
11912 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
11915 { &hf_btcommon_eir_ad_custom_uuid_128
,
11916 { "Custom UUID", "btcommon.eir_ad.entry.custom_uuid_128",
11917 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11920 { &hf_btcommon_eir_ad_name
,
11921 { "Device Name", "btcommon.eir_ad.entry.device_name",
11922 FT_STRING
, BASE_NONE
, NULL
, 0x0,
11925 { &hf_btcommon_eir_ad_tx_power
,
11926 {"Power Level (dBm)", "btcommon.eir_ad.entry.power_level",
11927 FT_INT8
, BASE_DEC
, NULL
, 0x0,
11930 { &hf_btcommon_eir_ad_ssp_oob_length
,
11931 { "SSP OOB Length", "btcommon.eir_ad.entry.ssp_oob_length",
11932 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11935 { &hf_btcommon_eir_ad_bd_addr
,
11936 { "BD_ADDR", "btcommon.eir_ad.entry.bd_addr",
11937 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
11940 { &hf_btcommon_eir_ad_le_bd_addr_reserved
,
11941 { "Reserved", "btcommon.eir_ad.entry.le_bd_addr.reserved",
11942 FT_UINT8
, BASE_HEX
, NULL
, 0xFE,
11945 { &hf_btcommon_eir_ad_le_bd_addr_type
,
11946 { "Type", "btcommon.eir_ad.entry.le_bd_addr.type",
11947 FT_UINT8
, BASE_HEX
, VALS(bluetooth_address_type_vals
), 0x01,
11950 { &hf_btcommon_eir_ad_le_role
,
11951 { "Type", "btcommon.eir_ad.entry.le_role",
11952 FT_UINT8
, BASE_HEX
, VALS(le_role_vals
), 0,
11955 { &hf_btcommon_eir_ad_did_vendor_id_source
,
11956 { "Vendor ID Source", "btcommon.eir_ad.entry.did.vendor_id_source",
11957 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &did_vendor_id_source_vals_ext
, 0,
11960 { &hf_btcommon_eir_ad_did_vendor_id
,
11961 { "Vendor ID", "btcommon.eir_ad.entry.did.vendor_id",
11962 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11965 { &hf_btcommon_eir_ad_did_vendor_id_bluetooth_sig
,
11966 { "Vendor ID", "btcommon.eir_ad.entry.did.vendor_id",
11967 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bluetooth_company_id_vals_ext
, 0x0,
11970 { &hf_btcommon_eir_ad_did_vendor_id_usb_forum
,
11971 { "Vendor ID", "btcommon.eir_ad.entry.did.vendor_id",
11972 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &ext_usb_vendors_vals
, 0x0,
11975 { &hf_btcommon_eir_ad_did_product_id
,
11976 { "Product ID", "btcommon.eir_ad.entry.did.product_id",
11977 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11980 { &hf_btcommon_eir_ad_did_version
,
11981 { "Version", "btcommon.eir_ad.entry.did.version",
11982 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11985 { &hf_btcommon_eir_ad_3ds_association_notification
,
11986 { "3DS Association Notification", "btcommon.eir_ad.entry.3ds.association_notification",
11987 FT_BOOLEAN
, 8, NULL
, 0x01,
11990 { &hf_btcommon_eir_ad_3ds_battery_level_reporting
,
11991 { "3DS Battery Level Reporting", "btcommon.eir_ad.entry.3ds.battery_level_reporting",
11992 FT_BOOLEAN
, 8, NULL
, 0x02,
11995 { &hf_btcommon_eir_ad_3ds_send_battery_level_report_on_startup
,
11996 { "3DS Send Battery Level Report on Startup", "btcommon.eir_ad.entry.3ds.send_battery_level_report_on_startup",
11997 FT_BOOLEAN
, 8, NULL
, 0x04,
12000 { &hf_btcommon_eir_ad_3ds_reserved
,
12001 { "Reserved", "btcommon.eir_ad.entry.3ds.reserved",
12002 FT_BOOLEAN
, 8, NULL
, 0x78,
12005 { &hf_btcommon_eir_ad_3ds_factory_test_mode
,
12006 { "3DS Factory Test Mode", "btcommon.eir_ad.entry.3ds.factory_test_mode",
12007 FT_BOOLEAN
, 8, NULL
, 0x80,
12010 { &hf_btcommon_eir_ad_3ds_path_loss_threshold
,
12011 { "3DS Path Loss Threshold", "btcommon.eir_ad.entry.3ds.path_loss_threshold",
12012 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
12015 { &hf_btcommon_eir_ad_3ds_legacy_fixed
,
12016 { "3DS Legacy Fixed", "btcommon.eir_ad.entry.3ds_legacy.fixed_byte",
12017 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
12020 { &hf_btcommon_eir_ad_3ds_legacy_3d_capable_tv
,
12021 { "3DS Legacy Capable TV", "btcommon.eir_ad.entry.3ds_legacy.capable_tv",
12022 FT_BOOLEAN
, 8, NULL
, 0x01,
12025 { &hf_btcommon_eir_ad_3ds_legacy_ignored_1_3
,
12026 { "3DS Legacy Ignored", "btcommon.eir_ad.entry.3ds_legacy.ignored.1_3",
12027 FT_BOOLEAN
, 8, NULL
, 0x0E,
12030 { &hf_btcommon_eir_ad_3ds_legacy_fixed_4
,
12031 { "3DS Legacy Fixed", "btcommon.eir_ad.entry.3ds_legacy.fixed.4",
12032 FT_BOOLEAN
, 8, NULL
, 0x10,
12035 { &hf_btcommon_eir_ad_3ds_legacy_ignored_5
,
12036 { "3DS Legacy Ignored", "btcommon.eir_ad.entry.3ds_legacy.ignored.5",
12037 FT_BOOLEAN
, 8, NULL
, 0x20,
12040 { &hf_btcommon_eir_ad_3ds_legacy_fixed_6
,
12041 { "3DS Legacy Fixed", "btcommon.eir_ad.entry.3ds_legacy.fixed.6",
12042 FT_BOOLEAN
, 8, NULL
, 0x40,
12045 { &hf_btcommon_eir_ad_3ds_legacy_test_mode
,
12046 { "3DS Legacy Test Mode", "btcommon.eir_ad.entry.3ds_legacy.test_mode",
12047 FT_BOOLEAN
, 8, NULL
, 0x80,
12050 { &hf_btcommon_eir_ad_3ds_legacy_path_loss_threshold
,
12051 { "3DS Legacy Path Loss Threshold", "btcommon.eir_ad.entry.3ds_legacy.path_loss_threshold",
12052 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
12055 { &hf_btcommon_eir_ad_advertising_interval
,
12056 { "Advertising Interval", "btcommon.eir_ad.entry.advertising_interval",
12057 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12060 { &hf_btcommon_eir_ad_appearance
,
12061 { "Appearance", "btcommon.eir_ad.entry.appearance",
12062 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_appearance_vals_ext
, 0x0,
12065 { &hf_btcommon_eir_ad_hash_c
,
12066 {"Hash C", "btcommon.eir_ad.entry.hash_c",
12067 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12070 { &hf_btcommon_eir_ad_randomizer_r
,
12071 {"Randomizer R", "btcommon.eir_ad.entry.randomizer_r",
12072 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12075 { &hf_btcommon_eir_ad_le_secure_confirmation_value
,
12076 {"LE Secure Connections Confirmation Value", "btcommon.eir_ad.entry.le_secure_confirmation_value",
12077 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12080 { &hf_btcommon_eir_ad_le_secure_random_value
,
12081 {"LE Secure Connections Random Value", "btcommon.eir_ad.entry.le_secure_random_value",
12082 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12085 { &hf_btcommon_eir_ad_oob_flags_reserved
,
12086 { "Reserved", "btcommon.eir_ad.entry.oob_flags.oob_reserved",
12087 FT_UINT8
, BASE_HEX
, NULL
, 0xF0,
12090 { &hf_btcommon_eir_ad_oob_flags_address_type
,
12091 { "Address Type", "btcommon.eir_ad.entry.oob_flags.oob_address_type",
12092 FT_UINT8
, BASE_HEX
, VALS(cmd_base_address_types_vals
), 0x08,
12095 { &hf_btcommon_eir_ad_oob_flags_le_bredr_support
,
12096 { "Simultaneous LE and BR/EDR to Same Device Capable (Host)", "btcommon.eir_ad.entry.oob_flags.oob_le_bredr_support",
12097 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x04,
12100 { &hf_btcommon_eir_ad_oob_flags_le_supported_host
,
12101 { "LE Supported By Host", "btcommon.eir_ad.entry.oob_flags.oob_le_supported_host",
12102 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x02,
12105 { &hf_btcommon_eir_ad_oob_flags_data_present
,
12106 { "OOB Data Present", "btcommon.eir_ad.entry.oob_flags.oob_data_present",
12107 FT_UINT8
, BASE_HEX
, VALS(cmd_boolean
), 0x01,
12110 { &hf_btcommon_eir_ad_connection_interval_min
,
12111 { "Connection Interval Min", "btcommon.eir_ad.entry.connection_interval_min",
12112 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12115 { &hf_btcommon_eir_ad_connection_interval_max
,
12116 { "Connection Interval Max", "btcommon.eir_ad.entry.connection_interval_max",
12117 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12120 { &hf_btcommon_eir_ad_uri
,
12121 {"URI", "btcommon.eir_ad.entry.uri",
12122 FT_STRING
, BASE_NONE
, NULL
, 0x0,
12125 {&hf_btcommon_eir_ad_ips_flags
,
12126 {"Indoor Positioning Configuration", "btcommon.eir_ad.entry.ips.flags",
12127 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
12130 {&hf_btcommon_eir_ad_ips_flags_reserved
,
12131 {"Reserved", "btcommon.eir_ad.entry.ips.flags.reserved",
12132 FT_UINT8
, BASE_HEX
, NULL
, 0x80,
12135 {&hf_btcommon_eir_ad_ips_flags_location_name
,
12136 {"Location Name", "btcommon.eir_ad.entry.ips.flags.location_name",
12137 FT_BOOLEAN
, 8, NULL
, 0x40,
12140 {&hf_btcommon_eir_ad_ips_flags_uncertainty
,
12141 {"Uncertainty", "btcommon.eir_ad.entry.ips.flags.uncertainty",
12142 FT_BOOLEAN
, 8, NULL
, 0x20,
12145 {&hf_btcommon_eir_ad_ips_flags_floor_number
,
12146 {"Floor Number", "btcommon.eir_ad.entry.ips.flags.floor_number",
12147 FT_BOOLEAN
, 8, NULL
, 0x10,
12150 {&hf_btcommon_eir_ad_ips_flags_altitude
,
12151 {"Altitude", "btcommon.eir_ad.entry.ips.flags.altitude",
12152 FT_BOOLEAN
, 8, NULL
, 0x08,
12155 {&hf_btcommon_eir_ad_ips_flags_tx_power
,
12156 {"Tx Power", "btcommon.eir_ad.entry.ips.flags.tx_power",
12157 FT_BOOLEAN
, 8, NULL
, 0x04,
12160 {&hf_btcommon_eir_ad_ips_flags_coordinate_system
,
12161 {"Coordinate System", "btcommon.eir_ad.entry.ips.flags.coordinate_system",
12162 FT_UINT8
, BASE_HEX
, VALS(btatt_ips_coordinate_system
), 0x02,
12165 {&hf_btcommon_eir_ad_ips_flags_coordinates
,
12166 {"Coordinates", "btcommon.eir_ad.entry.ips.flags.coordinates",
12167 FT_BOOLEAN
, 8, NULL
, 0x01,
12170 {&hf_btcommon_eir_ad_ips_uncertainty
,
12171 {"Uncertainty", "btcommon.eir_ad.entry.ips.uncertainty",
12172 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
12175 {&hf_btcommon_eir_ad_ips_uncertainty_reserved
,
12176 {"Reserved", "btcommon.eir_ad.entry.ips.uncertainty.reserved",
12177 FT_UINT8
, BASE_HEX
, NULL
, 0x80,
12180 {&hf_btcommon_eir_ad_ips_uncertainty_precision
,
12181 {"Precision", "btcommon.eir_ad.entry.ips.uncertainty.precision",
12182 FT_UINT8
, BASE_HEX
, VALS(btatt_ips_uncertainty_precision_vals
), 0x70,
12185 {&hf_btcommon_eir_ad_ips_uncertainty_update_time
,
12186 {"Update Time", "btcommon.eir_ad.entry.ips.uncertainty.update_time",
12187 FT_UINT8
, BASE_HEX
, VALS(btatt_ips_uncertainty_update_time_vals
), 0x0E,
12190 {&hf_btcommon_eir_ad_ips_uncertainty_stationary
,
12191 {"Stationary", "btcommon.eir_ad.entry.ips.uncertainty.stationary",
12192 FT_UINT8
, BASE_HEX
, VALS(btatt_ips_uncertainty_stationary_vals
), 0x01,
12195 {&hf_btcommon_eir_ad_ips_latitude
,
12196 {"Latitude", "btcommon.eir_ad.entry.ips.latitude",
12197 FT_INT32
, BASE_DEC
, NULL
, 0x0,
12200 {&hf_btcommon_eir_ad_ips_longitude
,
12201 {"Longitude", "btcommon.eir_ad.entry.ips.longitude",
12202 FT_INT32
, BASE_DEC
, NULL
, 0x0,
12205 {&hf_btcommon_eir_ad_ips_local_north_coordinate
,
12206 {"Local North Coordinate", "btcommon.eir_ad.entry.ips.local_north_coordinate",
12207 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12210 {&hf_btcommon_eir_ad_ips_local_east_coordinate
,
12211 {"Local East Coordinate", "btcommon.eir_ad.entry.ips.local_east_coordinate",
12212 FT_INT16
, BASE_DEC
, NULL
, 0x0,
12215 {&hf_btcommon_eir_ad_ips_floor_number
,
12216 {"Floor Number", "btcommon.eir_ad.entry.ips.floor_number",
12217 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12220 {&hf_btcommon_eir_ad_ips_altitude
,
12221 {"Altitude", "btcommon.eir_ad.entry.ips.altitude",
12222 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12225 {&hf_btcommon_eir_ad_ips_tx_power_level
,
12226 {"Tx Power Level", "btcommon.eir_ad.entry.ips.tx_power_level",
12227 FT_INT8
, BASE_DEC
, NULL
, 0x0,
12230 {&hf_btcommon_eir_ad_tds_organization_id
,
12231 {"Organization ID", "btcommon.eir_ad.entry.tds.organization_id",
12232 FT_UINT8
, BASE_HEX
, VALS(tds_organization_id_vals
), 0x0,
12235 {&hf_btcommon_eir_ad_tds_flags
,
12236 {"Flags", "btcommon.eir_ad.entry.tds.flags",
12237 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
12240 {&hf_btcommon_eir_ad_tds_flags_reserved
,
12241 {"Reserved", "btcommon.eir_ad.entry.tds.flags.reserved",
12242 FT_UINT8
, BASE_HEX
, NULL
, 0xE0,
12245 {&hf_btcommon_eir_ad_tds_flags_transport_state
,
12246 {"Transport State", "btcommon.eir_ad.entry.tds.flags.transport_state",
12247 FT_UINT8
, BASE_HEX
, VALS(tds_transport_state_vals
), 0x18,
12250 {&hf_btcommon_eir_ad_tds_flags_transport_data_incomplete
,
12251 {"Transport Data Incomplete", "btcommon.eir_ad.entry.tds.flags.transport_data_incomplete",
12252 FT_BOOLEAN
, 8, NULL
, 0x04,
12255 {&hf_btcommon_eir_ad_tds_flags_role
,
12256 {"Role", "btcommon.eir_ad.entry.tds.flags.role",
12257 FT_UINT8
, BASE_HEX
, VALS(tds_role_vals
), 0x03,
12261 {&hf_btcommon_eir_ad_tds_data_length
,
12262 {"Data Length", "btcommon.eir_ad.entry.tds.data_length",
12263 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12266 {&hf_btcommon_eir_ad_tds_data
,
12267 {"Data", "btcommon.eir_ad.entry.tds.data",
12268 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12271 { &hf_btcommon_eir_ad_le_features
,
12272 { "LE Features", "btcommon.eir_ad.entry.le_features",
12273 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
12276 { &hf_btcommon_eir_ad_le_channel_map
,
12277 { "Channel Map", "btcommon.eir_ad.entry.le_channel_map",
12278 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12281 { &hf_btcommon_eir_ad_instant
,
12282 { "Instant", "btcommon.eir_ad.entry.instant",
12283 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12286 { &hf_btcommon_eir_ad_le_features_encryption
,
12287 { "LE Encryption", "btcommon.eir_ad.le_features.encryption",
12288 FT_BOOLEAN
, 8, NULL
, 0x01,
12291 { &hf_btcommon_eir_ad_le_features_connection_parameters_request_procedure
,
12292 { "Connection Parameters Request Procedure", "btcommon.eir_ad.le_features.connection_parameters_request_procedure",
12293 FT_BOOLEAN
, 8, NULL
, 0x02,
12296 { &hf_btcommon_eir_ad_le_features_extended_reject_indication
,
12297 { "Extended Reject Indication", "btcommon.eir_ad.le_features.extended_reject_indication",
12298 FT_BOOLEAN
, 8, NULL
, 0x04,
12301 { &hf_btcommon_eir_ad_le_features_peripheral_initiated_features_exchange
,
12302 { "Peripheral-Initiated Features Exchange", "btcommon.eir_ad.le_features.peripheral_initiated_features_exchange",
12303 FT_BOOLEAN
, 8, NULL
, 0x08,
12306 { &hf_btcommon_eir_ad_le_features_ping
,
12307 { "Ping", "btcommon.eir_ad.le_features.ping",
12308 FT_BOOLEAN
, 8, NULL
, 0x10,
12311 { &hf_btcommon_eir_ad_le_features_data_packet_length_extension
,
12312 { "Data Packet Length Extension", "btcommon.eir_ad.le_features.data_packet_length_extension",
12313 FT_BOOLEAN
, 8, NULL
, 0x20,
12316 { &hf_btcommon_eir_ad_le_features_ll_privacy
,
12317 { "LL Privacy", "btcommon.eir_ad.le_features.ll_privacy",
12318 FT_BOOLEAN
, 8, NULL
, 0x40,
12321 { &hf_btcommon_eir_ad_le_features_extended_scanner_filter_policies
,
12322 { "Extended Scanner Filter Policies", "btcommon.eir_ad.le_features.extended_scanner_filter_policies",
12323 FT_BOOLEAN
, 8, NULL
, 0x80,
12326 { &hf_btcommon_eir_ad_le_features_2m_phy
,
12327 { "LE 2M PHY", "btcommon.eir_ad.le_features.2m_phy",
12328 FT_BOOLEAN
, 8, NULL
, 0x01,
12331 { &hf_btcommon_eir_ad_le_features_stable_modulation_index_tx
,
12332 { "Stable Modulation Index - Tx", "btcommon.eir_ad.le_features.stable_modulation_index_tx",
12333 FT_BOOLEAN
, 8, NULL
, 0x02,
12336 { &hf_btcommon_eir_ad_le_features_stable_modulation_index_rx
,
12337 { "Stable Modulation Index - Rx", "btcommon.eir_ad.le_features.stable_modulation_index_rx",
12338 FT_BOOLEAN
, 8, NULL
, 0x04,
12341 { &hf_btcommon_eir_ad_le_features_coded_phy
,
12342 { "LE Coded PHY", "btcommon.eir_ad.le_features.coded_phy",
12343 FT_BOOLEAN
, 8, NULL
, 0x08,
12346 { &hf_btcommon_eir_ad_le_features_extended_advertising
,
12347 { "LE Extended Advertising", "btcommon.eir_ad.le_features.extended_advertising",
12348 FT_BOOLEAN
, 8, NULL
, 0x10,
12351 { &hf_btcommon_eir_ad_le_features_periodic_advertising
,
12352 { "LE Periodic Advertising", "btcommon.eir_ad.le_features.periodic_advertising",
12353 FT_BOOLEAN
, 8, NULL
, 0x20,
12356 { &hf_btcommon_eir_ad_le_features_channel_selection_algorithm_2
,
12357 { "Channel Selection Algorithm #2", "btcommon.eir_ad.le_features.channel_selection_algorithm_2",
12358 FT_BOOLEAN
, 8, NULL
, 0x40,
12361 { &hf_btcommon_eir_ad_le_features_power_class_1
,
12362 { "Power Class 1", "btcommon.eir_ad.le_features.power_class_1",
12363 FT_BOOLEAN
, 8, NULL
, 0x80,
12366 { &hf_btcommon_eir_ad_le_features_minimum_number_of_used_channels_procedure
,
12367 { "Minimum Number of Used Channels Procedure", "btcommon.eir_ad.entry.le_features.minimum_number_of_used_channels_procedure",
12368 FT_BOOLEAN
, 8, NULL
, 0x01,
12371 { &hf_btcommon_eir_ad_le_features_reserved_1_7
,
12372 { "Reserved", "btcommon.eir_ad.entry.le_features.reserved.1_7",
12373 FT_UINT8
, BASE_HEX
, NULL
, 0xFE,
12376 { &hf_btcommon_eir_ad_le_features_reserved
,
12377 { "Reserved", "btcommon.eir_ad.entry.le_features.reserved",
12378 FT_UINT8
, BASE_HEX
, NULL
, 0xFF,
12381 { &hf_btcommon_eir_ad_biginfo_big_offset
,
12382 { "BIG_Offset", "btcommon.eir_ad.entry.biginfo.big_offset",
12383 FT_UINT32
, BASE_DEC
, NULL
, 0x00003fff,
12386 { &hf_btcommon_eir_ad_biginfo_big_offset_units
,
12387 { "BIG_Offset_Units", "btcommon.eir_ad.entry.biginfo.big_offset_units",
12388 FT_BOOLEAN
, 32, TFS(&tfs_offset_units
), 0x00004000,
12391 { &hf_btcommon_eir_ad_biginfo_iso_interval
,
12392 { "ISO_Interval", "btcommon.eir_ad.entry.biginfo.iso_interval",
12393 FT_UINT32
, BASE_DEC
, NULL
, 0x07ff8000,
12396 { &hf_btcommon_eir_ad_biginfo_num_bis
,
12397 { "Num_BIS", "btcommon.eir_ad.entry.biginfo.num_bis",
12398 FT_UINT32
, BASE_DEC
, NULL
, 0xf8000000,
12401 { &hf_btcommon_eir_ad_biginfo_nse
,
12402 { "NSE", "btcommon.eir_ad.entry.biginfo.nse",
12403 FT_UINT32
, BASE_DEC
, NULL
, 0x0000001f,
12406 { &hf_btcommon_eir_ad_biginfo_bn
,
12407 { "BN", "btcommon.eir_ad.entry.biginfo.bn",
12408 FT_UINT32
, BASE_DEC
, NULL
, 0x000000e0,
12411 { &hf_btcommon_eir_ad_biginfo_sub_interval
,
12412 { "Sub_Interval", "btcommon.eir_ad.entry.biginfo.sub_interval",
12413 FT_UINT32
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microsecond_microseconds
), 0x0fffff00,
12416 { &hf_btcommon_eir_ad_biginfo_pto
,
12417 { "PTO", "btcommon.eir_ad.entry.biginfo.pto",
12418 FT_UINT32
, BASE_DEC
, NULL
, 0xf0000000,
12421 { &hf_btcommon_eir_ad_biginfo_bis_spacing
,
12422 { "BIS_Spacing", "btcommon.eir_ad.entry.biginfo.bis_spacing",
12423 FT_UINT24
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_microsecond_microseconds
), 0x0fffff,
12426 { &hf_btcommon_eir_ad_biginfo_irc
,
12427 { "IRC", "btcommon.eir_ad.entry.biginfo.irc",
12428 FT_UINT24
, BASE_DEC
, NULL
, 0xf00000,
12431 { &hf_btcommon_eir_ad_biginfo_max_pdu
,
12432 { "Max_PDU", "btcommon.eir_ad.entry.biginfo.max_pdu",
12433 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12436 { &hf_btcommon_eir_ad_biginfo_rfu
,
12437 { "Reserved", "btcommon.eir_ad.entry.biginfo.rfu",
12438 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12441 { &hf_btcommon_eir_ad_biginfo_seed_access_address
,
12442 { "Seed Access Address", "btcommon.eir_ad.entry.biginfo.seed_access_address",
12443 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
12446 { &hf_btcommon_eir_ad_biginfo_sdu_interval
,
12447 { "SDU_Interval", "btcommon.eir_ad.entry.biginfo.sdu_interval",
12448 FT_UINT32
, BASE_DEC
, NULL
, 0x000fffff,
12451 { &hf_btcommon_eir_ad_biginfo_max_sdu
,
12452 { "Max_SDU", "btcommon.eir_ad.entry.biginfo.max_sdu",
12453 FT_UINT32
, BASE_DEC
, NULL
, 0xfff00000,
12456 { &hf_btcommon_eir_ad_biginfo_base_crc_init
,
12457 { "BaseCRCInit", "btcommon.eir_ad.entry.biginfo.base_crc_init",
12458 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
12461 { &hf_btcommon_eir_ad_biginfo_channel_map
,
12462 { "Channel Map", "btcommon.eir_ad.entry.biginfo.channel_map",
12463 FT_UINT40
, BASE_HEX
, NULL
, 0x1fffffffff,
12466 { &hf_btcommon_eir_ad_biginfo_phy
,
12467 { "PHY", "btcommon.eir_ad.entry.biginfo.phy",
12468 FT_UINT40
, BASE_DEC
|BASE_VAL64_STRING
, VALS64(cmd_biginfo_le_phy_vals64
), 0xe000000000,
12471 { &hf_btcommon_eir_ad_biginfo_bis_payload_count
,
12472 { "bisPayloadCount", "btcommon.eir_ad.entry.biginfo.bis_payload_count",
12473 FT_UINT40
, BASE_DEC
, NULL
, 0x7fffffffff,
12476 { &hf_btcommon_eir_ad_biginfo_framing
,
12477 { "Framing", "btcommon.eir_ad.entry.biginfo.framing",
12478 FT_BOOLEAN
, 40, NULL
, 0x8000000000,
12481 { &hf_btcommon_eir_ad_biginfo_giv
,
12482 { "GIV", "btcommon.eir_ad.entry.biginfo.giv",
12483 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12486 { &hf_btcommon_eir_ad_biginfo_gskd
,
12487 { "GSKD", "btcommon.eir_ad.entry.biginfo.gskd",
12488 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12491 { &hf_btcommon_eir_ad_biginfo_big_control_access_address
,
12492 { "BIG Control Access Address", "btcommon.eir_ad.entry.biginfo.big_control_access_address",
12493 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
12496 { &hf_btcommon_eir_ad_biginfo_bis_access_address
,
12497 { "BIS Access Address", "btcommon.eir_ad.entry.biginfo.bis_access_address",
12498 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
12501 { &hf_btcommon_eir_ad_broadcast_code
,
12502 { "Broadcast Code", "btcommon.eir_ad.entry.broadcast_code",
12503 FT_STRING
, BASE_NONE
, NULL
, 0x0,
12506 { &hf_btcommon_eir_ad_rsi
,
12507 { "Resolvable Set Identifier", "btcommon.eir_ad.entry.rsi",
12508 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12511 { &hf_btcommon_eir_ad_broadcast_name
,
12512 { "Broadcast Name", "btcommon.eir_ad.entry.broadcast_name",
12513 FT_STRING
, BASE_NONE
, NULL
, 0x0,
12516 { &hf_btcommon_cod_class_of_device
,
12517 { "Class of Device", "btcommon.cod.class_of_device",
12518 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
12521 { &hf_btcommon_cod_major_service_class_information
,
12522 { "Major Service Classes: Information", "btcommon.cod.major_service_classes.information",
12523 FT_BOOLEAN
, 16, NULL
, 0x8000,
12526 { &hf_btcommon_cod_major_service_class_telephony
,
12527 { "Major Service Classes: Telephony", "btcommon.cod.major_service_classes.telephony",
12528 FT_BOOLEAN
, 16, NULL
, 0x4000,
12531 { &hf_btcommon_cod_major_service_class_audio
,
12532 { "Major Service Classes: Audio", "btcommon.cod.major_service_classes.audio",
12533 FT_BOOLEAN
, 16, NULL
, 0x2000,
12536 { &hf_btcommon_cod_major_service_class_object_transfer
,
12537 { "Major Service Classes: Object Transfer", "btcommon.cod.major_service_classes.object_transfer",
12538 FT_BOOLEAN
, 16, NULL
, 0x1000,
12541 { &hf_btcommon_cod_major_service_class_capturing
,
12542 { "Major Service Classes: Capturing", "btcommon.cod.major_service_classes.capturing",
12543 FT_BOOLEAN
, 16, NULL
, 0x0800,
12546 { &hf_btcommon_cod_major_service_class_rendering
,
12547 { "Major Service Classes: Rendering", "btcommon.cod.major_service_classes.rendering",
12548 FT_BOOLEAN
, 16, NULL
, 0x0400,
12551 { &hf_btcommon_cod_major_service_class_networking
,
12552 { "Major Service Classes: Networking", "btcommon.cod.major_service_classes.networking",
12553 FT_BOOLEAN
, 16, NULL
, 0x0200,
12556 { &hf_btcommon_cod_major_service_class_positioning
,
12557 { "Major Service Classes: Positioning", "btcommon.cod.major_service_classes.positioning",
12558 FT_BOOLEAN
, 16, NULL
, 0x0100,
12561 { &hf_btcommon_cod_major_service_class_reserved
,
12562 { "Major Service Classes: Reserved", "btcommon.cod.major_service_classes.reserved",
12563 FT_UINT16
, BASE_HEX
, NULL
, 0x0080,
12566 { &hf_btcommon_cod_major_service_class_le_audio
,
12567 { "Major Service Classes: LE Audio", "btcommon.cod.major_service_classes.le_audio",
12568 FT_UINT16
, BASE_HEX
, NULL
, 0x0040,
12571 { &hf_btcommon_cod_major_service_class_limited_discoverable_mode
,
12572 { "Major Service Classes: Limited Discoverable Mode", "btcommon.cod.major_service_classes.limited_discoverable_mode",
12573 FT_BOOLEAN
, 16, NULL
, 0x0020,
12576 { &hf_btcommon_cod_major_device_class
,
12577 { "Major Device Class", "btcommon.cod.major_device_class",
12578 FT_UINT16
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_major_device_class_vals_ext
, 0x1F,
12581 { &hf_btcommon_cod_minor_device_class_computer
,
12582 { "Minor Device Class", "btcommon.cod.minor_device_class",
12583 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_computer_vals_ext
, 0xFC,
12586 { &hf_btcommon_cod_minor_device_class_phone
,
12587 { "Minor Device Class", "btcommon.cod.minor_device_class",
12588 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_phone_vals_ext
, 0xFC,
12591 { &hf_btcommon_cod_minor_device_class_lan_net_load_factor
,
12592 { "Minor Device Class: Load Factor", "btcommon.cod.minor_device_class.load_factor",
12593 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_lan_net_load_factor_vals_ext
, 0xE0,
12596 { &hf_btcommon_cod_minor_device_class_lan_net_type
,
12597 { "Minor Device Class: Type", "btcommon.cod.minor_device_class.type",
12598 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_lan_net_type_vals_ext
, 0x1C,
12601 { &hf_btcommon_cod_minor_device_class_audio_video
,
12602 { "Minor Device Class", "btcommon.cod.minor_device_class",
12603 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_audio_video_vals_ext
, 0xFC,
12606 { &hf_btcommon_cod_minor_device_class_peripheral_class
,
12607 { "Minor Device Class", "btcommon.cod.minor_device_class",
12608 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_peripheral_class_vals_ext
, 0xC0,
12611 { &hf_btcommon_cod_minor_device_class_peripheral_type
,
12612 { "Minor Device Class", "btcommon.cod.minor_device_class",
12613 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_peripheral_type_vals_ext
, 0x3C,
12616 { &hf_btcommon_cod_minor_device_class_imaging_class_printer
,
12617 { "Minor Device Class: Class: Printer", "btcommon.cod.minor_device_class.class.printer",
12618 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_imaging_type_vals_ext
, 0x80,
12621 { &hf_btcommon_cod_minor_device_class_imaging_class_scanner
,
12622 { "Minor Device Class: Class: Scanner", "btcommon.cod.minor_device_class.class.scanner",
12623 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_imaging_type_vals_ext
, 0x40,
12626 { &hf_btcommon_cod_minor_device_class_imaging_class_camera
,
12627 { "Minor Device Class: Class: Camera", "btcommon.cod.minor_device_class.class.camera",
12628 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_imaging_type_vals_ext
, 0x20,
12631 { &hf_btcommon_cod_minor_device_class_imaging_class_display
,
12632 { "Minor Device Class: Class: Display", "btcommon.cod.minor_device_class.class.display",
12633 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_imaging_type_vals_ext
, 0x10,
12636 { &hf_btcommon_cod_minor_device_class_imaging_type
,
12637 { "Minor Device Class: Type", "btcommon.cod.minor_device_class.type",
12638 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_imaging_type_vals_ext
, 0x0C,
12641 { &hf_btcommon_cod_minor_device_class_wearable
,
12642 { "Minor Device Class", "btcommon.cod.minor_device_class",
12643 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_wearable_vals_ext
, 0xFC,
12646 { &hf_btcommon_cod_minor_device_class_toy
,
12647 { "Minor Device Class", "btcommon.cod.minor_device_class",
12648 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_toy_vals_ext
, 0xFC,
12651 { &hf_btcommon_cod_minor_device_class_health
,
12652 { "Minor Device Class", "btcommon.cod.minor_device_class",
12653 FT_UINT8
, BASE_HEX
| BASE_EXT_STRING
, &bthci_cmd_cod_minor_device_class_health_vals_ext
, 0xFC,
12656 { &hf_btcommon_cod_minor_device_class_unknown
,
12657 { "Minor Device Class", "btcommon.cod.minor_device_class",
12658 FT_UINT8
, BASE_HEX
, NULL
, 0xFC,
12661 { &hf_btcommon_cod_format_type
,
12662 { "Format Type", "btcommon.cod.format_type",
12663 FT_UINT8
, BASE_HEX
, NULL
, 0x03,
12666 { &hf_btcommon_le_channel_map_39
,
12667 { "Reserved", "btcommon.le_channel_map.39",
12668 FT_BOOLEAN
, 8, NULL
, 0x80,
12671 { &hf_btcommon_le_channel_map_38
,
12672 { "Reserved", "btcommon.le_channel_map.38",
12673 FT_BOOLEAN
, 8, NULL
, 0x40,
12676 { &hf_btcommon_le_channel_map_37
,
12677 { "Reserved", "btcommon.le_channel_map.37",
12678 FT_BOOLEAN
, 8, NULL
, 0x20,
12681 { &hf_btcommon_le_channel_map_36
,
12682 { "RF Channel 38 (2478 MHz - Data - 36)", "btcommon.le_channel_map.36",
12683 FT_BOOLEAN
, 8, NULL
, 0x10,
12686 { &hf_btcommon_le_channel_map_35
,
12687 { "RF Channel 37 (2476 MHz - Data - 35)", "btcommon.le_channel_map.35",
12688 FT_BOOLEAN
, 8, NULL
, 0x08,
12691 { &hf_btcommon_le_channel_map_34
,
12692 { "RF Channel 36 (2474 MHz - Data - 34)", "btcommon.le_channel_map.34",
12693 FT_BOOLEAN
, 8, NULL
, 0x04,
12696 { &hf_btcommon_le_channel_map_33
,
12697 { "RF Channel 35 (2472 MHz - Data - 33)", "btcommon.le_channel_map.33",
12698 FT_BOOLEAN
, 8, NULL
, 0x02,
12701 { &hf_btcommon_le_channel_map_32
,
12702 { "RF Channel 34 (2470 MHz - Data - 32)", "btcommon.le_channel_map.32",
12703 FT_BOOLEAN
, 8, NULL
, 0x01,
12706 { &hf_btcommon_le_channel_map_31
,
12707 { "RF Channel 33 (2468 MHz - Data - 31)", "btcommon.le_channel_map.31",
12708 FT_BOOLEAN
, 8, NULL
, 0x80,
12711 { &hf_btcommon_le_channel_map_30
,
12712 { "RF Channel 32 (2466 MHz - Data - 30)", "btcommon.le_channel_map.30",
12713 FT_BOOLEAN
, 8, NULL
, 0x40,
12716 { &hf_btcommon_le_channel_map_29
,
12717 { "RF Channel 31 (2464 MHz - Data - 29)", "btcommon.le_channel_map.29",
12718 FT_BOOLEAN
, 8, NULL
, 0x20,
12721 { &hf_btcommon_le_channel_map_28
,
12722 { "RF Channel 30 (2462 MHz - Data - 28)", "btcommon.le_channel_map.28",
12723 FT_BOOLEAN
, 8, NULL
, 0x10,
12726 { &hf_btcommon_le_channel_map_27
,
12727 { "RF Channel 29 (2460 MHz - Data - 27)", "btcommon.le_channel_map.27",
12728 FT_BOOLEAN
, 8, NULL
, 0x08,
12731 { &hf_btcommon_le_channel_map_26
,
12732 { "RF Channel 28 (2458 MHz - Data - 26)", "btcommon.le_channel_map.26",
12733 FT_BOOLEAN
, 8, NULL
, 0x04,
12736 { &hf_btcommon_le_channel_map_25
,
12737 { "RF Channel 27 (2456 MHz - Data - 25)", "btcommon.le_channel_map.25",
12738 FT_BOOLEAN
, 8, NULL
, 0x02,
12741 { &hf_btcommon_le_channel_map_24
,
12742 { "RF Channel 26 (2454 MHz - Data - 24)", "btcommon.le_channel_map.24",
12743 FT_BOOLEAN
, 8, NULL
, 0x01,
12746 { &hf_btcommon_le_channel_map_23
,
12747 { "RF Channel 25 (2452 MHz - Data - 23)", "btcommon.le_channel_map.23",
12748 FT_BOOLEAN
, 8, NULL
, 0x80,
12751 { &hf_btcommon_le_channel_map_22
,
12752 { "RF Channel 24 (2450 MHz - Data - 22)", "btcommon.le_channel_map.22",
12753 FT_BOOLEAN
, 8, NULL
, 0x40,
12756 { &hf_btcommon_le_channel_map_21
,
12757 { "RF Channel 23 (2448 MHz - Data - 21)", "btcommon.le_channel_map.21",
12758 FT_BOOLEAN
, 8, NULL
, 0x20,
12761 { &hf_btcommon_le_channel_map_20
,
12762 { "RF Channel 22 (2446 MHz - Data - 20)", "btcommon.le_channel_map.20",
12763 FT_BOOLEAN
, 8, NULL
, 0x10,
12766 { &hf_btcommon_le_channel_map_19
,
12767 { "RF Channel 21 (2444 MHz - Data - 19)", "btcommon.le_channel_map.19",
12768 FT_BOOLEAN
, 8, NULL
, 0x08,
12771 { &hf_btcommon_le_channel_map_18
,
12772 { "RF Channel 20 (2442 MHz - Data - 18)", "btcommon.le_channel_map.18",
12773 FT_BOOLEAN
, 8, NULL
, 0x04,
12776 { &hf_btcommon_le_channel_map_17
,
12777 { "RF Channel 19 (2440 MHz - Data - 17)", "btcommon.le_channel_map.17",
12778 FT_BOOLEAN
, 8, NULL
, 0x02,
12781 { &hf_btcommon_le_channel_map_16
,
12782 { "RF Channel 18 (2438 MHz - Data - 16)", "btcommon.le_channel_map.16",
12783 FT_BOOLEAN
, 8, NULL
, 0x01,
12786 { &hf_btcommon_le_channel_map_15
,
12787 { "RF Channel 17 (2436 MHz - Data - 15)", "btcommon.le_channel_map.15",
12788 FT_BOOLEAN
, 8, NULL
, 0x80,
12791 { &hf_btcommon_le_channel_map_14
,
12792 { "RF Channel 16 (2434 MHz - Data - 14)", "btcommon.le_channel_map.14",
12793 FT_BOOLEAN
, 8, NULL
, 0x40,
12796 { &hf_btcommon_le_channel_map_13
,
12797 { "RF Channel 15 (2432 MHz - Data - 13)", "btcommon.le_channel_map.13",
12798 FT_BOOLEAN
, 8, NULL
, 0x20,
12801 { &hf_btcommon_le_channel_map_12
,
12802 { "RF Channel 14 (2430 MHz - Data - 12)", "btcommon.le_channel_map.12",
12803 FT_BOOLEAN
, 8, NULL
, 0x10,
12806 { &hf_btcommon_le_channel_map_11
,
12807 { "RF Channel 13 (2428 MHz - Data - 11)", "btcommon.le_channel_map.11",
12808 FT_BOOLEAN
, 8, NULL
, 0x08,
12811 { &hf_btcommon_le_channel_map_10
,
12812 { "RF Channel 11 (2424 MHz - Data - 10)", "btcommon.le_channel_map.10",
12813 FT_BOOLEAN
, 8, NULL
, 0x04,
12816 { &hf_btcommon_le_channel_map_9
,
12817 { "RF Channel 10 (2422 MHz - Data - 9)", "btcommon.le_channel_map.9",
12818 FT_BOOLEAN
, 8, NULL
, 0x02,
12821 { &hf_btcommon_le_channel_map_8
,
12822 { "RF Channel 9 (2420 MHz - Data - 8)", "btcommon.le_channel_map.8",
12823 FT_BOOLEAN
, 8, NULL
, 0x01,
12826 { &hf_btcommon_le_channel_map_7
,
12827 { "RF Channel 8 (2418 MHz - Data - 7)", "btcommon.le_channel_map.7",
12828 FT_BOOLEAN
, 8, NULL
, 0x80,
12831 { &hf_btcommon_le_channel_map_6
,
12832 { "RF Channel 7 (2416 MHz - Data - 6)", "btcommon.le_channel_map.6",
12833 FT_BOOLEAN
, 8, NULL
, 0x40,
12836 { &hf_btcommon_le_channel_map_5
,
12837 { "RF Channel 6 (2414 MHz - Data - 5)", "btcommon.le_channel_map.5",
12838 FT_BOOLEAN
, 8, NULL
, 0x20,
12841 { &hf_btcommon_le_channel_map_4
,
12842 { "RF Channel 5 (2412 MHz - Data - 4)", "btcommon.le_channel_map.4",
12843 FT_BOOLEAN
, 8, NULL
, 0x10,
12846 { &hf_btcommon_le_channel_map_3
,
12847 { "RF Channel 4 (2410 MHz - Data - 3)", "btcommon.le_channel_map.3",
12848 FT_BOOLEAN
, 8, NULL
, 0x08,
12851 { &hf_btcommon_le_channel_map_2
,
12852 { "RF Channel 3 (2408 MHz - Data - 2)", "btcommon.le_channel_map.2",
12853 FT_BOOLEAN
, 8, NULL
, 0x04,
12856 { &hf_btcommon_le_channel_map_1
,
12857 { "RF Channel 2 (2406 MHz - Data - 1)", "btcommon.le_channel_map.1",
12858 FT_BOOLEAN
, 8, NULL
, 0x02,
12861 { &hf_btcommon_le_channel_map_0
,
12862 { "RF Channel 1 (2404 MHz - Data - 0)", "btcommon.le_channel_map.0",
12863 FT_BOOLEAN
, 8, NULL
, 0x01,
12866 { &hf_btcommon_eir_ad_mesh_msg
,
12867 { "Mesh message content", "btcommon.eir_ad.entry.mesh_msg",
12868 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12871 { &hf_btcommon_eir_ad_mesh_pbadv
,
12872 { "Mesh PB-ADV message content", "btcommon.eir_ad.entry.mesh_pbadv",
12873 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12876 { &hf_btcommon_eir_ad_mesh_beacon
,
12877 { "Mesh Beacon message content", "btcommon.eir_ad.entry.mesh_beacon",
12878 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12883 static int *ett
[] = {
12886 &ett_eir_ad_le_features
,
12887 &ett_eir_ad_biginfo_seedaa
12890 static ei_register_info ei
[] = {
12891 { &ei_eir_ad_undecoded
, { "btcommon.eir_ad.undecoded", PI_UNDECODED
, PI_NOTE
, "Undecoded", EXPFILL
}},
12892 { &ei_eir_ad_unknown
, { "btcommon.eir_ad.unknown", PI_PROTOCOL
, PI_WARN
, "Unknown data", EXPFILL
}},
12893 { &ei_eir_ad_not_used
, { "btcommon.eir_ad.not_used", PI_PROTOCOL
, PI_WARN
, "Value should not be used", EXPFILL
}},
12894 { &ei_eir_ad_invalid_length
, { "btcommon.eir_ad.invalid_length", PI_PROTOCOL
, PI_WARN
, "Invalid Length", EXPFILL
}},
12897 static build_valid_func bluetooth_eir_ad_manufacturer_company_id_da_build_value
[1] = {bluetooth_eir_ad_manufacturer_company_id_value
};
12898 static decode_as_value_t bluetooth_eir_ad_manufacturer_company_id_da_values
= {bluetooth_eir_ad_manufacturer_company_id_prompt
, 1, bluetooth_eir_ad_manufacturer_company_id_da_build_value
};
12899 static decode_as_t bluetooth_eir_ad_manufacturer_company_id_da
= {"btcommon.eir_ad", "btcommon.eir_ad.manufacturer_company_id", 1, 0, &bluetooth_eir_ad_manufacturer_company_id_da_values
, NULL
, NULL
,
12900 decode_as_default_populate_list
, decode_as_default_reset
, decode_as_default_change
, NULL
};
12902 static build_valid_func bluetooth_eir_ad_tds_organization_id_da_build_value
[1] = {bluetooth_eir_ad_tds_organization_id_value
};
12903 static decode_as_value_t bluetooth_eir_ad_tds_organization_id_da_values
= {bluetooth_eir_ad_tds_organization_id_prompt
, 1, bluetooth_eir_ad_tds_organization_id_da_build_value
};
12904 static decode_as_t bluetooth_eir_ad_tds_organization_id_da
= {"btcommon.eir_ad", "btcommon.eir_ad.tds_organization_id", 1, 0, &bluetooth_eir_ad_tds_organization_id_da_values
, NULL
, NULL
,
12905 decode_as_default_populate_list
, decode_as_default_reset
, decode_as_default_change
, NULL
};
12907 proto_btcommon
= proto_register_protocol("Bluetooth Common", "BT Common", "btcommon");
12909 proto_register_field_array(proto_btcommon
, hf
, array_length(hf
));
12910 proto_register_subtree_array(ett
, array_length(ett
));
12912 expert_module
= expert_register_protocol(proto_btcommon
);
12913 expert_register_field_array(expert_module
, ei
, array_length(ei
));
12914 (void )ei_command_undecoded
; /* Not needed not, but there is upcoming Bluetooth 5 */
12916 btcommon_ad_handle
= register_dissector("btcommon.eir_ad.ad", dissect_btcommon_ad
, proto_btcommon
);
12917 btcommon_eir_handle
= register_dissector("btcommon.eir_ad.eir", dissect_btcommon_eir
, proto_btcommon
);
12918 btcommon_cod_handle
= register_dissector("btcommon.cod", dissect_btcommon_cod
, proto_btcommon
);
12919 btcommon_le_channel_map_handle
= register_dissector("btcommon.le_channel_map", dissect_btcommon_le_channel_map
, proto_btcommon
);
12921 bluetooth_eir_ad_manufacturer_company_id
= register_dissector_table("btcommon.eir_ad.manufacturer_company_id", "BT EIR/AD Manufacturer Company ID", proto_btcommon
, FT_UINT16
, BASE_HEX
);
12922 bluetooth_eir_ad_tds_organization_id
= register_dissector_table("btcommon.eir_ad.tds_organization_id", "BT EIR/AD TDS Organization ID", proto_btcommon
, FT_UINT8
, BASE_HEX
);
12924 // Key for this table is the lower-case hex-representation of the service UUID. 16-bit UUIDs will have 4 characters, 32-bit UUIDs will have 8 characters.
12925 // 128-bit UUIDs have 4 dashes in them, and therefore have 36 characters.
12926 bluetooth_eir_ad_service_uuid
= register_dissector_table("btcommon.eir_ad.entry.uuid", "BT EIR/AD Service UUID", proto_btcommon
, FT_STRING
, STRING_CASE_SENSITIVE
);
12928 register_decode_as(&bluetooth_eir_ad_manufacturer_company_id_da
);
12929 register_decode_as(&bluetooth_eir_ad_tds_organization_id_da
);
12933 proto_reg_handoff_btcommon(void)
12935 btmesh_handle
= find_dissector("btmesh.msg");
12936 btmesh_pbadv_handle
= find_dissector("btmesh.pbadv");
12937 btmesh_beacon_handle
= find_dissector("btmesh.beacon");
12943 * Editor modelines - https://www.wireshark.org/tools/modelines.html
12946 * c-basic-offset: 4
12948 * indent-tabs-mode: nil
12951 * vi: set shiftwidth=4 tabstop=8 expandtab:
12952 * :indentSize=4:tabSize=8:noTabs=true: