diff options
author | Martin Kaiser <wireshark@kaiser.cx> | 2015-03-21 09:00:51 +0100 |
---|---|---|
committer | Martin Kaiser <wireshark@kaiser.cx> | 2015-03-29 15:54:21 +0000 |
commit | e91d070665dbd1e973723ee1933da115fce41e82 (patch) | |
tree | a731ec1e5d9a3ebc798296b089cf45a3201507af /epan/dissectors/packet-usb-ccid.c | |
parent | 7861fb3b6b892f4e975eee1eb51383f688db6636 (diff) |
smart card dev class descriptor: use a bit field for the supported protocols
Change-Id: Icf1d71f0aa90ed418264cd4f349e2a514f1ae2f9
Reviewed-on: https://code.wireshark.org/review/7847
Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
Diffstat (limited to 'epan/dissectors/packet-usb-ccid.c')
-rw-r--r-- | epan/dissectors/packet-usb-ccid.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/epan/dissectors/packet-usb-ccid.c b/epan/dissectors/packet-usb-ccid.c index 609615bd76..93ff1d932d 100644 --- a/epan/dissectors/packet-usb-ccid.c +++ b/epan/dissectors/packet-usb-ccid.c @@ -54,6 +54,8 @@ static int hf_ccid_bVoltageSupport18 = -1; static int hf_ccid_bVoltageSupport30 = -1; static int hf_ccid_bVoltageSupport50 = -1; static int hf_ccid_dwProtocols = -1; +static int hf_ccid_dwProtocols_t0 = -1; +static int hf_ccid_dwProtocols_t1 = -1; static int hf_ccid_dwDefaultClock = -1; static int hf_ccid_dwMaximumClock = -1; static int hf_ccid_bNumClockSupported = -1; @@ -88,6 +90,12 @@ static const int *bVoltageLevel_fields[] = { NULL }; +static const int *dwProtocols_fields[] = { + &hf_ccid_dwProtocols_t0, + &hf_ccid_dwProtocols_t1, + NULL +}; + static const int *bFeatures_fields[] = { /* XXX - add the missing components */ &hf_ccid_dwFeatures_autoIccActivation, @@ -237,6 +245,7 @@ static const value_string ccid_proto_structs_vals[] = { static gint ett_ccid = -1; static gint ett_ccid_desc = -1; static gint ett_ccid_voltage_level = -1; +static gint ett_ccid_protocols = -1; static gint ett_ccid_features = -1; static gint ett_ccid_lcd_layout = -1; static gint ett_ccid_pin_support = -1; @@ -296,9 +305,9 @@ dissect_usb_ccid_descriptor(tvbuff_t *tvb, packet_info *pinfo _U_, ENC_LITTLE_ENDIAN); offset++; - /* XXX - convert into a bitmask */ - proto_tree_add_item(desc_tree, hf_ccid_dwProtocols, tvb, - offset, 4, ENC_LITTLE_ENDIAN); + proto_tree_add_bitmask(desc_tree, tvb, offset, + hf_ccid_dwProtocols, ett_ccid_protocols, dwProtocols_fields, + ENC_LITTLE_ENDIAN); offset += 4; freq_item = proto_tree_add_item(desc_tree, hf_ccid_dwDefaultClock, tvb, @@ -616,6 +625,12 @@ proto_register_ccid(void) {&hf_ccid_dwProtocols, { "dwProtocols", "usbccid.dwProtocols", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }}, + {&hf_ccid_dwProtocols_t0, + { "T=0", "usbccid.dwProtocols.t0", FT_BOOLEAN, 32, + TFS(&tfs_supported_not_supported), 0x01, NULL, HFILL }}, + {&hf_ccid_dwProtocols_t1, + { "T=1", "usbccid.dwProtocols.t1", FT_BOOLEAN, 32, + TFS(&tfs_supported_not_supported), 0x02, NULL, HFILL }}, {&hf_ccid_dwDefaultClock, { "default clock frequency", "usbccid.dwDefaultClock", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, @@ -698,6 +713,7 @@ proto_register_ccid(void) &ett_ccid, &ett_ccid_desc, &ett_ccid_voltage_level, + &ett_ccid_protocols, &ett_ccid_features, &ett_ccid_lcd_layout, &ett_ccid_pin_support |