aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1
diff options
context:
space:
mode:
authorTomas Kukosa <kukosa@herman.cz>2021-08-16 07:20:58 +0200
committerWireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2021-08-25 16:29:23 +0000
commit522414a0915ff07f395a6227c18f5d6febcc5808 (patch)
treef4eca1f15618be77094ff1b68ccaa6848dc06d6e /epan/dissectors/asn1
parent09a993da39976856e616ad7911a3ac72e5abfe6c (diff)
ITS: use custom value format for DSRC element DeltaTime
Diffstat (limited to 'epan/dissectors/asn1')
-rw-r--r--epan/dissectors/asn1/its/its.cnf1
-rw-r--r--epan/dissectors/asn1/its/packet-its-template.c16
2 files changed, 17 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/its/its.cnf b/epan/dissectors/asn1/its/its.cnf
index c2c129aa18..e789332205 100644
--- a/epan/dissectors/asn1/its/its.cnf
+++ b/epan/dissectors/asn1/its/its.cnf
@@ -315,6 +315,7 @@ TimeIntervalConfidence STRINGS=VALS(dsrc_TimeIntervalConfidence_val
Velocity DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(dsrc_velocity_fmt)
Angle DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(dsrc_angle_fmt)
HeadingDSRC DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(dsrc_angle_fmt)
+DeltaTime DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(dsrc_delta_time_fmt)
#.END
#.FIELD_ATTR
diff --git a/epan/dissectors/asn1/its/packet-its-template.c b/epan/dissectors/asn1/its/packet-its-template.c
index d6f0aad4f4..afab704493 100644
--- a/epan/dissectors/asn1/its/packet-its-template.c
+++ b/epan/dissectors/asn1/its/packet-its-template.c
@@ -644,6 +644,22 @@ dsrc_angle_fmt(gchar *s, guint32 v)
g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f° (%d)", v * 0.0125, v);
}
+static void
+dsrc_delta_time_fmt(gchar *s, guint32 v)
+{
+ gint32 dt = (gint32)v;
+ if (dt == -122) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "unknown(%d)", dt);
+ } else if (dt == -121) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "moreThanMinus20Minutes(%d)", dt);
+ } else if (dt == 121) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "moreThanPlus20Minutes(%d)", dt);
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%s%d:%02u (%d)",
+ (dt < 0) ? "-" : "", abs(dt) / 6, abs(dt) % 6 * 10, dt);
+ }
+}
+
static int
dissect_its_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{