diff options
author | Tomasz Moń <desowin@gmail.com> | 2019-05-12 17:06:08 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2019-05-13 07:19:17 +0000 |
commit | 858fae9f1def064a6c688319e01fc213d05ff581 (patch) | |
tree | 8153174464fb50cf66859a477ee4a4e43f03cf19 | |
parent | e7c0855375676119e334078adb8e2b29d4d59aea (diff) |
USB Audio: Dissect MIDI OUT Jack descriptor
Ping-Bug: 15503
Change-Id: Ib3795e0bd6650319e2552ccf907b10716f1859fa
Reviewed-on: https://code.wireshark.org/review/33170
Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r-- | epan/dissectors/packet-usb-audio.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/epan/dissectors/packet-usb-audio.c b/epan/dissectors/packet-usb-audio.c index 967aa2f665..41b152ec08 100644 --- a/epan/dissectors/packet-usb-audio.c +++ b/epan/dissectors/packet-usb-audio.c @@ -278,6 +278,12 @@ static int hf_ms_if_hdr_total_len = -1; static int hf_ms_if_midi_in_bjacktype = -1; static int hf_ms_if_midi_in_bjackid = -1; static int hf_ms_if_midi_in_ijack = -1; +static int hf_ms_if_midi_out_bjacktype = -1; +static int hf_ms_if_midi_out_bjackid = -1; +static int hf_ms_if_midi_out_bnrinputpins = -1; +static int hf_ms_if_midi_out_basourceid = -1; +static int hf_ms_if_midi_out_basourcepin = -1; +static int hf_ms_if_midi_out_ijack = -1; static int hf_ms_ep_desc_subtype = -1; static reassembly_table midi_data_reassembly_table; @@ -1568,6 +1574,36 @@ dissect_ms_if_midi_in_body(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, } static gint +dissect_ms_if_midi_out_body(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, + proto_tree *tree, usb_conv_info_t *usb_conv_info _U_) +{ + gint offset_start = offset; + guint8 nrinputpins; + + proto_tree_add_item(tree, hf_ms_if_midi_out_bjacktype, tvb, offset, 1, ENC_LITTLE_ENDIAN); + offset += 1; + proto_tree_add_item(tree, hf_ms_if_midi_out_bjackid, tvb, offset, 1, ENC_LITTLE_ENDIAN); + offset += 1; + + proto_tree_add_item(tree, hf_ms_if_midi_out_bnrinputpins, tvb, offset, 1, ENC_LITTLE_ENDIAN); + nrinputpins = tvb_get_guint8(tvb, offset); + offset += 1; + while (nrinputpins) + { + proto_tree_add_item(tree, hf_ms_if_midi_out_basourceid, tvb, offset, 1, ENC_LITTLE_ENDIAN); + offset += 1; + proto_tree_add_item(tree, hf_ms_if_midi_out_basourcepin, tvb, offset, 1, ENC_LITTLE_ENDIAN); + offset += 1; + nrinputpins--; + } + + proto_tree_add_item(tree, hf_ms_if_midi_out_ijack, tvb, offset, 1, ENC_LITTLE_ENDIAN); + offset += 1; + + return offset-offset_start; +} + +static gint dissect_usb_audio_descriptor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { @@ -1717,6 +1753,10 @@ dissect_usb_audio_descriptor(tvbuff_t *tvb, packet_info *pinfo, bytes_dissected += dissect_ms_if_midi_in_body(tvb, offset, pinfo, desc_tree, usb_conv_info); break; + case MS_IF_SUBTYPE_MIDI_OUT_JACK: + bytes_dissected += dissect_ms_if_midi_out_body(tvb, offset, pinfo, + desc_tree, usb_conv_info); + break; default: break; } @@ -2553,6 +2593,24 @@ proto_register_usb_audio(void) { &hf_ms_if_midi_in_ijack, { "String descriptor index", "usbaudio.ms_if_midi_in.iJack", FT_UINT8, BASE_DEC, NULL, 0x00, "iJack", HFILL }}, + { &hf_ms_if_midi_out_bjacktype, + { "Jack Type", "usbaudio.ms_if_midi_out.bJackType", + FT_UINT8, BASE_HEX, VALS(ms_midi_jack_type_vals), 0x00, "bJackType", HFILL }}, + { &hf_ms_if_midi_out_bjackid, + { "Jack ID", "usbaudio.ms_if_midi_out.bJackID", + FT_UINT8, BASE_DEC, NULL, 0x00, "bJackID", HFILL }}, + { &hf_ms_if_midi_out_bnrinputpins, + { "Number of Input Pins", "usbaudio.ms_if_midi_out.bNrInputPins", + FT_UINT8, BASE_DEC, NULL, 0x00, "bNrInputPins", HFILL }}, + { &hf_ms_if_midi_out_basourceid, + { "Connected MIDI Entity", "usbaudio.ms_if_midi_out.baSourceID", + FT_UINT8, BASE_DEC, NULL, 0x00, "baSourceID", HFILL }}, + { &hf_ms_if_midi_out_basourcepin, + { "Entity Output Pin", "usbaudio.ms_if_midi_out.BaSourcePin", + FT_UINT8, BASE_DEC, NULL, 0x00, "BaSourcePin", HFILL }}, + { &hf_ms_if_midi_out_ijack, + { "String descriptor index", "usbaudio.ms_if_midi_out.iJack", + FT_UINT8, BASE_DEC, NULL, 0x00, "iJack", HFILL }}, { &hf_ms_ep_desc_subtype, { "Subtype", "usbaudio.ms_ep_subtype", FT_UINT8, |