Decoding error ITS CPM version 2.1.1
Summary
Decoding a CPM (version 2.1.1, ETSI TS 103 324) sent from a Keysight WaveBee Plus fails. There seems to be a difference between the ASN.1 files used.
If you compare the ASN.1 files used by Wireshark with the original as published by ETSI, you will find manual adjustments made by Wireshark. This may be the reason for the incompatibility. See for example
- https://gitlab.com/wireshark/wireshark/-/blob/master/epan/dissectors/asn1/its/CPM-PDU-Descriptions.asn#L22-40
- https://gitlab.com/wireshark/wireshark/-/blob/master/epan/dissectors/asn1/its/CPM-PDU-Descriptions.asn#L95-100
Btw. I did not check the underlying CDD Release 2 ASN.1 files for changes.
Sample capture file
cpm_capture_with_ethernet_header.pcap
Steps to reproduce
Load the provided pcap file into Wireshark.
What is the current bug behavior?
Decoding of CPM message fails.
What is the expected correct behavior?
Correct encoded CPM message. E.g. decoded message looks like this (first message in pcap file):
cpm:
header:
protocol_version:
value: 2
message_id:
value: 14
station_id:
value: 145140961
payload:
management_container:
reference_time:
value: 61.984000
reference_position:
latitude:
available: 1
value: 52.310795
longitude:
available: 1
value: 10.537850
position_confidence_ellipse:
semi_major_confidence:
available: 0
value: 0.000000
semi_minor_confidence:
available: 0
value: 0.000000
semi_major_orientation:
available: 0
value: 0.000000
altitude:
altitude_value:
available: 0
value: 0.000000
altitude_confidence: 15
cpm_containers:
originating_container_type: 1
originating_container.originating_rsu_container:
map_reference:
map_reference_type: 1
map_reference.intersection:
id:
value: 1
perceived_object_container:
number_of_perceived_objects:
value: 5
perceived_objects[0]:
perceived_object:
object_id:
value: 52
measurement_delta_time:
value: -0.232000
position:
x_coordinate:
value:
value: 14.990000
confidence:
available: 0
value: 0.000000
y_coordinate:
value:
value: -3.750000
confidence:
available: 0
value: 0.000000
z_coordinate:
value:
value: 0.000000
confidence:
available: 0
value: 0.000000
velocity:
velocity_3d_with_confidence_type: 1
velocity_3d_with_confidence.cartesian_velocity:
x_velocity:
value:
available: 1
value: -10.040000
confidence:
available: 0
value: 0.000000
y_velocity:
value:
available: 1
value: -0.400000
confidence:
available: 0
value: 0.000000
angles:
z_angle:
value:
available: 1
value: 182.300000
confidence:
available: 0
value: 0.000000
object_dimension_y:
value:
available: 1
value: 4.600000
confidence:
available: 0
value: 0.000000
object_dimension_x:
value:
available: 1
value: 1.800000
confidence:
available: 0
value: 0.000000
object_age:
value: 0.001000
object_perception_quality:
value: 9
sensor_id_list[0]:
identifier_1b:
value: 1
classification[0]:
object_class_with_confidence:
object_class:
object_class_type: 0
object_class.vehicle_sub_class:
value: 5
confidence:
available: 0
value: 0
perceived_objects[1]:
perceived_object:
object_id:
value: 53
measurement_delta_time:
value: -0.232000
position:
x_coordinate:
value:
value: 32.070000
confidence:
available: 0
value: 0.000000
y_coordinate:
value:
value: -1.400000
confidence:
available: 0
value: 0.000000
z_coordinate:
value:
value: 0.000000
confidence:
available: 0
value: 0.000000
velocity:
velocity_3d_with_confidence_type: 1
velocity_3d_with_confidence.cartesian_velocity:
x_velocity:
value:
available: 1
value: -16.040000
confidence:
available: 0
value: 0.000000
y_velocity:
value:
available: 1
value: -0.160000
confidence:
available: 0
value: 0.000000
angles:
z_angle:
value:
available: 1
value: 180.600000
confidence:
available: 0
value: 0.000000
object_dimension_y:
value:
available: 1
value: 4.600000
confidence:
available: 0
value: 0.000000
object_dimension_x:
value:
available: 1
value: 1.800000
confidence:
available: 0
value: 0.000000
object_age:
value: 0.001000
object_perception_quality:
value: 9
sensor_id_list[0]:
identifier_1b:
value: 1
classification[0]:
object_class_with_confidence:
object_class:
object_class_type: 0
object_class.vehicle_sub_class:
value: 5
confidence:
available: 0
value: 0
perceived_objects[2]:
perceived_object:
object_id:
value: 54
measurement_delta_time:
value: -0.232000
position:
x_coordinate:
value:
value: 75.050000
confidence:
available: 0
value: 0.000000
y_coordinate:
value:
value: -0.290000
confidence:
available: 0
value: 0.000000
z_coordinate:
value:
value: 0.000000
confidence:
available: 0
value: 0.000000
velocity:
velocity_3d_with_confidence_type: 1
velocity_3d_with_confidence.cartesian_velocity:
x_velocity:
value:
available: 1
value: -10.000000
confidence:
available: 0
value: 0.000000
y_velocity:
value:
available: 1
value: -0.310000
confidence:
available: 0
value: 0.000000
angles:
z_angle:
value:
available: 1
value: 181.800000
confidence:
available: 0
value: 0.000000
object_dimension_y:
value:
available: 1
value: 4.600000
confidence:
available: 0
value: 0.000000
object_dimension_x:
value:
available: 1
value: 1.800000
confidence:
available: 0
value: 0.000000
object_age:
value: 0.001000
object_perception_quality:
value: 8
sensor_id_list[0]:
identifier_1b:
value: 1
classification[0]:
object_class_with_confidence:
object_class:
object_class_type: 0
object_class.vehicle_sub_class:
value: 5
confidence:
available: 0
value: 0
perceived_objects[3]:
perceived_object:
object_id:
value: 88
measurement_delta_time:
value: -0.232000
position:
x_coordinate:
value:
value: 3.120000
confidence:
available: 0
value: 0.000000
y_coordinate:
value:
value: -55.390000
confidence:
available: 0
value: 0.000000
z_coordinate:
value:
value: 0.000000
confidence:
available: 0
value: 0.000000
velocity:
velocity_3d_with_confidence_type: 1
velocity_3d_with_confidence.cartesian_velocity:
x_velocity:
value:
available: 1
value: 1.140000
confidence:
available: 0
value: 0.000000
y_velocity:
value:
available: 1
value: -16.120000
confidence:
available: 0
value: 0.000000
angles:
z_angle:
value:
available: 1
value: 274.000000
confidence:
available: 0
value: 0.000000
object_dimension_y:
value:
available: 1
value: 4.600000
confidence:
available: 0
value: 0.000000
object_dimension_x:
value:
available: 1
value: 1.800000
confidence:
available: 0
value: 0.000000
object_age:
value: 0.001000
object_perception_quality:
value: 9
sensor_id_list[0]:
identifier_1b:
value: 2
classification[0]:
object_class_with_confidence:
object_class:
object_class_type: 0
object_class.vehicle_sub_class:
value: 5
confidence:
available: 0
value: 0
perceived_objects[4]:
perceived_object:
object_id:
value: 87
measurement_delta_time:
value: -0.232000
position:
x_coordinate:
value:
value: 5.630000
confidence:
available: 0
value: 0.000000
y_coordinate:
value:
value: -54.580000
confidence:
available: 0
value: 0.000000
z_coordinate:
value:
value: 0.000000
confidence:
available: 0
value: 0.000000
velocity:
velocity_3d_with_confidence_type: 1
velocity_3d_with_confidence.cartesian_velocity:
x_velocity:
value:
available: 1
value: 0.720000
confidence:
available: 0
value: 0.000000
y_velocity:
value:
available: 1
value: -10.060000
confidence:
available: 0
value: 0.000000
angles:
z_angle:
value:
available: 1
value: 274.100000
confidence:
available: 0
value: 0.000000
object_dimension_y:
value:
available: 1
value: 4.600000
confidence:
available: 0
value: 0.000000
object_dimension_x:
value:
available: 1
value: 1.800000
confidence:
available: 0
value: 0.000000
object_age:
value: 0.001000
object_perception_quality:
value: 9
sensor_id_list[0]:
identifier_1b:
value: 2
classification[0]:
object_class_with_confidence:
object_class:
object_class_type: 0
object_class.vehicle_sub_class:
value: 5
confidence:
available: 0
value: 0
Build information
Version 4.2.5 (v4.2.5-0-g4aa814ac25a1).
Compiled (64-bit) using Microsoft Visual Studio 2022 (VC++ 14.37, build 32822),
with GLib 2.78.0, with Qt 6.5.3, with libpcap, with zlib 1.3.0, with PCRE2, with
Lua 5.2.4 (with UfW patches), with GnuTLS 3.8.4 and PKCS #11 support, with
Gcrypt 1.10.2-unknown, with Kerberos (MIT), with MaxMind, with nghttp2 1.61.0,
with nghttp3 1.0.0, with brotli, with LZ4, with Zstandard, with Snappy, with
libxml2 2.11.5, with libsmi 0.5.0, with QtMultimedia, with automatic updates
using WinSparkle 0.8.0, with AirPcap, with Minizip, with binary plugins.
Running on 64-bit Windows 10 (22H2), build 19045, with 11th Gen Intel(R)
Core(TM) i7-11800H @ 2.30GHz (with SSE4.2), with 32431 MB of physical memory,
with GLib 2.78.0, with Qt 6.5.3, with Npcap version 1.71, based on libpcap
version 1.10.2-PRE-GIT, with PCRE2 10.42 2022-12-11, with c-ares 1.27.0, with
GnuTLS 3.8.4, with Gcrypt 1.10.2-unknown, with nghttp2 1.61.0, with nghttp3
1.0.0, with brotli 1.0.9, with LZ4 1.9.3, with Zstandard 1.5.2, without AirPcap,
with light display mode, with HiDPI, with QPA plugin "windows", with
LC_TYPE=German_Germany.utf8, binary plugins supported.
Edited by Björn Gernert