aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Moń <desowin@gmail.com>2019-05-12 17:06:08 +0200
committerAnders Broman <a.broman58@gmail.com>2019-05-13 07:19:17 +0000
commit858fae9f1def064a6c688319e01fc213d05ff581 (patch)
tree8153174464fb50cf66859a477ee4a4e43f03cf19
parente7c0855375676119e334078adb8e2b29d4d59aea (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.c58
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,