diff options
Diffstat (limited to 'epan/dissectors/packet-btatt.c')
-rw-r--r-- | epan/dissectors/packet-btatt.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/epan/dissectors/packet-btatt.c b/epan/dissectors/packet-btatt.c index 39ba41b11f..7f24e4cbb9 100644 --- a/epan/dissectors/packet-btatt.c +++ b/epan/dissectors/packet-btatt.c @@ -523,6 +523,9 @@ static wmem_tree_t *fragments = NULL; static wmem_tree_t *handle_to_uuid = NULL; static dissector_handle_t btatt_handle; +static dissector_handle_t usb_hid_boot_keyboard_input_report_handle; +static dissector_handle_t usb_hid_boot_keyboard_output_report_handle; +static dissector_handle_t usb_hid_boot_mouse_input_report_handle; static dissector_table_t att_handle_dissector_table; static dissector_table_t att_uuid16_dissector_table; @@ -2190,6 +2193,11 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info * offset += 2; break; + case 0x2A22: /* Boot Keyboard Input Report */ + call_dissector_with_data(usb_hid_boot_keyboard_input_report_handle, tvb_new_subset_remaining(tvb, offset), pinfo, tree, NULL); + offset += length; + + break; case 0x2A23: /* System ID */ proto_tree_add_item(tree, hf_btatt_system_id_manufacturer_identifier, tvb, offset, 5, ENC_LITTLE_ENDIAN); offset += 5; @@ -2237,6 +2245,16 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info * offset += 1; break; + case 0x2A32: /* Boot Keyboard Output Report */ + call_dissector_with_data(usb_hid_boot_keyboard_output_report_handle, tvb_new_subset_remaining(tvb, offset), pinfo, tree, NULL); + offset += length; + + break; + case 0x2A33: /* Boot Mouse Input Report */ + call_dissector_with_data(usb_hid_boot_mouse_input_report_handle, tvb_new_subset_remaining(tvb, offset), pinfo, tree, NULL); + offset += length; + + break; case 0x2A38: /* Body Sensor Location */ proto_tree_add_item(tree, hf_btatt_body_sensor_location, tvb, offset, 1, ENC_NA); offset += 1; @@ -2655,10 +2673,7 @@ dissect_attribute_value(proto_tree *tree, proto_item *patron_item, packet_info * case 0x2A18: /* Glucose Measurement */ case 0x2A1C: /* Temperature Measurement */ case 0x2A1E: /* Intermediate Temperature */ - case 0x2A22: /* Boot Keyboard Input Report */ case 0x2A2A: /* IEEE 11073-20601 Regulatory Certification Data List */ - case 0x2A32: /* Boot Keyboard Output Report */ - case 0x2A33: /* Boot Mouse Input Report */ case 0x2A34: /* Glucose Measurement Context */ case 0x2A35: /* Blood Pressure Measurement */ case 0x2A36: /* Intermediate Cuff Pressure */ @@ -4887,6 +4902,10 @@ proto_reg_handoff_btatt(void) { gint i_array; + usb_hid_boot_keyboard_input_report_handle = find_dissector("usbhid.boot_report.keyboard.input"); + usb_hid_boot_keyboard_output_report_handle = find_dissector("usbhid.boot_report.keyboard.output"); + usb_hid_boot_mouse_input_report_handle = find_dissector("usbhid.boot_report.mouse.input"); + dissector_add_uint("btl2cap.psm", BTL2CAP_PSM_ATT, btatt_handle); dissector_add_uint("btl2cap.cid", BTL2CAP_FIXED_CID_ATT, btatt_handle); |