aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-bthci_evt.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-08-18 01:36:26 +0000
committerMichael Mann <mmann78@netscape.net>2013-08-18 01:36:26 +0000
commit46192881d93d531022ccb0116e54317374c61e25 (patch)
treedbac7e5af7c0ff3ca7804821c0dae6bd19e291c3 /epan/dissectors/packet-bthci_evt.c
parent9eeeb6d5f65197de19d74b97ba1615050d84be0f (diff)
Create individual filters for HCI LMP features. Bug 9050 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9050)
From Michal Labedzki svn path=/trunk/; revision=51409
Diffstat (limited to 'epan/dissectors/packet-bthci_evt.c')
-rw-r--r--epan/dissectors/packet-bthci_evt.c678
1 files changed, 388 insertions, 290 deletions
diff --git a/epan/dissectors/packet-bthci_evt.c b/epan/dissectors/packet-bthci_evt.c
index dff0c289ab..abb6157743 100644
--- a/epan/dissectors/packet-bthci_evt.c
+++ b/epan/dissectors/packet-bthci_evt.c
@@ -140,56 +140,6 @@ static int hf_bthci_evt_link_type_hv3 = -1;
static int hf_bthci_evt_page_scan_mode = -1;
static int hf_bthci_evt_page_scan_repetition_mode = -1;
static int hf_bthci_evt_page_scan_period_mode = -1;
-static int hf_bthci_evt_lmp_feature_00 = -1;
-static int hf_bthci_evt_lmp_feature_01 = -1;
-static int hf_bthci_evt_lmp_feature_02 = -1;
-static int hf_bthci_evt_lmp_feature_03 = -1;
-static int hf_bthci_evt_lmp_feature_04 = -1;
-static int hf_bthci_evt_lmp_feature_05 = -1;
-static int hf_bthci_evt_lmp_feature_06 = -1;
-static int hf_bthci_evt_lmp_feature_07 = -1;
-static int hf_bthci_evt_lmp_feature_10 = -1;
-static int hf_bthci_evt_lmp_feature_11 = -1;
-static int hf_bthci_evt_lmp_feature_12 = -1;
-static int hf_bthci_evt_lmp_feature_13 = -1;
-static int hf_bthci_evt_lmp_feature_14 = -1;
-static int hf_bthci_evt_lmp_feature_15 = -1;
-static int hf_bthci_evt_lmp_feature_16 = -1;
-static int hf_bthci_evt_lmp_feature_17 = -1;
-static int hf_bthci_evt_lmp_feature_20 = -1;
-static int hf_bthci_evt_lmp_feature_21 = -1;
-static int hf_bthci_evt_lmp_feature_22 = -1;
-static int hf_bthci_evt_lmp_feature_23 = -1;
-static int hf_bthci_evt_lmp_feature_24 = -1;
-static int hf_bthci_evt_lmp_feature_27 = -1;
-static int hf_bthci_evt_lmp_feature_31 = -1;
-static int hf_bthci_evt_lmp_feature_32 = -1;
-static int hf_bthci_evt_lmp_feature_33 = -1;
-static int hf_bthci_evt_lmp_feature_34 = -1;
-static int hf_bthci_evt_lmp_feature_35 = -1;
-static int hf_bthci_evt_lmp_feature_36 = -1;
-static int hf_bthci_evt_lmp_feature_37 = -1;
-static int hf_bthci_evt_lmp_feature_40 = -1;
-static int hf_bthci_evt_lmp_feature_41 = -1;
-static int hf_bthci_evt_lmp_feature_43 = -1;
-static int hf_bthci_evt_lmp_feature_44 = -1;
-static int hf_bthci_evt_lmp_feature_47 = -1;
-static int hf_bthci_evt_lmp_feature_50 = -1;
-static int hf_bthci_evt_lmp_feature_51 = -1;
-static int hf_bthci_evt_lmp_feature_52 = -1;
-static int hf_bthci_evt_lmp_feature_53 = -1;
-static int hf_bthci_evt_lmp_feature_54 = -1;
-static int hf_bthci_evt_lmp_feature_55 = -1;
-static int hf_bthci_evt_lmp_feature_56 = -1;
-static int hf_bthci_evt_lmp_feature_57 = -1;
-static int hf_bthci_evt_lmp_feature_60 = -1;
-static int hf_bthci_evt_lmp_feature_63 = -1;
-static int hf_bthci_evt_lmp_feature_64 = -1;
-static int hf_bthci_evt_lmp_feature_65 = -1;
-static int hf_bthci_evt_lmp_feature_66 = -1;
-static int hf_bthci_evt_lmp_feature_70 = -1;
-static int hf_bthci_evt_lmp_feature_71 = -1;
-static int hf_bthci_evt_lmp_feature_77 = -1;
static int hf_bthci_evt_num_keys = -1;
static int hf_bthci_evt_num_keys_read = -1;
static int hf_bthci_evt_max_num_keys = -1;
@@ -239,7 +189,71 @@ static int hf_bthci_evt_err_data_reporting = -1;
static int hf_bthci_evt_scan_type = -1;
static int hf_bthci_evt_inq_mode = -1;
static int hf_bthci_evt_power_level_type = -1;
-static int hf_bthci_evt_ext_lmp_features = -1;
+static int hf_lmp_features = -1;
+static int hf_lmp_feature_3slot_packets = -1;
+static int hf_lmp_feature_5slot_packets = -1;
+static int hf_lmp_feature_encryption = -1;
+static int hf_lmp_feature_slot_offset = -1;
+static int hf_lmp_feature_timing_accuracy = -1;
+static int hf_lmp_feature_role_switch = -1;
+static int hf_lmp_feature_hold_mode = -1;
+static int hf_lmp_feature_sniff_mode = -1;
+static int hf_lmp_feature_park_state = -1;
+static int hf_lmp_feature_power_control_requests = -1;
+static int hf_lmp_feature_channel_quality_driven_data_rate = -1;
+static int hf_lmp_feature_sco_link = -1;
+static int hf_lmp_feature_hv2_packets = -1;
+static int hf_lmp_feature_hv3_packets = -1;
+static int hf_lmp_feature_u_law_log_synchronous_data = -1;
+static int hf_lmp_feature_a_law_log_synchronous_data = -1;
+static int hf_lmp_feature_cvsd_synchronous_data = -1;
+static int hf_lmp_feature_paging_parameter_negotiation = -1;
+static int hf_lmp_feature_power_control = -1;
+static int hf_lmp_feature_transparent_synchronous_data = -1;
+static int hf_lmp_feature_flow_control_lag = -1;
+static int hf_lmp_feature_broadcast_encryption = -1;
+static int hf_lmp_feature_reserved_24 = -1;
+static int hf_lmp_feature_edr_acl_2mbps_mode = -1;
+static int hf_lmp_feature_edr_acl_3mbps_mode = -1;
+static int hf_lmp_feature_enhanced_inquiry_scan = -1;
+static int hf_lmp_feature_interlaced_inquiry_scan = -1;
+static int hf_lmp_feature_interlaced_page_scan = -1;
+static int hf_lmp_feature_rssi_with_inquiry_results = -1;
+static int hf_lmp_feature_ev3_packets = -1;
+static int hf_lmp_feature_ev4_packets = -1;
+static int hf_lmp_feature_ev5_packets = -1;
+static int hf_lmp_feature_reserved_34 = -1;
+static int hf_lmp_feature_afh_capable_slave = -1;
+static int hf_lmp_feature_afh_classification_slave = -1;
+static int hf_lmp_feature_br_edr_not_supported = -1;
+static int hf_lmp_feature_le_supported_controller = -1;
+static int hf_lmp_feature_3slot_edr_acl_packets = -1;
+static int hf_lmp_feature_5slot_edr_acl_packets = -1;
+static int hf_lmp_feature_sniff_subrating = -1;
+static int hf_lmp_feature_pause_encryption = -1;
+static int hf_lmp_feature_afh_capable_master = -1;
+static int hf_lmp_feature_afh_classification_master = -1;
+static int hf_lmp_feature_edr_esco_2mbps_mode = -1;
+static int hf_lmp_feature_edr_esco_3mbps_mode = -1;
+static int hf_lmp_feature_3slot_edr_esco_packets = -1;
+static int hf_lmp_feature_extended_inquiry_response = -1;
+static int hf_lmp_feature_simultaneous_le_and_br_edr_controller = -1;
+static int hf_lmp_feature_reserved_50 = -1;
+static int hf_lmp_feature_secure_simple_pairing = -1;
+static int hf_lmp_feature_encapsulated_pdu = -1;
+static int hf_lmp_feature_erroneous_data_reporting = -1;
+static int hf_lmp_feature_non_flushable_packet_boundary_flag = -1;
+static int hf_lmp_feature_reserved_55 = -1;
+static int hf_lmp_feature_link_supervision_timeout_changed_event = -1;
+static int hf_lmp_feature_inquiry_tx_power_level = -1;
+static int hf_lmp_feature_enhanced_power_control = -1;
+static int hf_lmp_feature_reserved_59_62 = -1;
+static int hf_lmp_feature_extended_features = -1;
+static int hf_lmp_feature_secure_simple_pairing_host = -1;
+static int hf_lmp_feature_le_supported_host = -1;
+static int hf_lmp_feature_simultaneous_le_and_br_edr_host = -1;
+static int hf_lmp_feature_reserved_67_71 = -1;
+static int hf_lmp_feature_reserved = -1;
static int hf_bthci_evt_sync_link_type = -1;
static int hf_bthci_evt_sync_tx_interval = -1;
static int hf_bthci_evt_sync_rtx_window = -1;
@@ -1166,87 +1180,115 @@ dissect_bthci_evt_auth_complete(tvbuff_t *tvb, int offset, packet_info *pinfo _U
}
static int
-dissect_bthci_evt_lmp_features(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
+dissect_bthci_evt_lmp_features(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, guint8 page_numer)
{
guint8 fc_lag;
- proto_item *item;
- proto_item *ti_lmp_subtree = NULL;
+ proto_item *fl_lag_item;
+ proto_tree *lmp_tree = NULL;
if (tree) {
- proto_item *ti_lmp_features;
+ proto_item *lmp_item;
- ti_lmp_features = proto_tree_add_text(tree, tvb, offset, 8, "LMP_Features");
- ti_lmp_subtree = proto_item_add_subtree(ti_lmp_features, ett_lmp_subtree);
+ lmp_item = proto_tree_add_item(tree, hf_lmp_features, tvb, offset, 8, ENC_NA);
+ lmp_tree = proto_item_add_subtree(lmp_item, ett_lmp_subtree);
}
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_00, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_01, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_02, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_03, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_04, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_05, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_06, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_07, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ switch (page_numer) {
+ case 0:
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_3slot_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_5slot_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_encryption, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_slot_offset, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_timing_accuracy, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_role_switch, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_hold_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_sniff_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_10, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_11, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_12, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_13, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_14, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_15, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_16, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_17, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_park_state, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_power_control_requests, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_channel_quality_driven_data_rate, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_sco_link, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_hv2_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_hv3_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_u_law_log_synchronous_data, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_a_law_log_synchronous_data, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_20, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_21, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_22, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_23, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- item = proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_24, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- fc_lag = (tvb_get_guint8(tvb, offset) & 0x70)>>4;
- proto_item_append_text(item, " (%i bytes)", 256*fc_lag);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_cvsd_synchronous_data, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_paging_parameter_negotiation, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_power_control, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_transparent_synchronous_data, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ fl_lag_item = proto_tree_add_item(lmp_tree,hf_lmp_feature_flow_control_lag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ fc_lag = (tvb_get_guint8(tvb, offset) & 0x70) >> 4;
+ proto_item_append_text(fl_lag_item, " (%i bytes)", 256 * fc_lag);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_27, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(lmp_tree,hf_lmp_feature_broadcast_encryption, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_31, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_32, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_33, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_34, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_35, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_36, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_37, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved_24, tvb, offset, 1, ENC_NA);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_edr_acl_2mbps_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_edr_acl_3mbps_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_enhanced_inquiry_scan, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_interlaced_inquiry_scan, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_interlaced_page_scan, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_rssi_with_inquiry_results, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_ev3_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_40, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_41, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_43, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_44, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_47, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_ev4_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_ev5_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved_34, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_capable_slave, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_classification_slave, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_br_edr_not_supported, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_le_supported_controller, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_3slot_edr_acl_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_50, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_51, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_52, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_53, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_54, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_55, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_56, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_57, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_5slot_edr_acl_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_sniff_subrating, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_pause_encryption, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_capable_master, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_afh_classification_master, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_edr_esco_2mbps_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_edr_esco_3mbps_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_3slot_edr_esco_packets, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_60, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_63, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_64, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_65, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_66, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_extended_inquiry_response, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_simultaneous_le_and_br_edr_controller, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved_50, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_secure_simple_pairing, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_encapsulated_pdu, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_erroneous_data_reporting, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_non_flushable_packet_boundary_flag, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved_55, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_70, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_71, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- proto_tree_add_item(ti_lmp_subtree,hf_bthci_evt_lmp_feature_77, tvb, offset, 1, ENC_LITTLE_ENDIAN);
- offset++;
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_link_supervision_timeout_changed_event, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_inquiry_tx_power_level, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_enhanced_power_control, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved_59_62, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_extended_features, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset++;
+
+ break;
+ case 1:
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_secure_simple_pairing_host, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_le_supported_host, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_simultaneous_le_and_br_edr_host, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved_67_71, tvb, offset, 1, ENC_LITTLE_ENDIAN);
+ offset += 1;
+
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved, tvb, offset, 7, ENC_NA);
+ offset+=7;
+
+ break;
+ default:
+ proto_tree_add_item(lmp_tree, hf_lmp_feature_reserved, tvb, offset, 8, ENC_NA);
+ offset += 8;
+ }
return offset;
}
@@ -1310,7 +1352,7 @@ dissect_bthci_evt_read_remote_support_features_complete(tvbuff_t *tvb, int offse
proto_tree_add_item(tree, hf_bthci_evt_connection_handle, tvb, offset, 2, ENC_LITTLE_ENDIAN);
offset+=2;
- offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo,tree);
+ offset = dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree, 0);
return offset;
}
@@ -1999,9 +2041,7 @@ static int
dissect_bthci_evt_remote_host_sup_feat_notification(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree, NULL);
-
- proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- offset+=8;
+ offset = dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree, 0);
return offset;
}
@@ -2916,7 +2956,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, packet_info *pinfo
proto_tree_add_item(tree, hf_bthci_evt_status, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset++;
- offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
+ offset = dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree, 0);
break;
@@ -2934,13 +2974,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, packet_info *pinfo
proto_tree_add_item(tree, hf_bthci_evt_max_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset++;
- if (page_number == 0) {
- offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
- }
- else {
- proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- offset+=8;
- }
+ offset = dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree, page_number);
}
break;
@@ -3337,13 +3371,7 @@ dissect_bthci_evt_read_remote_ext_features_complete(tvbuff_t *tvb, int offset, p
proto_tree_add_item(tree, hf_bthci_evt_max_page_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset++;
- if (page_number == 0) {
- offset=dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree);
- }
- else {
- proto_tree_add_item(tree, hf_bthci_evt_ext_lmp_features, tvb, offset, 8, ENC_LITTLE_ENDIAN);
- offset+=8;
- }
+ offset = dissect_bthci_evt_lmp_features(tvb, offset, pinfo, tree, page_number);
return offset;
}
@@ -4355,256 +4383,331 @@ proto_register_bthci_evt(void)
FT_UINT16, BASE_DEC, VALS(evt_boolean), 0x0080,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_00,
- { "3-slot packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ { &hf_lmp_features,
+ { "LMP Features", "bthci_evt.lmp_features",
+ FT_NONE, BASE_NONE, NULL, 0x00,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_01,
- { "5-slot packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ { &hf_lmp_feature_3slot_packets,
+ { "3-slot packets", "bthci_evt.lmp_features.3slot_packets",
+ FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_02,
- { "encryption", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ { &hf_lmp_feature_5slot_packets,
+ { "5-slot packets", "bthci_evt.lmp_features.5slot_packets",
+ FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_03,
- { "slot offset", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ { &hf_lmp_feature_encryption,
+ { "Encryption", "bthci_evt.lmp_features.encryption",
+ FT_BOOLEAN, 8, NULL, 0x04,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_04,
- { "timing accuracy", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ { &hf_lmp_feature_slot_offset,
+ { "Slot Offset", "bthci_evt.lmp_features.slot_offset",
+ FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_05,
- { "master/slave switch", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ { &hf_lmp_feature_timing_accuracy,
+ { "Timing Accuracy", "bthci_evt.lmp_features.timing_accuracy",
+ FT_BOOLEAN, 8, NULL, 0x10,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_06,
- { "hold mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ { &hf_lmp_feature_role_switch,
+ { "Role Switch", "bthci_evt.lmp_features.role_switch",
+ FT_BOOLEAN, 8, NULL, 0x20,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_07,
- { "sniff mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ { &hf_lmp_feature_hold_mode,
+ { "Hold Mode", "bthci_evt.lmp_features.hold_mode",
+ FT_BOOLEAN, 8, NULL, 0x40,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_10,
- { "park mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ { &hf_lmp_feature_sniff_mode,
+ { "Sniff Mode", "bthci_evt.lmp_features.sniff_mode",
+ FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_11,
- { "RSSI", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ { &hf_lmp_feature_park_state,
+ { "Park Mode", "bthci_evt.lmp_features.park_state",
+ FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_12,
- { "channel quality driven data rate", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ { &hf_lmp_feature_power_control_requests,
+ { "Power Control Requests", "bthci_evt.lmp_features.power_control_requests",
+ FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_13,
- { "SCO link", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ { &hf_lmp_feature_channel_quality_driven_data_rate,
+ { "Channel Quality Driven Data Rate", "bthci_evt.lmp_features.channel_quality_driven_data_rate",
+ FT_BOOLEAN, 8, NULL, 0x04,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_14,
- { "HV2 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ { &hf_lmp_feature_sco_link,
+ { "SCO Link", "bthci_evt.lmp_features.sco_link",
+ FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_15,
- { "HV3 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ { &hf_lmp_feature_hv2_packets,
+ { "HV2 packets", "bthci_evt.lmp_features.hv2_packets",
+ FT_BOOLEAN, 8, NULL, 0x10,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_16,
- { "u-law log", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ { &hf_lmp_feature_hv3_packets,
+ { "HV3 packets", "bthci_evt.lmp_features.hv3_packets",
+ FT_BOOLEAN, 8, NULL, 0x20,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_17,
- { "A-law log", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ { &hf_lmp_feature_u_law_log_synchronous_data,
+ { "u-law Log Synchronous Data", "bthci_evt.lmp_features.u_law_log_synchronous_data",
+ FT_BOOLEAN, 8, NULL, 0x40,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_20,
- { "CVSD", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ { &hf_lmp_feature_a_law_log_synchronous_data,
+ { "A-law Log Synchronous Data", "bthci_evt.lmp_features.a_law_log_synchronous_data",
+ FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_21,
- { "paging scheme", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ { &hf_lmp_feature_cvsd_synchronous_data,
+ { "CVSD Synchronous Data", "bthci_evt.lmp_features.cvsd_synchronous_data",
+ FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_22,
- { "power control", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ { &hf_lmp_feature_paging_parameter_negotiation,
+ { "Paging Parameter Negotiation", "bthci_evt.lmp_features.paging_parameter_negotiation",
+ FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_23,
- { "transparent SCO data", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ { &hf_lmp_feature_power_control,
+ { "Power Control", "bthci_evt.lmp_features.power_control",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_transparent_synchronous_data,
+ { "Transparent Synchronous Data", "bthci_evt.lmp_features.transparent_synchronous_data",
+ FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_24,
- { "Flow control lag", "bthci_evt.lmp_feature",
+ { &hf_lmp_feature_flow_control_lag,
+ { "Flow Control Lag", "bthci_evt.lmp_features.flow_control_lag",
FT_UINT8, BASE_DEC, NULL, 0x70,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_27,
- { "broadband encryption", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ { &hf_lmp_feature_broadcast_encryption,
+ { "Broadband Encryption", "bthci_evt.lmp_features.broadcast_encryption",
+ FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_31,
- { "EDR ACL 2 Mbps mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ { &hf_lmp_feature_reserved_24,
+ { "Reserved", "bthci_evt.lmp_features.reserved.24",
+ FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_32,
- { "EDR ACL 3 Mbps mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ { &hf_lmp_feature_edr_acl_2mbps_mode,
+ { "EDR ACL 2 Mbps Mode", "bthci_evt.lmp_features.edr_acl_2mbps_mode",
+ FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_33,
- { "enhanced inquiry scan", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ { &hf_lmp_feature_edr_acl_3mbps_mode,
+ { "EDR ACL 3 Mbps Mode", "bthci_evt.lmp_features.edr_acl_3mbps_mode",
+ FT_BOOLEAN, 8, NULL, 0x04,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_34,
- { "interlaced inquiry scan", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ { &hf_lmp_feature_enhanced_inquiry_scan,
+ { "Enhanced Inquiry Scan", "bthci_evt.lmp_features.enhanced_inquiry_scan",
+ FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_35,
- { "interlaced page scan", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ { &hf_lmp_feature_interlaced_inquiry_scan,
+ { "Interlaced Inquiry Scan", "bthci_evt.lmp_features.interlaced_inquiry_scan",
+ FT_BOOLEAN, 8, NULL, 0x10,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_36,
- { "RSSI with inquiry results", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ { &hf_lmp_feature_interlaced_page_scan,
+ { "Interlaced Page Scan", "bthci_evt.lmp_features.interlaced_page_scan",
+ FT_BOOLEAN, 8, NULL, 0x20,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_37,
- { "eSCO EV3 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ { &hf_lmp_feature_rssi_with_inquiry_results,
+ { "RSSI with Inquiry Results", "bthci_evt.lmp_features.rssi_with_inquiry_results",
+ FT_BOOLEAN, 8, NULL, 0x40,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_40,
- { "eSCO EV4 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ { &hf_lmp_feature_ev3_packets,
+ { "EV3 Packets", "bthci_evt.lmp_features.ev3_packets",
+ FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_41,
- { "eSCO EV5 packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ { &hf_lmp_feature_ev4_packets,
+ { "EV4 Packets", "bthci_evt.lmp_features.ev4_packets",
+ FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_43,
- { "AFH capable slave", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ { &hf_lmp_feature_ev5_packets,
+ { "EV5 Packets", "bthci_evt.lmp_features.ev5_packets",
+ FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_44,
- { "AFH classification slave", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ { &hf_lmp_feature_reserved_34,
+ { "Reserved", "bthci_evt.lmp_features.reserved.34",
+ FT_BOOLEAN, 8, NULL, 0x04,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_47,
- { "3-slot EDR ACL packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ { &hf_lmp_feature_afh_capable_slave,
+ { "AFH Capable Slave", "bthci_evt.lmp_features.afh_capable_slave",
+ FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_50,
- { "5-slot EDR ACL packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ { &hf_lmp_feature_afh_classification_slave,
+ { "AFH Classification Slave", "bthci_evt.lmp_features.afh_classification_slave",
+ FT_BOOLEAN, 8, NULL, 0x10,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_51,
- { "sniff subrating", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ { &hf_lmp_feature_br_edr_not_supported,
+ { "BR/EDR Not Supported", "bthci_evt.lmp_features.br_edr_not_supported",
+ FT_BOOLEAN, 8, NULL, 0x20,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_52,
- { "pause encryption", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x04,
+ { &hf_lmp_feature_le_supported_controller,
+ { "LE Supported Controller", "bthci_evt.lmp_features.le_supported_controller",
+ FT_BOOLEAN, 8, NULL, 0x40,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_53,
- { "AFH capable master", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ { &hf_lmp_feature_3slot_edr_acl_packets,
+ { "3-slot EDR ACL packets", "bthci_evt.lmp_features.3slot_edr_acl_packets",
+ FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_54,
- { "AFH classification master", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ { &hf_lmp_feature_5slot_edr_acl_packets,
+ { "5-slot EDR ACL packets", "bthci_evt.lmp_features.5slot_edr_acl_packets",
+ FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_55,
- { "EDR eSCO 2 Mbps mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ { &hf_lmp_feature_sniff_subrating,
+ { "Sniff Subrating", "bthci_evt.lmp_features.sniff_subrating",
+ FT_BOOLEAN, 8, NULL, 0x02,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_56,
- { "EDR eSCO 3 Mbps mode", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ { &hf_lmp_feature_pause_encryption,
+ { "Pause Encryption", "bthci_evt.lmp_features.pause_encryption",
+ FT_BOOLEAN, 8, NULL, 0x04,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_57,
- { "3-slot EDR eSCO packets", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ { &hf_lmp_feature_afh_capable_master,
+ { "AFH Capable Master", "bthci_evt.lmp_features.afh_capable_master",
+ FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_60,
- { "extended inquiry response", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ { &hf_lmp_feature_afh_classification_master,
+ { "AFH Classification Master", "bthci_evt.lmp_features.afh_classification_master",
+ FT_BOOLEAN, 8, NULL, 0x10,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_63,
- { "secure simple pairing", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x08,
+ { &hf_lmp_feature_edr_esco_2mbps_mode,
+ { "EDR eSCO 2 Mbps Mode", "bthci_evt.lmp_features.edr_esco_2mbps_mode",
+ FT_BOOLEAN, 8, NULL, 0x20,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_64,
- { "encapsulated PDU", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x10,
+ { &hf_lmp_feature_edr_esco_3mbps_mode,
+ { "EDR eSCO 3 Mbps Mode", "bthci_evt.lmp_features.edr_esco_3mbps_mode",
+ FT_BOOLEAN, 8, NULL, 0x40,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_65,
- { "erroneous data reporting", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x20,
+ { &hf_lmp_feature_3slot_edr_esco_packets,
+ { "3-slot EDR eSCO Packets", "bthci_evt.lmp_features.3slot_edr_esco_packets",
+ FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_66,
- { "non-flushable packet boundary flag", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x40,
+ { &hf_lmp_feature_extended_inquiry_response,
+ { "Extended Inquiry Response", "bthci_evt.lmp_features.extended_inquiry_response",
+ FT_BOOLEAN, 8, NULL, 0x01,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_70,
- { "link supervision timeout changed event", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x01,
+ { &hf_lmp_feature_simultaneous_le_and_br_edr_controller,
+ {"Simultaneous LE and BR/EDR to Same Device Capable Controller", "bthci_evt.lmp_features.simultaneous_le_and_br_edr.controller",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL}
+ },
+ { &hf_lmp_feature_reserved_50,
+ { "Reserved", "bthci_evt.lmp_features.reserved.50",
+ FT_BOOLEAN, 8, NULL, 0x04,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_71,
- { "inquiry response TX power level", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x02,
+ { &hf_lmp_feature_secure_simple_pairing,
+ { "Secure Simple Pairing", "bthci_evt.lmp_features.secure_simple_pairing",
+ FT_BOOLEAN, 8, NULL, 0x08,
NULL, HFILL }
},
- { &hf_bthci_evt_lmp_feature_77,
- { "extended features", "bthci_evt.lmp_feature",
- FT_UINT8, BASE_DEC, VALS(evt_boolean), 0x80,
+ { &hf_lmp_feature_encapsulated_pdu,
+ { "Encapsulated PDU", "bthci_evt.lmp_features.encapsulated_pdu",
+ FT_BOOLEAN, 8, NULL, 0x10,
NULL, HFILL }
},
+ { &hf_lmp_feature_erroneous_data_reporting,
+ { "Erroneous Data Reporting", "bthci_evt.lmp_features.erroneous_data_reporting",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_non_flushable_packet_boundary_flag,
+ { "Non-flushable Packet Boundary Flag", "bthci_evt.lmp_features.non_flushable_packet_boundary_flag",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_reserved_55,
+ { "Reserved", "bthci_evt.lmp_features.reserved.55",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_link_supervision_timeout_changed_event,
+ { "Link Supervision Timeout Changed Event", "bthci_evt.lmp_features.supervision_timeout_changed_event",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_inquiry_tx_power_level,
+ { "Inquiry TX Power Level", "bthci_evt.lmp_features.inquiry_tx_power_level",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_enhanced_power_control,
+ { "Enhanced Power Control", "bthci_evt.lmp_features.enhanced_power_control",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_reserved_59_62,
+ { "Reserved", "bthci_evt.lmp_features.reserved.59_62",
+ FT_BOOLEAN, 8, NULL, 0x78,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_extended_features,
+ { "Extended Features", "bthci_evt.lmp_features.extended_features",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }
+ },
+ { &hf_lmp_feature_secure_simple_pairing_host,
+ {"Secure Simple Pairing Host", "bthci_evt.lmp_features.secure_simple_pairing_host",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL}
+ },
+ { &hf_lmp_feature_le_supported_host,
+ {"LE Supported Host", "bthci_evt.lmp_features.le_supported.host",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL}
+ },
+ { &hf_lmp_feature_simultaneous_le_and_br_edr_host,
+ {"Simultaneous LE and BR/EDR to Same Device Capable Host", "bthci_evt.lmp_features.simultaneous_le_and_br_edr.host",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ NULL, HFILL}
+ },
+ { &hf_lmp_feature_reserved_67_71,
+ {"Reserved", "bthci_evt.lmp_features.reserved.67_71",
+ FT_UINT8, BASE_HEX, NULL, 0xF8,
+ NULL, HFILL}
+ },
+ { &hf_lmp_feature_reserved,
+ {"Reserved", "bthci_evt.lmp_features.reserved",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}
+ },
{ &hf_bthci_evt_num_keys,
{ "Number of Link Keys", "bthci_evt.num_keys",
FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -4835,11 +4938,6 @@ proto_register_bthci_evt(void)
FT_UINT8, BASE_HEX, VALS(evt_power_level_types), 0x0,
NULL, HFILL}
},
- { &hf_bthci_evt_ext_lmp_features,
- {"Ext. LMP Features", "bthci_evt.page_number",
- FT_UINT64, BASE_HEX, NULL, 0x0,
- "Extended LMP Features", HFILL}
- },
{ &hf_bthci_evt_sync_link_type,
{"Link Type", "bthci_evt.sync_link_type",
FT_UINT8, BASE_HEX, VALS(evt_sync_link_types), 0x0,