epan/dissectors/pidl/ C99 drsuapi
[wireshark-sm.git] / epan / dissectors / packet-its.c
blob3028d463f30cde74ef4bd53aa480fba4b0c0a9bc
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-its.c */
4 /* asn2wrs.py -q -L -o its -c ./its.cnf -s ./packet-its-template -D . -O ../.. ETSI-ITS-CDD.asn ITS-ContainerV1.asn ISO_TS_14816.asn ISO_TS_14906_Application.asn ISO_TS_19091.asn GDD.asn ISO19321IVIv2.asn ETSI_TS_103301.asn CAMv1.asn CAM-PDU-Descriptions.asn DENMv1.asn DENM-PDU-Descriptions.asn TIS_TPG_Transactions_Descriptions.asn EVCSN-PDU-Descriptions.asn EV-RSR-PDU-Descriptions.asn CPM-OriginatingStationContainers.asn CPM-PDU-Descriptionsv1.asn CPM-PDU-Descriptions.asn CPM-PerceivedObjectContainer.asn CPM-PerceptionRegionContainer.asn CPM-SensorInformationContainer.asn VAM-PDU-Descriptions.asn IMZM-PDU-Descriptions.asn */
6 /* packet-its-template.c
8 * Intelligent Transport Systems Applications dissectors
9 * Coyright 2018, C. Guerber <cguerber@yahoo.com>
11 * Wireshark - Network traffic analyzer
12 * By Gerald Combs <gerald@wireshark.org>
13 * Copyright 1998 Gerald Combs
15 * SPDX-License-Identifier: GPL-2.0-or-later
20 * Implemented:
21 * CA (CAM) ETSI EN 302 637-2 V1.4.1 (2019-01)
22 * DEN (DENM) ETSI EN 302 637-3 V1.3.0 (2018-08)
23 * RLT (MAPEM) ETSI TS 103 301 V1.2.1 (2018-08)
24 * TLM (SPATEM) ETSI TS 103 301 V1.2.1 (2018-08)
25 * IVI (IVIM) ETSI TS 103 301 V1.2.1 (2018-08)
26 * TLC (SREM) ETSI TS 103 301 V1.2.1 (2018-08)
27 * TLC (SSEM) ETSI TS 103 301 V1.2.1 (2018-08)
28 * EVCSN POI (EVCSN POI message) ETSI TS 101 556-1
29 * TPG (TRM, TCM, VDRM, VDPM, EOFM) ETSI TS 101 556-2
30 * Charging (EV-RSR, SRM, SCM) ETSI TS 101 556-3
31 * GPC (RTCMEM) ETSI TS 103 301
32 * VA (VAM) ETSI TS 103 300-3 V2.2.1 (2023-02)
34 * Not supported:
35 * SA (SAEM) ETSI TS 102 890-1
36 * CTL (CTLM) ETSI TS 102 941
37 * CRL (CRLM) ETSI TS 102 941
38 * Certificate request ETSI TS 102 941
39 * MCD (MCDM) ETSI TS 103 152
41 #include "config.h"
43 #include <math.h>
44 #include <epan/packet.h>
45 #include <epan/expert.h>
46 #include <epan/decode_as.h>
47 #include <epan/proto_data.h>
48 #include <epan/exceptions.h>
49 #include <epan/conversation.h>
50 #include <epan/tap.h>
51 #include <wsutil/utf8_entities.h>
52 #include <wsutil/array.h>
54 #include "packet-ber.h"
55 #include "packet-per.h"
57 #include "packet-its.h"
58 #include "packet-ieee1609dot2.h"
61 * Well Known Ports definitions as per:
63 * ETSI TS 103 248 v1.2.1 (2018-08)
64 * Intelligent Transport Systems (ITS);
65 * GeoNetworking;
66 * Port Numbers for the Basic Transport Protocol (BTP)
68 * BTP port Facilities service Related standard
69 * number or Application
70 * values
71 * 2001 CA (CAM) ETSI EN 302 637-2 V1.4.1 (2019-01)
72 * 2002 DEN (DENM) ETSI EN 302 637-3
73 * 2003 RLT (MAPEM) ETSI TS 103 301 V1.2.1 (2018-08)
74 * 2004 TLM (SPATEM) ETSI TS 103 301 V1.2.1 (2018-08)
75 * 2005 SA (SAEM) ETSI TS 102 890-1
76 * 2006 IVI (IVIM) ETSI TS 103 301 V1.2.1 (2018-08)
77 * 2007 TLC (SREM) ETSI TS 103 301 V1.2.1 (2018-08)
78 * 2008 TLC (SSEM) ETSI TS 103 301 V1.2.1 (2018-08)
79 * 2009 Allocated Allocated for "Intelligent Transport
80 * System (ITS); Vehicular Communications;
81 * Basic Set of Applications; Specification
82 * of the Collective Perception Service"
83 * 2010 EVCSN POI (EVCSN POI ETSI TS 101 556-1
84 * message)
85 * 2011 TPG (TRM, TCM, VDRM, ETSI TS 101 556-2
86 * VDPM, EOFM)
87 * 2012 Charging (EV-RSR, ETSI TS 101 556-3
88 * SRM, SCM)
89 * 2013 GPC (RTCMEM) ETSI TS 103 301 V1.2.1 (2018-08)
90 * 2014 CTL (CTLM) ETSI TS 102 941
91 * 2015 CRL (CRLM) ETSI TS 102 941
92 * 2016 Certificate request ETSI TS 102 941
93 * 2017 MCD (MCDM) ETSI TS 103 152
94 * 2018 VA (VAM) ETSI TS 103 300-3 V2.2.1 (2023-02)
97 // Applications Well Known Ports
98 #define ITS_WKP_CA 2001
99 #define ITS_WKP_DEN 2002
100 #define ITS_WKP_RLT 2003
101 #define ITS_WKP_TLM 2004
102 #define ITS_WKP_SA 2005
103 #define ITS_WKP_IVI 2006
104 #define ITS_WKP_TLC_SREM 2007
105 #define ITS_WKP_TLC_SSEM 2008
106 #define ITS_WKP_CPS 2009
107 #define ITS_WKP_EVCSN 2010
108 #define ITS_WKP_TPG 2011
109 #define ITS_WKP_CHARGING 2012
110 #define ITS_WKP_GPC 2013
111 #define ITS_WKP_CTL 2014
112 #define ITS_WKP_CRL 2015
113 #define ITS_WKP_CERTIF_REQ 2016
114 #define ITS_WKP_MCD 2017
115 #define ITS_WKP_VA 2018
118 * Prototypes
120 void proto_reg_handoff_its(void);
121 void proto_register_its(void);
123 static dissector_handle_t its_handle;
125 static expert_field ei_its_no_sub_dis;
127 // TAP
128 static int its_tap;
130 // Protocols
131 static int proto_its;
132 static int proto_its_denm;
133 static int proto_its_denmv1;
134 static int proto_its_cam;
135 static int proto_its_camv1;
136 static int proto_its_evcsn;
137 static int proto_its_evrsr;
138 static int proto_its_ivimv1;
139 static int proto_its_ivim;
140 static int proto_its_tistpg;
141 static int proto_its_ssem;
142 static int proto_its_srem;
143 static int proto_its_rtcmemv1;
144 static int proto_its_rtcmem;
145 static int proto_its_mapemv1;
146 static int proto_its_mapem;
147 static int proto_its_spatemv1;
148 static int proto_its_spatem;
149 static int proto_its_cpmv1;
150 static int proto_its_cpm;
151 static int proto_its_imzm;
152 static int proto_its_vam;
153 static int proto_addgrpc;
156 * DENM SSP
158 static int hf_denmssp_version;
159 static int hf_denmssp_flags;
160 static int hf_denmssp_trafficCondition;
161 static int hf_denmssp_accident;
162 static int hf_denmssp_roadworks;
163 static int hf_denmssp_adverseWeatherConditionAdhesion;
164 static int hf_denmssp_hazardousLocationSurfaceCondition;
165 static int hf_denmssp_hazardousLocationObstacleOnTheRoad;
166 static int hf_denmssp_hazardousLocationAnimalOnTheRoad;
167 static int hf_denmssp_humanPresenceOnTheRoad;
168 static int hf_denmssp_wrongWayDriving;
169 static int hf_denmssp_rescueAndRecoveryWorkInProgress;
170 static int hf_denmssp_ExtremeWeatherCondition;
171 static int hf_denmssp_adverseWeatherConditionVisibility;
172 static int hf_denmssp_adverseWeatherConditionPrecipitation;
173 static int hf_denmssp_slowVehicle;
174 static int hf_denmssp_dangerousEndOfQueue;
175 static int hf_denmssp_vehicleBreakdown;
176 static int hf_denmssp_postCrash;
177 static int hf_denmssp_humanProblem;
178 static int hf_denmssp_stationaryVehicle;
179 static int hf_denmssp_emergencyVehicleApproaching;
180 static int hf_denmssp_hazardousLocationDangerousCurve;
181 static int hf_denmssp_collisionRisk;
182 static int hf_denmssp_signalViolation;
183 static int hf_denmssp_dangerousSituation;
186 * CAM SSP
188 static int hf_camssp_version;
189 static int hf_camssp_flags;
190 static int hf_camssp_cenDsrcTollingZone;
191 static int hf_camssp_publicTransport;
192 static int hf_camssp_specialTransport;
193 static int hf_camssp_dangerousGoods;
194 static int hf_camssp_roadwork;
195 static int hf_camssp_rescue;
196 static int hf_camssp_emergency;
197 static int hf_camssp_safetyCar;
198 static int hf_camssp_closedLanes;
199 static int hf_camssp_requestForRightOfWay;
200 static int hf_camssp_requestForFreeCrossingAtATrafficLight;
201 static int hf_camssp_noPassing;
202 static int hf_camssp_noPassingForTrucks;
203 static int hf_camssp_speedLimit;
204 static int hf_camssp_reserved;
206 static int ett_denmssp_flags;
207 static int ett_camssp_flags;
209 // Subdissectors
210 static dissector_table_t its_version_subdissector_table;
211 static dissector_table_t its_msgid_subdissector_table;
212 static dissector_table_t regionid_subdissector_table;
213 static dissector_table_t cpmcontainer_subdissector_table;
214 static dissector_table_t cam_pt_activation_table;
216 typedef struct its_private_data {
217 enum regext_type_enum type;
218 uint32_t region_id;
219 uint32_t cause_code;
220 } its_private_data_t;
222 typedef struct its_pt_activation_data {
223 uint32_t type;
224 tvbuff_t *data;
225 } its_pt_activation_data_t;
227 static its_header_t*
228 its_get_private_data(packet_info* pinfo)
230 its_header_t* its_hdr = (its_header_t*)p_get_proto_data(pinfo->pool, pinfo, proto_its, 0);
231 if (!its_hdr) {
232 its_hdr = wmem_new0(pinfo->pool, its_header_t);
233 p_add_proto_data(pinfo->pool, pinfo, proto_its, 0, its_hdr);
235 return its_hdr;
238 // Specific dissector for content of open type for regional extensions
239 static int dissect_regextval_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
241 its_private_data_t *re = (its_private_data_t*)data;
242 // XXX What to do when region_id = noRegion? Test length is zero?
243 if (!dissector_try_uint_with_data(regionid_subdissector_table, ((uint32_t) re->region_id<<16) + (uint32_t) re->type, tvb, pinfo, tree, false, NULL))
244 call_data_dissector(tvb, pinfo, tree);
245 return tvb_captured_length(tvb);
248 // Specific dissector for content of open type for regional extensions
249 static int dissect_cpmcontainers_pdu(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data _U_)
251 // XXX What to do when region_id = noRegion? Test length is zero?
252 if (!dissector_try_uint_with_data(cpmcontainer_subdissector_table, its_get_private_data(pinfo)->CpmContainerId, tvb, pinfo, tree, false, NULL))
253 call_data_dissector(tvb, pinfo, tree);
254 return tvb_captured_length(tvb);
260 static int dissect_denmssp_pdu(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
262 static int * const denmssp_flags[] = {
263 &hf_denmssp_trafficCondition,
264 &hf_denmssp_accident,
265 &hf_denmssp_roadworks,
266 &hf_denmssp_adverseWeatherConditionAdhesion,
267 &hf_denmssp_hazardousLocationSurfaceCondition,
268 &hf_denmssp_hazardousLocationObstacleOnTheRoad,
269 &hf_denmssp_hazardousLocationAnimalOnTheRoad,
270 &hf_denmssp_humanPresenceOnTheRoad,
271 &hf_denmssp_wrongWayDriving,
272 &hf_denmssp_rescueAndRecoveryWorkInProgress,
273 &hf_denmssp_ExtremeWeatherCondition,
274 &hf_denmssp_adverseWeatherConditionVisibility,
275 &hf_denmssp_adverseWeatherConditionPrecipitation,
276 &hf_denmssp_slowVehicle,
277 &hf_denmssp_dangerousEndOfQueue,
278 &hf_denmssp_vehicleBreakdown,
279 &hf_denmssp_postCrash,
280 &hf_denmssp_humanProblem,
281 &hf_denmssp_stationaryVehicle,
282 &hf_denmssp_emergencyVehicleApproaching,
283 &hf_denmssp_hazardousLocationDangerousCurve,
284 &hf_denmssp_collisionRisk,
285 &hf_denmssp_signalViolation,
286 &hf_denmssp_dangerousSituation,
287 NULL
290 uint32_t version;
292 proto_tree_add_item_ret_uint(tree, hf_denmssp_version, tvb, 0, 1, ENC_BIG_ENDIAN, &version);
293 if (version == 1) {
294 proto_tree_add_bitmask(tree, tvb, 1, hf_denmssp_flags, ett_denmssp_flags, denmssp_flags, ENC_BIG_ENDIAN);
296 return tvb_reported_length(tvb);
299 static int dissect_camssp_pdu(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
301 static int * const camssp_flags[] = {
302 &hf_camssp_cenDsrcTollingZone,
303 &hf_camssp_publicTransport,
304 &hf_camssp_specialTransport,
305 &hf_camssp_dangerousGoods,
306 &hf_camssp_roadwork,
307 &hf_camssp_rescue,
308 &hf_camssp_emergency,
309 &hf_camssp_safetyCar,
310 &hf_camssp_closedLanes,
311 &hf_camssp_requestForRightOfWay,
312 &hf_camssp_requestForFreeCrossingAtATrafficLight,
313 &hf_camssp_noPassing,
314 &hf_camssp_noPassingForTrucks,
315 &hf_camssp_speedLimit,
316 &hf_camssp_reserved,
317 NULL
320 uint32_t version;
322 proto_tree_add_item_ret_uint(tree, hf_camssp_version, tvb, 0, 1, ENC_BIG_ENDIAN, &version);
323 if (version == 1) {
324 proto_tree_add_bitmask(tree, tvb, 1, hf_camssp_flags, ett_camssp_flags, camssp_flags, ENC_BIG_ENDIAN);
326 return tvb_reported_length(tvb);
329 // Generated by asn2wrs
331 /* --- Module ETSI-ITS-CDD --- --- --- */
333 static int hf_its_its_ItsPduHeader_PDU; /* ItsPduHeader */
334 static int hf_its_polarAcceleration; /* AccelerationPolarWithZ */
335 static int hf_its_cartesianAcceleration; /* AccelerationCartesian */
336 static int hf_its_accelerationMagnitude; /* AccelerationMagnitude */
337 static int hf_its_accelerationDirection; /* CartesianAngle */
338 static int hf_its_zAcceleration; /* AccelerationComponent */
339 static int hf_its_xAcceleration; /* AccelerationComponent */
340 static int hf_its_yAcceleration; /* AccelerationComponent */
341 static int hf_its_value; /* AccelerationValue */
342 static int hf_its_confidence; /* AccelerationConfidence */
343 static int hf_its_accelOrDecel; /* AccelerationChange */
344 static int hf_its_actionDeltaTime; /* DeltaTimeTenthOfSecond */
345 static int hf_its_accelerationMagnitudeValue; /* AccelerationMagnitudeValue */
346 static int hf_its_accelerationConfidence; /* AccelerationConfidence */
347 static int hf_its_originatingStationId; /* StationId */
348 static int hf_its_sequenceNumber; /* SequenceNumber */
349 static int hf_its_originatingStationId_01; /* StationID */
350 static int hf_its_ActionIdList_item; /* ActionId */
351 static int hf_its_altitudeValue; /* AltitudeValue */
352 static int hf_its_altitudeConfidence; /* AltitudeConfidence */
353 static int hf_its_stationType; /* TrafficParticipantType */
354 static int hf_its_referencePosition; /* ReferencePositionWithConfidence */
355 static int hf_its_value_01; /* CartesianAngleValue */
356 static int hf_its_confidence_01; /* AngleConfidence */
357 static int hf_its_value_02; /* CartesianAngularVelocityComponentValue */
358 static int hf_its_confidence_02; /* AngularSpeedConfidence */
359 static int hf_its_value_03; /* CartesianCoordinateLarge */
360 static int hf_its_confidence_03; /* CoordinateConfidence */
361 static int hf_its_xCoordinate; /* CartesianCoordinate */
362 static int hf_its_yCoordinate; /* CartesianCoordinate */
363 static int hf_its_zCoordinate; /* CartesianCoordinate */
364 static int hf_its_xCoordinate_01; /* CartesianCoordinateWithConfidence */
365 static int hf_its_yCoordinate_01; /* CartesianCoordinateWithConfidence */
366 static int hf_its_zCoordinate_01; /* CartesianCoordinateWithConfidence */
367 static int hf_its_causeCode; /* CauseCodeType */
368 static int hf_its_subCauseCode; /* SubCauseCodeType */
369 static int hf_its_reserved0; /* SubCauseCodeType */
370 static int hf_its_trafficCondition1; /* TrafficConditionSubCauseCode */
371 static int hf_its_accident2; /* AccidentSubCauseCode */
372 static int hf_its_roadworks3; /* RoadworksSubCauseCode */
373 static int hf_its_reserved4; /* SubCauseCodeType */
374 static int hf_its_impassability5; /* ImpassabilitySubCauseCode */
375 static int hf_its_adverseWeatherCondition_Adhesion6; /* AdverseWeatherCondition_AdhesionSubCauseCode */
376 static int hf_its_aquaplaning7; /* SubCauseCodeType */
377 static int hf_its_reserved8; /* SubCauseCodeType */
378 static int hf_its_hazardousLocation_SurfaceCondition9; /* HazardousLocation_SurfaceConditionSubCauseCode */
379 static int hf_its_hazardousLocation_ObstacleOnTheRoad10; /* HazardousLocation_ObstacleOnTheRoadSubCauseCode */
380 static int hf_its_hazardousLocation_AnimalOnTheRoad11; /* HazardousLocation_AnimalOnTheRoadSubCauseCode */
381 static int hf_its_humanPresenceOnTheRoad12; /* HumanPresenceOnTheRoadSubCauseCode */
382 static int hf_its_reserved13; /* SubCauseCodeType */
383 static int hf_its_wrongWayDriving14; /* WrongWayDrivingSubCauseCode */
384 static int hf_its_rescueAndRecoveryWorkInProgress15; /* RescueAndRecoveryWorkInProgressSubCauseCode */
385 static int hf_its_reserved16; /* SubCauseCodeType */
386 static int hf_its_adverseWeatherCondition_ExtremeWeatherCondition17; /* AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode */
387 static int hf_its_adverseWeatherCondition_Visibility18; /* AdverseWeatherCondition_VisibilitySubCauseCode */
388 static int hf_its_adverseWeatherCondition_Precipitation19; /* AdverseWeatherCondition_PrecipitationSubCauseCode */
389 static int hf_its_violence20; /* SubCauseCodeType */
390 static int hf_its_reserved21; /* SubCauseCodeType */
391 static int hf_its_reserved22; /* SubCauseCodeType */
392 static int hf_its_reserved23; /* SubCauseCodeType */
393 static int hf_its_reserved24; /* SubCauseCodeType */
394 static int hf_its_reserved25; /* SubCauseCodeType */
395 static int hf_its_slowVehicle26; /* SlowVehicleSubCauseCode */
396 static int hf_its_dangerousEndOfQueue27; /* DangerousEndOfQueueSubCauseCode */
397 static int hf_its_publicTransportVehicleApproaching28; /* SubCauseCodeType */
398 static int hf_its_reserved29; /* SubCauseCodeType */
399 static int hf_its_reserved30; /* SubCauseCodeType */
400 static int hf_its_reserved31; /* SubCauseCodeType */
401 static int hf_its_reserved32; /* SubCauseCodeType */
402 static int hf_its_reserved33; /* SubCauseCodeType */
403 static int hf_its_reserved34; /* SubCauseCodeType */
404 static int hf_its_reserved35; /* SubCauseCodeType */
405 static int hf_its_reserved36; /* SubCauseCodeType */
406 static int hf_its_reserved37; /* SubCauseCodeType */
407 static int hf_its_reserved38; /* SubCauseCodeType */
408 static int hf_its_reserved39; /* SubCauseCodeType */
409 static int hf_its_reserved40; /* SubCauseCodeType */
410 static int hf_its_reserved41; /* SubCauseCodeType */
411 static int hf_its_reserved42; /* SubCauseCodeType */
412 static int hf_its_reserved43; /* SubCauseCodeType */
413 static int hf_its_reserved44; /* SubCauseCodeType */
414 static int hf_its_reserved45; /* SubCauseCodeType */
415 static int hf_its_reserved46; /* SubCauseCodeType */
416 static int hf_its_reserved47; /* SubCauseCodeType */
417 static int hf_its_reserved48; /* SubCauseCodeType */
418 static int hf_its_reserved49; /* SubCauseCodeType */
419 static int hf_its_reserved50; /* SubCauseCodeType */
420 static int hf_its_reserved51; /* SubCauseCodeType */
421 static int hf_its_reserved52; /* SubCauseCodeType */
422 static int hf_its_reserved53; /* SubCauseCodeType */
423 static int hf_its_reserved54; /* SubCauseCodeType */
424 static int hf_its_reserved55; /* SubCauseCodeType */
425 static int hf_its_reserved56; /* SubCauseCodeType */
426 static int hf_its_reserved57; /* SubCauseCodeType */
427 static int hf_its_reserved58; /* SubCauseCodeType */
428 static int hf_its_reserved59; /* SubCauseCodeType */
429 static int hf_its_reserved60; /* SubCauseCodeType */
430 static int hf_its_reserved61; /* SubCauseCodeType */
431 static int hf_its_reserved62; /* SubCauseCodeType */
432 static int hf_its_reserved63; /* SubCauseCodeType */
433 static int hf_its_reserved64; /* SubCauseCodeType */
434 static int hf_its_reserved65; /* SubCauseCodeType */
435 static int hf_its_reserved66; /* SubCauseCodeType */
436 static int hf_its_reserved67; /* SubCauseCodeType */
437 static int hf_its_reserved68; /* SubCauseCodeType */
438 static int hf_its_reserved69; /* SubCauseCodeType */
439 static int hf_its_reserved70; /* SubCauseCodeType */
440 static int hf_its_reserved71; /* SubCauseCodeType */
441 static int hf_its_reserved72; /* SubCauseCodeType */
442 static int hf_its_reserved73; /* SubCauseCodeType */
443 static int hf_its_reserved74; /* SubCauseCodeType */
444 static int hf_its_reserved75; /* SubCauseCodeType */
445 static int hf_its_reserved76; /* SubCauseCodeType */
446 static int hf_its_reserved77; /* SubCauseCodeType */
447 static int hf_its_reserved78; /* SubCauseCodeType */
448 static int hf_its_reserved79; /* SubCauseCodeType */
449 static int hf_its_reserved80; /* SubCauseCodeType */
450 static int hf_its_reserved81; /* SubCauseCodeType */
451 static int hf_its_reserved82; /* SubCauseCodeType */
452 static int hf_its_reserved83; /* SubCauseCodeType */
453 static int hf_its_reserved84; /* SubCauseCodeType */
454 static int hf_its_reserved85; /* SubCauseCodeType */
455 static int hf_its_reserved86; /* SubCauseCodeType */
456 static int hf_its_reserved87; /* SubCauseCodeType */
457 static int hf_its_reserved88; /* SubCauseCodeType */
458 static int hf_its_reserved89; /* SubCauseCodeType */
459 static int hf_its_reserved90; /* SubCauseCodeType */
460 static int hf_its_vehicleBreakdown91; /* VehicleBreakdownSubCauseCode */
461 static int hf_its_postCrash92; /* PostCrashSubCauseCode */
462 static int hf_its_humanProblem93; /* HumanProblemSubCauseCode */
463 static int hf_its_stationaryVehicle94; /* StationaryVehicleSubCauseCode */
464 static int hf_its_emergencyVehicleApproaching95; /* EmergencyVehicleApproachingSubCauseCode */
465 static int hf_its_hazardousLocation_DangerousCurve96; /* HazardousLocation_DangerousCurveSubCauseCode */
466 static int hf_its_collisionRisk97; /* CollisionRiskSubCauseCode */
467 static int hf_its_signalViolation98; /* SignalViolationSubCauseCode */
468 static int hf_its_dangerousSituation99; /* DangerousSituationSubCauseCode */
469 static int hf_its_railwayLevelCrossing100; /* RailwayLevelCrossingSubCauseCode */
470 static int hf_its_reserved101; /* SubCauseCodeType */
471 static int hf_its_reserved102; /* SubCauseCodeType */
472 static int hf_its_reserved103; /* SubCauseCodeType */
473 static int hf_its_reserved104; /* SubCauseCodeType */
474 static int hf_its_reserved105; /* SubCauseCodeType */
475 static int hf_its_reserved106; /* SubCauseCodeType */
476 static int hf_its_reserved107; /* SubCauseCodeType */
477 static int hf_its_reserved108; /* SubCauseCodeType */
478 static int hf_its_reserved109; /* SubCauseCodeType */
479 static int hf_its_reserved110; /* SubCauseCodeType */
480 static int hf_its_reserved111; /* SubCauseCodeType */
481 static int hf_its_reserved112; /* SubCauseCodeType */
482 static int hf_its_reserved113; /* SubCauseCodeType */
483 static int hf_its_reserved114; /* SubCauseCodeType */
484 static int hf_its_reserved115; /* SubCauseCodeType */
485 static int hf_its_reserved116; /* SubCauseCodeType */
486 static int hf_its_reserved117; /* SubCauseCodeType */
487 static int hf_its_reserved118; /* SubCauseCodeType */
488 static int hf_its_reserved119; /* SubCauseCodeType */
489 static int hf_its_reserved120; /* SubCauseCodeType */
490 static int hf_its_reserved121; /* SubCauseCodeType */
491 static int hf_its_reserved122; /* SubCauseCodeType */
492 static int hf_its_reserved123; /* SubCauseCodeType */
493 static int hf_its_reserved124; /* SubCauseCodeType */
494 static int hf_its_reserved125; /* SubCauseCodeType */
495 static int hf_its_reserved126; /* SubCauseCodeType */
496 static int hf_its_reserved127; /* SubCauseCodeType */
497 static int hf_its_reserved128; /* SubCauseCodeType */
498 static int hf_its_ccAndScc; /* CauseCodeChoice */
499 static int hf_its_protectedZoneLatitude; /* Latitude */
500 static int hf_its_protectedZoneLongitude; /* Longitude */
501 static int hf_its_cenDsrcTollingZoneId; /* ProtectedZoneId */
502 static int hf_its_shapeReferencePoint; /* CartesianPosition3d */
503 static int hf_its_radius; /* StandardLength12b */
504 static int hf_its_height; /* StandardLength12b */
505 static int hf_its_innerhardShoulderStatus; /* HardShoulderStatus */
506 static int hf_its_outerhardShoulderStatus; /* HardShoulderStatus */
507 static int hf_its_drivingLaneStatus; /* DrivingLaneStatus */
508 static int hf_its_clusterBreakupReason; /* ClusterBreakupReason */
509 static int hf_its_breakupTime; /* DeltaTimeQuarterSecond */
510 static int hf_its_clusterId; /* Identifier1B */
511 static int hf_its_joinTime; /* DeltaTimeQuarterSecond */
512 static int hf_its_clusterLeaveReason; /* ClusterLeaveReason */
513 static int hf_its_CorrelationColumn_item; /* CorrelationCellValue */
514 static int hf_its_curvatureValue; /* CurvatureValue */
515 static int hf_its_curvatureConfidence; /* CurvatureConfidence */
516 static int hf_its_dangerousGoodsType; /* DangerousGoodsBasic */
517 static int hf_its_unNumber; /* INTEGER_0_9999 */
518 static int hf_its_elevatedTemperature; /* BOOLEAN */
519 static int hf_its_tunnelsRestricted; /* BOOLEAN */
520 static int hf_its_limitedQuantity; /* BOOLEAN */
521 static int hf_its_emergencyActionCode; /* IA5String_SIZE_1_24 */
522 static int hf_its_phoneNumber; /* PhoneNumber */
523 static int hf_its_companyName; /* UTF8String_SIZE_1_24 */
524 static int hf_its_deltaLatitude; /* DeltaLatitude */
525 static int hf_its_deltaLongitude; /* DeltaLongitude */
526 static int hf_its_deltaAltitude; /* DeltaAltitude */
527 static int hf_its_DigitalMap_item; /* ReferencePosition */
528 static int hf_its_semiMajorAxisLength; /* StandardLength12b */
529 static int hf_its_semiMinorAxisLength; /* StandardLength12b */
530 static int hf_its_orientation; /* CartesianAngleValue */
531 static int hf_its_zAngle; /* CartesianAngle */
532 static int hf_its_yAngle; /* CartesianAngle */
533 static int hf_its_xAngle; /* CartesianAngle */
534 static int hf_its_euVehicleCategoryL; /* EuVehicleCategoryL */
535 static int hf_its_euVehicleCategoryM; /* EuVehicleCategoryM */
536 static int hf_its_euVehicleCategoryN; /* EuVehicleCategoryN */
537 static int hf_its_euVehicleCategoryO; /* EuVehicleCategoryO */
538 static int hf_its_euVehicleCategoryT; /* NULL */
539 static int hf_its_euVehicleCategoryG; /* NULL */
540 static int hf_its_EventHistory_item; /* EventPoint */
541 static int hf_its_eventPosition; /* DeltaReferencePosition */
542 static int hf_its_eventDeltaTime; /* PathDeltaTime */
543 static int hf_its_informationQuality; /* InformationQuality */
544 static int hf_its_lanePositionBased; /* LanePositionOptions */
545 static int hf_its_mapBased; /* MapPosition */
546 static int hf_its_confidence_04; /* MetaInformation */
547 static int hf_its_headingValue; /* HeadingValue */
548 static int hf_its_headingConfidence; /* HeadingConfidence */
549 static int hf_its_direction; /* TurningDirection */
550 static int hf_its_centreFrequency; /* INTEGER_1_99999 */
551 static int hf_its_channelWidth; /* INTEGER_0_9999 */
552 static int hf_its_exponent; /* INTEGER_0_15 */
553 static int hf_its_zoneDefinition; /* InterferenceManagementZoneDefinition */
554 static int hf_its_managementInfo; /* InterferenceManagementInfo */
555 static int hf_its_interferenceManagementZoneLatitude; /* Latitude */
556 static int hf_its_interferenceManagementZoneLongitude; /* Longitude */
557 static int hf_its_interferenceManagementZoneId; /* ProtectedZoneId */
558 static int hf_its_interferenceManagementZoneShape; /* Shape */
559 static int hf_its_InterferenceManagementInfo_item; /* InterferenceManagementInfoPerChannel */
560 static int hf_its_interferenceManagementChannel; /* InterferenceManagementChannel */
561 static int hf_its_interferenceManagementZoneType; /* InterferenceManagementZoneType */
562 static int hf_its_interferenceManagementMitigationType; /* MitigationForTechnologies */
563 static int hf_its_expiryTime; /* TimestampIts */
564 static int hf_its_InterferenceManagementZones_item; /* InterferenceManagementZone */
565 static int hf_its_region; /* Identifier2B */
566 static int hf_its_id; /* Identifier2B */
567 static int hf_its_ItineraryPath_item; /* ReferencePosition */
568 static int hf_its_protocolVersion; /* ProtocolVersion */
569 static int hf_its_messageId; /* MessageId */
570 static int hf_its_stationId; /* StationId */
571 static int hf_its_transversalPosition; /* LanePosition */
572 static int hf_its_laneType; /* LaneType */
573 static int hf_its_direction_01; /* Direction */
574 static int hf_its_simplelanePosition; /* LanePosition */
575 static int hf_its_simpleLaneType; /* LaneType */
576 static int hf_its_detailedlanePosition; /* LanePositionAndType */
577 static int hf_its_lanePositionWithLateralDetails; /* LanePositionWithLateralDetails */
578 static int hf_its_trafficIslandPosition; /* TrafficIslandPosition */
579 static int hf_its_lateralAccelerationValue; /* LateralAccelerationValue */
580 static int hf_its_lateralAccelerationConfidence; /* AccelerationConfidence */
581 static int hf_its_longitudinalAccelerationValue; /* LongitudinalAccelerationValue */
582 static int hf_its_longitudinalAccelerationConfidence; /* AccelerationConfidence */
583 static int hf_its_longitudinalLanePositionValue; /* LongitudinalLanePositionValue */
584 static int hf_its_longitudinalLanePositionConfidence; /* LongitudinalLanePositionConfidence */
585 static int hf_its_LowerTriangularPositiveSemidefiniteMatrices_item; /* LowerTriangularPositiveSemidefiniteMatrix */
586 static int hf_its_componentsIncludedIntheMatrix; /* MatrixIncludedComponents */
587 static int hf_its_matrix; /* LowerTriangularPositiveSemidefiniteMatrixColumns */
588 static int hf_its_LowerTriangularPositiveSemidefiniteMatrixColumns_item; /* CorrelationColumn */
589 static int hf_its_mapReference; /* MapReference */
590 static int hf_its_laneId; /* Identifier1B */
591 static int hf_its_connectionId; /* Identifier1B */
592 static int hf_its_longitudinalLanePosition; /* LongitudinalLanePosition */
593 static int hf_its_roadsegment; /* RoadSegmentReferenceId */
594 static int hf_its_intersection; /* IntersectionReferenceId */
595 static int hf_its_mantissa; /* INTEGER_1_100 */
596 static int hf_its_exponent_01; /* INTEGER_M5_2 */
597 static int hf_its_totalMsgNo; /* CardinalNumber3b */
598 static int hf_its_thisMsgNo; /* OrdinalNumber3b */
599 static int hf_its_usedDetectionInformation; /* SensorTypes */
600 static int hf_its_usedStoredInformation; /* StoredInformationType */
601 static int hf_its_confidenceValue; /* ConfidenceLevel */
602 static int hf_its_MitigationForTechnologies_item; /* MitigationPerTechnologyClass */
603 static int hf_its_accessTechnologyClass; /* AccessTechnologyClass */
604 static int hf_its_lowDutyCycle; /* INTEGER_0_10000 */
605 static int hf_its_powerReduction; /* INTEGER_0_30 */
606 static int hf_its_dmcToffLimit; /* INTEGER_0_1200 */
607 static int hf_its_dmcTonLimit; /* INTEGER_0_20 */
608 static int hf_its_vehicleSubClass; /* TrafficParticipantType_CONSTR001 */
609 static int hf_its_vruSubClass; /* VruProfileAndSubprofile */
610 static int hf_its_groupSubClass; /* VruClusterInformation */
611 static int hf_its_otherSubClass; /* OtherSubClass */
612 static int hf_its_ObjectClassDescription_item; /* ObjectClassWithConfidence */
613 static int hf_its_objectClass; /* ObjectClass */
614 static int hf_its_confidence_05; /* ConfidenceLevel */
615 static int hf_its_value_04; /* ObjectDimensionValue */
616 static int hf_its_confidence_06; /* ObjectDimensionConfidence */
617 static int hf_its_Path_item; /* PathPoint */
618 static int hf_its_deltaTimeHighPrecision; /* DeltaTimeTenthOfSecond */
619 static int hf_its_deltaTimeBigRange; /* DeltaTimeTenSeconds */
620 static int hf_its_PathHistory_item; /* PathPoint */
621 static int hf_its_PathPredicted_item; /* PathPointPredicted */
622 static int hf_its_pathPosition; /* DeltaReferencePosition */
623 static int hf_its_pathDeltaTime; /* PathDeltaTime */
624 static int hf_its_horizontalPositionConfidence; /* PosConfidenceEllipse */
625 static int hf_its_pathDeltaTime_01; /* PathDeltaTimeChoice */
626 static int hf_its_symmetricAreaOffset; /* StandardLength9b */
627 static int hf_its_asymmetricAreaOffset; /* StandardLength9b */
628 static int hf_its_objectId; /* Identifier2B */
629 static int hf_its_measurementDeltaTime; /* DeltaTimeMilliSecondSigned */
630 static int hf_its_position; /* CartesianPosition3dWithConfidence */
631 static int hf_its_velocity; /* Velocity3dWithConfidence */
632 static int hf_its_acceleration; /* Acceleration3dWithConfidence */
633 static int hf_its_angles; /* EulerAnglesWithConfidence */
634 static int hf_its_zAngularVelocity; /* CartesianAngularVelocityComponent */
635 static int hf_its_lowerTriangularCorrelationMatrices; /* LowerTriangularPositiveSemidefiniteMatrices */
636 static int hf_its_objectDimensionZ; /* ObjectDimension */
637 static int hf_its_objectDimensionY; /* ObjectDimension */
638 static int hf_its_objectDimensionX; /* ObjectDimension */
639 static int hf_its_objectAge; /* DeltaTimeMilliSecondSigned_0_2047 */
640 static int hf_its_objectPerceptionQuality; /* ObjectPerceptionQuality */
641 static int hf_its_sensorIdList; /* SequenceOfIdentifier1B */
642 static int hf_its_classification; /* ObjectClassDescription */
643 static int hf_its_mapPosition; /* MapPosition */
644 static int hf_its_polygon; /* SequenceOfCartesianPosition3d_SIZE_3_16_ */
645 static int hf_its_semiMajorConfidence; /* SemiAxisLength */
646 static int hf_its_semiMinorConfidence; /* SemiAxisLength */
647 static int hf_its_semiMajorOrientation; /* HeadingValue */
648 static int hf_its_semiMajorAxisLength_01; /* SemiAxisLength */
649 static int hf_its_semiMinorAxisLength_01; /* SemiAxisLength */
650 static int hf_its_semiMajorAxisOrientation; /* Wgs84AngleValue */
651 static int hf_its_PositionOfPillars_item; /* PosPillar */
652 static int hf_its_protectedZoneType; /* ProtectedZoneType */
653 static int hf_its_protectedZoneRadius; /* ProtectedZoneRadius */
654 static int hf_its_protectedZoneId; /* ProtectedZoneId */
655 static int hf_its_ProtectedCommunicationZonesRSU_item; /* ProtectedCommunicationZone */
656 static int hf_its_ptActivationType; /* PtActivationType */
657 static int hf_its_ptActivationData; /* PtActivationData */
658 static int hf_its_range; /* StandardLength12b */
659 static int hf_its_horizontalOpeningAngleStart; /* CartesianAngleValue */
660 static int hf_its_horizontalOpeningAngleEnd; /* CartesianAngleValue */
661 static int hf_its_verticalOpeningAngleStart; /* CartesianAngleValue */
662 static int hf_its_verticalOpeningAngleEnd; /* CartesianAngleValue */
663 static int hf_its_refPointId; /* Identifier1B */
664 static int hf_its_xCoordinate_02; /* CartesianCoordinateSmall */
665 static int hf_its_yCoordinate_02; /* CartesianCoordinateSmall */
666 static int hf_its_zCoordinate_02; /* CartesianCoordinateSmall */
667 static int hf_its_radialShapesList; /* RadialShapesList */
668 static int hf_its_RadialShapesList_item; /* RadialShapeDetails */
669 static int hf_its_semiLength; /* StandardLength12b */
670 static int hf_its_semiBreadth; /* StandardLength12b */
671 static int hf_its_latitude; /* Latitude */
672 static int hf_its_longitude; /* Longitude */
673 static int hf_its_positionConfidenceEllipse; /* PosConfidenceEllipse */
674 static int hf_its_altitude; /* Altitude */
675 static int hf_its_positionConfidenceEllipse_01; /* PositionConfidenceEllipse */
676 static int hf_its_RestrictedTypes_item; /* StationType */
677 static int hf_its_subjectStation; /* StationId */
678 static int hf_its_safeDistanceIndicator; /* SafeDistanceIndicator */
679 static int hf_its_timeToCollision; /* DeltaTimeTenthOfSecond */
680 static int hf_its_SequenceOfCartesianPosition3d_item; /* CartesianPosition3d */
681 static int hf_its_SequenceOfIdentifier1B_item; /* Identifier1B */
682 static int hf_its_SequenceOfSafeDistanceIndication_item; /* SafeDistanceIndication */
683 static int hf_its_SequenceOfTrajectoryInterceptionIndication_item; /* TrajectoryInterceptionIndication */
684 static int hf_its_rectangular; /* RectangularShape */
685 static int hf_its_circular; /* CircularShape */
686 static int hf_its_polygonal; /* PolygonalShape */
687 static int hf_its_elliptical; /* EllipticalShape */
688 static int hf_its_radial; /* RadialShape */
689 static int hf_its_radialShapes; /* RadialShapes */
690 static int hf_its_speedValue; /* SpeedValue */
691 static int hf_its_speedConfidence; /* SpeedConfidence */
692 static int hf_its_lossProbability; /* StabilityLossProbability */
693 static int hf_its_steeringWheelAngleValue; /* SteeringWheelAngleValue */
694 static int hf_its_steeringWheelAngleConfidence; /* SteeringWheelAngleConfidence */
695 static int hf_its_Traces_item; /* Path */
696 static int hf_its_oneSide; /* LanePositionAndType */
697 static int hf_its_otherSide; /* LanePositionAndType */
698 static int hf_its_hitchPointOffset; /* StandardLength1B */
699 static int hf_its_frontOverhang; /* StandardLength1B */
700 static int hf_its_rearOverhang; /* StandardLength1B */
701 static int hf_its_trailerWidth; /* VehicleWidth */
702 static int hf_its_hitchAngle; /* CartesianAngle */
703 static int hf_its_trajectoryInterceptionProbability; /* TrajectoryInterceptionProbability */
704 static int hf_its_trajectoryInterceptionConfidence; /* TrajectoryInterceptionConfidence */
705 static int hf_its_vlnContent; /* INTEGER_0_127 */
706 static int hf_its_vlnExtension; /* Ext1 */
707 static int hf_its_e1Content; /* INTEGER_128_16511 */
708 static int hf_its_e2Extension; /* Ext2 */
709 static int hf_its_e2Content; /* INTEGER_16512_2113663 */
710 static int hf_its_e1Extension; /* Ext3 */
711 static int hf_its_verticalAccelerationValue; /* VerticalAccelerationValue */
712 static int hf_its_verticalAccelerationConfidence; /* AccelerationConfidence */
713 static int hf_its_wMInumber; /* WMInumber */
714 static int hf_its_vDS; /* VDS */
715 static int hf_its_vehicleLengthValue; /* VehicleLengthValue */
716 static int hf_its_vehicleLengthConfidenceIndication; /* VehicleLengthConfidenceIndication */
717 static int hf_its_polarVelocity; /* VelocityPolarWithZ */
718 static int hf_its_cartesianVelocity; /* VelocityCartesian */
719 static int hf_its_xVelocity; /* VelocityComponent */
720 static int hf_its_yVelocity; /* VelocityComponent */
721 static int hf_its_zVelocity; /* VelocityComponent */
722 static int hf_its_value_05; /* VelocityComponentValue */
723 static int hf_its_confidence_07; /* SpeedConfidence */
724 static int hf_its_velocityMagnitude; /* Speed */
725 static int hf_its_velocityDirection; /* CartesianAngle */
726 static int hf_its_clusterBoundingBoxShape; /* Shape */
727 static int hf_its_clusterCardinalitySize; /* CardinalNumber1B */
728 static int hf_its_clusterProfiles; /* VruClusterProfiles */
729 static int hf_its_vehicular; /* ExteriorLights */
730 static int hf_its_vruSpecific; /* VruSpecificExteriorLights */
731 static int hf_its_pedestrian; /* VruSubProfilePedestrian */
732 static int hf_its_bicyclistAndLightVruVehicle; /* VruSubProfileBicyclist */
733 static int hf_its_motorcyclist; /* VruSubProfileMotorcyclist */
734 static int hf_its_animal; /* VruSubProfileAnimal */
735 static int hf_its_value_06; /* Wgs84AngleValue */
736 static int hf_its_confidence_08; /* Wgs84AngleConfidence */
737 static int hf_its_yawRateValue; /* YawRateValue */
738 static int hf_its_yawRateConfidence; /* YawRateConfidence */
739 static int hf_its_distanceToLeftBorder; /* StandardLength9b */
740 static int hf_its_distanceToRightBorder; /* StandardLength9b */
741 /* named bits */
742 static int hf_its_AccelerationControl_brakePedalEngaged;
743 static int hf_its_AccelerationControl_gasPedalEngaged;
744 static int hf_its_AccelerationControl_emergencyBrakeEngaged;
745 static int hf_its_AccelerationControl_collisionWarningEngaged;
746 static int hf_its_AccelerationControl_accEngaged;
747 static int hf_its_AccelerationControl_cruiseControlEngaged;
748 static int hf_its_AccelerationControl_speedLimiterEngaged;
749 static int hf_its_EmergencyPriority_requestForRightOfWay;
750 static int hf_its_EmergencyPriority_requestForFreeCrossingAtATrafficLight;
751 static int hf_its_EnergyStorageType_hydrogenStorage;
752 static int hf_its_EnergyStorageType_electricEnergyStorage;
753 static int hf_its_EnergyStorageType_liquidPropaneGas;
754 static int hf_its_EnergyStorageType_compressedNaturalGas;
755 static int hf_its_EnergyStorageType_diesel;
756 static int hf_its_EnergyStorageType_gasoline;
757 static int hf_its_EnergyStorageType_ammonia;
758 static int hf_its_ExteriorLights_lowBeamHeadlightsOn;
759 static int hf_its_ExteriorLights_highBeamHeadlightsOn;
760 static int hf_its_ExteriorLights_leftTurnSignalOn;
761 static int hf_its_ExteriorLights_rightTurnSignalOn;
762 static int hf_its_ExteriorLights_daytimeRunningLightsOn;
763 static int hf_its_ExteriorLights_reverseLightOn;
764 static int hf_its_ExteriorLights_fogLightOn;
765 static int hf_its_ExteriorLights_parkingLightsOn;
766 static int hf_its_LightBarSirenInUse_lightBarActivated;
767 static int hf_its_LightBarSirenInUse_sirenActivated;
768 static int hf_its_MatrixIncludedComponents_xPosition;
769 static int hf_its_MatrixIncludedComponents_yPosition;
770 static int hf_its_MatrixIncludedComponents_zPosition;
771 static int hf_its_MatrixIncludedComponents_xVelocityOrVelocityMagnitude;
772 static int hf_its_MatrixIncludedComponents_yVelocityOrVelocityDirection;
773 static int hf_its_MatrixIncludedComponents_zSpeed;
774 static int hf_its_MatrixIncludedComponents_xAccelOrAccelMagnitude;
775 static int hf_its_MatrixIncludedComponents_yAccelOrAccelDirection;
776 static int hf_its_MatrixIncludedComponents_zAcceleration;
777 static int hf_its_MatrixIncludedComponents_zAngle;
778 static int hf_its_MatrixIncludedComponents_yAngle;
779 static int hf_its_MatrixIncludedComponents_xAngle;
780 static int hf_its_MatrixIncludedComponents_zAngularVelocity;
781 static int hf_its_PositionOfOccupants_row1LeftOccupied;
782 static int hf_its_PositionOfOccupants_row1RightOccupied;
783 static int hf_its_PositionOfOccupants_row1MidOccupied;
784 static int hf_its_PositionOfOccupants_row1NotDetectable;
785 static int hf_its_PositionOfOccupants_row1NotPresent;
786 static int hf_its_PositionOfOccupants_row2LeftOccupied;
787 static int hf_its_PositionOfOccupants_row2RightOccupied;
788 static int hf_its_PositionOfOccupants_row2MidOccupied;
789 static int hf_its_PositionOfOccupants_row2NotDetectable;
790 static int hf_its_PositionOfOccupants_row2NotPresent;
791 static int hf_its_PositionOfOccupants_row3LeftOccupied;
792 static int hf_its_PositionOfOccupants_row3RightOccupied;
793 static int hf_its_PositionOfOccupants_row3MidOccupied;
794 static int hf_its_PositionOfOccupants_row3NotDetectable;
795 static int hf_its_PositionOfOccupants_row3NotPresent;
796 static int hf_its_PositionOfOccupants_row4LeftOccupied;
797 static int hf_its_PositionOfOccupants_row4RightOccupied;
798 static int hf_its_PositionOfOccupants_row4MidOccupied;
799 static int hf_its_PositionOfOccupants_row4NotDetectable;
800 static int hf_its_PositionOfOccupants_row4NotPresent;
801 static int hf_its_SensorTypes_undefined;
802 static int hf_its_SensorTypes_radar;
803 static int hf_its_SensorTypes_lidar;
804 static int hf_its_SensorTypes_monovideo;
805 static int hf_its_SensorTypes_stereovision;
806 static int hf_its_SensorTypes_nightvision;
807 static int hf_its_SensorTypes_ultrasonic;
808 static int hf_its_SensorTypes_pmd;
809 static int hf_its_SensorTypes_inductionLoop;
810 static int hf_its_SensorTypes_sphericalCamera;
811 static int hf_its_SensorTypes_uwb;
812 static int hf_its_SensorTypes_acoustic;
813 static int hf_its_SensorTypes_localAggregation;
814 static int hf_its_SensorTypes_itsAggregation;
815 static int hf_its_SpecialTransportType_heavyLoad;
816 static int hf_its_SpecialTransportType_excessWidth;
817 static int hf_its_SpecialTransportType_excessLength;
818 static int hf_its_SpecialTransportType_excessHeight;
819 static int hf_its_StoredInformationType_undefined;
820 static int hf_its_StoredInformationType_staticDb;
821 static int hf_its_StoredInformationType_dynamicDb;
822 static int hf_its_StoredInformationType_realTimeDb;
823 static int hf_its_StoredInformationType_map;
824 static int hf_its_VruClusterProfiles_pedestrian;
825 static int hf_its_VruClusterProfiles_bicyclist;
826 static int hf_its_VruClusterProfiles_motorcyclist;
827 static int hf_its_VruClusterProfiles_animal;
828 static int hf_its_VruSpecificExteriorLights_unavailable;
829 static int hf_its_VruSpecificExteriorLights_backFlashLight;
830 static int hf_its_VruSpecificExteriorLights_helmetLight;
831 static int hf_its_VruSpecificExteriorLights_armLight;
832 static int hf_its_VruSpecificExteriorLights_legLight;
833 static int hf_its_VruSpecificExteriorLights_wheelLight;
835 /* --- Module ITS-ContainerV1 --- --- --- */
837 static int hf_itsv1_latitude; /* Latitude */
838 static int hf_itsv1_longitude; /* Longitude */
839 static int hf_itsv1_positionConfidenceEllipse; /* PosConfidenceEllipse */
840 static int hf_itsv1_altitude; /* Altitude */
841 static int hf_itsv1_deltaLatitude; /* DeltaLatitude */
842 static int hf_itsv1_deltaLongitude; /* DeltaLongitude */
843 static int hf_itsv1_deltaAltitude; /* DeltaAltitude */
844 static int hf_itsv1_altitudeValue; /* AltitudeValue */
845 static int hf_itsv1_altitudeConfidence; /* AltitudeConfidence */
846 static int hf_itsv1_semiMajorConfidence; /* SemiAxisLength */
847 static int hf_itsv1_semiMinorConfidence; /* SemiAxisLength */
848 static int hf_itsv1_semiMajorOrientation; /* HeadingValue */
849 static int hf_itsv1_pathPosition; /* DeltaReferencePosition */
850 static int hf_itsv1_pathDeltaTime; /* PathDeltaTime */
851 static int hf_itsv1_ptActivationType; /* PtActivationType */
852 static int hf_itsv1_ptActivationData; /* PtActivationData */
853 static int hf_itsv1_causeCode; /* CauseCodeTypeV1 */
854 static int hf_itsv1_subCauseCode; /* SubCauseCodeTypeV1 */
855 static int hf_itsv1_curvatureValue; /* CurvatureValue */
856 static int hf_itsv1_curvatureConfidence; /* CurvatureConfidence */
857 static int hf_itsv1_headingValue; /* HeadingValue */
858 static int hf_itsv1_headingConfidence; /* HeadingConfidence */
859 static int hf_itsv1_hardShoulderStatus; /* HardShoulderStatus */
860 static int hf_itsv1_drivingLaneStatus; /* DrivingLaneStatus */
861 static int hf_itsv1_speedValue; /* SpeedValue */
862 static int hf_itsv1_speedConfidence; /* SpeedConfidence */
863 static int hf_itsv1_longitudinalAccelerationValue; /* LongitudinalAccelerationValue */
864 static int hf_itsv1_longitudinalAccelerationConfidence; /* AccelerationConfidence */
865 static int hf_itsv1_lateralAccelerationValue; /* LateralAccelerationValue */
866 static int hf_itsv1_lateralAccelerationConfidence; /* AccelerationConfidence */
867 static int hf_itsv1_verticalAccelerationValue; /* VerticalAccelerationValue */
868 static int hf_itsv1_verticalAccelerationConfidence; /* AccelerationConfidence */
869 static int hf_itsv1_dangerousGoodsType; /* DangerousGoodsBasic */
870 static int hf_itsv1_unNumber; /* INTEGER_0_9999 */
871 static int hf_itsv1_elevatedTemperature; /* BOOLEAN */
872 static int hf_itsv1_tunnelsRestricted; /* BOOLEAN */
873 static int hf_itsv1_limitedQuantity; /* BOOLEAN */
874 static int hf_itsv1_emergencyActionCode; /* IA5String_SIZE_1_24 */
875 static int hf_itsv1_phoneNumber; /* IA5String_SIZE_1_24 */
876 static int hf_itsv1_companyName; /* UTF8String_SIZE_1_24 */
877 static int hf_itsv1_wMInumber; /* WMInumber */
878 static int hf_itsv1_vDS; /* VDS */
879 static int hf_itsv1_vehicleLengthValue; /* VehicleLengthValue */
880 static int hf_itsv1_vehicleLengthConfidenceIndication; /* VehicleLengthConfidenceIndication */
881 static int hf_itsv1_PathHistory_item; /* PathPoint */
882 static int hf_itsv1_steeringWheelAngleValue; /* SteeringWheelAngleValue */
883 static int hf_itsv1_steeringWheelAngleConfidence; /* SteeringWheelAngleConfidence */
884 static int hf_itsv1_yawRateValue; /* YawRateValue */
885 static int hf_itsv1_yawRateConfidence; /* YawRateConfidence */
886 static int hf_itsv1_originatingStationID; /* StationID */
887 static int hf_itsv1_sequenceNumber; /* SequenceNumber */
888 static int hf_itsv1_ItineraryPath_item; /* ReferencePosition */
889 static int hf_itsv1_protectedZoneType; /* ProtectedZoneType */
890 static int hf_itsv1_expiryTime; /* TimestampIts */
891 static int hf_itsv1_protectedZoneLatitude; /* Latitude */
892 static int hf_itsv1_protectedZoneLongitude; /* Longitude */
893 static int hf_itsv1_protectedZoneRadius; /* ProtectedZoneRadius */
894 static int hf_itsv1_protectedZoneID; /* ProtectedZoneID */
895 static int hf_itsv1_Traces_item; /* PathHistory */
896 static int hf_itsv1_PositionOfPillars_item; /* PosPillar */
897 static int hf_itsv1_RestrictedTypes_item; /* StationType */
898 static int hf_itsv1_EventHistory_item; /* EventPoint */
899 static int hf_itsv1_eventPosition; /* DeltaReferencePosition */
900 static int hf_itsv1_eventDeltaTime; /* PathDeltaTime */
901 static int hf_itsv1_informationQuality; /* InformationQuality */
902 static int hf_itsv1_ProtectedCommunicationZonesRSU_item; /* ProtectedCommunicationZone */
903 static int hf_itsv1_cenDsrcTollingZoneID; /* CenDsrcTollingZoneID */
904 /* named bits */
905 static int hf_itsv1_AccelerationControl_brakePedalEngaged;
906 static int hf_itsv1_AccelerationControl_gasPedalEngaged;
907 static int hf_itsv1_AccelerationControl_emergencyBrakeEngaged;
908 static int hf_itsv1_AccelerationControl_collisionWarningEngaged;
909 static int hf_itsv1_AccelerationControl_accEngaged;
910 static int hf_itsv1_AccelerationControl_cruiseControlEngaged;
911 static int hf_itsv1_AccelerationControl_speedLimiterEngaged;
912 static int hf_itsv1_DrivingLaneStatus_spare_bit0;
913 static int hf_itsv1_DrivingLaneStatus_outermostLaneClosed;
914 static int hf_itsv1_DrivingLaneStatus_secondLaneFromOutsideClosed;
915 static int hf_itsv1_ExteriorLights_lowBeamHeadlightsOn;
916 static int hf_itsv1_ExteriorLights_highBeamHeadlightsOn;
917 static int hf_itsv1_ExteriorLights_leftTurnSignalOn;
918 static int hf_itsv1_ExteriorLights_rightTurnSignalOn;
919 static int hf_itsv1_ExteriorLights_daytimeRunningLightsOn;
920 static int hf_itsv1_ExteriorLights_reverseLightOn;
921 static int hf_itsv1_ExteriorLights_fogLightOn;
922 static int hf_itsv1_ExteriorLights_parkingLightsOn;
923 static int hf_itsv1_SpecialTransportType_heavyLoad;
924 static int hf_itsv1_SpecialTransportType_excessWidth;
925 static int hf_itsv1_SpecialTransportType_excessLength;
926 static int hf_itsv1_SpecialTransportType_excessHeight;
927 static int hf_itsv1_LightBarSirenInUse_lightBarActivated;
928 static int hf_itsv1_LightBarSirenInUse_sirenActivated;
929 static int hf_itsv1_PositionOfOccupants_row1LeftOccupied;
930 static int hf_itsv1_PositionOfOccupants_row1RightOccupied;
931 static int hf_itsv1_PositionOfOccupants_row1MidOccupied;
932 static int hf_itsv1_PositionOfOccupants_row1NotDetectable;
933 static int hf_itsv1_PositionOfOccupants_row1NotPresent;
934 static int hf_itsv1_PositionOfOccupants_row2LeftOccupied;
935 static int hf_itsv1_PositionOfOccupants_row2RightOccupied;
936 static int hf_itsv1_PositionOfOccupants_row2MidOccupied;
937 static int hf_itsv1_PositionOfOccupants_row2NotDetectable;
938 static int hf_itsv1_PositionOfOccupants_row2NotPresent;
939 static int hf_itsv1_PositionOfOccupants_row3LeftOccupied;
940 static int hf_itsv1_PositionOfOccupants_row3RightOccupied;
941 static int hf_itsv1_PositionOfOccupants_row3MidOccupied;
942 static int hf_itsv1_PositionOfOccupants_row3NotDetectable;
943 static int hf_itsv1_PositionOfOccupants_row3NotPresent;
944 static int hf_itsv1_PositionOfOccupants_row4LeftOccupied;
945 static int hf_itsv1_PositionOfOccupants_row4RightOccupied;
946 static int hf_itsv1_PositionOfOccupants_row4MidOccupied;
947 static int hf_itsv1_PositionOfOccupants_row4NotDetectable;
948 static int hf_itsv1_PositionOfOccupants_row4NotPresent;
949 static int hf_itsv1_EnergyStorageType_hydrogenStorage;
950 static int hf_itsv1_EnergyStorageType_electricEnergyStorage;
951 static int hf_itsv1_EnergyStorageType_liquidPropaneGas;
952 static int hf_itsv1_EnergyStorageType_compressedNaturalGas;
953 static int hf_itsv1_EnergyStorageType_diesel;
954 static int hf_itsv1_EnergyStorageType_gasoline;
955 static int hf_itsv1_EnergyStorageType_ammonia;
956 static int hf_itsv1_EmergencyPriority_requestForRightOfWay;
957 static int hf_itsv1_EmergencyPriority_requestForFreeCrossingAtATrafficLight;
959 /* --- Module EfcDsrcApplication --- --- --- */
961 static int hf_dsrc_app_maxLadenweightOnAxle1; /* Int2 */
962 static int hf_dsrc_app_maxLadenweightOnAxle2; /* Int2 */
963 static int hf_dsrc_app_maxLadenweightOnAxle3; /* Int2 */
964 static int hf_dsrc_app_maxLadenweightOnAxle4; /* Int2 */
965 static int hf_dsrc_app_maxLadenweightOnAxle5; /* Int2 */
966 static int hf_dsrc_app_particulate; /* T_particulate */
967 static int hf_dsrc_app_unitType; /* UnitType */
968 static int hf_dsrc_app_value; /* INTEGER_0_32767 */
969 static int hf_dsrc_app_absorptionCoeff; /* Int2 */
970 static int hf_dsrc_app_euroValue; /* EuroValue */
971 static int hf_dsrc_app_copValue; /* CopValue */
972 static int hf_dsrc_app_emissionCO; /* INTEGER_0_32767 */
973 static int hf_dsrc_app_emissionHC; /* Int2 */
974 static int hf_dsrc_app_emissionNOX; /* Int2 */
975 static int hf_dsrc_app_emissionHCNOX; /* Int2 */
976 static int hf_dsrc_app_numberOfSeats; /* Int1 */
977 static int hf_dsrc_app_numberOfStandingPlaces; /* Int1 */
978 static int hf_dsrc_app_countryCode; /* CountryCode */
979 static int hf_dsrc_app_providerIdentifier; /* AVIAEIIssuerIdentifier */
980 static int hf_dsrc_app_soundstationary; /* Int1 */
981 static int hf_dsrc_app_sounddriveby; /* Int1 */
982 static int hf_dsrc_app_vehicleLengthOverall; /* Int1 */
983 static int hf_dsrc_app_vehicleHeigthOverall; /* Int1 */
984 static int hf_dsrc_app_vehicleWidthOverall; /* Int1 */
985 static int hf_dsrc_app_vehicleMaxLadenWeight; /* Int2 */
986 static int hf_dsrc_app_vehicleTrainMaximumWeight; /* Int2 */
987 static int hf_dsrc_app_vehicleWeightUnladen; /* Int2 */
989 /* --- Module DSRC --- --- --- */
991 static int hf_dsrc_dsrc_MapData_PDU; /* MapData */
992 static int hf_dsrc_dsrc_RTCMcorrections_PDU; /* RTCMcorrections */
993 static int hf_dsrc_dsrc_SPAT_PDU; /* SPAT */
994 static int hf_dsrc_dsrc_SignalRequestMessage_PDU; /* SignalRequestMessage */
995 static int hf_dsrc_dsrc_SignalStatusMessage_PDU; /* SignalStatusMessage */
996 static int hf_dsrc_regionId; /* RegionId */
997 static int hf_dsrc_regExtValue; /* T_regExtValue */
998 static int hf_dsrc_mdTimeStamp; /* MinuteOfTheYear */
999 static int hf_dsrc_msgIssueRevision; /* MsgCount */
1000 static int hf_dsrc_layerType; /* LayerType */
1001 static int hf_dsrc_layerID; /* LayerID */
1002 static int hf_dsrc_mdIntersections; /* IntersectionGeometryList */
1003 static int hf_dsrc_roadSegments; /* RoadSegmentList */
1004 static int hf_dsrc_dataParameters; /* DataParameters */
1005 static int hf_dsrc_restrictionList; /* RestrictionClassList */
1006 static int hf_dsrc_mapRegional; /* T_MAPRegional */
1007 static int hf_dsrc_mapRegional_item; /* RegionalExtension */
1008 static int hf_dsrc_msgCnt; /* MsgCount */
1009 static int hf_dsrc_rev; /* RTCM_Revision */
1010 static int hf_dsrc_timeStamp; /* MinuteOfTheYear */
1011 static int hf_dsrc_anchorPoint; /* FullPositionVector */
1012 static int hf_dsrc_rtcmHeader; /* RTCMheader */
1013 static int hf_dsrc_msgs; /* RTCMmessageList */
1014 static int hf_dsrc_regional; /* SEQUENCE_SIZE_1_4_OF_RegionalExtension */
1015 static int hf_dsrc_regional_item; /* RegionalExtension */
1016 static int hf_dsrc_spatTimeStamp; /* MinuteOfTheYear */
1017 static int hf_dsrc_name; /* DescriptiveName */
1018 static int hf_dsrc_spatIntersections; /* IntersectionStateList */
1019 static int hf_dsrc_spatRegional; /* T_SPATRegional */
1020 static int hf_dsrc_spatRegional_item; /* RegionalExtension */
1021 static int hf_dsrc_srmTimeStamp; /* MinuteOfTheYear */
1022 static int hf_dsrc_second; /* DSecond */
1023 static int hf_dsrc_sequenceNumber; /* MsgCount */
1024 static int hf_dsrc_requests; /* SignalRequestList */
1025 static int hf_dsrc_requestor; /* RequestorDescription */
1026 static int hf_dsrc_srmRegional; /* T_SRMRegional */
1027 static int hf_dsrc_srmRegional_item; /* RegionalExtension */
1028 static int hf_dsrc_ssmTimeStamp; /* MinuteOfTheYear */
1029 static int hf_dsrc_ssmStatus; /* SignalStatusList */
1030 static int hf_dsrc_ssmRegional; /* T_SSMRegional */
1031 static int hf_dsrc_ssmRegional_item; /* RegionalExtension */
1032 static int hf_dsrc_asType; /* AdvisorySpeedType */
1033 static int hf_dsrc_asSpeed; /* SpeedAdvice */
1034 static int hf_dsrc_asConfidence; /* SpeedConfidenceDSRC */
1035 static int hf_dsrc_distance; /* ZoneLength */
1036 static int hf_dsrc_class; /* RestrictionClassID */
1037 static int hf_dsrc_asRegional; /* T_AdvisorySpeedRegional */
1038 static int hf_dsrc_asRegional_item; /* RegionalExtension */
1039 static int hf_dsrc_AdvisorySpeedList_item; /* AdvisorySpeed */
1040 static int hf_dsrc_antOffsetX; /* Offset_B12 */
1041 static int hf_dsrc_antOffsetY; /* Offset_B09 */
1042 static int hf_dsrc_antOffsetZ; /* Offset_B10 */
1043 static int hf_dsrc_referenceLaneId; /* LaneID */
1044 static int hf_dsrc_offsetXaxis; /* T_offsetXaxis */
1045 static int hf_dsrc_small; /* DrivenLineOffsetSm */
1046 static int hf_dsrc_large; /* DrivenLineOffsetLg */
1047 static int hf_dsrc_offsetYaxis; /* T_offsetYaxis */
1048 static int hf_dsrc_rotateXY; /* Angle */
1049 static int hf_dsrc_scaleXaxis; /* Scale_B12 */
1050 static int hf_dsrc_scaleYaxis; /* Scale_B12 */
1051 static int hf_dsrc_clRegional; /* T_ComputedLaneRegional */
1052 static int hf_dsrc_clRegional_item; /* RegionalExtension */
1053 static int hf_dsrc_ConnectsToList_item; /* Connection */
1054 static int hf_dsrc_lane; /* LaneID */
1055 static int hf_dsrc_maneuver; /* AllowedManeuvers */
1056 static int hf_dsrc_connectingLane; /* ConnectingLane */
1057 static int hf_dsrc_remoteIntersection; /* IntersectionReferenceID */
1058 static int hf_dsrc_signalGroup; /* SignalGroupID */
1059 static int hf_dsrc_userClass; /* RestrictionClassID */
1060 static int hf_dsrc_connectionID; /* LaneConnectionID */
1061 static int hf_dsrc_queueLength; /* ZoneLength */
1062 static int hf_dsrc_availableStorageLength; /* ZoneLength */
1063 static int hf_dsrc_waitOnStop; /* WaitOnStopline */
1064 static int hf_dsrc_pedBicycleDetect; /* PedestrianBicycleDetect */
1065 static int hf_dsrc_cmaRegional; /* T_ConnectionManeuverAssistRegional */
1066 static int hf_dsrc_cmaRegional_item; /* RegionalExtension */
1067 static int hf_dsrc_processMethod; /* IA5String_SIZE_1_255 */
1068 static int hf_dsrc_processAgency; /* IA5String_SIZE_1_255 */
1069 static int hf_dsrc_lastCheckedDate; /* IA5String_SIZE_1_255 */
1070 static int hf_dsrc_geoidUsed; /* IA5String_SIZE_1_255 */
1071 static int hf_dsrc_year; /* DYear */
1072 static int hf_dsrc_month; /* DMonth */
1073 static int hf_dsrc_day; /* DDay */
1074 static int hf_dsrc_hour; /* DHour */
1075 static int hf_dsrc_minute; /* DMinute */
1076 static int hf_dsrc_offset; /* DOffset */
1077 static int hf_dsrc_EnabledLaneList_item; /* LaneID */
1078 static int hf_dsrc_utcTime; /* DDateTime */
1079 static int hf_dsrc_long; /* Longitude */
1080 static int hf_dsrc_lat; /* Latitude */
1081 static int hf_dsrc_fpvElevation; /* Elevation */
1082 static int hf_dsrc_fpvHeading; /* HeadingDSRC */
1083 static int hf_dsrc_fpvSpeed; /* TransmissionAndSpeed */
1084 static int hf_dsrc_posAccuracy; /* PositionalAccuracy */
1085 static int hf_dsrc_timeConfidence; /* TimeConfidence */
1086 static int hf_dsrc_posConfidence; /* PositionConfidenceSet */
1087 static int hf_dsrc_speedConfidence; /* SpeedandHeadingandThrottleConfidence */
1088 static int hf_dsrc_laneID; /* LaneID */
1089 static int hf_dsrc_ingressApproach; /* ApproachID */
1090 static int hf_dsrc_egressApproach; /* ApproachID */
1091 static int hf_dsrc_laneAttributes; /* LaneAttributes */
1092 static int hf_dsrc_maneuvers; /* AllowedManeuvers */
1093 static int hf_dsrc_nodeList; /* NodeListXY */
1094 static int hf_dsrc_connectsTo; /* ConnectsToList */
1095 static int hf_dsrc_overlays; /* OverlayLaneList */
1096 static int hf_dsrc_glRegional; /* T_GenericLaneRegional */
1097 static int hf_dsrc_glRegional_item; /* RegionalExtension */
1098 static int hf_dsrc_approach; /* ApproachID */
1099 static int hf_dsrc_connection; /* LaneConnectionID */
1100 static int hf_dsrc_igId; /* IntersectionReferenceID */
1101 static int hf_dsrc_revision; /* MsgCount */
1102 static int hf_dsrc_refPoint; /* Position3D */
1103 static int hf_dsrc_laneWidth; /* LaneWidth */
1104 static int hf_dsrc_speedLimits; /* SpeedLimitList */
1105 static int hf_dsrc_laneSet; /* LaneList */
1106 static int hf_dsrc_preemptPriorityData; /* PreemptPriorityList */
1107 static int hf_dsrc_igRegional; /* T_IntersectionGeometryRegional */
1108 static int hf_dsrc_igRegional_item; /* RegionalExtension */
1109 static int hf_dsrc_IntersectionGeometryList_item; /* IntersectionGeometry */
1110 static int hf_dsrc_region; /* RoadRegulatorID */
1111 static int hf_dsrc_irId; /* IntersectionID */
1112 static int hf_dsrc_isId; /* IntersectionReferenceID */
1113 static int hf_dsrc_isStatus; /* IntersectionStatusObject */
1114 static int hf_dsrc_moy; /* MinuteOfTheYear */
1115 static int hf_dsrc_isTimeStamp; /* DSecond */
1116 static int hf_dsrc_enabledLanes; /* EnabledLaneList */
1117 static int hf_dsrc_states; /* MovementList */
1118 static int hf_dsrc_maneuverAssistList; /* ManeuverAssistList */
1119 static int hf_dsrc_isRegional; /* T_IntersectionStateRegional */
1120 static int hf_dsrc_isRegional_item; /* RegionalExtension */
1121 static int hf_dsrc_IntersectionStateList_item; /* IntersectionState */
1122 static int hf_dsrc_directionalUse; /* LaneDirection */
1123 static int hf_dsrc_sharedWith; /* LaneSharing */
1124 static int hf_dsrc_laneType; /* LaneTypeAttributes */
1125 static int hf_dsrc_laRegional; /* RegionalExtension */
1126 static int hf_dsrc_pathEndPointAngle; /* DeltaAngle */
1127 static int hf_dsrc_laneCrownPointCenter; /* RoadwayCrownAngle */
1128 static int hf_dsrc_laneCrownPointLeft; /* RoadwayCrownAngle */
1129 static int hf_dsrc_laneCrownPointRight; /* RoadwayCrownAngle */
1130 static int hf_dsrc_laneAngle; /* MergeDivergeNodeAngle */
1131 static int hf_dsrc_ldaRegional; /* T_LaneDataAttributeRegional */
1132 static int hf_dsrc_ldaRegional_item; /* RegionalExtension */
1133 static int hf_dsrc_LaneDataAttributeList_item; /* LaneDataAttribute */
1134 static int hf_dsrc_LaneList_item; /* GenericLane */
1135 static int hf_dsrc_vehicle; /* LaneAttributes_Vehicle */
1136 static int hf_dsrc_crosswalk; /* LaneAttributes_Crosswalk */
1137 static int hf_dsrc_bikeLane; /* LaneAttributes_Bike */
1138 static int hf_dsrc_sidewalk; /* LaneAttributes_Sidewalk */
1139 static int hf_dsrc_median; /* LaneAttributes_Barrier */
1140 static int hf_dsrc_striping; /* LaneAttributes_Striping */
1141 static int hf_dsrc_trackedVehicle; /* LaneAttributes_TrackedVehicle */
1142 static int hf_dsrc_parking; /* LaneAttributes_Parking */
1143 static int hf_dsrc_ManeuverAssistList_item; /* ConnectionManeuverAssist */
1144 static int hf_dsrc_eventState; /* MovementPhaseState */
1145 static int hf_dsrc_timing; /* TimeChangeDetails */
1146 static int hf_dsrc_speeds; /* AdvisorySpeedList */
1147 static int hf_dsrc_meRegional; /* T_MovementEventRegional */
1148 static int hf_dsrc_meRegional_item; /* RegionalExtension */
1149 static int hf_dsrc_MovementEventList_item; /* MovementEvent */
1150 static int hf_dsrc_MovementList_item; /* MovementState */
1151 static int hf_dsrc_movementName; /* DescriptiveName */
1152 static int hf_dsrc_state_time_speed; /* MovementEventList */
1153 static int hf_dsrc_msRegional; /* T_MovementStateRegional */
1154 static int hf_dsrc_msRegional_item; /* RegionalExtension */
1155 static int hf_dsrc_localNode; /* NodeAttributeXYList */
1156 static int hf_dsrc_disabled; /* SegmentAttributeXYList */
1157 static int hf_dsrc_enabled; /* SegmentAttributeXYList */
1158 static int hf_dsrc_data; /* LaneDataAttributeList */
1159 static int hf_dsrc_dWidth; /* Offset_B10 */
1160 static int hf_dsrc_dElevation; /* Offset_B10 */
1161 static int hf_dsrc_nasxyRegional; /* T_NodeAttributeSetXYRegional */
1162 static int hf_dsrc_nasxyRegional_item; /* RegionalExtension */
1163 static int hf_dsrc_NodeAttributeXYList_item; /* NodeAttributeXY */
1164 static int hf_dsrc_lon; /* Longitude */
1165 static int hf_dsrc_n20bX; /* Offset_B10 */
1166 static int hf_dsrc_n20bY; /* Offset_B10 */
1167 static int hf_dsrc_n22bX; /* Offset_B11 */
1168 static int hf_dsrc_n22bY; /* Offset_B11 */
1169 static int hf_dsrc_n24bX; /* Offset_B12 */
1170 static int hf_dsrc_n24bY; /* Offset_B12 */
1171 static int hf_dsrc_n26bX; /* Offset_B13 */
1172 static int hf_dsrc_n26bY; /* Offset_B13 */
1173 static int hf_dsrc_n28bX; /* Offset_B14 */
1174 static int hf_dsrc_n28bY; /* Offset_B14 */
1175 static int hf_dsrc_n32bX; /* Offset_B16 */
1176 static int hf_dsrc_n32bY; /* Offset_B16 */
1177 static int hf_dsrc_nodes; /* NodeSetXY */
1178 static int hf_dsrc_computed; /* ComputedLane */
1179 static int hf_dsrc_node_XY1; /* Node_XY_20b */
1180 static int hf_dsrc_node_XY2; /* Node_XY_22b */
1181 static int hf_dsrc_node_XY3; /* Node_XY_24b */
1182 static int hf_dsrc_node_XY4; /* Node_XY_26b */
1183 static int hf_dsrc_node_XY5; /* Node_XY_28b */
1184 static int hf_dsrc_node_XY6; /* Node_XY_32b */
1185 static int hf_dsrc_node_LatLon; /* Node_LLmD_64b */
1186 static int hf_dsrc_nopxyRegional; /* RegionalExtension */
1187 static int hf_dsrc_delta; /* NodeOffsetPointXY */
1188 static int hf_dsrc_attributes; /* NodeAttributeSetXY */
1189 static int hf_dsrc_NodeSetXY_item; /* NodeXY */
1190 static int hf_dsrc_OverlayLaneList_item; /* LaneID */
1191 static int hf_dsrc_semiMajor; /* SemiMajorAxisAccuracy */
1192 static int hf_dsrc_semiMinor; /* SemiMinorAxisAccuracy */
1193 static int hf_dsrc_orientation; /* SemiMajorAxisOrientation */
1194 static int hf_dsrc_pos; /* PositionConfidence */
1195 static int hf_dsrc_pcsElevation; /* ElevationConfidence */
1196 static int hf_dsrc_p3dElevation; /* Elevation */
1197 static int hf_dsrc_p3dRegional; /* T_Position3DRegional */
1198 static int hf_dsrc_p3dRegional_item; /* RegionalExtension */
1199 static int hf_dsrc_PreemptPriorityList_item; /* SignalControlZone */
1200 static int hf_dsrc_rslType; /* SpeedLimitType */
1201 static int hf_dsrc_rslSpeed; /* Velocity */
1202 static int hf_dsrc_rdId; /* VehicleID */
1203 static int hf_dsrc_rdType; /* RequestorType */
1204 static int hf_dsrc_rdPosition; /* RequestorPositionVector */
1205 static int hf_dsrc_routeName; /* DescriptiveName */
1206 static int hf_dsrc_transitStatus; /* TransitVehicleStatus */
1207 static int hf_dsrc_transitOccupancy; /* TransitVehicleOccupancy */
1208 static int hf_dsrc_transitSchedule; /* DeltaTime */
1209 static int hf_dsrc_rdRegional; /* T_RequestorDescriptionRegional */
1210 static int hf_dsrc_rdRegional_item; /* RegionalExtension */
1211 static int hf_dsrc_rpvPosition; /* Position3D */
1212 static int hf_dsrc_rpvHeading; /* Angle */
1213 static int hf_dsrc_rpvSpeed; /* TransmissionAndSpeed */
1214 static int hf_dsrc_role; /* BasicVehicleRole */
1215 static int hf_dsrc_subrole; /* RequestSubRole */
1216 static int hf_dsrc_rtRequest; /* RequestImportanceLevel */
1217 static int hf_dsrc_iso3883; /* Iso3833VehicleType */
1218 static int hf_dsrc_hpmsType; /* VehicleType */
1219 static int hf_dsrc_rtRegional; /* RegionalExtension */
1220 static int hf_dsrc_scaId; /* RestrictionClassID */
1221 static int hf_dsrc_users; /* RestrictionUserTypeList */
1222 static int hf_dsrc_RestrictionClassList_item; /* RestrictionClassAssignment */
1223 static int hf_dsrc_basicType; /* RestrictionAppliesTo */
1224 static int hf_dsrc_rutRegional; /* T_RestrictionUserTypeRegional */
1225 static int hf_dsrc_rutRegional_item; /* RegionalExtension */
1226 static int hf_dsrc_RestrictionUserTypeList_item; /* RestrictionUserType */
1227 static int hf_dsrc_RoadLaneSetList_item; /* GenericLane */
1228 static int hf_dsrc_rsrId; /* RoadSegmentID */
1229 static int hf_dsrc_rsId; /* RoadSegmentReferenceID */
1230 static int hf_dsrc_roadLaneSet; /* RoadLaneSetList */
1231 static int hf_dsrc_rsRegional; /* T_RoadSegmentRegional */
1232 static int hf_dsrc_rsRegional_item; /* RegionalExtension */
1233 static int hf_dsrc_RoadSegmentList_item; /* RoadSegment */
1234 static int hf_dsrc_status; /* GNSSstatus */
1235 static int hf_dsrc_offsetSet; /* AntennaOffsetSet */
1236 static int hf_dsrc_RTCMmessageList_item; /* RTCMmessage */
1237 static int hf_dsrc_SegmentAttributeXYList_item; /* SegmentAttributeXY */
1238 static int hf_dsrc_zone; /* RegionalExtension */
1239 static int hf_dsrc_sriId; /* VehicleID */
1240 static int hf_dsrc_sriRequest; /* RequestID */
1241 static int hf_dsrc_typeData; /* RequestorType */
1242 static int hf_dsrc_srId; /* IntersectionReferenceID */
1243 static int hf_dsrc_requestID; /* RequestID */
1244 static int hf_dsrc_requestType; /* PriorityRequestType */
1245 static int hf_dsrc_inBoundLane; /* IntersectionAccessPoint */
1246 static int hf_dsrc_outBoundLane; /* IntersectionAccessPoint */
1247 static int hf_dsrc_srRegional; /* T_SignalRequestRegional */
1248 static int hf_dsrc_srRegional_item; /* RegionalExtension */
1249 static int hf_dsrc_SignalRequestList_item; /* SignalRequestPackage */
1250 static int hf_dsrc_srpRequest; /* SignalRequest */
1251 static int hf_dsrc_srpMinute; /* MinuteOfTheYear */
1252 static int hf_dsrc_duration; /* DSecond */
1253 static int hf_dsrc_srpRegional; /* T_SignalRequestPackageRegional */
1254 static int hf_dsrc_srpRegional_item; /* RegionalExtension */
1255 static int hf_dsrc_ssId; /* IntersectionReferenceID */
1256 static int hf_dsrc_sigStatus; /* SignalStatusPackageList */
1257 static int hf_dsrc_ssRegional; /* T_SignalStatusRegional */
1258 static int hf_dsrc_ssRegional_item; /* RegionalExtension */
1259 static int hf_dsrc_SignalStatusList_item; /* SignalStatus */
1260 static int hf_dsrc_SignalStatusPackageList_item; /* SignalStatusPackage */
1261 static int hf_dsrc_requester; /* SignalRequesterInfo */
1262 static int hf_dsrc_inboundOn; /* IntersectionAccessPoint */
1263 static int hf_dsrc_outboundOn; /* IntersectionAccessPoint */
1264 static int hf_dsrc_sspMinute; /* MinuteOfTheYear */
1265 static int hf_dsrc_sspStatus; /* PrioritizationResponseStatus */
1266 static int hf_dsrc_sspRegional; /* T_SignalStatusPackageRegional */
1267 static int hf_dsrc_sspRegional_item; /* RegionalExtension */
1268 static int hf_dsrc_shtcheading; /* HeadingConfidenceDSRC */
1269 static int hf_dsrc_shtcSpeed; /* SpeedConfidenceDSRC */
1270 static int hf_dsrc_throttle; /* ThrottleConfidence */
1271 static int hf_dsrc_SpeedLimitList_item; /* RegulatorySpeedLimit */
1272 static int hf_dsrc_startTime; /* TimeMark */
1273 static int hf_dsrc_minEndTime; /* TimeMark */
1274 static int hf_dsrc_maxEndTime; /* TimeMark */
1275 static int hf_dsrc_likelyTime; /* TimeMark */
1276 static int hf_dsrc_tcdConfidence; /* TimeIntervalConfidence */
1277 static int hf_dsrc_nextTime; /* TimeMark */
1278 static int hf_dsrc_transmisson; /* TransmissionState */
1279 static int hf_dsrc_tasSpeed; /* Velocity */
1280 static int hf_dsrc_entityID; /* TemporaryID */
1281 static int hf_dsrc_stationID; /* StationID */
1282 /* named bits */
1283 static int hf_dsrc_LaneSharing_overlappingLaneDescriptionProvided;
1284 static int hf_dsrc_LaneSharing_multipleLanesTreatedAsOneLane;
1285 static int hf_dsrc_LaneSharing_otherNonMotorizedTrafficTypes;
1286 static int hf_dsrc_LaneSharing_individualMotorizedVehicleTraffic;
1287 static int hf_dsrc_LaneSharing_busVehicleTraffic;
1288 static int hf_dsrc_LaneSharing_taxiVehicleTraffic;
1289 static int hf_dsrc_LaneSharing_pedestriansTraffic;
1290 static int hf_dsrc_LaneSharing_cyclistVehicleTraffic;
1291 static int hf_dsrc_LaneSharing_trackedVehicleTraffic;
1292 static int hf_dsrc_LaneSharing_pedestrianTraffic;
1293 static int hf_dsrc_AllowedManeuvers_maneuverStraightAllowed;
1294 static int hf_dsrc_AllowedManeuvers_maneuverLeftAllowed;
1295 static int hf_dsrc_AllowedManeuvers_maneuverRightAllowed;
1296 static int hf_dsrc_AllowedManeuvers_maneuverUTurnAllowed;
1297 static int hf_dsrc_AllowedManeuvers_maneuverLeftTurnOnRedAllowed;
1298 static int hf_dsrc_AllowedManeuvers_maneuverRightTurnOnRedAllowed;
1299 static int hf_dsrc_AllowedManeuvers_maneuverLaneChangeAllowed;
1300 static int hf_dsrc_AllowedManeuvers_maneuverNoStoppingAllowed;
1301 static int hf_dsrc_AllowedManeuvers_yieldAllwaysRequired;
1302 static int hf_dsrc_AllowedManeuvers_goWithHalt;
1303 static int hf_dsrc_AllowedManeuvers_caution;
1304 static int hf_dsrc_AllowedManeuvers_reserved1;
1305 static int hf_dsrc_GNSSstatus_unavailable;
1306 static int hf_dsrc_GNSSstatus_isHealthy;
1307 static int hf_dsrc_GNSSstatus_isMonitored;
1308 static int hf_dsrc_GNSSstatus_baseStationType;
1309 static int hf_dsrc_GNSSstatus_aPDOPofUnder5;
1310 static int hf_dsrc_GNSSstatus_inViewOfUnder5;
1311 static int hf_dsrc_GNSSstatus_localCorrectionsPresent;
1312 static int hf_dsrc_GNSSstatus_networkCorrectionsPresent;
1313 static int hf_dsrc_IntersectionStatusObject_manualControlIsEnabled;
1314 static int hf_dsrc_IntersectionStatusObject_stopTimeIsActivated;
1315 static int hf_dsrc_IntersectionStatusObject_failureFlash;
1316 static int hf_dsrc_IntersectionStatusObject_preemptIsActive;
1317 static int hf_dsrc_IntersectionStatusObject_signalPriorityIsActive;
1318 static int hf_dsrc_IntersectionStatusObject_fixedTimeOperation;
1319 static int hf_dsrc_IntersectionStatusObject_trafficDependentOperation;
1320 static int hf_dsrc_IntersectionStatusObject_standbyOperation;
1321 static int hf_dsrc_IntersectionStatusObject_failureMode;
1322 static int hf_dsrc_IntersectionStatusObject_off;
1323 static int hf_dsrc_IntersectionStatusObject_recentMAPmessageUpdate;
1324 static int hf_dsrc_IntersectionStatusObject_recentChangeInMAPassignedLanesIDsUsed;
1325 static int hf_dsrc_IntersectionStatusObject_noValidMAPisAvailableAtThisTime;
1326 static int hf_dsrc_IntersectionStatusObject_noValidSPATisAvailableAtThisTime;
1327 static int hf_dsrc_LaneAttributes_Barrier_median_RevocableLane;
1328 static int hf_dsrc_LaneAttributes_Barrier_median;
1329 static int hf_dsrc_LaneAttributes_Barrier_whiteLineHashing;
1330 static int hf_dsrc_LaneAttributes_Barrier_stripedLines;
1331 static int hf_dsrc_LaneAttributes_Barrier_doubleStripedLines;
1332 static int hf_dsrc_LaneAttributes_Barrier_trafficCones;
1333 static int hf_dsrc_LaneAttributes_Barrier_constructionBarrier;
1334 static int hf_dsrc_LaneAttributes_Barrier_trafficChannels;
1335 static int hf_dsrc_LaneAttributes_Barrier_lowCurbs;
1336 static int hf_dsrc_LaneAttributes_Barrier_highCurbs;
1337 static int hf_dsrc_LaneAttributes_Bike_bikeRevocableLane;
1338 static int hf_dsrc_LaneAttributes_Bike_pedestrianUseAllowed;
1339 static int hf_dsrc_LaneAttributes_Bike_isBikeFlyOverLane;
1340 static int hf_dsrc_LaneAttributes_Bike_fixedCycleTime;
1341 static int hf_dsrc_LaneAttributes_Bike_biDirectionalCycleTimes;
1342 static int hf_dsrc_LaneAttributes_Bike_isolatedByBarrier;
1343 static int hf_dsrc_LaneAttributes_Bike_unsignalizedSegmentsPresent;
1344 static int hf_dsrc_LaneAttributes_Crosswalk_crosswalkRevocableLane;
1345 static int hf_dsrc_LaneAttributes_Crosswalk_bicyleUseAllowed;
1346 static int hf_dsrc_LaneAttributes_Crosswalk_isXwalkFlyOverLane;
1347 static int hf_dsrc_LaneAttributes_Crosswalk_fixedCycleTime;
1348 static int hf_dsrc_LaneAttributes_Crosswalk_biDirectionalCycleTimes;
1349 static int hf_dsrc_LaneAttributes_Crosswalk_hasPushToWalkButton;
1350 static int hf_dsrc_LaneAttributes_Crosswalk_audioSupport;
1351 static int hf_dsrc_LaneAttributes_Crosswalk_rfSignalRequestPresent;
1352 static int hf_dsrc_LaneAttributes_Crosswalk_unsignalizedSegmentsPresent;
1353 static int hf_dsrc_LaneAttributes_Parking_parkingRevocableLane;
1354 static int hf_dsrc_LaneAttributes_Parking_parallelParkingInUse;
1355 static int hf_dsrc_LaneAttributes_Parking_headInParkingInUse;
1356 static int hf_dsrc_LaneAttributes_Parking_doNotParkZone;
1357 static int hf_dsrc_LaneAttributes_Parking_parkingForBusUse;
1358 static int hf_dsrc_LaneAttributes_Parking_parkingForTaxiUse;
1359 static int hf_dsrc_LaneAttributes_Parking_noPublicParkingUse;
1360 static int hf_dsrc_LaneAttributes_Sidewalk_sidewalk_RevocableLane;
1361 static int hf_dsrc_LaneAttributes_Sidewalk_bicyleUseAllowed;
1362 static int hf_dsrc_LaneAttributes_Sidewalk_isSidewalkFlyOverLane;
1363 static int hf_dsrc_LaneAttributes_Sidewalk_walkBikes;
1364 static int hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesRevocableLane;
1365 static int hf_dsrc_LaneAttributes_Striping_stripeDrawOnLeft;
1366 static int hf_dsrc_LaneAttributes_Striping_stripeDrawOnRight;
1367 static int hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesLeft;
1368 static int hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesRight;
1369 static int hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesAhead;
1370 static int hf_dsrc_LaneAttributes_TrackedVehicle_spec_RevocableLane;
1371 static int hf_dsrc_LaneAttributes_TrackedVehicle_spec_commuterRailRoadTrack;
1372 static int hf_dsrc_LaneAttributes_TrackedVehicle_spec_lightRailRoadTrack;
1373 static int hf_dsrc_LaneAttributes_TrackedVehicle_spec_heavyRailRoadTrack;
1374 static int hf_dsrc_LaneAttributes_TrackedVehicle_spec_otherRailType;
1375 static int hf_dsrc_LaneAttributes_Vehicle_isVehicleRevocableLane;
1376 static int hf_dsrc_LaneAttributes_Vehicle_isVehicleFlyOverLane;
1377 static int hf_dsrc_LaneAttributes_Vehicle_hovLaneUseOnly;
1378 static int hf_dsrc_LaneAttributes_Vehicle_restrictedToBusUse;
1379 static int hf_dsrc_LaneAttributes_Vehicle_restrictedToTaxiUse;
1380 static int hf_dsrc_LaneAttributes_Vehicle_restrictedFromPublicUse;
1381 static int hf_dsrc_LaneAttributes_Vehicle_hasIRbeaconCoverage;
1382 static int hf_dsrc_LaneAttributes_Vehicle_permissionOnRequest;
1383 static int hf_dsrc_LaneDirection_ingressPath;
1384 static int hf_dsrc_LaneDirection_egressPath;
1385 static int hf_dsrc_TransitVehicleStatus_loading;
1386 static int hf_dsrc_TransitVehicleStatus_anADAuse;
1387 static int hf_dsrc_TransitVehicleStatus_aBikeLoad;
1388 static int hf_dsrc_TransitVehicleStatus_doorOpen;
1389 static int hf_dsrc_TransitVehicleStatus_charging;
1390 static int hf_dsrc_TransitVehicleStatus_atStopLine;
1392 /* --- Module AddGrpC --- --- --- */
1394 static int hf_AddGrpC_AddGrpC_ConnectionManeuverAssist_addGrpC_PDU; /* ConnectionManeuverAssist_addGrpC */
1395 static int hf_AddGrpC_AddGrpC_ConnectionTrajectory_addGrpC_PDU; /* ConnectionTrajectory_addGrpC */
1396 static int hf_AddGrpC_AddGrpC_IntersectionState_addGrpC_PDU; /* IntersectionState_addGrpC */
1397 static int hf_AddGrpC_AddGrpC_LaneAttributes_addGrpC_PDU; /* LaneAttributes_addGrpC */
1398 static int hf_AddGrpC_AddGrpC_MapData_addGrpC_PDU; /* MapData_addGrpC */
1399 static int hf_AddGrpC_AddGrpC_MovementEvent_addGrpC_PDU; /* MovementEvent_addGrpC */
1400 static int hf_AddGrpC_AddGrpC_NodeAttributeSet_addGrpC_PDU; /* NodeAttributeSet_addGrpC */
1401 static int hf_AddGrpC_AddGrpC_Position3D_addGrpC_PDU; /* Position3D_addGrpC */
1402 static int hf_AddGrpC_AddGrpC_RestrictionUserType_addGrpC_PDU; /* RestrictionUserType_addGrpC */
1403 static int hf_AddGrpC_AddGrpC_RequestorDescription_addGrpC_PDU; /* RequestorDescription_addGrpC */
1404 static int hf_AddGrpC_AddGrpC_SignalStatusPackage_addGrpC_PDU; /* SignalStatusPackage_addGrpC */
1405 static int hf_AddGrpC_itsStationPosition; /* ItsStationPositionList */
1406 static int hf_AddGrpC_nodes; /* NodeSetXY */
1407 static int hf_AddGrpC_connectionID; /* LaneConnectionID */
1408 static int hf_AddGrpC_activePrioritizations; /* PrioritizationResponseList */
1409 static int hf_AddGrpC_maxVehicleHeight; /* VehicleHeight */
1410 static int hf_AddGrpC_maxVehicleWeight; /* VehicleMass */
1411 static int hf_AddGrpC_signalHeadLocations; /* SignalHeadLocationList */
1412 static int hf_AddGrpC_stateChangeReason; /* ExceptionalCondition */
1413 static int hf_AddGrpC_ptvRequest; /* PtvRequestType */
1414 static int hf_AddGrpC_nodeLink; /* NodeLink */
1415 static int hf_AddGrpC_node; /* Node */
1416 static int hf_AddGrpC_altitude; /* Altitude */
1417 static int hf_AddGrpC_emission; /* EmissionType */
1418 static int hf_AddGrpC_fuel; /* FuelType */
1419 static int hf_AddGrpC_batteryStatus; /* BatteryStatus */
1420 static int hf_AddGrpC_synchToSchedule; /* DeltaTime */
1421 static int hf_AddGrpC_rejectedReason; /* RejectedReason */
1422 static int hf_AddGrpC_stationID; /* StationID */
1423 static int hf_AddGrpC_laneID; /* LaneID */
1424 static int hf_AddGrpC_nodeXY; /* NodeOffsetPointXY */
1425 static int hf_AddGrpC_timeReference; /* TimeReference */
1426 static int hf_AddGrpC_ItsStationPositionList_item; /* ItsStationPosition */
1427 static int hf_AddGrpC_id; /* INTEGER */
1428 static int hf_AddGrpC_lane; /* LaneID */
1429 static int hf_AddGrpC_intersectionID; /* IntersectionID */
1430 static int hf_AddGrpC_NodeLink_item; /* Node */
1431 static int hf_AddGrpC_priorState; /* PrioritizationResponseStatus */
1432 static int hf_AddGrpC_signalGroup; /* SignalGroupID */
1433 static int hf_AddGrpC_PrioritizationResponseList_item; /* PrioritizationResponse */
1434 static int hf_AddGrpC_nodeZ; /* DeltaAltitude */
1435 static int hf_AddGrpC_signalGroupID; /* SignalGroupID */
1436 static int hf_AddGrpC_SignalHeadLocationList_item; /* SignalHeadLocation */
1438 /* --- Module GDD --- --- --- */
1440 static int hf_gdd_pictogramCode; /* Pictogram */
1441 static int hf_gdd_attributes; /* GddAttributes */
1442 static int hf_gdd_countryCode; /* Pictogram_countryCode */
1443 static int hf_gdd_serviceCategoryCode; /* Pictogram_serviceCategory */
1444 static int hf_gdd_pictogramCategoryCode; /* Pictogram_category */
1445 static int hf_gdd_trafficSignPictogram; /* Pictogram_trafficSign */
1446 static int hf_gdd_publicFacilitiesPictogram; /* Pictogram_publicFacilitySign */
1447 static int hf_gdd_ambientOrRoadConditionPictogram; /* Pictogram_conditionsSign */
1448 static int hf_gdd_nature; /* Pictogram_nature */
1449 static int hf_gdd_serialNumber; /* Pictogram_serialNumber */
1450 static int hf_gdd_GddAttributes_item; /* GddAttributes_item */
1451 static int hf_gdd_dtm; /* InternationalSign_applicablePeriod */
1452 static int hf_gdd_edt; /* InternationalSign_exemptedApplicablePeriod */
1453 static int hf_gdd_dfl; /* InternationalSign_directionalFlowOfLane */
1454 static int hf_gdd_ved; /* InternationalSign_applicableVehicleDimensions */
1455 static int hf_gdd_spe; /* InternationalSign_speedLimits */
1456 static int hf_gdd_roi; /* InternationalSign_rateOfIncline */
1457 static int hf_gdd_dbv; /* InternationalSign_distanceBetweenVehicles */
1458 static int hf_gdd_ddd; /* InternationalSign_destinationInformation */
1459 static int hf_gdd_set; /* InternationalSign_section */
1460 static int hf_gdd_nol; /* InternationalSign_numberOfLane */
1461 static int hf_gdd_year; /* T_year */
1462 static int hf_gdd_yearRangeStartYear; /* Year */
1463 static int hf_gdd_yearRangeEndYear; /* Year */
1464 static int hf_gdd_month_day; /* T_month_day */
1465 static int hf_gdd_dateRangeStartMonthDate; /* MonthDay */
1466 static int hf_gdd_dateRangeEndMonthDate; /* MonthDay */
1467 static int hf_gdd_repeatingPeriodDayTypes; /* RPDT */
1468 static int hf_gdd_hourMinutes; /* T_hourMinutes */
1469 static int hf_gdd_timeRangeStartTime; /* HoursMinutes */
1470 static int hf_gdd_timeRangeEndTime; /* HoursMinutes */
1471 static int hf_gdd_dateRangeOfWeek; /* DayOfWeek */
1472 static int hf_gdd_durationHourminute; /* HoursMinutes */
1473 static int hf_gdd_month; /* MonthDay_month */
1474 static int hf_gdd_day; /* MonthDay_day */
1475 static int hf_gdd_hours; /* HoursMinutes_hours */
1476 static int hf_gdd_mins; /* HoursMinutes_mins */
1477 static int hf_gdd_startingPointLength; /* Distance */
1478 static int hf_gdd_continuityLength; /* Distance */
1479 static int hf_gdd_vehicleHeight; /* Distance */
1480 static int hf_gdd_vehicleWidth; /* Distance */
1481 static int hf_gdd_vehicleLength; /* Distance */
1482 static int hf_gdd_vehicleWeight; /* Weight */
1483 static int hf_gdd_dValue; /* INTEGER_1_16384 */
1484 static int hf_gdd_unit; /* Code_Units_CONSTR002 */
1485 static int hf_gdd_wValue; /* INTEGER_1_16384 */
1486 static int hf_gdd_unit_01; /* Code_Units_10_12 */
1487 static int hf_gdd_speedLimitMax; /* INTEGER_0_250 */
1488 static int hf_gdd_speedLimitMin; /* INTEGER_0_250 */
1489 static int hf_gdd_unit_02; /* Code_Units_0_1 */
1490 static int hf_gdd_junctionDirection; /* DistinInfo_junctionDirection */
1491 static int hf_gdd_roundaboutCwDirection; /* DistinInfo_roundaboutCwDirection */
1492 static int hf_gdd_roundaboutCcwDirection; /* DistinInfo_roundaboutCcwDirection */
1493 static int hf_gdd_ioList; /* SEQUENCE_SIZE_1_8__OF_DestinationInformationIO */
1494 static int hf_gdd_ioList_item; /* DestinationInformationIO */
1495 static int hf_gdd_arrowDirection; /* IO_arrowDirection */
1496 static int hf_gdd_destPlace; /* SEQUENCE_SIZE_1_4__OF_DestinationPlace */
1497 static int hf_gdd_destPlace_item; /* DestinationPlace */
1498 static int hf_gdd_destRoad; /* SEQUENCE_SIZE_1_4__OF_DestinationRoad */
1499 static int hf_gdd_destRoad_item; /* DestinationRoad */
1500 static int hf_gdd_roadNumberIdentifier; /* IO_roadNumberIdentifier */
1501 static int hf_gdd_streetName; /* IO_streetName */
1502 static int hf_gdd_streetNameText; /* IO_streetNameText */
1503 static int hf_gdd_distanceToDivergingPoint; /* DistanceOrDuration */
1504 static int hf_gdd_distanceToDestinationPlace; /* DistanceOrDuration */
1505 static int hf_gdd_destType; /* DestinationType */
1506 static int hf_gdd_destRSCode; /* GddStructure */
1507 static int hf_gdd_destBlob; /* DestPlace_destBlob */
1508 static int hf_gdd_placeNameIdentification; /* DestPlace_placeNameIdentification */
1509 static int hf_gdd_placeNameText; /* DestPlace_placeNameText */
1510 static int hf_gdd_derType; /* DestinationRoadType */
1511 static int hf_gdd_roadNumberIdentifier_01; /* DestRoad_roadNumberIdentifier */
1512 static int hf_gdd_roadNumberText; /* DestRoad_roadNumberText */
1513 static int hf_gdd_dodValue; /* DistOrDuration_value */
1514 static int hf_gdd_unit_03; /* DistOrDuration_Units */
1515 /* named bits */
1516 static int hf_gdd_RPDT_national_holiday;
1517 static int hf_gdd_RPDT_even_days;
1518 static int hf_gdd_RPDT_odd_days;
1519 static int hf_gdd_RPDT_market_day;
1520 static int hf_gdd_DayOfWeek_unused;
1521 static int hf_gdd_DayOfWeek_monday;
1522 static int hf_gdd_DayOfWeek_tuesday;
1523 static int hf_gdd_DayOfWeek_wednesday;
1524 static int hf_gdd_DayOfWeek_thursday;
1525 static int hf_gdd_DayOfWeek_friday;
1526 static int hf_gdd_DayOfWeek_saturday;
1527 static int hf_gdd_DayOfWeek_sunday;
1529 /* --- Module IVI --- --- --- */
1531 static int hf_ivi_ivi_IviStructure_PDU; /* IviStructure */
1532 static int hf_ivi_mandatory; /* IviManagementContainer */
1533 static int hf_ivi_optional; /* IviContainers */
1534 static int hf_ivi_IviContainers_item; /* IviContainer */
1535 static int hf_ivi_glc; /* GeographicLocationContainer */
1536 static int hf_ivi_giv; /* GeneralIviContainer */
1537 static int hf_ivi_rcc; /* RoadConfigurationContainer */
1538 static int hf_ivi_tc; /* TextContainer */
1539 static int hf_ivi_lac; /* LayoutContainer */
1540 static int hf_ivi_avc; /* AutomatedVehicleContainer */
1541 static int hf_ivi_mlc; /* MapLocationContainer */
1542 static int hf_ivi_rsc; /* RoadSurfaceContainer */
1543 static int hf_ivi_serviceProviderId; /* Provider */
1544 static int hf_ivi_iviIdentificationNumber; /* IviIdentificationNumber */
1545 static int hf_ivi_timeStamp; /* TimestampIts */
1546 static int hf_ivi_validFrom; /* TimestampIts */
1547 static int hf_ivi_validTo; /* TimestampIts */
1548 static int hf_ivi_connectedIviStructures; /* IviIdentificationNumbers */
1549 static int hf_ivi_iviStatus; /* IviStatus */
1550 static int hf_ivi_connectedDenms; /* ConnectedDenms */
1551 static int hf_ivi_referencePosition; /* ReferencePosition */
1552 static int hf_ivi_referencePositionTime; /* TimestampIts */
1553 static int hf_ivi_referencePositionHeading; /* Heading */
1554 static int hf_ivi_referencePositionSpeed; /* Speed */
1555 static int hf_ivi_parts; /* GlcParts */
1556 static int hf_ivi_GlcParts_item; /* GlcPart */
1557 static int hf_ivi_zoneId; /* Zid */
1558 static int hf_ivi_laneNumber; /* LanePosition */
1559 static int hf_ivi_zoneExtension; /* INTEGER_0_255 */
1560 static int hf_ivi_zoneHeading; /* HeadingValue */
1561 static int hf_ivi_zone; /* Zone */
1562 static int hf_ivi_GeneralIviContainer_item; /* GicPart */
1563 static int hf_ivi_gpDetectionZoneIds; /* T_GicPartDetectionZoneIds */
1564 static int hf_ivi_its_Rrid; /* VarLengthNumber */
1565 static int hf_ivi_gpRelevanceZoneIds; /* T_GicPartRelevanceZoneIds */
1566 static int hf_ivi_direction; /* Direction */
1567 static int hf_ivi_gpDriverAwarenessZoneIds; /* T_GicPartDriverAwarenessZoneIds */
1568 static int hf_ivi_minimumAwarenessTime; /* INTEGER_0_255 */
1569 static int hf_ivi_applicableLanes; /* LanePositions */
1570 static int hf_ivi_iviType; /* IviType */
1571 static int hf_ivi_iviPurpose; /* IviPurpose */
1572 static int hf_ivi_laneStatus; /* LaneStatus */
1573 static int hf_ivi_vehicleCharacteristics; /* VehicleCharacteristicsList */
1574 static int hf_ivi_driverCharacteristics; /* DriverCharacteristics */
1575 static int hf_ivi_layoutId; /* INTEGER_1_4_ */
1576 static int hf_ivi_preStoredlayoutId; /* INTEGER_1_64_ */
1577 static int hf_ivi_roadSignCodes; /* RoadSignCodes */
1578 static int hf_ivi_extraText; /* T_GicPartExtraText */
1579 static int hf_ivi_RoadConfigurationContainer_item; /* RccPart */
1580 static int hf_ivi_relevanceZoneIds; /* ZoneIds */
1581 static int hf_ivi_roadType; /* RoadType */
1582 static int hf_ivi_laneConfiguration; /* LaneConfiguration */
1583 static int hf_ivi_RoadSurfaceContainer_item; /* RscPart */
1584 static int hf_ivi_detectionZoneIds; /* ZoneIds */
1585 static int hf_ivi_roadSurfaceStaticCharacteristics; /* RoadSurfaceStaticCharacteristics */
1586 static int hf_ivi_roadSurfaceDynamicCharacteristics; /* RoadSurfaceDynamicCharacteristics */
1587 static int hf_ivi_TextContainer_item; /* TcPart */
1588 static int hf_ivi_tpDetectionZoneIds; /* T_TcPartDetectionZoneIds */
1589 static int hf_ivi_tpRelevanceZoneIds; /* T_TcPartRelevanceZoneIds */
1590 static int hf_ivi_tpDriverAwarenessZoneIds; /* T_TcPartDriverAwarenessZoneIds */
1591 static int hf_ivi_text; /* T_TcPartText */
1592 static int hf_ivi_data; /* OCTET_STRING */
1593 static int hf_ivi_height; /* INTEGER_10_73 */
1594 static int hf_ivi_width; /* INTEGER_10_265 */
1595 static int hf_ivi_layoutComponents; /* LayoutComponents */
1596 static int hf_ivi_AutomatedVehicleContainer_item; /* AvcPart */
1597 static int hf_ivi_automatedVehicleRules; /* AutomatedVehicleRules */
1598 static int hf_ivi_platooningRules; /* PlatooningRules */
1599 static int hf_ivi_reference; /* MapReference */
1600 static int hf_ivi_parts_01; /* MlcParts */
1601 static int hf_ivi_MlcParts_item; /* MlcPart */
1602 static int hf_ivi_laneIds; /* LaneIds */
1603 static int hf_ivi_AbsolutePositions_item; /* AbsolutePosition */
1604 static int hf_ivi_AbsolutePositionsWAltitude_item; /* AbsolutePositionWAltitude */
1605 static int hf_ivi_AutomatedVehicleRules_item; /* AutomatedVehicleRule */
1606 static int hf_ivi_ConnectedDenms_item; /* ActionID */
1607 static int hf_ivi_DeltaPositions_item; /* DeltaPosition */
1608 static int hf_ivi_DeltaReferencePositions_item; /* DeltaReferencePosition */
1609 static int hf_ivi_ConstraintTextLines1_item; /* Text */
1610 static int hf_ivi_ConstraintTextLines2_item; /* Text */
1611 static int hf_ivi_IviIdentificationNumbers_item; /* IviIdentificationNumber */
1612 static int hf_ivi_ISO14823Attributes_item; /* ISO14823Attribute */
1613 static int hf_ivi_LaneConfiguration_item; /* LaneInformation */
1614 static int hf_ivi_LaneIds_item; /* LaneID */
1615 static int hf_ivi_LanePositions_item; /* LanePosition */
1616 static int hf_ivi_LayoutComponents_item; /* LayoutComponent */
1617 static int hf_ivi_PlatooningRules_item; /* PlatooningRule */
1618 static int hf_ivi_RoadSignCodes_item; /* RSCode */
1619 static int hf_ivi_TextLines_item; /* Text */
1620 static int hf_ivi_TrailerCharacteristicsList_item; /* TrailerCharacteristics */
1621 static int hf_ivi_TrailerCharacteristicsFixValuesList_item; /* VehicleCharacteristicsFixValues */
1622 static int hf_ivi_TrailerCharacteristicsRangesList_item; /* VehicleCharacteristicsRanges */
1623 static int hf_ivi_SaeAutomationLevels_item; /* SaeAutomationLevel */
1624 static int hf_ivi_VehicleCharacteristicsFixValuesList_item; /* VehicleCharacteristicsFixValues */
1625 static int hf_ivi_VehicleCharacteristicsList_item; /* CompleteVehicleCharacteristics */
1626 static int hf_ivi_VehicleCharacteristicsRangesList_item; /* VehicleCharacteristicsRanges */
1627 static int hf_ivi_ValidityPeriods_item; /* InternationalSign_applicablePeriod */
1628 static int hf_ivi_ZoneIds_item; /* Zid */
1629 static int hf_ivi_latitude; /* Latitude */
1630 static int hf_ivi_longitude; /* Longitude */
1631 static int hf_ivi_altitude; /* Altitude */
1632 static int hf_ivi_owner; /* Provider */
1633 static int hf_ivi_version; /* INTEGER_0_255 */
1634 static int hf_ivi_acPictogramCode; /* INTEGER_0_65535 */
1635 static int hf_ivi_acValue; /* INTEGER_0_65535 */
1636 static int hf_ivi_unit; /* RSCUnit */
1637 static int hf_ivi_attributes; /* ISO14823Attributes */
1638 static int hf_ivi_priority; /* PriorityLevel */
1639 static int hf_ivi_allowedSaeAutomationLevels; /* SaeAutomationLevels */
1640 static int hf_ivi_minGapBetweenVehicles; /* GapBetweenVehicles */
1641 static int hf_ivi_recGapBetweenVehicles; /* GapBetweenVehicles */
1642 static int hf_ivi_automatedVehicleMaxSpeedLimit; /* SpeedValue */
1643 static int hf_ivi_automatedVehicleMinSpeedLimit; /* SpeedValue */
1644 static int hf_ivi_automatedVehicleSpeedRecommendation; /* SpeedValue */
1645 static int hf_ivi_extraText_01; /* ConstraintTextLines2 */
1646 static int hf_ivi_tractor; /* TractorCharacteristics */
1647 static int hf_ivi_trailer; /* TrailerCharacteristicsList */
1648 static int hf_ivi_train; /* TrainCharacteristics */
1649 static int hf_ivi_laneWidth; /* IviLaneWidth */
1650 static int hf_ivi_offsetDistance; /* INTEGER_M32768_32767 */
1651 static int hf_ivi_offsetPosition; /* DeltaReferencePosition */
1652 static int hf_ivi_deltaLatitude; /* DeltaLatitude */
1653 static int hf_ivi_deltaLongitude; /* DeltaLongitude */
1654 static int hf_ivi_dtm; /* InternationalSign_applicablePeriod */
1655 static int hf_ivi_edt; /* InternationalSign_exemptedApplicablePeriod */
1656 static int hf_ivi_dfl; /* InternationalSign_directionalFlowOfLane */
1657 static int hf_ivi_ved; /* InternationalSign_applicableVehicleDimensions */
1658 static int hf_ivi_spe; /* InternationalSign_speedLimits */
1659 static int hf_ivi_roi; /* InternationalSign_rateOfIncline */
1660 static int hf_ivi_dbv; /* InternationalSign_distanceBetweenVehicles */
1661 static int hf_ivi_ddd; /* InternationalSign_destinationInformation */
1662 static int hf_ivi_icPictogramCode; /* T_icPictogramCode */
1663 static int hf_ivi_countryCode; /* OCTET_STRING_SIZE_2 */
1664 static int hf_ivi_serviceCategoryCode; /* T_serviceCategoryCode */
1665 static int hf_ivi_trafficSignPictogram; /* T_trafficSignPictogram */
1666 static int hf_ivi_publicFacilitiesPictogram; /* T_publicFacilitiesPictogram */
1667 static int hf_ivi_ambientOrRoadConditionPictogram; /* T_ambientOrRoadConditionPictogram */
1668 static int hf_ivi_pictogramCategoryCode; /* T_pictogramCategoryCode */
1669 static int hf_ivi_nature; /* INTEGER_1_9 */
1670 static int hf_ivi_serialNumber; /* INTEGER_0_99 */
1671 static int hf_ivi_liValidity; /* InternationalSign_applicablePeriod */
1672 static int hf_ivi_laneType; /* LaneType */
1673 static int hf_ivi_laneTypeQualifier; /* CompleteVehicleCharacteristics */
1674 static int hf_ivi_laneCharacteristics; /* LaneCharacteristics */
1675 static int hf_ivi_laneSurfaceStaticCharacteristics; /* RoadSurfaceStaticCharacteristics */
1676 static int hf_ivi_laneSurfaceDynamicCharacteristics; /* RoadSurfaceDynamicCharacteristics */
1677 static int hf_ivi_zoneDefinitionAccuracy; /* DefinitionAccuracy */
1678 static int hf_ivi_existinglaneMarkingStatus; /* LaneMarkingStatus */
1679 static int hf_ivi_newlaneMarkingColour; /* MarkingColour */
1680 static int hf_ivi_laneDelimitationLeft; /* LaneDelimitation */
1681 static int hf_ivi_laneDelimitationRight; /* LaneDelimitation */
1682 static int hf_ivi_mergingWith; /* Zid */
1683 static int hf_ivi_lcLayoutComponentId; /* INTEGER_1_8_ */
1684 static int hf_ivi_x; /* INTEGER_10_265 */
1685 static int hf_ivi_y; /* INTEGER_10_73 */
1686 static int hf_ivi_textScripting; /* T_textScripting */
1687 static int hf_ivi_goodsType; /* GoodsType */
1688 static int hf_ivi_dangerousGoodsType; /* DangerousGoodsBasic */
1689 static int hf_ivi_specialTransportType; /* SpecialTransportType */
1690 static int hf_ivi_roadsegment; /* RoadSegmentReferenceID */
1691 static int hf_ivi_intersection; /* IntersectionReferenceID */
1692 static int hf_ivi_maxNoOfVehicles; /* MaxNoOfVehicles */
1693 static int hf_ivi_maxLenghtOfPlatoon; /* MaxLenghtOfPlatoon */
1694 static int hf_ivi_platoonMaxSpeedLimit; /* SpeedValue */
1695 static int hf_ivi_platoonMinSpeedLimit; /* SpeedValue */
1696 static int hf_ivi_platoonSpeedRecommendation; /* SpeedValue */
1697 static int hf_ivi_deltaPositions; /* DeltaPositions */
1698 static int hf_ivi_deltaPositionsWithAltitude; /* DeltaReferencePositions */
1699 static int hf_ivi_absolutePositions; /* AbsolutePositions */
1700 static int hf_ivi_absolutePositionsWithAltitude; /* AbsolutePositionsWAltitude */
1701 static int hf_ivi_condition; /* Condition */
1702 static int hf_ivi_temperature; /* Temperature */
1703 static int hf_ivi_iceOrWaterDepth; /* Depth */
1704 static int hf_ivi_treatment; /* TreatmentType */
1705 static int hf_ivi_frictionCoefficient; /* FrictionCoefficient */
1706 static int hf_ivi_material; /* MaterialType */
1707 static int hf_ivi_wear; /* WearLevel */
1708 static int hf_ivi_avBankingAngle; /* BankingAngle */
1709 static int hf_ivi_rscLayoutComponentId; /* INTEGER_1_4_ */
1710 static int hf_ivi_code; /* T_code */
1711 static int hf_ivi_viennaConvention; /* VcCode */
1712 static int hf_ivi_iso14823; /* ISO14823Code */
1713 static int hf_ivi_itisCodes; /* INTEGER_0_65535 */
1714 static int hf_ivi_anyCatalogue; /* AnyCatalogue */
1715 static int hf_ivi_line; /* PolygonalLine */
1716 static int hf_ivi_tLayoutComponentId; /* INTEGER_1_4_ */
1717 static int hf_ivi_language; /* T_language */
1718 static int hf_ivi_textContent; /* UTF8String */
1719 static int hf_ivi_toEqualTo; /* T_TractorCharactEqualTo */
1720 static int hf_ivi_toNotEqualTo; /* T_TractorCharactNotEqualTo */
1721 static int hf_ivi_ranges; /* VehicleCharacteristicsRangesList */
1722 static int hf_ivi_teEqualTo; /* T_TrailerCharactEqualTo */
1723 static int hf_ivi_teNotEqualTo; /* T_TrailerCharactNotEqualTo */
1724 static int hf_ivi_ranges_01; /* TrailerCharacteristicsRangesList */
1725 static int hf_ivi_roadSignClass; /* VcClass */
1726 static int hf_ivi_roadSignCode; /* INTEGER_1_64 */
1727 static int hf_ivi_vcOption; /* VcOption */
1728 static int hf_ivi_vcValidity; /* ValidityPeriods */
1729 static int hf_ivi_vcValue; /* INTEGER_0_65535 */
1730 static int hf_ivi_simpleVehicleType; /* StationType */
1731 static int hf_ivi_euVehicleCategoryCode; /* EuVehicleCategoryCode */
1732 static int hf_ivi_iso3833VehicleType; /* Iso3833VehicleType */
1733 static int hf_ivi_euroAndCo2value; /* EnvironmentalCharacteristics */
1734 static int hf_ivi_engineCharacteristics; /* EngineCharacteristics */
1735 static int hf_ivi_loadType; /* LoadType */
1736 static int hf_ivi_usage; /* VehicleRole */
1737 static int hf_ivi_comparisonOperator; /* ComparisonOperator */
1738 static int hf_ivi_limits; /* T_limits */
1739 static int hf_ivi_numberOfAxles; /* INTEGER_0_7 */
1740 static int hf_ivi_vehicleDimensions; /* VehicleDimensions */
1741 static int hf_ivi_vehicleWeightLimits; /* VehicleWeightLimits */
1742 static int hf_ivi_axleWeightLimits; /* AxleWeightLimits */
1743 static int hf_ivi_passengerCapacity; /* PassengerCapacity */
1744 static int hf_ivi_exhaustEmissionValues; /* ExhaustEmissionValues */
1745 static int hf_ivi_dieselEmissionValues; /* DieselEmissionValues */
1746 static int hf_ivi_soundLevel; /* SoundLevel */
1747 static int hf_ivi_segment; /* Segment */
1748 static int hf_ivi_area; /* PolygonalLine */
1749 static int hf_ivi_computedSegment; /* ComputedSegment */
1750 static int dummy_hf_ivi_eag_field; /* never registered */
1752 /* --- Module CAMv1-PDU-Descriptions --- --- --- */
1754 static int hf_camv1_camv1_CoopAwarenessV1_PDU; /* CoopAwarenessV1 */
1755 static int hf_camv1_generationDeltaTime; /* GenerationDeltaTime */
1756 static int hf_camv1_camParameters; /* CamParameters */
1757 static int hf_camv1_basicContainer; /* BasicContainer */
1758 static int hf_camv1_highFrequencyContainer; /* HighFrequencyContainer */
1759 static int hf_camv1_lowFrequencyContainer; /* LowFrequencyContainer */
1760 static int hf_camv1_specialVehicleContainer; /* SpecialVehicleContainer */
1761 static int hf_camv1_basicVehicleContainerHighFrequency; /* BasicVehicleContainerHighFrequency */
1762 static int hf_camv1_rsuContainerHighFrequency; /* RSUContainerHighFrequency */
1763 static int hf_camv1_basicVehicleContainerLowFrequency; /* BasicVehicleContainerLowFrequency */
1764 static int hf_camv1_publicTransportContainer; /* PublicTransportContainer */
1765 static int hf_camv1_specialTransportContainer; /* SpecialTransportContainer */
1766 static int hf_camv1_dangerousGoodsContainer; /* DangerousGoodsContainer */
1767 static int hf_camv1_roadWorksContainerBasic; /* RoadWorksContainerBasic */
1768 static int hf_camv1_rescueContainer; /* RescueContainer */
1769 static int hf_camv1_emergencyContainer; /* EmergencyContainer */
1770 static int hf_camv1_safetyCarContainer; /* SafetyCarContainer */
1771 static int hf_camv1_stationType; /* StationType */
1772 static int hf_camv1_referencePosition; /* ReferencePosition */
1773 static int hf_camv1_heading; /* Heading */
1774 static int hf_camv1_speed; /* Speed */
1775 static int hf_camv1_driveDirection; /* DriveDirection */
1776 static int hf_camv1_vehicleLength; /* VehicleLength */
1777 static int hf_camv1_vehicleWidth; /* VehicleWidth */
1778 static int hf_camv1_longitudinalAcceleration; /* LongitudinalAcceleration */
1779 static int hf_camv1_curvature; /* Curvature */
1780 static int hf_camv1_curvatureCalculationMode; /* CurvatureCalculationMode */
1781 static int hf_camv1_yawRate; /* YawRate */
1782 static int hf_camv1_accelerationControl; /* AccelerationControl */
1783 static int hf_camv1_lanePosition; /* LanePosition */
1784 static int hf_camv1_steeringWheelAngle; /* SteeringWheelAngle */
1785 static int hf_camv1_lateralAcceleration; /* LateralAcceleration */
1786 static int hf_camv1_verticalAcceleration; /* VerticalAcceleration */
1787 static int hf_camv1_performanceClass; /* PerformanceClass */
1788 static int hf_camv1_cenDsrcTollingZone; /* CenDsrcTollingZone */
1789 static int hf_camv1_vehicleRole; /* VehicleRole */
1790 static int hf_camv1_exteriorLights; /* ExteriorLights */
1791 static int hf_camv1_pathHistory; /* PathHistory */
1792 static int hf_camv1_embarkationStatus; /* EmbarkationStatus */
1793 static int hf_camv1_ptActivation; /* PtActivation */
1794 static int hf_camv1_specialTransportType; /* SpecialTransportType */
1795 static int hf_camv1_lightBarSirenInUse; /* LightBarSirenInUse */
1796 static int hf_camv1_dangerousGoodsBasic; /* DangerousGoodsBasic */
1797 static int hf_camv1_roadworksSubCauseCode; /* RoadworksSubCauseCode */
1798 static int hf_camv1_closedLanes; /* ClosedLanes */
1799 static int hf_camv1_incidentIndication; /* CauseCode */
1800 static int hf_camv1_emergencyPriority; /* EmergencyPriority */
1801 static int hf_camv1_trafficRule; /* TrafficRule */
1802 static int hf_camv1_speedLimit; /* SpeedLimit */
1803 static int hf_camv1_protectedCommunicationZonesRSU; /* ProtectedCommunicationZonesRSU */
1805 /* --- Module CAM-PDU-Descriptions --- --- --- */
1807 static int hf_cam_cam_CamPayload_PDU; /* CamPayload */
1808 static int hf_cam_generationDeltaTime; /* GenerationDeltaTime */
1809 static int hf_cam_camParameters; /* CamParameters */
1810 static int hf_cam_basicContainer; /* BasicContainer */
1811 static int hf_cam_highFrequencyContainer; /* HighFrequencyContainer */
1812 static int hf_cam_lowFrequencyContainer; /* LowFrequencyContainer */
1813 static int hf_cam_specialVehicleContainer; /* SpecialVehicleContainer */
1814 static int hf_cam_basicVehicleContainerHighFrequency; /* BasicVehicleContainerHighFrequency */
1815 static int hf_cam_rsuContainerHighFrequency; /* RSUContainerHighFrequency */
1816 static int hf_cam_basicVehicleContainerLowFrequency; /* BasicVehicleContainerLowFrequency */
1817 static int hf_cam_publicTransportContainer; /* PublicTransportContainer */
1818 static int hf_cam_specialTransportContainer; /* SpecialTransportContainer */
1819 static int hf_cam_dangerousGoodsContainer; /* DangerousGoodsContainer */
1820 static int hf_cam_roadWorksContainerBasic; /* RoadWorksContainerBasic */
1821 static int hf_cam_rescueContainer; /* RescueContainer */
1822 static int hf_cam_emergencyContainer; /* EmergencyContainer */
1823 static int hf_cam_safetyCarContainer; /* SafetyCarContainer */
1824 static int hf_cam_heading; /* Heading */
1825 static int hf_cam_speed; /* Speed */
1826 static int hf_cam_driveDirection; /* DriveDirection */
1827 static int hf_cam_vehicleLength; /* VehicleLength */
1828 static int hf_cam_vehicleWidth; /* VehicleWidth */
1829 static int hf_cam_longitudinalAcceleration; /* AccelerationComponent */
1830 static int hf_cam_curvature; /* Curvature */
1831 static int hf_cam_curvatureCalculationMode; /* CurvatureCalculationMode */
1832 static int hf_cam_yawRate; /* YawRate */
1833 static int hf_cam_accelerationControl; /* AccelerationControl */
1834 static int hf_cam_lanePosition; /* LanePosition */
1835 static int hf_cam_steeringWheelAngle; /* SteeringWheelAngle */
1836 static int hf_cam_lateralAcceleration; /* AccelerationComponent */
1837 static int hf_cam_verticalAcceleration; /* AccelerationComponent */
1838 static int hf_cam_performanceClass; /* PerformanceClass */
1839 static int hf_cam_cenDsrcTollingZone; /* CenDsrcTollingZone */
1840 static int hf_cam_vehicleRole; /* VehicleRole */
1841 static int hf_cam_exteriorLights; /* ExteriorLights */
1842 static int hf_cam_pathHistory; /* Path */
1843 static int hf_cam_embarkationStatus; /* EmbarkationStatus */
1844 static int hf_cam_ptActivation; /* PtActivation */
1845 static int hf_cam_specialTransportType; /* SpecialTransportType */
1846 static int hf_cam_lightBarSirenInUse; /* LightBarSirenInUse */
1847 static int hf_cam_dangerousGoodsBasic; /* DangerousGoodsBasic */
1848 static int hf_cam_roadworksSubCauseCode; /* RoadworksSubCauseCode */
1849 static int hf_cam_closedLanes; /* ClosedLanes */
1850 static int hf_cam_incidentIndication; /* CauseCodeV2 */
1851 static int hf_cam_emergencyPriority; /* EmergencyPriority */
1852 static int hf_cam_trafficRule; /* TrafficRule */
1853 static int hf_cam_speedLimit; /* SpeedLimit */
1854 static int hf_cam_protectedCommunicationZonesRSU; /* ProtectedCommunicationZonesRSU */
1856 /* --- Module DENMv1-PDU-Descriptions --- --- --- */
1858 static int hf_denmv1_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU; /* DecentralizedEnvironmentalNotificationMessageV1 */
1859 static int hf_denmv1_management; /* ManagementContainer */
1860 static int hf_denmv1_situation; /* SituationContainer */
1861 static int hf_denmv1_location; /* LocationContainer */
1862 static int hf_denmv1_alacarte; /* AlacarteContainer */
1863 static int hf_denmv1_actionID; /* ActionID */
1864 static int hf_denmv1_detectionTime; /* TimestampIts */
1865 static int hf_denmv1_referenceTime; /* TimestampIts */
1866 static int hf_denmv1_termination; /* Termination */
1867 static int hf_denmv1_eventPosition; /* ReferencePosition */
1868 static int hf_denmv1_relevanceDistance; /* RelevanceDistance */
1869 static int hf_denmv1_relevanceTrafficDirection; /* RelevanceTrafficDirection */
1870 static int hf_denmv1_validityDuration; /* ValidityDuration */
1871 static int hf_denmv1_transmissionInterval; /* TransmissionInterval */
1872 static int hf_denmv1_stationType; /* StationType */
1873 static int hf_denmv1_informationQuality; /* InformationQuality */
1874 static int hf_denmv1_eventType; /* CauseCode */
1875 static int hf_denmv1_linkedCause; /* CauseCode */
1876 static int hf_denmv1_eventHistory; /* EventHistory */
1877 static int hf_denmv1_eventSpeed; /* Speed */
1878 static int hf_denmv1_eventPositionHeading; /* Heading */
1879 static int hf_denmv1_traces; /* Traces */
1880 static int hf_denmv1_roadType; /* RoadType */
1881 static int hf_denmv1_heightLonCarrLeft; /* HeightLonCarr */
1882 static int hf_denmv1_heightLonCarrRight; /* HeightLonCarr */
1883 static int hf_denmv1_posLonCarrLeft; /* PosLonCarr */
1884 static int hf_denmv1_posLonCarrRight; /* PosLonCarr */
1885 static int hf_denmv1_positionOfPillars; /* PositionOfPillars */
1886 static int hf_denmv1_posCentMass; /* PosCentMass */
1887 static int hf_denmv1_wheelBaseVehicle; /* WheelBaseVehicle */
1888 static int hf_denmv1_turningRadius; /* TurningRadius */
1889 static int hf_denmv1_posFrontAx; /* PosFrontAx */
1890 static int hf_denmv1_positionOfOccupants; /* PositionOfOccupants */
1891 static int hf_denmv1_vehicleMass; /* VehicleMass */
1892 static int hf_denmv1_requestResponseIndication; /* RequestResponseIndication */
1893 static int hf_denmv1_lightBarSirenInUse; /* LightBarSirenInUse */
1894 static int hf_denmv1_closedLanes; /* ClosedLanes */
1895 static int hf_denmv1_restriction; /* RestrictedTypes */
1896 static int hf_denmv1_speedLimit; /* SpeedLimit */
1897 static int hf_denmv1_incidentIndication; /* CauseCode */
1898 static int hf_denmv1_recommendedPath; /* ItineraryPath */
1899 static int hf_denmv1_startingPointSpeedLimit; /* DeltaReferencePosition */
1900 static int hf_denmv1_trafficFlowRule; /* TrafficRule */
1901 static int hf_denmv1_referenceDenms; /* ReferenceDenms */
1902 static int hf_denmv1_stationarySince; /* StationarySince */
1903 static int hf_denmv1_stationaryCause; /* CauseCode */
1904 static int hf_denmv1_carryingDangerousGoods; /* DangerousGoodsExtended */
1905 static int hf_denmv1_numberOfOccupants; /* NumberOfOccupants */
1906 static int hf_denmv1_vehicleIdentification; /* VehicleIdentification */
1907 static int hf_denmv1_energyStorageType; /* EnergyStorageType */
1908 static int hf_denmv1_lanePosition; /* LanePosition */
1909 static int hf_denmv1_impactReduction; /* ImpactReductionContainer */
1910 static int hf_denmv1_externalTemperature; /* Temperature */
1911 static int hf_denmv1_roadWorks; /* RoadWorksContainerExtended */
1912 static int hf_denmv1_positioningSolution; /* PositioningSolutionType */
1913 static int hf_denmv1_stationaryVehicle; /* StationaryVehicleContainer */
1914 static int hf_denmv1_ReferenceDenms_item; /* ActionID */
1916 /* --- Module DENM-PDU-Description --- --- --- */
1918 static int hf_denm_denm_DenmPayload_PDU; /* DenmPayload */
1919 static int hf_denm_management; /* ManagementContainer */
1920 static int hf_denm_situation; /* SituationContainer */
1921 static int hf_denm_location; /* LocationContainer */
1922 static int hf_denm_alacarte; /* AlacarteContainer */
1923 static int hf_denm_actionId; /* ActionId */
1924 static int hf_denm_detectionTime; /* TimestampIts */
1925 static int hf_denm_referenceTime; /* TimestampIts */
1926 static int hf_denm_termination; /* Termination */
1927 static int hf_denm_eventPosition; /* ReferencePosition */
1928 static int hf_denm_awarenessDistance; /* StandardLength3b */
1929 static int hf_denm_awarenessTrafficDirection; /* TrafficDirection */
1930 static int hf_denm_validityDuration; /* DeltaTimeSecond */
1931 static int hf_denm_transmissionInterval; /* DeltaTimeMilliSecondPositive */
1932 static int hf_denm_stationType; /* StationType */
1933 static int hf_denm_informationQuality; /* InformationQuality */
1934 static int hf_denm_eventType; /* CauseCodeV2 */
1935 static int hf_denm_linkedCause; /* CauseCodeV2 */
1936 static int hf_denm_eventZone; /* EventZone */
1937 static int hf_denm_eventSpeed; /* Speed */
1938 static int hf_denm_eventPositionHeading; /* Wgs84Angle */
1939 static int hf_denm_traces; /* Traces */
1940 static int hf_denm_roadType; /* RoadType */
1941 static int hf_denm_heightLonCarrLeft; /* HeightLonCarr */
1942 static int hf_denm_heightLonCarrRight; /* HeightLonCarr */
1943 static int hf_denm_posLonCarrLeft; /* PosLonCarr */
1944 static int hf_denm_posLonCarrRight; /* PosLonCarr */
1945 static int hf_denm_positionOfPillars; /* PositionOfPillars */
1946 static int hf_denm_posCentMass; /* PosCentMass */
1947 static int hf_denm_wheelBaseVehicle; /* WheelBaseVehicle */
1948 static int hf_denm_turningRadius; /* TurningRadius */
1949 static int hf_denm_posFrontAx; /* PosFrontAx */
1950 static int hf_denm_positionOfOccupants; /* PositionOfOccupants */
1951 static int hf_denm_vehicleMass; /* VehicleMass */
1952 static int hf_denm_requestResponseIndication; /* RequestResponseIndication */
1953 static int hf_denm_lightBarSirenInUse; /* LightBarSirenInUse */
1954 static int hf_denm_closedLanes; /* ClosedLanes */
1955 static int hf_denm_restriction; /* RestrictedTypes */
1956 static int hf_denm_speedLimit; /* SpeedLimit */
1957 static int hf_denm_incidentIndication; /* CauseCodeV2 */
1958 static int hf_denm_recommendedPath; /* ItineraryPath */
1959 static int hf_denm_startingPointSpeedLimit; /* DeltaReferencePosition */
1960 static int hf_denm_trafficFlowRule; /* TrafficRule */
1961 static int hf_denm_referenceDenms; /* ActionIdList */
1962 static int hf_denm_stationarySince; /* StationarySince */
1963 static int hf_denm_stationaryCause; /* CauseCodeV2 */
1964 static int hf_denm_carryingDangerousGoods; /* DangerousGoodsExtended */
1965 static int hf_denm_numberOfOccupants; /* NumberOfOccupants */
1966 static int hf_denm_vehicleIdentification; /* VehicleIdentification */
1967 static int hf_denm_energyStorageType; /* EnergyStorageType */
1968 static int hf_denm_lanePosition; /* LanePosition */
1969 static int hf_denm_impactReduction; /* ImpactReductionContainer */
1970 static int hf_denm_externalTemperature; /* Temperature */
1971 static int hf_denm_roadWorks; /* RoadWorksContainerExtended */
1972 static int hf_denm_positioningSolution; /* PositioningSolutionType */
1973 static int hf_denm_stationaryVehicle; /* StationaryVehicleContainer */
1975 /* --- Module TIS-TPG-Transactions-Descriptions --- --- --- */
1977 static int hf_tistpg_tistpg_TisTpgTransaction_PDU; /* TisTpgTransaction */
1978 static int hf_tistpg_drm; /* TisTpgDRM */
1979 static int hf_tistpg_snm; /* TisTpgSNM */
1980 static int hf_tistpg_trm; /* TisTpgTRM */
1981 static int hf_tistpg_tcm; /* TisTpgTCM */
1982 static int hf_tistpg_vdrm; /* TisTpgVDRM */
1983 static int hf_tistpg_vdpm; /* TisTpgVDPM */
1984 static int hf_tistpg_eofm; /* TisTpgEOFM */
1985 static int hf_tistpg_drmManagement; /* TisTpgDRM_Management */
1986 static int hf_tistpg_drmSituation; /* TisTpgDRM_Situation */
1987 static int hf_tistpg_drmLocation; /* TisTpgDRM_Location */
1988 static int hf_tistpg_generationTime; /* TimestampIts */
1989 static int hf_tistpg_vehicleType; /* UNVehicleClassifcation */
1990 static int hf_tistpg_costumerContract; /* CustomerContract */
1991 static int hf_tistpg_tisProfile; /* TisProfile */
1992 static int hf_tistpg_causeCode; /* CauseCode */
1993 static int hf_tistpg_vehiclePosition; /* ReferencePosition */
1994 static int hf_tistpg_vehicleSpeed; /* Speed */
1995 static int hf_tistpg_vehicleHeading; /* Heading */
1996 static int hf_tistpg_requestedPosition; /* ReferencePosition */
1997 static int hf_tistpg_searchRange; /* SearchRange */
1998 static int hf_tistpg_searchCondition; /* SearchCondition */
1999 static int hf_tistpg_snmManagement; /* TisTpgSNM_Management */
2000 static int hf_tistpg_tpgContainer; /* TpgNotifContainer */
2001 static int hf_tistpg_totalTpgStations; /* TotalTpgStations */
2002 static int hf_tistpg_trmManagement; /* TisTpgTRM_Management */
2003 static int hf_tistpg_trmSituation; /* TisTpgTRM_Situation */
2004 static int hf_tistpg_trmLocation; /* TisTpgTRM_Location */
2005 static int hf_tistpg_tpgStationID; /* StationID */
2006 static int hf_tistpg_reservationStatus; /* ReservationStatus */
2007 static int hf_tistpg_costumercontract; /* CustomerContract */
2008 static int hf_tistpg_reservationID; /* ReservationID */
2009 static int hf_tistpg_estArrivalTime; /* TimestampIts */
2010 static int hf_tistpg_proposedPairingID; /* PairingID */
2011 static int hf_tistpg_tcmManagement; /* TisTpgTCM_Management */
2012 static int hf_tistpg_tcmSituation; /* TisTpgTCM_Situation */
2013 static int hf_tistpg_tcmLocation; /* TisTpgTCM_Location */
2014 static int hf_tistpg_reservedTpg; /* INTEGER_1_65535 */
2015 static int hf_tistpg_tpgAutomationLevel; /* TpgAutomation */
2016 static int hf_tistpg_pairingID; /* PairingID */
2017 static int hf_tistpg_reservationTimeLimit; /* TimestampIts */
2018 static int hf_tistpg_cancellationCondition; /* CancellationCondition */
2019 static int hf_tistpg_tpgLocation; /* ReferencePosition */
2020 static int hf_tistpg_address; /* UTF8String_SIZE_1_128 */
2021 static int hf_tistpg_vdrmManagement; /* TisTpgVDRM_Management */
2022 static int hf_tistpg_fillingStatus; /* FillingStatus */
2023 static int hf_tistpg_automationLevel; /* TpgAutomation */
2024 static int hf_tistpg_vdpmManagement; /* TisTpgVDPM_Management */
2025 static int hf_tistpg_placardTable; /* PlacardTable */
2026 static int hf_tistpg_vehicleSpecificData; /* VehicleSpecificData */
2027 static int hf_tistpg_language; /* Language */
2028 static int hf_tistpg_tyreTempCondition; /* TyreTempCondition */
2029 static int hf_tistpg_currentVehicleConfiguration; /* PressureConfiguration */
2030 static int hf_tistpg_frontLeftTyreData; /* TyreData */
2031 static int hf_tistpg_frontRightTyreData; /* TyreData */
2032 static int hf_tistpg_rearLeftTyreData; /* TyreData */
2033 static int hf_tistpg_rearRightTyreData; /* TyreData */
2034 static int hf_tistpg_spareTyreData; /* TyreData */
2035 static int hf_tistpg_eofmManagement; /* TisTpgEOFM_Management */
2036 static int hf_tistpg_numberOfAppliedPressure; /* NumberOfAppliedPressure */
2037 static int hf_tistpg_appliedTyrePressures; /* AppliedTyrePressures */
2038 static int hf_tistpg_PlacardTable_item; /* TyreSetVariant */
2039 static int hf_tistpg_variantID; /* TyreSetVariantID */
2040 static int hf_tistpg_frontAxleDimension; /* TyreSidewallInformation */
2041 static int hf_tistpg_rearAxleDimension; /* TyreSidewallInformation */
2042 static int hf_tistpg_pressureVariantsList; /* PressureVariantsList */
2043 static int hf_tistpg_PressureVariantsList_item; /* PressureVariant */
2044 static int hf_tistpg_pressureConfiguration; /* PressureConfiguration */
2045 static int hf_tistpg_frontAxlePressure; /* AxlePlacardPressure */
2046 static int hf_tistpg_rearAxlePressure; /* AxlePlacardPressure */
2047 static int hf_tistpg_currentTyrePressure; /* T_currentTyrePressure */
2048 static int hf_tistpg_tyrePressureValue; /* TyrePressure */
2049 static int hf_tistpg_unavailable; /* NULL */
2050 static int hf_tistpg_tyreSidewallInformation; /* T_tyreSidewallInformation */
2051 static int hf_tistpg_tyreSidewallInformationValue; /* TyreSidewallInformation */
2052 static int hf_tistpg_currentInsideAirTemperature; /* T_currentInsideAirTemperature */
2053 static int hf_tistpg_tyreAirTemperatureValue; /* TyreAirTemperature */
2054 static int hf_tistpg_recommendedTyrePressure; /* T_recommendedTyrePressure */
2055 static int hf_tistpg_axlePlacardPressureValue; /* AxlePlacardPressure */
2056 static int hf_tistpg_tin; /* T_tin */
2057 static int hf_tistpg_tinValue; /* TIN */
2058 static int hf_tistpg_sensorState; /* T_sensorState */
2059 static int hf_tistpg_sensorStateValue; /* SensorState */
2060 static int hf_tistpg_tpgNumber; /* TpgNumber */
2061 static int hf_tistpg_tpgProvider; /* TpgProvider */
2062 static int hf_tistpg_accessibility; /* Accessibility */
2063 static int hf_tistpg_phoneNumber; /* PhoneNumber */
2064 static int hf_tistpg_digitalMap; /* DigitalMap */
2065 static int hf_tistpg_openingDaysHours; /* OpeningDaysHours */
2066 static int hf_tistpg_bookingInfo; /* BookingInfo */
2067 static int hf_tistpg_availableTpgNumber; /* AvailableTpgNumber */
2068 static int hf_tistpg_AppliedTyrePressures_item; /* AppliedTyrePressure */
2069 static int hf_tistpg_TpgNotifContainer_item; /* TpgStationData */
2070 /* named bits */
2071 static int hf_tistpg_TpgAutomation_fullAutomated;
2072 static int hf_tistpg_TpgAutomation_semiAutomated;
2073 static int hf_tistpg_TpgAutomation_manual;
2074 static int hf_tistpg_TpgAutomation_reserved;
2075 static int hf_tistpg_TisProfile_reserved;
2076 static int hf_tistpg_TisProfile_profileOne;
2077 static int hf_tistpg_TisProfile_profileTwo;
2078 static int hf_tistpg_TisProfile_profileThree;
2080 /* --- Module EVCSN-PDU-Descriptions --- --- --- */
2082 static int hf_evcsn_evcsn_EVChargingSpotNotificationPOIMessage_PDU; /* EVChargingSpotNotificationPOIMessage */
2083 static int hf_evcsn_poiHeader; /* ItsPOIHeader */
2084 static int hf_evcsn_evcsnData; /* ItsEVCSNData */
2085 static int hf_evcsn_poiType; /* POIType */
2086 static int hf_evcsn_timeStamp; /* TimestampIts */
2087 static int hf_evcsn_relayCapable; /* BOOLEAN */
2088 static int hf_evcsn_totalNumberOfStations; /* NumberStations */
2089 static int hf_evcsn_chargingStationsData; /* SEQUENCE_SIZE_1_256_OF_ItsChargingStationData */
2090 static int hf_evcsn_chargingStationsData_item; /* ItsChargingStationData */
2091 static int hf_evcsn_chargingStationID; /* StationID */
2092 static int hf_evcsn_utilityDistributorId; /* UTF8String_SIZE_1_32 */
2093 static int hf_evcsn_providerID; /* UTF8String_SIZE_1_32 */
2094 static int hf_evcsn_chargingStationLocation; /* ReferencePosition */
2095 static int hf_evcsn_address; /* UTF8String */
2096 static int hf_evcsn_phoneNumber; /* NumericString_SIZE_1_16 */
2097 static int hf_evcsn_accessibility; /* UTF8String_SIZE_1_32 */
2098 static int hf_evcsn_digitalMap; /* DigitalMap */
2099 static int hf_evcsn_openingDaysHours; /* UTF8String */
2100 static int hf_evcsn_pricing; /* UTF8String */
2101 static int hf_evcsn_bookingContactInfo; /* UTF8String */
2102 static int hf_evcsn_payment; /* UTF8String */
2103 static int hf_evcsn_chargingSpotsAvailable; /* ItsChargingSpots */
2104 static int hf_evcsn_ItsChargingSpots_item; /* ItsChargingSpotDataElements */
2105 static int hf_evcsn_type; /* ChargingSpotType */
2106 static int hf_evcsn_evEquipmentID; /* UTF8String */
2107 static int hf_evcsn_typeOfReceptacle; /* TypeOfReceptacle */
2108 static int hf_evcsn_energyAvailability; /* UTF8String */
2109 static int hf_evcsn_parkingPlacesData; /* ParkingPlacesData */
2110 static int hf_evcsn_ParkingPlacesData_item; /* SpotAvailability */
2111 static int hf_evcsn_maxWaitingTimeMinutes; /* INTEGER_0_1400 */
2112 static int hf_evcsn_blocking; /* BOOLEAN */
2113 /* named bits */
2114 static int hf_evcsn_ChargingSpotType_standardChargeMode1;
2115 static int hf_evcsn_ChargingSpotType_standardChargeMode2;
2116 static int hf_evcsn_ChargingSpotType_standardOrFastChargeMode3;
2117 static int hf_evcsn_ChargingSpotType_fastChargeWithExternalCharger;
2118 static int hf_evcsn_ChargingSpotType_spare_bit4;
2119 static int hf_evcsn_ChargingSpotType_spare_bit5;
2120 static int hf_evcsn_ChargingSpotType_spare_bit6;
2121 static int hf_evcsn_ChargingSpotType_spare_bit7;
2122 static int hf_evcsn_ChargingSpotType_quickDrop;
2123 static int hf_evcsn_ChargingSpotType_spare_bit9;
2124 static int hf_evcsn_ChargingSpotType_spare_bit10;
2125 static int hf_evcsn_ChargingSpotType_spare_bit11;
2126 static int hf_evcsn_ChargingSpotType_inductiveChargeWhileStationary;
2127 static int hf_evcsn_ChargingSpotType_spare_bit13;
2128 static int hf_evcsn_ChargingSpotType_inductiveChargeWhileDriving;
2130 /* --- Module EV-RechargingSpotReservation-PDU-Descriptions --- --- --- */
2132 static int hf_evrsr_evrsr_EV_RSR_MessageBody_PDU; /* EV_RSR_MessageBody */
2133 static int hf_evrsr_preReservationRequestMessage; /* PreReservationRequestMessage */
2134 static int hf_evrsr_preReservationResponseMessage; /* PreReservationResponseMessage */
2135 static int hf_evrsr_reservationRequestMessage; /* ReservationRequestMessage */
2136 static int hf_evrsr_reservationResponseMessage; /* ReservationResponseMessage */
2137 static int hf_evrsr_cancellationRequestMessage; /* CancellationRequestMessage */
2138 static int hf_evrsr_cancellationResponseMessage; /* CancellationResponseMessage */
2139 static int hf_evrsr_updateRequestMessage; /* UpdateRequestMessage */
2140 static int hf_evrsr_updateResponseMessage; /* UpdateResponseMessage */
2141 static int hf_evrsr_evse_ID; /* EVSE_ID */
2142 static int hf_evrsr_arrivalTime; /* TimestampUTC */
2143 static int hf_evrsr_departureTime; /* TimestampUTC */
2144 static int hf_evrsr_rechargingType; /* RechargingType */
2145 static int hf_evrsr_batteryType; /* BatteryType */
2146 static int hf_evrsr_preReservation_ID; /* PreReservation_ID */
2147 static int hf_evrsr_availabilityStatus; /* AvailabilityStatus */
2148 static int hf_evrsr_preReservationExpirationTime; /* TimestampUTC */
2149 static int hf_evrsr_supportedPaymentTypes; /* SupportedPaymentTypes */
2150 static int hf_evrsr_currentTime; /* TimestampUTC */
2151 static int hf_evrsr_eAmount; /* EAmount */
2152 static int hf_evrsr_eAmountMin; /* EAmount */
2153 static int hf_evrsr_paymentType; /* PaymentType */
2154 static int hf_evrsr_payment_ID; /* Payment_ID */
2155 static int hf_evrsr_secondPayment_ID; /* Payment_ID */
2156 static int hf_evrsr_pairing_ID; /* Pairing_ID */
2157 static int hf_evrsr_reservationResponseCode; /* ReservationResponseCode */
2158 static int hf_evrsr_reservation_ID; /* Reservation_ID */
2159 static int hf_evrsr_reservation_Password; /* Reservation_Password */
2160 static int hf_evrsr_stationDetails; /* StationDetails */
2161 static int hf_evrsr_chargingSpotLabel; /* ChargingSpotLabel */
2162 static int hf_evrsr_expirationTime; /* TimestampUTC */
2163 static int hf_evrsr_freeCancelTimeLimit; /* TimestampUTC */
2164 static int hf_evrsr_cancellationResponseCode; /* CancellationResponseCode */
2165 static int hf_evrsr_updatedArrivalTime; /* TimestampUTC */
2166 static int hf_evrsr_updatedDepartureTime; /* TimestampUTC */
2167 static int hf_evrsr_updateResponseCode; /* UpdateResponseCode */
2168 static int hf_evrsr_contractID; /* ContractID */
2169 static int hf_evrsr_externalIdentificationMeans; /* ExternalIdentificationMeans */
2170 static int hf_evrsr_rechargingMode; /* RechargingMode */
2171 static int hf_evrsr_powerSource; /* PowerSource */
2172 /* named bits */
2173 static int hf_evrsr_SupportedPaymentTypes_contract;
2174 static int hf_evrsr_SupportedPaymentTypes_externalIdentification;
2176 /* --- Module CPM-OriginatingStationContainers --- --- --- */
2178 static int hf_cpm_cpm_OriginatingVehicleContainer_PDU; /* OriginatingVehicleContainer */
2179 static int hf_cpm_cpm_OriginatingRsuContainer_PDU; /* OriginatingRsuContainer */
2180 static int hf_cpm_orientationAngle; /* Wgs84Angle */
2181 static int hf_cpm_pitchAngle; /* CartesianAngle */
2182 static int hf_cpm_rollAngle; /* CartesianAngle */
2183 static int hf_cpm_trailerDataSet; /* TrailerDataSet */
2184 static int hf_cpm_mapReference; /* MapReference */
2185 static int hf_cpm_TrailerDataSet_item; /* TrailerData */
2187 /* --- Module CPM-PDU-Descriptionsv1 --- --- --- */
2189 static int hf_cpmv1_cpmv1_CollectivePerceptionMessagev1_PDU; /* CollectivePerceptionMessagev1 */
2190 static int hf_cpmv1_generationDeltaTime; /* GenerationDeltaTime */
2191 static int hf_cpmv1_cpmParameters; /* CpmParameters */
2192 static int hf_cpmv1_managementContainer; /* CpmManagementContainer */
2193 static int hf_cpmv1_stationDataContainer; /* StationDataContainer */
2194 static int hf_cpmv1_sensorInformationContainer; /* SensorInformationContainerv1 */
2195 static int hf_cpmv1_perceivedObjectContainer; /* PerceivedObjectContainerv1 */
2196 static int hf_cpmv1_freeSpaceAddendumContainer; /* FreeSpaceAddendumContainer */
2197 static int hf_cpmv1_numberOfPerceivedObjects; /* NumberOfPerceivedObjects */
2198 static int hf_cpmv1_stationType; /* StationType */
2199 static int hf_cpmv1_perceivedObjectContainerSegmentInfo; /* PerceivedObjectContainerSegmentInfo */
2200 static int hf_cpmv1_referencePosition; /* ReferencePosition */
2201 static int hf_cpmv1_originatingVehicleContainer; /* OriginatingVehicleContainerV1 */
2202 static int hf_cpmv1_originatingRSUContainer; /* OriginatingRSUContainer */
2203 static int hf_cpmv1_heading; /* Heading */
2204 static int hf_cpmv1_speed; /* Speed */
2205 static int hf_cpmv1_vehicleOrientationAngle; /* WGS84Angle */
2206 static int hf_cpmv1_driveDirection; /* DriveDirection */
2207 static int hf_cpmv1_longitudinalAcceleration; /* LongitudinalAcceleration */
2208 static int hf_cpmv1_lateralAcceleration; /* LateralAcceleration */
2209 static int hf_cpmv1_verticalAcceleration; /* VerticalAcceleration */
2210 static int hf_cpmv1_yawRate; /* YawRate */
2211 static int hf_cpmv1_pitchAnglev1; /* CartesianAngle */
2212 static int hf_cpmv1_rollAnglev1; /* CartesianAngle */
2213 static int hf_cpmv1_vehicleLengthv1; /* VehicleLength */
2214 static int hf_cpmv1_vehicleWidthv1; /* VehicleWidth */
2215 static int hf_cpmv1_vehicleHeightv1; /* VehicleHeight */
2216 static int hf_cpmv1_trailerDataContainerv1; /* TrailerDataContainer */
2217 static int hf_cpmv1_intersectionReferenceId; /* IntersectionReferenceID */
2218 static int hf_cpmv1_roadSegmentReferenceId; /* RoadSegmentReferenceID */
2219 static int hf_cpmv1_SensorInformationContainerv1_item; /* SensorInformationv1 */
2220 static int hf_cpmv1_sensorID; /* Identifier */
2221 static int hf_cpmv1_type; /* SensorType */
2222 static int hf_cpmv1_detectionArea; /* DetectionArea */
2223 static int hf_cpmv1_freeSpaceConfidence; /* FreeSpaceConfidence */
2224 static int hf_cpmv1_PerceivedObjectContainerv1_item; /* PerceivedObjectv1 */
2225 static int hf_cpmv1_objectID; /* Identifier */
2226 static int hf_cpmv1_sensorIDList; /* SensorIdList */
2227 static int hf_cpmv1_timeOfMeasurement; /* TimeOfMeasurement */
2228 static int hf_cpmv1_objectAge; /* ObjectAge */
2229 static int hf_cpmv1_objectConfidence; /* ObjectConfidence */
2230 static int hf_cpmv1_xDistance; /* ObjectDistanceWithConfidence */
2231 static int hf_cpmv1_yDistance; /* ObjectDistanceWithConfidence */
2232 static int hf_cpmv1_zDistance; /* ObjectDistanceWithConfidence */
2233 static int hf_cpmv1_xSpeed; /* SpeedExtended */
2234 static int hf_cpmv1_ySpeed; /* SpeedExtended */
2235 static int hf_cpmv1_zSpeed; /* SpeedExtended */
2236 static int hf_cpmv1_xAcceleration; /* LongitudinalAcceleration */
2237 static int hf_cpmv1_yAcceleration; /* LateralAcceleration */
2238 static int hf_cpmv1_zAcceleration; /* VerticalAcceleration */
2239 static int hf_cpmv1_yawAngle; /* CartesianAngle */
2240 static int hf_cpmv1_planarObjectDimension1; /* ObjectDimension */
2241 static int hf_cpmv1_planarObjectDimension2; /* ObjectDimension */
2242 static int hf_cpmv1_verticalObjectDimension; /* ObjectDimension */
2243 static int hf_cpmv1_objectRefPoint; /* ObjectRefPoint */
2244 static int hf_cpmv1_dynamicStatus; /* DynamicStatus */
2245 static int hf_cpmv1_classification; /* ObjectClassDescription */
2246 static int hf_cpmv1_matchedPosition; /* MatchedPosition */
2247 static int hf_cpmv1_vehicleSensor; /* VehicleSensor */
2248 static int hf_cpmv1_stationarySensorRadial; /* AreaRadial */
2249 static int hf_cpmv1_stationarySensorPolygon; /* AreaPolygon */
2250 static int hf_cpmv1_stationarySensorCircular; /* AreaCircular */
2251 static int hf_cpmv1_stationarySensorEllipse; /* AreaEllipse */
2252 static int hf_cpmv1_stationarySensorRectangle; /* AreaRectangle */
2253 static int hf_cpmv1_refPointId; /* RefPointId */
2254 static int hf_cpmv1_xSensorOffset; /* XSensorOffset */
2255 static int hf_cpmv1_ySensorOffset; /* YSensorOffset */
2256 static int hf_cpmv1_zSensorOffset; /* ZSensorOffset */
2257 static int hf_cpmv1_vehicleSensorPropertyList; /* VehicleSensorPropertyList */
2258 static int hf_cpmv1_VehicleSensorPropertyList_item; /* VehicleSensorProperties */
2259 static int hf_cpmv1_range; /* Range */
2260 static int hf_cpmv1_horizontalOpeningAngleStart; /* CartesianAngleValue */
2261 static int hf_cpmv1_horizontalOpeningAngleEnd; /* CartesianAngleValue */
2262 static int hf_cpmv1_verticalOpeningAngleStart; /* CartesianAngleValue */
2263 static int hf_cpmv1_verticalOpeningAngleEnd; /* CartesianAngleValue */
2264 static int hf_cpmv1_nodeCenterPoint; /* OffsetPoint */
2265 static int hf_cpmv1_radius; /* Radius */
2266 static int hf_cpmv1_semiMinorRangeLength; /* SemiRangeLength */
2267 static int hf_cpmv1_semiMajorRangeLength; /* SemiRangeLength */
2268 static int hf_cpmv1_semiMajorRangeOrientation; /* WGS84AngleValue */
2269 static int hf_cpmv1_semiHeight; /* SemiRangeLength */
2270 static int hf_cpmv1_polyPointList; /* PolyPointList */
2271 static int hf_cpmv1_PolyPointList_item; /* OffsetPoint */
2272 static int hf_cpmv1_stationaryHorizontalOpeningAngleStart; /* WGS84AngleValue */
2273 static int hf_cpmv1_stationaryHorizontalOpeningAngleEnd; /* WGS84AngleValue */
2274 static int hf_cpmv1_sensorPositionOffset; /* OffsetPoint */
2275 static int hf_cpmv1_sensorHeight; /* SensorHeight */
2276 static int hf_cpmv1_FreeSpaceAddendumContainer_item; /* FreeSpaceAddendum */
2277 static int hf_cpmv1_freeSpaceArea; /* FreeSpaceArea */
2278 static int hf_cpmv1_shadowingApplies; /* ShadowingApplies */
2279 static int hf_cpmv1_freeSpacePolygon; /* AreaPolygon */
2280 static int hf_cpmv1_freeSpaceCircular; /* AreaCircular */
2281 static int hf_cpmv1_freeSpaceEllipse; /* AreaEllipse */
2282 static int hf_cpmv1_freeSpaceRectangle; /* AreaRectangle */
2283 static int hf_cpmv1_value; /* DistanceValue */
2284 static int hf_cpmv1_confidence; /* DistanceConfidence */
2285 static int hf_cpmv1_value_01; /* ObjectDimensionValue */
2286 static int hf_cpmv1_confidence_01; /* ObjectDimensionConfidence */
2287 static int hf_cpmv1_value_02; /* CartesianAngleValue */
2288 static int hf_cpmv1_confidence_02; /* AngleConfidence */
2289 static int hf_cpmv1_value_03; /* WGS84AngleValue */
2290 static int hf_cpmv1_value_04; /* SpeedValueExtended */
2291 static int hf_cpmv1_confidence_03; /* SpeedConfidence */
2292 static int hf_cpmv1_SensorIdList_item; /* Identifier */
2293 static int hf_cpmv1_TrailerDataContainer_item; /* TrailerData */
2294 static int hf_cpmv1_hitchPointOffset; /* HitchPointOffset */
2295 static int hf_cpmv1_frontOverhang; /* FrontOverhang */
2296 static int hf_cpmv1_rearOverhang; /* RearOverhang */
2297 static int hf_cpmv1_trailerWidth; /* VehicleWidth */
2298 static int hf_cpmv1_hitchAngle; /* CartesianAngle */
2299 static int hf_cpmv1_longitudinalLanePositionValue; /* LongitudinalLanePositionValue */
2300 static int hf_cpmv1_longitudinalLanePositionConfidence; /* LongitudinalLanePositionConfidence */
2301 static int hf_cpmv1_laneID; /* LaneID */
2302 static int hf_cpmv1_longitudinalLanePosition; /* LongitudinalLanePosition */
2303 static int hf_cpmv1_totalMsgSegments; /* SegmentCount */
2304 static int hf_cpmv1_thisSegmentNum; /* SegmentCount */
2305 static int hf_cpmv1_ObjectClassDescription_item; /* ObjectClass */
2306 static int hf_cpmv1_confidence_04; /* ClassConfidence */
2307 static int hf_cpmv1_class; /* T_class */
2308 static int hf_cpmv1_vehicle; /* VehicleSubclass */
2309 static int hf_cpmv1_person; /* PersonSubclass */
2310 static int hf_cpmv1_animal; /* AnimalSubclass */
2311 static int hf_cpmv1_other; /* OtherSubclass */
2312 static int hf_cpmv1_type_01; /* VehicleSubclassType */
2313 static int hf_cpmv1_type_02; /* PersonSubclassType */
2314 static int hf_cpmv1_type_03; /* AnimalSubclassType */
2315 static int hf_cpmv1_type_04; /* OtherSublassType */
2316 static int hf_cpmv1_nodeOffsetPointxy; /* NodeOffsetPointXY */
2317 static int hf_cpmv1_nodeOffsetPointZ; /* NodeOffsetPointZ */
2318 static int hf_cpmv1_node_Z1; /* Offset_B10 */
2319 static int hf_cpmv1_node_Z2; /* Offset_B11 */
2320 static int hf_cpmv1_node_Z3; /* Offset_B12 */
2321 static int hf_cpmv1_node_Z4; /* Offset_B13 */
2322 static int hf_cpmv1_node_Z5; /* Offset_B14 */
2323 static int hf_cpmv1_node_Z6; /* Offset_B16 */
2325 /* --- Module CPM-PDU-Descriptions --- --- --- */
2327 static int hf_cpm_cpm_CpmPayload_PDU; /* CpmPayload */
2328 static int hf_cpm_managementContainer; /* ManagementContainer */
2329 static int hf_cpm_cpmContainers; /* ConstraintWrappedCpmContainers */
2330 static int hf_cpm_referenceTime; /* TimestampIts */
2331 static int hf_cpm_referencePosition; /* ReferencePosition */
2332 static int hf_cpm_segmentationInfo; /* MessageSegmentationInfo */
2333 static int hf_cpm_messageRateRange; /* MessageRateRange */
2334 static int hf_cpm_containerId; /* CpmContainerId */
2335 static int hf_cpm_containerData; /* T_containerData */
2336 static int hf_cpm_WrappedCpmContainers_item; /* WrappedCpmContainer */
2337 static int hf_cpm_messageRateMin; /* MessageRateHz */
2338 static int hf_cpm_messageRateMax; /* MessageRateHz */
2340 /* --- Module CPM-PerceivedObjectContainer --- --- --- */
2342 static int hf_cpm_cpm_PerceivedObjectContainer_PDU; /* PerceivedObjectContainer */
2343 static int hf_cpm_numberOfPerceivedObjects; /* CardinalNumber1B */
2344 static int hf_cpm_perceivedObjects; /* PerceivedObjects */
2345 static int hf_cpm_PerceivedObjects_item; /* PerceivedObject */
2347 /* --- Module CPM-PerceptionRegionContainer --- --- --- */
2349 static int hf_cpm_cpm_PerceptionRegionContainer_PDU; /* PerceptionRegionContainer */
2350 static int hf_cpm_PerceptionRegionContainer_item; /* PerceptionRegion */
2351 static int hf_cpm_measurementDeltaTime; /* DeltaTimeMilliSecondSigned */
2352 static int hf_cpm_perceptionRegionPerceptionRegionConfidence; /* ConfidenceLevel */
2353 static int hf_cpm_perceptionRegionPerceptionRegionShape; /* Shape */
2354 static int hf_cpm_perceptionRegionShadowingApplies; /* T_PerceptionRegionShadowingApplies */
2355 static int hf_cpm_sensorIdList; /* SequenceOfIdentifier1B */
2356 static int hf_cpm_perceptionRegionNumberOfPerceivedObjects; /* T_PerceptionRegionNumberOfPerceivedObjects */
2357 static int hf_cpm_perceivedObjectIds; /* PerceivedObjectIds */
2358 static int hf_cpm_PerceivedObjectIds_item; /* Identifier2B */
2360 /* --- Module CPM-SensorInformationContainer --- --- --- */
2362 static int hf_cpm_cpm_SensorInformationContainer_PDU; /* SensorInformationContainer */
2363 static int hf_cpm_SensorInformationContainer_item; /* SensorInformation */
2364 static int hf_cpm_sensorId; /* Identifier1B */
2365 static int hf_cpm_sensorType; /* SensorType */
2366 static int hf_cpm_perceptionRegionShape; /* Shape */
2367 static int hf_cpm_perceptionRegionConfidence; /* ConfidenceLevel */
2368 static int hf_cpm_shadowingApplies; /* BOOLEAN */
2370 /* --- Module VAM-PDU-Descriptions --- --- --- */
2372 static int hf_vam_vam_VruAwareness_PDU; /* VruAwareness */
2373 static int hf_vam_generationDeltaTime; /* GenerationDeltaTime */
2374 static int hf_vam_vamParameters; /* VamParameters */
2375 static int hf_vam_basicContainer; /* BasicContainer */
2376 static int hf_vam_vruHighFrequencyContainer; /* VruHighFrequencyContainer */
2377 static int hf_vam_vruLowFrequencyContainer; /* VruLowFrequencyContainer */
2378 static int hf_vam_vruClusterInformationContainer; /* VruClusterInformationContainer */
2379 static int hf_vam_vruClusterOperationContainer; /* VruClusterOperationContainer */
2380 static int hf_vam_vruMotionPredictionContainer; /* VruMotionPredictionContainer */
2381 static int hf_vam_heading; /* Wgs84Angle */
2382 static int hf_vam_speed; /* Speed */
2383 static int hf_vam_longitudinalAcceleration; /* LongitudinalAcceleration */
2384 static int hf_vam_curvature; /* Curvature */
2385 static int hf_vam_curvatureCalculationMode; /* CurvatureCalculationMode */
2386 static int hf_vam_yawRate; /* YawRate */
2387 static int hf_vam_lateralAcceleration; /* LateralAcceleration */
2388 static int hf_vam_verticalAcceleration; /* VerticalAcceleration */
2389 static int hf_vam_vruLanePosition; /* GeneralizedLanePosition */
2390 static int hf_vam_environment; /* VruEnvironment */
2391 static int hf_vam_movementControl; /* VruMovementControl */
2392 static int hf_vam_orientation; /* Wgs84Angle */
2393 static int hf_vam_rollAngle; /* CartesianAngle */
2394 static int hf_vam_deviceUsage; /* VruDeviceUsage */
2395 static int hf_vam_profileAndSubprofile; /* VruProfileAndSubprofile */
2396 static int hf_vam_sizeClass; /* VruSizeClass */
2397 static int hf_vam_exteriorLights; /* VruExteriorLights */
2398 static int hf_vam_vruClusterInformation; /* VruClusterInformation */
2399 static int hf_vam_clusterJoinInfo; /* ClusterJoinInfo */
2400 static int hf_vam_clusterLeaveInfo; /* ClusterLeaveInfo */
2401 static int hf_vam_clusterBreakupInfo; /* ClusterBreakupInfo */
2402 static int hf_vam_clusterIdChangeTimeInfo; /* DeltaTimeQuarterSecond */
2403 static int hf_vam_pathHistory; /* PathHistory */
2404 static int hf_vam_pathPrediction; /* PathPredicted */
2405 static int hf_vam_safeDistance; /* SequenceOfSafeDistanceIndication */
2406 static int hf_vam_trajectoryInterceptionIndication; /* SequenceOfTrajectoryInterceptionIndication */
2407 static int hf_vam_accelerationChangeIndication; /* AccelerationChangeIndication */
2408 static int hf_vam_headingChangeIndication; /* HeadingChangeIndication */
2409 static int hf_vam_stabilityChangeIndication; /* StabilityChangeIndication */
2411 /* --- Module IMZM-PDU-Descriptions --- --- --- */
2413 static int hf_imzm_imzm_InterferenceManagementZoneMessage_PDU; /* InterferenceManagementZoneMessage */
2414 static int hf_imzm_generationDeltaTime; /* GenerationDeltaTime */
2415 static int hf_imzm_imzmParameters; /* ImzmParameters */
2416 static int hf_imzm_basicContainer; /* BasicContainer */
2417 static int hf_imzm_imzmContainer; /* ImzmContainer */
2418 static int hf_imzm_interferenceManagementZones; /* InterferenceManagementZones */
2420 static int ett_its;
2423 /* --- Module ETSI-ITS-CDD --- --- --- */
2425 static int ett_its_AccelerationControl;
2426 static int ett_its_EmergencyPriority;
2427 static int ett_its_EnergyStorageType;
2428 static int ett_its_ExteriorLights;
2429 static int ett_its_LightBarSirenInUse;
2430 static int ett_its_MatrixIncludedComponents;
2431 static int ett_its_PositionOfOccupants;
2432 static int ett_its_SensorTypes;
2433 static int ett_its_SpecialTransportType;
2434 static int ett_its_StoredInformationType;
2435 static int ett_its_VruClusterProfiles;
2436 static int ett_its_VruSpecificExteriorLights;
2437 static int ett_its_Acceleration3dWithConfidence;
2438 static int ett_its_AccelerationPolarWithZ;
2439 static int ett_its_AccelerationCartesian;
2440 static int ett_its_AccelerationComponent;
2441 static int ett_its_AccelerationChangeIndication;
2442 static int ett_its_AccelerationMagnitude;
2443 static int ett_its_ActionId;
2444 static int ett_its_ActionID;
2445 static int ett_its_ActionIdList;
2446 static int ett_its_Altitude;
2447 static int ett_its_BasicContainer;
2448 static int ett_its_CartesianAngle;
2449 static int ett_its_CartesianAngularVelocityComponent;
2450 static int ett_its_CartesianCoordinateWithConfidence;
2451 static int ett_its_CartesianPosition3d;
2452 static int ett_its_CartesianPosition3dWithConfidence;
2453 static int ett_its_CauseCode;
2454 static int ett_its_CauseCodeChoice;
2455 static int ett_its_CauseCodeV2;
2456 static int ett_its_CenDsrcTollingZone;
2457 static int ett_its_CircularShape;
2458 static int ett_its_ClosedLanes;
2459 static int ett_its_ClusterBreakupInfo;
2460 static int ett_its_ClusterJoinInfo;
2461 static int ett_its_ClusterLeaveInfo;
2462 static int ett_its_CorrelationColumn;
2463 static int ett_its_Curvature;
2464 static int ett_its_DangerousGoodsExtended;
2465 static int ett_its_DeltaReferencePosition;
2466 static int ett_its_DigitalMap;
2467 static int ett_its_EllipticalShape;
2468 static int ett_its_EulerAnglesWithConfidence;
2469 static int ett_its_EuVehicleCategoryCode;
2470 static int ett_its_EventHistory;
2471 static int ett_its_EventPoint;
2472 static int ett_its_GeneralizedLanePosition;
2473 static int ett_its_Heading;
2474 static int ett_its_HeadingChangeIndication;
2475 static int ett_its_InterferenceManagementChannel;
2476 static int ett_its_InterferenceManagementZone;
2477 static int ett_its_InterferenceManagementZoneDefinition;
2478 static int ett_its_InterferenceManagementInfo;
2479 static int ett_its_InterferenceManagementInfoPerChannel;
2480 static int ett_its_InterferenceManagementZones;
2481 static int ett_its_IntersectionReferenceId;
2482 static int ett_its_ItineraryPath;
2483 static int ett_its_ItsPduHeader;
2484 static int ett_its_LanePositionAndType;
2485 static int ett_its_LanePositionOptions;
2486 static int ett_its_LanePositionWithLateralDetails;
2487 static int ett_its_LateralAcceleration;
2488 static int ett_its_LongitudinalAcceleration;
2489 static int ett_its_LongitudinalLanePosition;
2490 static int ett_its_LowerTriangularPositiveSemidefiniteMatrices;
2491 static int ett_its_LowerTriangularPositiveSemidefiniteMatrix;
2492 static int ett_its_LowerTriangularPositiveSemidefiniteMatrixColumns;
2493 static int ett_its_MapPosition;
2494 static int ett_its_MapReference;
2495 static int ett_its_MessageRateHz;
2496 static int ett_its_MessageSegmentationInfo;
2497 static int ett_its_MetaInformation;
2498 static int ett_its_MitigationForTechnologies;
2499 static int ett_its_MitigationPerTechnologyClass;
2500 static int ett_its_ObjectClass;
2501 static int ett_its_ObjectClassDescription;
2502 static int ett_its_ObjectClassWithConfidence;
2503 static int ett_its_ObjectDimension;
2504 static int ett_its_Path;
2505 static int ett_its_PathDeltaTimeChoice;
2506 static int ett_its_PathHistory;
2507 static int ett_its_PathPredicted;
2508 static int ett_its_PathPoint;
2509 static int ett_its_PathPointPredicted;
2510 static int ett_its_PerceivedObject;
2511 static int ett_its_PolygonalShape;
2512 static int ett_its_PosConfidenceEllipse;
2513 static int ett_its_PositionConfidenceEllipse;
2514 static int ett_its_PositionOfPillars;
2515 static int ett_its_ProtectedCommunicationZone;
2516 static int ett_its_ProtectedCommunicationZonesRSU;
2517 static int ett_its_PtActivation;
2518 static int ett_its_RadialShape;
2519 static int ett_its_RadialShapes;
2520 static int ett_its_RadialShapesList;
2521 static int ett_its_RadialShapeDetails;
2522 static int ett_its_RectangularShape;
2523 static int ett_its_ReferencePosition;
2524 static int ett_its_ReferencePositionWithConfidence;
2525 static int ett_its_RestrictedTypes;
2526 static int ett_its_RoadSegmentReferenceId;
2527 static int ett_its_SafeDistanceIndication;
2528 static int ett_its_SequenceOfCartesianPosition3d;
2529 static int ett_its_SequenceOfIdentifier1B;
2530 static int ett_its_SequenceOfSafeDistanceIndication;
2531 static int ett_its_SequenceOfTrajectoryInterceptionIndication;
2532 static int ett_its_Shape;
2533 static int ett_its_Speed;
2534 static int ett_its_StabilityChangeIndication;
2535 static int ett_its_SteeringWheelAngle;
2536 static int ett_its_Traces;
2537 static int ett_its_TrafficIslandPosition;
2538 static int ett_its_TrailerData;
2539 static int ett_its_TrajectoryInterceptionIndication;
2540 static int ett_its_VarLengthNumber;
2541 static int ett_its_Ext1;
2542 static int ett_its_Ext2;
2543 static int ett_its_VerticalAcceleration;
2544 static int ett_its_VehicleIdentification;
2545 static int ett_its_VehicleLength;
2546 static int ett_its_Velocity3dWithConfidence;
2547 static int ett_its_VelocityCartesian;
2548 static int ett_its_VelocityComponent;
2549 static int ett_its_VelocityPolarWithZ;
2550 static int ett_its_VruClusterInformation;
2551 static int ett_its_VruExteriorLights;
2552 static int ett_its_VruProfileAndSubprofile;
2553 static int ett_its_Wgs84Angle;
2554 static int ett_its_YawRate;
2556 /* --- Module ITS-ContainerV1 --- --- --- */
2558 static int ett_itsv1_ReferencePosition;
2559 static int ett_itsv1_DeltaReferencePosition;
2560 static int ett_itsv1_Altitude;
2561 static int ett_itsv1_PosConfidenceEllipse;
2562 static int ett_itsv1_PathPoint;
2563 static int ett_itsv1_PtActivation;
2564 static int ett_itsv1_AccelerationControl;
2565 static int ett_itsv1_CauseCode;
2566 static int ett_itsv1_Curvature;
2567 static int ett_itsv1_Heading;
2568 static int ett_itsv1_ClosedLanes;
2569 static int ett_itsv1_DrivingLaneStatus;
2570 static int ett_itsv1_Speed;
2571 static int ett_itsv1_LongitudinalAcceleration;
2572 static int ett_itsv1_LateralAcceleration;
2573 static int ett_itsv1_VerticalAcceleration;
2574 static int ett_itsv1_ExteriorLights;
2575 static int ett_itsv1_DangerousGoodsExtended;
2576 static int ett_itsv1_SpecialTransportType;
2577 static int ett_itsv1_LightBarSirenInUse;
2578 static int ett_itsv1_PositionOfOccupants;
2579 static int ett_itsv1_VehicleIdentification;
2580 static int ett_itsv1_EnergyStorageType;
2581 static int ett_itsv1_VehicleLength;
2582 static int ett_itsv1_PathHistory;
2583 static int ett_itsv1_EmergencyPriority;
2584 static int ett_itsv1_SteeringWheelAngle;
2585 static int ett_itsv1_YawRate;
2586 static int ett_itsv1_ActionID;
2587 static int ett_itsv1_ItineraryPath;
2588 static int ett_itsv1_ProtectedCommunicationZone;
2589 static int ett_itsv1_Traces;
2590 static int ett_itsv1_PositionOfPillars;
2591 static int ett_itsv1_RestrictedTypes;
2592 static int ett_itsv1_EventHistory;
2593 static int ett_itsv1_EventPoint;
2594 static int ett_itsv1_ProtectedCommunicationZonesRSU;
2595 static int ett_itsv1_CenDsrcTollingZone;
2597 /* --- Module AVIAEINumberingAndDataStructures --- --- --- */
2600 /* --- Module EfcDsrcApplication --- --- --- */
2602 static int ett_dsrc_app_AxleWeightLimits;
2603 static int ett_dsrc_app_DieselEmissionValues;
2604 static int ett_dsrc_app_T_particulate;
2605 static int ett_dsrc_app_EnvironmentalCharacteristics;
2606 static int ett_dsrc_app_ExhaustEmissionValues;
2607 static int ett_dsrc_app_PassengerCapacity;
2608 static int ett_dsrc_app_Provider;
2609 static int ett_dsrc_app_SoundLevel;
2610 static int ett_dsrc_app_VehicleDimensions;
2611 static int ett_dsrc_app_VehicleWeightLimits;
2613 /* --- Module DSRC --- --- --- */
2615 static int ett_dsrc_RegionalExtension;
2616 static int ett_dsrc_MapData;
2617 static int ett_dsrc_T_MAPRegional;
2618 static int ett_dsrc_RTCMcorrections;
2619 static int ett_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension;
2620 static int ett_dsrc_SPAT;
2621 static int ett_dsrc_T_SPATRegional;
2622 static int ett_dsrc_SignalRequestMessage;
2623 static int ett_dsrc_T_SRMRegional;
2624 static int ett_dsrc_SignalStatusMessage;
2625 static int ett_dsrc_T_SSMRegional;
2626 static int ett_dsrc_AdvisorySpeed;
2627 static int ett_dsrc_T_AdvisorySpeedRegional;
2628 static int ett_dsrc_AdvisorySpeedList;
2629 static int ett_dsrc_AntennaOffsetSet;
2630 static int ett_dsrc_ComputedLane;
2631 static int ett_dsrc_T_offsetXaxis;
2632 static int ett_dsrc_T_offsetYaxis;
2633 static int ett_dsrc_T_ComputedLaneRegional;
2634 static int ett_dsrc_ConnectsToList;
2635 static int ett_dsrc_ConnectingLane;
2636 static int ett_dsrc_Connection;
2637 static int ett_dsrc_ConnectionManeuverAssist;
2638 static int ett_dsrc_T_ConnectionManeuverAssistRegional;
2639 static int ett_dsrc_DataParameters;
2640 static int ett_dsrc_DDateTime;
2641 static int ett_dsrc_EnabledLaneList;
2642 static int ett_dsrc_FullPositionVector;
2643 static int ett_dsrc_GenericLane;
2644 static int ett_dsrc_T_GenericLaneRegional;
2645 static int ett_dsrc_IntersectionAccessPoint;
2646 static int ett_dsrc_IntersectionGeometry;
2647 static int ett_dsrc_T_IntersectionGeometryRegional;
2648 static int ett_dsrc_IntersectionGeometryList;
2649 static int ett_dsrc_IntersectionReferenceID;
2650 static int ett_dsrc_IntersectionState;
2651 static int ett_dsrc_T_IntersectionStateRegional;
2652 static int ett_dsrc_IntersectionStateList;
2653 static int ett_dsrc_LaneAttributes;
2654 static int ett_dsrc_LaneDataAttribute;
2655 static int ett_dsrc_T_LaneDataAttributeRegional;
2656 static int ett_dsrc_LaneDataAttributeList;
2657 static int ett_dsrc_LaneList;
2658 static int ett_dsrc_LaneSharing;
2659 static int ett_dsrc_LaneTypeAttributes;
2660 static int ett_dsrc_ManeuverAssistList;
2661 static int ett_dsrc_MovementEvent;
2662 static int ett_dsrc_T_MovementEventRegional;
2663 static int ett_dsrc_MovementEventList;
2664 static int ett_dsrc_MovementList;
2665 static int ett_dsrc_MovementState;
2666 static int ett_dsrc_T_MovementStateRegional;
2667 static int ett_dsrc_NodeAttributeSetXY;
2668 static int ett_dsrc_T_NodeAttributeSetXYRegional;
2669 static int ett_dsrc_NodeAttributeXYList;
2670 static int ett_dsrc_Node_LLmD_64b;
2671 static int ett_dsrc_Node_XY_20b;
2672 static int ett_dsrc_Node_XY_22b;
2673 static int ett_dsrc_Node_XY_24b;
2674 static int ett_dsrc_Node_XY_26b;
2675 static int ett_dsrc_Node_XY_28b;
2676 static int ett_dsrc_Node_XY_32b;
2677 static int ett_dsrc_NodeListXY;
2678 static int ett_dsrc_NodeOffsetPointXY;
2679 static int ett_dsrc_NodeXY;
2680 static int ett_dsrc_NodeSetXY;
2681 static int ett_dsrc_OverlayLaneList;
2682 static int ett_dsrc_PositionalAccuracy;
2683 static int ett_dsrc_PositionConfidenceSet;
2684 static int ett_dsrc_Position3D;
2685 static int ett_dsrc_T_Position3DRegional;
2686 static int ett_dsrc_PreemptPriorityList;
2687 static int ett_dsrc_RegulatorySpeedLimit;
2688 static int ett_dsrc_RequestorDescription;
2689 static int ett_dsrc_T_RequestorDescriptionRegional;
2690 static int ett_dsrc_RequestorPositionVector;
2691 static int ett_dsrc_RequestorType;
2692 static int ett_dsrc_RestrictionClassAssignment;
2693 static int ett_dsrc_RestrictionClassList;
2694 static int ett_dsrc_RestrictionUserType;
2695 static int ett_dsrc_T_RestrictionUserTypeRegional;
2696 static int ett_dsrc_RestrictionUserTypeList;
2697 static int ett_dsrc_RoadLaneSetList;
2698 static int ett_dsrc_RoadSegmentReferenceID;
2699 static int ett_dsrc_RoadSegment;
2700 static int ett_dsrc_T_RoadSegmentRegional;
2701 static int ett_dsrc_RoadSegmentList;
2702 static int ett_dsrc_RTCMheader;
2703 static int ett_dsrc_RTCMmessageList;
2704 static int ett_dsrc_SegmentAttributeXYList;
2705 static int ett_dsrc_SignalControlZone;
2706 static int ett_dsrc_SignalRequesterInfo;
2707 static int ett_dsrc_SignalRequest;
2708 static int ett_dsrc_T_SignalRequestRegional;
2709 static int ett_dsrc_SignalRequestList;
2710 static int ett_dsrc_SignalRequestPackage;
2711 static int ett_dsrc_T_SignalRequestPackageRegional;
2712 static int ett_dsrc_SignalStatus;
2713 static int ett_dsrc_T_SignalStatusRegional;
2714 static int ett_dsrc_SignalStatusList;
2715 static int ett_dsrc_SignalStatusPackageList;
2716 static int ett_dsrc_SignalStatusPackage;
2717 static int ett_dsrc_T_SignalStatusPackageRegional;
2718 static int ett_dsrc_SpeedandHeadingandThrottleConfidence;
2719 static int ett_dsrc_SpeedLimitList;
2720 static int ett_dsrc_TimeChangeDetails;
2721 static int ett_dsrc_TransmissionAndSpeed;
2722 static int ett_dsrc_VehicleID;
2723 static int ett_dsrc_AllowedManeuvers;
2724 static int ett_dsrc_GNSSstatus;
2725 static int ett_dsrc_IntersectionStatusObject;
2726 static int ett_dsrc_LaneAttributes_Barrier;
2727 static int ett_dsrc_LaneAttributes_Bike;
2728 static int ett_dsrc_LaneAttributes_Crosswalk;
2729 static int ett_dsrc_LaneAttributes_Parking;
2730 static int ett_dsrc_LaneAttributes_Sidewalk;
2731 static int ett_dsrc_LaneAttributes_Striping;
2732 static int ett_dsrc_LaneAttributes_TrackedVehicle;
2733 static int ett_dsrc_LaneAttributes_Vehicle;
2734 static int ett_dsrc_LaneDirection;
2735 static int ett_dsrc_TransitVehicleStatus;
2737 /* --- Module AddGrpC --- --- --- */
2739 static int ett_AddGrpC_ConnectionManeuverAssist_addGrpC;
2740 static int ett_AddGrpC_ConnectionTrajectory_addGrpC;
2741 static int ett_AddGrpC_IntersectionState_addGrpC;
2742 static int ett_AddGrpC_LaneAttributes_addGrpC;
2743 static int ett_AddGrpC_MapData_addGrpC;
2744 static int ett_AddGrpC_MovementEvent_addGrpC;
2745 static int ett_AddGrpC_NodeAttributeSet_addGrpC;
2746 static int ett_AddGrpC_Position3D_addGrpC;
2747 static int ett_AddGrpC_RestrictionUserType_addGrpC;
2748 static int ett_AddGrpC_RequestorDescription_addGrpC;
2749 static int ett_AddGrpC_SignalStatusPackage_addGrpC;
2750 static int ett_AddGrpC_ItsStationPosition;
2751 static int ett_AddGrpC_ItsStationPositionList;
2752 static int ett_AddGrpC_Node;
2753 static int ett_AddGrpC_NodeLink;
2754 static int ett_AddGrpC_PrioritizationResponse;
2755 static int ett_AddGrpC_PrioritizationResponseList;
2756 static int ett_AddGrpC_SignalHeadLocation;
2757 static int ett_AddGrpC_SignalHeadLocationList;
2759 /* --- Module REGION --- --- --- */
2762 /* --- Module GDD --- --- --- */
2764 static int ett_gdd_GddStructure;
2765 static int ett_gdd_Pictogram;
2766 static int ett_gdd_Pictogram_serviceCategory;
2767 static int ett_gdd_Pictogram_category;
2768 static int ett_gdd_GddAttributes;
2769 static int ett_gdd_GddAttributes_item;
2770 static int ett_gdd_InternationalSign_applicablePeriod;
2771 static int ett_gdd_T_year;
2772 static int ett_gdd_T_month_day;
2773 static int ett_gdd_T_hourMinutes;
2774 static int ett_gdd_MonthDay;
2775 static int ett_gdd_HoursMinutes;
2776 static int ett_gdd_RPDT;
2777 static int ett_gdd_DayOfWeek;
2778 static int ett_gdd_InternationalSign_section;
2779 static int ett_gdd_InternationalSign_applicableVehicleDimensions;
2780 static int ett_gdd_Distance;
2781 static int ett_gdd_Weight;
2782 static int ett_gdd_InternationalSign_speedLimits;
2783 static int ett_gdd_InternationalSign_destinationInformation;
2784 static int ett_gdd_SEQUENCE_SIZE_1_8__OF_DestinationInformationIO;
2785 static int ett_gdd_DestinationInformationIO;
2786 static int ett_gdd_SEQUENCE_SIZE_1_4__OF_DestinationPlace;
2787 static int ett_gdd_SEQUENCE_SIZE_1_4__OF_DestinationRoad;
2788 static int ett_gdd_DestinationPlace;
2789 static int ett_gdd_DestinationRoad;
2790 static int ett_gdd_DistanceOrDuration;
2792 /* --- Module IVI --- --- --- */
2794 static int ett_ivi_IviStructure;
2795 static int ett_ivi_IviContainers;
2796 static int ett_ivi_IviContainer;
2797 static int ett_ivi_IviManagementContainer;
2798 static int ett_ivi_GeographicLocationContainer;
2799 static int ett_ivi_GlcParts;
2800 static int ett_ivi_GlcPart;
2801 static int ett_ivi_GeneralIviContainer;
2802 static int ett_ivi_GicPart;
2803 static int ett_ivi_RoadConfigurationContainer;
2804 static int ett_ivi_RccPart;
2805 static int ett_ivi_RoadSurfaceContainer;
2806 static int ett_ivi_RscPart;
2807 static int ett_ivi_TextContainer;
2808 static int ett_ivi_TcPart;
2809 static int ett_ivi_LayoutContainer;
2810 static int ett_ivi_AutomatedVehicleContainer;
2811 static int ett_ivi_AvcPart;
2812 static int ett_ivi_MapLocationContainer;
2813 static int ett_ivi_MlcParts;
2814 static int ett_ivi_MlcPart;
2815 static int ett_ivi_AbsolutePositions;
2816 static int ett_ivi_AbsolutePositionsWAltitude;
2817 static int ett_ivi_AutomatedVehicleRules;
2818 static int ett_ivi_ConnectedDenms;
2819 static int ett_ivi_DeltaPositions;
2820 static int ett_ivi_DeltaReferencePositions;
2821 static int ett_ivi_ConstraintTextLines1;
2822 static int ett_ivi_ConstraintTextLines2;
2823 static int ett_ivi_IviIdentificationNumbers;
2824 static int ett_ivi_ISO14823Attributes;
2825 static int ett_ivi_LaneConfiguration;
2826 static int ett_ivi_LaneIds;
2827 static int ett_ivi_LanePositions;
2828 static int ett_ivi_LayoutComponents;
2829 static int ett_ivi_PlatooningRules;
2830 static int ett_ivi_RoadSignCodes;
2831 static int ett_ivi_TextLines;
2832 static int ett_ivi_TrailerCharacteristicsList;
2833 static int ett_ivi_TrailerCharacteristicsFixValuesList;
2834 static int ett_ivi_TrailerCharacteristicsRangesList;
2835 static int ett_ivi_SaeAutomationLevels;
2836 static int ett_ivi_VehicleCharacteristicsFixValuesList;
2837 static int ett_ivi_VehicleCharacteristicsList;
2838 static int ett_ivi_VehicleCharacteristicsRangesList;
2839 static int ett_ivi_ValidityPeriods;
2840 static int ett_ivi_ZoneIds;
2841 static int ett_ivi_AbsolutePosition;
2842 static int ett_ivi_AbsolutePositionWAltitude;
2843 static int ett_ivi_AnyCatalogue;
2844 static int ett_ivi_AutomatedVehicleRule;
2845 static int ett_ivi_CompleteVehicleCharacteristics;
2846 static int ett_ivi_ComputedSegment;
2847 static int ett_ivi_DeltaPosition;
2848 static int ett_ivi_ISO14823Attribute;
2849 static int ett_ivi_ISO14823Code;
2850 static int ett_ivi_T_icPictogramCode;
2851 static int ett_ivi_T_serviceCategoryCode;
2852 static int ett_ivi_T_pictogramCategoryCode;
2853 static int ett_ivi_LaneInformation;
2854 static int ett_ivi_LaneCharacteristics;
2855 static int ett_ivi_LayoutComponent;
2856 static int ett_ivi_LoadType;
2857 static int ett_ivi_MapReference;
2858 static int ett_ivi_PlatooningRule;
2859 static int ett_ivi_PolygonalLine;
2860 static int ett_ivi_RoadSurfaceDynamicCharacteristics;
2861 static int ett_ivi_RoadSurfaceStaticCharacteristics;
2862 static int ett_ivi_RSCode;
2863 static int ett_ivi_T_code;
2864 static int ett_ivi_Segment;
2865 static int ett_ivi_Text;
2866 static int ett_ivi_TractorCharacteristics;
2867 static int ett_ivi_TrailerCharacteristics;
2868 static int ett_ivi_VcCode;
2869 static int ett_ivi_VehicleCharacteristicsFixValues;
2870 static int ett_ivi_VehicleCharacteristicsRanges;
2871 static int ett_ivi_T_limits;
2872 static int ett_ivi_Zone;
2874 /* --- Module SPATEM-PDU-Descriptions --- --- --- */
2877 /* --- Module MAPEM-PDU-Descriptions --- --- --- */
2880 /* --- Module IVIM-PDU-Descriptions --- --- --- */
2883 /* --- Module SREM-PDU-Descriptions --- --- --- */
2886 /* --- Module SSEM-PDU-Descriptions --- --- --- */
2889 /* --- Module RTCMEM-PDU-Descriptions --- --- --- */
2892 /* --- Module CAMv1-PDU-Descriptions --- --- --- */
2894 static int ett_camv1_CoopAwarenessV1;
2895 static int ett_camv1_CamParameters;
2896 static int ett_camv1_HighFrequencyContainer;
2897 static int ett_camv1_LowFrequencyContainer;
2898 static int ett_camv1_SpecialVehicleContainer;
2899 static int ett_camv1_BasicContainer;
2900 static int ett_camv1_BasicVehicleContainerHighFrequency;
2901 static int ett_camv1_BasicVehicleContainerLowFrequency;
2902 static int ett_camv1_PublicTransportContainer;
2903 static int ett_camv1_SpecialTransportContainer;
2904 static int ett_camv1_DangerousGoodsContainer;
2905 static int ett_camv1_RoadWorksContainerBasic;
2906 static int ett_camv1_RescueContainer;
2907 static int ett_camv1_EmergencyContainer;
2908 static int ett_camv1_SafetyCarContainer;
2909 static int ett_camv1_RSUContainerHighFrequency;
2911 /* --- Module CAM-PDU-Descriptions --- --- --- */
2913 static int ett_cam_CamPayload;
2914 static int ett_cam_CamParameters;
2915 static int ett_cam_HighFrequencyContainer;
2916 static int ett_cam_LowFrequencyContainer;
2917 static int ett_cam_SpecialVehicleContainer;
2918 static int ett_cam_BasicVehicleContainerHighFrequency;
2919 static int ett_cam_BasicVehicleContainerLowFrequency;
2920 static int ett_cam_PublicTransportContainer;
2921 static int ett_cam_SpecialTransportContainer;
2922 static int ett_cam_DangerousGoodsContainer;
2923 static int ett_cam_RoadWorksContainerBasic;
2924 static int ett_cam_RescueContainer;
2925 static int ett_cam_EmergencyContainer;
2926 static int ett_cam_SafetyCarContainer;
2927 static int ett_cam_RSUContainerHighFrequency;
2929 /* --- Module DENMv1-PDU-Descriptions --- --- --- */
2931 static int ett_denmv1_DecentralizedEnvironmentalNotificationMessageV1;
2932 static int ett_denmv1_ManagementContainer;
2933 static int ett_denmv1_SituationContainer;
2934 static int ett_denmv1_LocationContainer;
2935 static int ett_denmv1_ImpactReductionContainer;
2936 static int ett_denmv1_RoadWorksContainerExtended;
2937 static int ett_denmv1_StationaryVehicleContainer;
2938 static int ett_denmv1_AlacarteContainer;
2939 static int ett_denmv1_ReferenceDenms;
2941 /* --- Module DENM-PDU-Description --- --- --- */
2943 static int ett_denm_DenmPayload;
2944 static int ett_denm_ManagementContainer;
2945 static int ett_denm_SituationContainer;
2946 static int ett_denm_LocationContainer;
2947 static int ett_denm_ImpactReductionContainer;
2948 static int ett_denm_RoadWorksContainerExtended;
2949 static int ett_denm_StationaryVehicleContainer;
2950 static int ett_denm_AlacarteContainer;
2952 /* --- Module TIS-TPG-Transactions-Descriptions --- --- --- */
2954 static int ett_tistpg_TisTpgTransaction;
2955 static int ett_tistpg_TisTpgDRM;
2956 static int ett_tistpg_TisTpgDRM_Management;
2957 static int ett_tistpg_TisTpgDRM_Situation;
2958 static int ett_tistpg_TisTpgDRM_Location;
2959 static int ett_tistpg_TisTpgSNM;
2960 static int ett_tistpg_TisTpgSNM_Management;
2961 static int ett_tistpg_TisTpgTRM;
2962 static int ett_tistpg_TisTpgTRM_Management;
2963 static int ett_tistpg_TisTpgTRM_Situation;
2964 static int ett_tistpg_TisTpgTRM_Location;
2965 static int ett_tistpg_TisTpgTCM;
2966 static int ett_tistpg_TisTpgTCM_Management;
2967 static int ett_tistpg_TisTpgTCM_Situation;
2968 static int ett_tistpg_TisTpgTCM_Location;
2969 static int ett_tistpg_TisTpgVDRM;
2970 static int ett_tistpg_TisTpgVDRM_Management;
2971 static int ett_tistpg_TisTpgVDPM;
2972 static int ett_tistpg_TisTpgVDPM_Management;
2973 static int ett_tistpg_VehicleSpecificData;
2974 static int ett_tistpg_TisTpgEOFM;
2975 static int ett_tistpg_TisTpgEOFM_Management;
2976 static int ett_tistpg_PlacardTable;
2977 static int ett_tistpg_TyreSetVariant;
2978 static int ett_tistpg_PressureVariantsList;
2979 static int ett_tistpg_PressureVariant;
2980 static int ett_tistpg_TyreData;
2981 static int ett_tistpg_T_currentTyrePressure;
2982 static int ett_tistpg_T_tyreSidewallInformation;
2983 static int ett_tistpg_T_currentInsideAirTemperature;
2984 static int ett_tistpg_T_recommendedTyrePressure;
2985 static int ett_tistpg_T_tin;
2986 static int ett_tistpg_T_sensorState;
2987 static int ett_tistpg_AppliedTyrePressure;
2988 static int ett_tistpg_TpgStationData;
2989 static int ett_tistpg_AppliedTyrePressures;
2990 static int ett_tistpg_TpgNotifContainer;
2991 static int ett_tistpg_TpgAutomation;
2992 static int ett_tistpg_TisProfile;
2994 /* --- Module EVCSN-PDU-Descriptions --- --- --- */
2996 static int ett_evcsn_EVChargingSpotNotificationPOIMessage;
2997 static int ett_evcsn_ItsPOIHeader;
2998 static int ett_evcsn_ItsEVCSNData;
2999 static int ett_evcsn_SEQUENCE_SIZE_1_256_OF_ItsChargingStationData;
3000 static int ett_evcsn_ItsChargingStationData;
3001 static int ett_evcsn_ItsChargingSpots;
3002 static int ett_evcsn_ItsChargingSpotDataElements;
3003 static int ett_evcsn_ChargingSpotType;
3004 static int ett_evcsn_ParkingPlacesData;
3005 static int ett_evcsn_SpotAvailability;
3007 /* --- Module EV-RechargingSpotReservation-PDU-Descriptions --- --- --- */
3009 static int ett_evrsr_EV_RSR_MessageBody;
3010 static int ett_evrsr_PreReservationRequestMessage;
3011 static int ett_evrsr_PreReservationResponseMessage;
3012 static int ett_evrsr_ReservationRequestMessage;
3013 static int ett_evrsr_ReservationResponseMessage;
3014 static int ett_evrsr_CancellationRequestMessage;
3015 static int ett_evrsr_CancellationResponseMessage;
3016 static int ett_evrsr_UpdateRequestMessage;
3017 static int ett_evrsr_UpdateResponseMessage;
3018 static int ett_evrsr_Payment_ID;
3019 static int ett_evrsr_RechargingType;
3020 static int ett_evrsr_SupportedPaymentTypes;
3022 /* --- Module CPM-OriginatingStationContainers --- --- --- */
3024 static int ett_cpm_OriginatingVehicleContainer;
3025 static int ett_cpm_OriginatingRsuContainer;
3026 static int ett_cpm_TrailerDataSet;
3028 /* --- Module CPM-PDU-Descriptionsv1 --- --- --- */
3030 static int ett_cpmv1_CollectivePerceptionMessagev1;
3031 static int ett_cpmv1_CpmParameters;
3032 static int ett_cpmv1_CpmManagementContainer;
3033 static int ett_cpmv1_StationDataContainer;
3034 static int ett_cpmv1_OriginatingVehicleContainerV1;
3035 static int ett_cpmv1_OriginatingRSUContainer;
3036 static int ett_cpmv1_SensorInformationContainerv1;
3037 static int ett_cpmv1_SensorInformationv1;
3038 static int ett_cpmv1_PerceivedObjectContainerv1;
3039 static int ett_cpmv1_PerceivedObjectv1;
3040 static int ett_cpmv1_DetectionArea;
3041 static int ett_cpmv1_VehicleSensor;
3042 static int ett_cpmv1_VehicleSensorPropertyList;
3043 static int ett_cpmv1_VehicleSensorProperties;
3044 static int ett_cpmv1_AreaCircular;
3045 static int ett_cpmv1_AreaEllipse;
3046 static int ett_cpmv1_AreaRectangle;
3047 static int ett_cpmv1_AreaPolygon;
3048 static int ett_cpmv1_PolyPointList;
3049 static int ett_cpmv1_AreaRadial;
3050 static int ett_cpmv1_FreeSpaceAddendumContainer;
3051 static int ett_cpmv1_FreeSpaceAddendum;
3052 static int ett_cpmv1_FreeSpaceArea;
3053 static int ett_cpmv1_ObjectDistanceWithConfidence;
3054 static int ett_cpmv1_ObjectDimension;
3055 static int ett_cpmv1_CartesianAngle;
3056 static int ett_cpmv1_WGS84Angle;
3057 static int ett_cpmv1_SpeedExtended;
3058 static int ett_cpmv1_SensorIdList;
3059 static int ett_cpmv1_TrailerDataContainer;
3060 static int ett_cpmv1_TrailerData;
3061 static int ett_cpmv1_LongitudinalLanePosition;
3062 static int ett_cpmv1_MatchedPosition;
3063 static int ett_cpmv1_PerceivedObjectContainerSegmentInfo;
3064 static int ett_cpmv1_ObjectClassDescription;
3065 static int ett_cpmv1_ObjectClass;
3066 static int ett_cpmv1_T_class;
3067 static int ett_cpmv1_VehicleSubclass;
3068 static int ett_cpmv1_PersonSubclass;
3069 static int ett_cpmv1_AnimalSubclass;
3070 static int ett_cpmv1_OtherSubclass;
3071 static int ett_cpmv1_OffsetPoint;
3072 static int ett_cpmv1_NodeOffsetPointZ;
3074 /* --- Module CPM-PDU-Descriptions --- --- --- */
3076 static int ett_cpm_CpmPayload;
3077 static int ett_cpm_ManagementContainer;
3078 static int ett_cpm_WrappedCpmContainer;
3079 static int ett_cpm_WrappedCpmContainers;
3080 static int ett_cpm_MessageRateRange;
3082 /* --- Module CPM-PerceivedObjectContainer --- --- --- */
3084 static int ett_cpm_PerceivedObjectContainer;
3085 static int ett_cpm_PerceivedObjects;
3087 /* --- Module CPM-PerceptionRegionContainer --- --- --- */
3089 static int ett_cpm_PerceptionRegionContainer;
3090 static int ett_cpm_PerceptionRegion;
3091 static int ett_cpm_PerceivedObjectIds;
3093 /* --- Module CPM-SensorInformationContainer --- --- --- */
3095 static int ett_cpm_SensorInformationContainer;
3096 static int ett_cpm_SensorInformation;
3098 /* --- Module VAM-PDU-Descriptions --- --- --- */
3100 static int ett_vam_VruAwareness;
3101 static int ett_vam_VamParameters;
3102 static int ett_vam_VruHighFrequencyContainer;
3103 static int ett_vam_VruLowFrequencyContainer;
3104 static int ett_vam_VruClusterInformationContainer;
3105 static int ett_vam_VruClusterOperationContainer;
3106 static int ett_vam_VruMotionPredictionContainer;
3108 /* --- Module IMZM-PDU-Descriptions --- --- --- */
3110 static int ett_imzm_InterferenceManagementZoneMessage;
3111 static int ett_imzm_ImzmParameters;
3112 static int ett_imzm_ImzmContainer;
3114 // Deal with cause/subcause code management
3115 static struct { CauseCodeType_enum cause; int* hf; } cause_to_subcause[] = {
3116 { trafficCondition, &hf_its_trafficCondition1 },
3117 { accident, &hf_its_accident2 },
3118 { roadworks, &hf_its_roadworks3 },
3119 { adverseWeatherCondition_Precipitation, &hf_its_adverseWeatherCondition_Precipitation19 },
3120 { adverseWeatherCondition_Visibility, &hf_its_adverseWeatherCondition_Visibility18 },
3121 { adverseWeatherCondition_Adhesion, &hf_its_adverseWeatherCondition_Adhesion6 },
3122 { adverseWeatherCondition_ExtremeWeatherCondition, &hf_its_adverseWeatherCondition_ExtremeWeatherCondition17 },
3123 { hazardousLocation_AnimalOnTheRoad, &hf_its_hazardousLocation_AnimalOnTheRoad11 },
3124 { hazardousLocation_ObstacleOnTheRoad, &hf_its_hazardousLocation_ObstacleOnTheRoad10 },
3125 { hazardousLocation_SurfaceCondition, &hf_its_hazardousLocation_SurfaceCondition9 },
3126 { hazardousLocation_DangerousCurve, &hf_its_hazardousLocation_DangerousCurve96 },
3127 { humanPresenceOnTheRoad, &hf_its_humanPresenceOnTheRoad12 },
3128 { wrongWayDriving, &hf_its_wrongWayDriving14 },
3129 { rescueAndRecoveryWorkInProgress, &hf_its_rescueAndRecoveryWorkInProgress15 },
3130 { slowVehicle, &hf_its_slowVehicle26 },
3131 { dangerousEndOfQueue, &hf_its_dangerousEndOfQueue27 },
3132 { vehicleBreakdown, &hf_its_vehicleBreakdown91 },
3133 { postCrash, &hf_its_postCrash92 },
3134 { humanProblem, &hf_its_humanProblem93 },
3135 { stationaryVehicle, &hf_its_stationaryVehicle94 },
3136 { emergencyVehicleApproaching, &hf_its_emergencyVehicleApproaching95 },
3137 { collisionRisk, &hf_its_collisionRisk97 },
3138 { signalViolation, &hf_its_signalViolation98 },
3139 { dangerousSituation, &hf_its_dangerousSituation99 },
3140 { 0, NULL },
3143 static int*
3144 find_subcause_from_cause(CauseCodeType_enum cause)
3146 int idx = 0;
3148 while (cause_to_subcause[idx].hf && (cause_to_subcause[idx].cause != cause))
3149 idx++;
3151 return cause_to_subcause[idx].hf?cause_to_subcause[idx].hf:&hf_its_subCauseCode;
3154 static unsigned char ita2_ascii[32] = {
3155 '\0', 'T', '\r', 'O', ' ', 'H', 'N', 'M', '\n', 'L', 'R', 'G', 'I', 'P', 'C', 'V',
3156 'E', 'Z', 'D', 'B', 'S', 'Y', 'F', 'X', 'A', 'W', 'J', '\0', 'U', 'Q', 'K'
3159 static void
3160 append_country_code_fmt(proto_item *item, tvbuff_t *val_tvb)
3162 uint16_t v = tvb_get_uint16(val_tvb, 0, ENC_BIG_ENDIAN);
3163 v >>= 6; /* 10 bits */
3164 uint16_t v1 = (v >> 5) & 0x1F;
3165 uint16_t v2 = v & 0x1F;
3166 proto_item_append_text(item, " - %c%c", ita2_ascii[v1], ita2_ascii[v2]);
3170 /* --- Module ETSI-ITS-CDD --- --- --- */
3173 static const value_string its_AccelerationChange_vals[] = {
3174 { 0, "accelerate" },
3175 { 1, "decelerate" },
3176 { 0, NULL }
3180 static int
3181 dissect_its_AccelerationChange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3182 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3183 2, NULL, false, 0, NULL);
3185 return offset;
3190 static int
3191 dissect_its_AccelerationConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3192 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3193 0U, 102U, NULL, false);
3195 return offset;
3199 static int * const its_AccelerationControl_bits[] = {
3200 &hf_its_AccelerationControl_brakePedalEngaged,
3201 &hf_its_AccelerationControl_gasPedalEngaged,
3202 &hf_its_AccelerationControl_emergencyBrakeEngaged,
3203 &hf_its_AccelerationControl_collisionWarningEngaged,
3204 &hf_its_AccelerationControl_accEngaged,
3205 &hf_its_AccelerationControl_cruiseControlEngaged,
3206 &hf_its_AccelerationControl_speedLimiterEngaged,
3207 NULL
3210 static int
3211 dissect_its_AccelerationControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3212 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3213 7, 7, false, its_AccelerationControl_bits, 7, NULL, NULL);
3215 return offset;
3219 static const value_string its_AccelerationMagnitudeValue_vals[] = {
3220 { 160, "positiveOutOfRange" },
3221 { 161, "unavailable" },
3222 { 0, NULL }
3226 static int
3227 dissect_its_AccelerationMagnitudeValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3228 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3229 0U, 161U, NULL, false);
3231 return offset;
3235 static const value_string its_AccelerationValue_vals[] = {
3236 { -160, "negativeOutOfRange" },
3237 { 160, "positiveOutOfRange" },
3238 { 161, "unavailable" },
3239 { 0, NULL }
3243 static int
3244 dissect_its_AccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3245 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3246 -160, 161U, NULL, false);
3248 return offset;
3252 static const value_string its_AccessTechnologyClass_vals[] = {
3253 { 0, "any" },
3254 { 1, "itsg5Class" },
3255 { 2, "ltev2xClass" },
3256 { 3, "nrv2xClass" },
3257 { 0, NULL }
3261 static int
3262 dissect_its_AccessTechnologyClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3263 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3264 4, NULL, true, 0, NULL);
3266 return offset;
3270 static const value_string its_AccidentSubCauseCode_vals[] = {
3271 { 0, "unavailable" },
3272 { 1, "multiVehicleAccident" },
3273 { 2, "heavyAccident" },
3274 { 3, "accidentInvolvingLorry" },
3275 { 4, "accidentInvolvingBus" },
3276 { 5, "accidentInvolvingHazardousMaterials" },
3277 { 6, "accidentOnOppositeLane" },
3278 { 7, "unsecuredAccident" },
3279 { 8, "assistanceRequested" },
3280 { 0, NULL }
3284 static int
3285 dissect_its_AccidentSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3286 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3287 0U, 255U, NULL, false);
3289 return offset;
3293 static const value_string its_AdverseWeatherCondition_AdhesionSubCauseCode_vals[] = {
3294 { 0, "unavailable" },
3295 { 1, "heavyFrostOnRoad" },
3296 { 2, "fuelOnRoad" },
3297 { 3, "mudOnRoad" },
3298 { 4, "snowOnRoad" },
3299 { 5, "iceOnRoad" },
3300 { 6, "blackIceOnRoad" },
3301 { 7, "oilOnRoad" },
3302 { 8, "looseChippings" },
3303 { 9, "instantBlackIce" },
3304 { 10, "roadsSalted" },
3305 { 0, NULL }
3309 static int
3310 dissect_its_AdverseWeatherCondition_AdhesionSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3311 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3312 0U, 255U, NULL, false);
3314 return offset;
3318 static const value_string its_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_vals[] = {
3319 { 0, "unavailable" },
3320 { 1, "strongWinds" },
3321 { 2, "damagingHail" },
3322 { 3, "hurricane" },
3323 { 4, "thunderstorm" },
3324 { 5, "tornado" },
3325 { 6, "blizzard" },
3326 { 0, NULL }
3330 static int
3331 dissect_its_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3332 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3333 0U, 255U, NULL, false);
3335 return offset;
3339 static const value_string its_AdverseWeatherCondition_PrecipitationSubCauseCode_vals[] = {
3340 { 0, "unavailable" },
3341 { 1, "heavyRain" },
3342 { 2, "heavySnowfall" },
3343 { 3, "softHail" },
3344 { 0, NULL }
3348 static int
3349 dissect_its_AdverseWeatherCondition_PrecipitationSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3350 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3351 0U, 255U, NULL, false);
3353 return offset;
3357 static const value_string its_AdverseWeatherCondition_VisibilitySubCauseCode_vals[] = {
3358 { 0, "unavailable" },
3359 { 1, "fog" },
3360 { 2, "smoke" },
3361 { 3, "heavySnowfall" },
3362 { 4, "heavyRain" },
3363 { 5, "heavyHail" },
3364 { 6, "lowSunGlare" },
3365 { 7, "sandstorms" },
3366 { 8, "swarmsOfInsects" },
3367 { 0, NULL }
3371 static int
3372 dissect_its_AdverseWeatherCondition_VisibilitySubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3373 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3374 0U, 255U, NULL, false);
3376 return offset;
3380 static const value_string its_AltitudeConfidence_vals[] = {
3381 { 0, "alt-000-01" },
3382 { 1, "alt-000-02" },
3383 { 2, "alt-000-05" },
3384 { 3, "alt-000-10" },
3385 { 4, "alt-000-20" },
3386 { 5, "alt-000-50" },
3387 { 6, "alt-001-00" },
3388 { 7, "alt-002-00" },
3389 { 8, "alt-005-00" },
3390 { 9, "alt-010-00" },
3391 { 10, "alt-020-00" },
3392 { 11, "alt-050-00" },
3393 { 12, "alt-100-00" },
3394 { 13, "alt-200-00" },
3395 { 14, "outOfRange" },
3396 { 15, "unavailable" },
3397 { 0, NULL }
3401 static int
3402 dissect_its_AltitudeConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3403 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3404 16, NULL, false, 0, NULL);
3406 return offset;
3411 static int
3412 dissect_its_AltitudeValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3413 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3414 -100000, 800001U, NULL, false);
3416 return offset;
3421 static int
3422 dissect_its_AngleConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3423 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3424 1U, 127U, NULL, false);
3426 return offset;
3430 static const value_string its_AngularSpeedConfidence_vals[] = {
3431 { 0, "degSec-01" },
3432 { 1, "degSec-02" },
3433 { 2, "degSec-05" },
3434 { 3, "degSec-10" },
3435 { 4, "degSec-20" },
3436 { 5, "degSec-50" },
3437 { 6, "outOfRange" },
3438 { 7, "unavailable" },
3439 { 0, NULL }
3443 static int
3444 dissect_its_AngularSpeedConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3445 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3446 8, NULL, false, 0, NULL);
3448 return offset;
3453 static int
3454 dissect_its_CardinalNumber1B(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3455 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3456 0U, 255U, NULL, false);
3458 return offset;
3463 static int
3464 dissect_its_CardinalNumber3b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3465 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3466 1U, 8U, NULL, false);
3468 return offset;
3473 static int
3474 dissect_its_CartesianAngleValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3475 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3476 0U, 3601U, NULL, false);
3478 return offset;
3482 static const value_string its_CartesianAngularVelocityComponentValue_vals[] = {
3483 { -255, "negativeOutofRange" },
3484 { 255, "positiveOutOfRange" },
3485 { 256, "unavailable" },
3486 { 0, NULL }
3490 static int
3491 dissect_its_CartesianAngularVelocityComponentValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3492 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3493 -255, 256U, NULL, false);
3495 return offset;
3499 static const value_string its_CauseCodeType_vals[] = {
3500 { trafficCondition, "trafficCondition" },
3501 { accident, "accident" },
3502 { roadworks, "roadworks" },
3503 { impassability, "impassability" },
3504 { adverseWeatherCondition_Adhesion, "adverseWeatherCondition-Adhesion" },
3505 { aquaplaning, "aquaplaning" },
3506 { hazardousLocation_SurfaceCondition, "hazardousLocation-SurfaceCondition" },
3507 { hazardousLocation_ObstacleOnTheRoad, "hazardousLocation-ObstacleOnTheRoad" },
3508 { hazardousLocation_AnimalOnTheRoad, "hazardousLocation-AnimalOnTheRoad" },
3509 { humanPresenceOnTheRoad, "humanPresenceOnTheRoad" },
3510 { wrongWayDriving, "wrongWayDriving" },
3511 { rescueAndRecoveryWorkInProgress, "rescueAndRecoveryWorkInProgress" },
3512 { adverseWeatherCondition_ExtremeWeatherCondition, "adverseWeatherCondition-ExtremeWeatherCondition" },
3513 { adverseWeatherCondition_Visibility, "adverseWeatherCondition-Visibility" },
3514 { adverseWeatherCondition_Precipitation, "adverseWeatherCondition-Precipitation" },
3515 { violence, "violence" },
3516 { slowVehicle, "slowVehicle" },
3517 { dangerousEndOfQueue, "dangerousEndOfQueue" },
3518 { publicTransportVehicleApproaching, "publicTransportVehicleApproaching" },
3519 { vehicleBreakdown, "vehicleBreakdown" },
3520 { postCrash, "postCrash" },
3521 { humanProblem, "humanProblem" },
3522 { stationaryVehicle, "stationaryVehicle" },
3523 { emergencyVehicleApproaching, "emergencyVehicleApproaching" },
3524 { hazardousLocation_DangerousCurve, "hazardousLocation-DangerousCurve" },
3525 { collisionRisk, "collisionRisk" },
3526 { signalViolation, "signalViolation" },
3527 { dangerousSituation, "dangerousSituation" },
3528 { railwayLevelCrossing, "railwayLevelCrossing" },
3529 { 0, NULL }
3533 static int
3534 dissect_its_CauseCodeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3535 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3536 0U, 255U, &((its_private_data_t*)actx->private_data)->cause_code, false);
3538 return offset;
3542 static const value_string its_CartesianCoordinateSmall_vals[] = {
3543 { -3094, "negativeOutOfRange" },
3544 { 1001, "positiveOutOfRange" },
3545 { 0, NULL }
3549 static int
3550 dissect_its_CartesianCoordinateSmall(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3551 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3552 -3094, 1001U, NULL, false);
3554 return offset;
3558 static const value_string its_CartesianCoordinate_vals[] = {
3559 { -32768, "negativeOutOfRange" },
3560 { 32767, "positiveOutOfRange" },
3561 { 0, NULL }
3565 static int
3566 dissect_its_CartesianCoordinate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3567 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3568 -32768, 32767U, NULL, false);
3570 return offset;
3574 static const value_string its_CartesianCoordinateLarge_vals[] = {
3575 { -131072, "negativeOutOfRange" },
3576 { 131071, "positiveOutOfRange" },
3577 { 0, NULL }
3581 static int
3582 dissect_its_CartesianCoordinateLarge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3583 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3584 -131072, 131071U, NULL, false);
3586 return offset;
3590 static const value_string its_ClusterBreakupReason_vals[] = {
3591 { 0, "notProvided" },
3592 { 1, "clusteringPurposeCompleted" },
3593 { 2, "leaderMovedOutOfClusterBoundingBox" },
3594 { 3, "joiningAnotherCluster" },
3595 { 4, "enteringLowRiskAreaBasedOnMaps" },
3596 { 5, "receptionOfCpmContainingCluster" },
3597 { 0, NULL }
3601 static int
3602 dissect_its_ClusterBreakupReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3603 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3604 0U, 15U, NULL, false);
3606 return offset;
3610 static const value_string its_ClusterLeaveReason_vals[] = {
3611 { 0, "notProvided" },
3612 { 1, "clusterLeaderLost" },
3613 { 2, "clusterDisbandedByLeader" },
3614 { 3, "outOfClusterBoundingBox" },
3615 { 4, "outOfClusterSpeedRange" },
3616 { 5, "joiningAnotherCluster" },
3617 { 6, "cancelledJoin" },
3618 { 7, "failedJoin" },
3619 { 8, "safetyCondition" },
3620 { 0, NULL }
3624 static int
3625 dissect_its_ClusterLeaveReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3626 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3627 0U, 15U, NULL, false);
3629 return offset;
3633 static const value_string its_CollisionRiskSubCauseCode_vals[] = {
3634 { 0, "unavailable" },
3635 { 1, "longitudinalCollisionRisk" },
3636 { 2, "crossingCollisionRisk" },
3637 { 3, "lateralCollisionRisk" },
3638 { 4, "vulnerableRoadUser" },
3639 { 5, "collisionRiskWithPedestrian" },
3640 { 6, "collisionRiskWithCyclist" },
3641 { 7, "collisionRiskWithMotorVehicle" },
3642 { 0, NULL }
3646 static int
3647 dissect_its_CollisionRiskSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3648 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3649 0U, 255U, NULL, false);
3651 return offset;
3655 static const value_string its_ConfidenceLevel_vals[] = {
3656 { 101, "unavailable" },
3657 { 0, NULL }
3661 static int
3662 dissect_its_ConfidenceLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3663 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3664 1U, 101U, NULL, false);
3666 return offset;
3670 static const value_string its_CoordinateConfidence_vals[] = {
3671 { 4095, "outOfRange" },
3672 { 4096, "unavailable" },
3673 { 0, NULL }
3677 static int
3678 dissect_its_CoordinateConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3679 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3680 1U, 4096U, NULL, false);
3682 return offset;
3686 static const value_string its_CorrelationCellValue_vals[] = {
3687 { -100, "full-negative-correlation" },
3688 { 0, "no-correlation" },
3689 { 100, "full-positive-correlation" },
3690 { 101, "unavailable" },
3691 { 0, NULL }
3695 static int
3696 dissect_its_CorrelationCellValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3697 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3698 -100, 101U, NULL, false);
3700 return offset;
3704 static const value_string its_CurvatureCalculationMode_vals[] = {
3705 { 0, "yawRateUsed" },
3706 { 1, "yawRateNotUsed" },
3707 { 2, "unavailable" },
3708 { 0, NULL }
3712 static int
3713 dissect_its_CurvatureCalculationMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3714 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3715 3, NULL, true, 0, NULL);
3717 return offset;
3721 static const value_string its_CurvatureConfidence_vals[] = {
3722 { 0, "onePerMeter-0-00002" },
3723 { 1, "onePerMeter-0-0001" },
3724 { 2, "onePerMeter-0-0005" },
3725 { 3, "onePerMeter-0-002" },
3726 { 4, "onePerMeter-0-01" },
3727 { 5, "onePerMeter-0-1" },
3728 { 6, "outOfRange" },
3729 { 7, "unavailable" },
3730 { 0, NULL }
3734 static int
3735 dissect_its_CurvatureConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3736 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3737 8, NULL, false, 0, NULL);
3739 return offset;
3744 static int
3745 dissect_its_CurvatureValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3746 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3747 -1023, 1023U, NULL, false);
3749 return offset;
3753 static const value_string its_DangerousEndOfQueueSubCauseCode_vals[] = {
3754 { 0, "unavailable" },
3755 { 1, "suddenEndOfQueue" },
3756 { 2, "queueOverHill" },
3757 { 3, "queueAroundBend" },
3758 { 4, "queueInTunnel" },
3759 { 0, NULL }
3763 static int
3764 dissect_its_DangerousEndOfQueueSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3765 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3766 0U, 255U, NULL, false);
3768 return offset;
3772 static const value_string its_DangerousGoodsBasic_vals[] = {
3773 { 0, "explosives1" },
3774 { 1, "explosives2" },
3775 { 2, "explosives3" },
3776 { 3, "explosives4" },
3777 { 4, "explosives5" },
3778 { 5, "explosives6" },
3779 { 6, "flammableGases" },
3780 { 7, "nonFlammableGases" },
3781 { 8, "toxicGases" },
3782 { 9, "flammableLiquids" },
3783 { 10, "flammableSolids" },
3784 { 11, "substancesLiableToSpontaneousCombustion" },
3785 { 12, "substancesEmittingFlammableGasesUponContactWithWater" },
3786 { 13, "oxidizingSubstances" },
3787 { 14, "organicPeroxides" },
3788 { 15, "toxicSubstances" },
3789 { 16, "infectiousSubstances" },
3790 { 17, "radioactiveMaterial" },
3791 { 18, "corrosiveSubstances" },
3792 { 19, "miscellaneousDangerousSubstances" },
3793 { 0, NULL }
3797 static int
3798 dissect_its_DangerousGoodsBasic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3799 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3800 20, NULL, false, 0, NULL);
3802 return offset;
3806 static const value_string its_DangerousSituationSubCauseCode_vals[] = {
3807 { 0, "unavailable" },
3808 { 1, "emergencyElectronicBrakeEngaged" },
3809 { 2, "preCrashSystemEngaged" },
3810 { 3, "espEngaged" },
3811 { 4, "absEngaged" },
3812 { 5, "ebEngaged" },
3813 { 6, "brakeWarningEngaged" },
3814 { 7, "collisionRiskWarningEngaged" },
3815 { 0, NULL }
3819 static int
3820 dissect_its_DangerousSituationSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3821 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3822 0U, 255U, NULL, false);
3824 return offset;
3829 static int
3830 dissect_its_DeltaAltitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3831 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3832 -12700, 12800U, NULL, false);
3834 return offset;
3839 static int
3840 dissect_its_DeltaLatitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3841 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3842 -131071, 131072U, NULL, false);
3844 return offset;
3849 static int
3850 dissect_its_DeltaLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3851 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3852 -131071, 131072U, NULL, false);
3854 return offset;
3859 static int
3860 dissect_its_DeltaTimeMilliSecondPositive(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3861 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3862 1U, 10000U, NULL, false);
3864 return offset;
3869 static int
3870 dissect_its_DeltaTimeMilliSecondSigned(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3871 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3872 -2048, 2047U, NULL, false);
3874 return offset;
3878 static const value_string its_DeltaTimeQuarterSecond_vals[] = {
3879 { 255, "unavailable" },
3880 { 0, NULL }
3884 static int
3885 dissect_its_DeltaTimeQuarterSecond(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3886 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3887 1U, 255U, NULL, false);
3889 return offset;
3893 static const value_string its_DeltaTimeTenthOfSecond_vals[] = {
3894 { 127, "unavailable" },
3895 { 0, NULL }
3899 static int
3900 dissect_its_DeltaTimeTenthOfSecond(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3901 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3902 0U, 127U, NULL, false);
3904 return offset;
3909 static int
3910 dissect_its_DeltaTimeSecond(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3911 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3912 0U, 86400U, NULL, false);
3914 return offset;
3919 static int
3920 dissect_its_DeltaTimeTenSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3921 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3922 0U, 127U, NULL, false);
3924 return offset;
3928 static const value_string its_Direction_vals[] = {
3929 { 0, "sameDirection" },
3930 { 1, "oppositeDirection" },
3931 { 2, "bothDirections" },
3932 { 3, "unavailable" },
3933 { 0, NULL }
3937 static int
3938 dissect_its_Direction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3939 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3940 0U, 3U, NULL, false);
3942 return offset;
3946 static const value_string its_DriveDirection_vals[] = {
3947 { 0, "forward" },
3948 { 1, "backward" },
3949 { 2, "unavailable" },
3950 { 0, NULL }
3954 static int
3955 dissect_its_DriveDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3956 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3957 3, NULL, false, 0, NULL);
3959 return offset;
3964 static int
3965 dissect_its_DrivingLaneStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3966 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3967 1, 13, false, NULL, 0, NULL, NULL);
3969 return offset;
3974 static int
3975 dissect_its_EmbarkationStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3976 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
3978 return offset;
3982 static int * const its_EmergencyPriority_bits[] = {
3983 &hf_its_EmergencyPriority_requestForRightOfWay,
3984 &hf_its_EmergencyPriority_requestForFreeCrossingAtATrafficLight,
3985 NULL
3988 static int
3989 dissect_its_EmergencyPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3990 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
3991 2, 2, false, its_EmergencyPriority_bits, 2, NULL, NULL);
3993 return offset;
3997 static const value_string its_EmergencyVehicleApproachingSubCauseCode_vals[] = {
3998 { 0, "unavailable" },
3999 { 1, "emergencyVehicleApproaching" },
4000 { 2, "prioritizedVehicleApproaching" },
4001 { 0, NULL }
4005 static int
4006 dissect_its_EmergencyVehicleApproachingSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4007 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4008 0U, 255U, NULL, false);
4010 return offset;
4014 static int * const its_EnergyStorageType_bits[] = {
4015 &hf_its_EnergyStorageType_hydrogenStorage,
4016 &hf_its_EnergyStorageType_electricEnergyStorage,
4017 &hf_its_EnergyStorageType_liquidPropaneGas,
4018 &hf_its_EnergyStorageType_compressedNaturalGas,
4019 &hf_its_EnergyStorageType_diesel,
4020 &hf_its_EnergyStorageType_gasoline,
4021 &hf_its_EnergyStorageType_ammonia,
4022 NULL
4025 static int
4026 dissect_its_EnergyStorageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4027 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4028 7, 7, false, its_EnergyStorageType_bits, 7, NULL, NULL);
4030 return offset;
4034 static const value_string its_EuVehicleCategoryL_vals[] = {
4035 { 0, "l1" },
4036 { 1, "l2" },
4037 { 2, "l3" },
4038 { 3, "l4" },
4039 { 4, "l5" },
4040 { 5, "l6" },
4041 { 6, "l7" },
4042 { 0, NULL }
4046 static int
4047 dissect_its_EuVehicleCategoryL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4048 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4049 7, NULL, false, 0, NULL);
4051 return offset;
4055 static const value_string its_EuVehicleCategoryM_vals[] = {
4056 { 0, "m1" },
4057 { 1, "m2" },
4058 { 2, "m3" },
4059 { 0, NULL }
4063 static int
4064 dissect_its_EuVehicleCategoryM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4065 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4066 3, NULL, false, 0, NULL);
4068 return offset;
4072 static const value_string its_EuVehicleCategoryN_vals[] = {
4073 { 0, "n1" },
4074 { 1, "n2" },
4075 { 2, "n3" },
4076 { 0, NULL }
4080 static int
4081 dissect_its_EuVehicleCategoryN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4082 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4083 3, NULL, false, 0, NULL);
4085 return offset;
4089 static const value_string its_EuVehicleCategoryO_vals[] = {
4090 { 0, "o1" },
4091 { 1, "o2" },
4092 { 2, "o3" },
4093 { 3, "o4" },
4094 { 0, NULL }
4098 static int
4099 dissect_its_EuVehicleCategoryO(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4100 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4101 4, NULL, false, 0, NULL);
4103 return offset;
4107 static int * const its_ExteriorLights_bits[] = {
4108 &hf_its_ExteriorLights_lowBeamHeadlightsOn,
4109 &hf_its_ExteriorLights_highBeamHeadlightsOn,
4110 &hf_its_ExteriorLights_leftTurnSignalOn,
4111 &hf_its_ExteriorLights_rightTurnSignalOn,
4112 &hf_its_ExteriorLights_daytimeRunningLightsOn,
4113 &hf_its_ExteriorLights_reverseLightOn,
4114 &hf_its_ExteriorLights_fogLightOn,
4115 &hf_its_ExteriorLights_parkingLightsOn,
4116 NULL
4119 static int
4120 dissect_its_ExteriorLights(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4121 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4122 8, 8, false, its_ExteriorLights_bits, 8, NULL, NULL);
4124 return offset;
4129 static int
4130 dissect_its_GenerationDeltaTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4131 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4132 0U, 65535U, NULL, false);
4134 return offset;
4138 static const value_string its_HardShoulderStatus_vals[] = {
4139 { 0, "availableForStopping" },
4140 { 1, "closed" },
4141 { 2, "availableForDriving" },
4142 { 0, NULL }
4146 static int
4147 dissect_its_HardShoulderStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4148 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4149 3, NULL, false, 0, NULL);
4151 return offset;
4155 static const value_string its_HazardousLocation_AnimalOnTheRoadSubCauseCode_vals[] = {
4156 { 0, "unavailable" },
4157 { 1, "wildAnimals" },
4158 { 2, "herdOfAnimals" },
4159 { 3, "smallAnimals" },
4160 { 4, "largeAnimals" },
4161 { 5, "wildAnimalsSmall" },
4162 { 6, "wildAnimalsLarge" },
4163 { 7, "domesticAnimals" },
4164 { 8, "domesticAnimalsSmall" },
4165 { 9, "domesticAnimalsLarge" },
4166 { 0, NULL }
4170 static int
4171 dissect_its_HazardousLocation_AnimalOnTheRoadSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4172 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4173 0U, 255U, NULL, false);
4175 return offset;
4179 static const value_string its_HazardousLocation_DangerousCurveSubCauseCode_vals[] = {
4180 { 0, "unavailable" },
4181 { 1, "dangerousLeftTurnCurve" },
4182 { 2, "dangerousRightTurnCurve" },
4183 { 3, "multipleCurvesStartingWithUnknownTurningDirection" },
4184 { 4, "multipleCurvesStartingWithLeftTurn" },
4185 { 5, "multipleCurvesStartingWithRightTurn" },
4186 { 0, NULL }
4190 static int
4191 dissect_its_HazardousLocation_DangerousCurveSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4192 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4193 0U, 255U, NULL, false);
4195 return offset;
4199 static const value_string its_HazardousLocation_ObstacleOnTheRoadSubCauseCode_vals[] = {
4200 { 0, "unavailable" },
4201 { 1, "shedLoad" },
4202 { 2, "partsOfVehicles" },
4203 { 3, "partsOfTyres" },
4204 { 4, "bigObjects" },
4205 { 5, "fallenTrees" },
4206 { 6, "hubCaps" },
4207 { 7, "waitingVehicles" },
4208 { 0, NULL }
4212 static int
4213 dissect_its_HazardousLocation_ObstacleOnTheRoadSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4214 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4215 0U, 255U, NULL, false);
4217 return offset;
4221 static const value_string its_HazardousLocation_SurfaceConditionSubCauseCode_vals[] = {
4222 { 0, "unavailable" },
4223 { 1, "rockfalls" },
4224 { 2, "earthquakeDamage" },
4225 { 3, "sewerCollapse" },
4226 { 4, "subsidence" },
4227 { 5, "snowDrifts" },
4228 { 6, "stormDamage" },
4229 { 7, "burstPipe" },
4230 { 8, "volcanoEruption" },
4231 { 9, "fallingIce" },
4232 { 10, "fire" },
4233 { 0, NULL }
4237 static int
4238 dissect_its_HazardousLocation_SurfaceConditionSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4239 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4240 0U, 255U, NULL, false);
4242 return offset;
4247 static int
4248 dissect_its_HeadingConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4249 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4250 1U, 127U, NULL, false);
4252 return offset;
4256 static const value_string its_HeadingValue_vals[] = {
4257 { 0, "wgs84North" },
4258 { 900, "wgs84East" },
4259 { 1800, "wgs84South" },
4260 { 2700, "wgs84West" },
4261 { 3600, "doNotUse" },
4262 { 3601, "unavailable" },
4263 { 0, NULL }
4267 static int
4268 dissect_its_HeadingValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4269 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4270 0U, 3601U, NULL, false);
4272 return offset;
4276 static const value_string its_HeightLonCarr_vals[] = {
4277 { 99, "outOfRange" },
4278 { 100, "unavailable" },
4279 { 0, NULL }
4283 static int
4284 dissect_its_HeightLonCarr(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4285 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4286 1U, 100U, NULL, false);
4288 return offset;
4292 static const value_string its_HumanPresenceOnTheRoadSubCauseCode_vals[] = {
4293 { 0, "unavailable" },
4294 { 1, "childrenOnRoadway" },
4295 { 2, "cyclistOnRoadway" },
4296 { 3, "motorcyclistOnRoadway" },
4297 { 4, "pedestrian" },
4298 { 5, "ordinary-pedestrian" },
4299 { 6, "road-worker" },
4300 { 7, "first-responder" },
4301 { 8, "lightVruVehicle" },
4302 { 9, "bicyclist" },
4303 { 10, "wheelchair-user" },
4304 { 11, "horse-and-rider" },
4305 { 12, "rollerskater" },
4306 { 13, "e-scooter" },
4307 { 14, "personal-transporter" },
4308 { 15, "pedelec" },
4309 { 16, "speed-pedelec" },
4310 { 17, "ptw" },
4311 { 18, "moped" },
4312 { 19, "motorcycle" },
4313 { 20, "motorcycle-and-sidecar-right" },
4314 { 21, "motorcycle-and-sidecar-left" },
4315 { 0, NULL }
4319 static int
4320 dissect_its_HumanPresenceOnTheRoadSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4321 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4322 0U, 255U, NULL, false);
4324 return offset;
4328 static const value_string its_HumanProblemSubCauseCode_vals[] = {
4329 { 0, "unavailable" },
4330 { 1, "glycemiaProblem" },
4331 { 2, "heartProblem" },
4332 { 0, NULL }
4336 static int
4337 dissect_its_HumanProblemSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4338 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4339 0U, 255U, NULL, false);
4341 return offset;
4346 static int
4347 dissect_its_Identifier1B(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4348 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4349 0U, 255U, NULL, false);
4351 return offset;
4356 static int
4357 dissect_its_Identifier2B(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4358 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4359 0U, 65535U, NULL, false);
4361 return offset;
4365 static const value_string its_ImpassabilitySubCauseCode_vals[] = {
4366 { 0, "unavailable" },
4367 { 1, "flooding" },
4368 { 2, "dangerOfAvalanches" },
4369 { 3, "blastingOfAvalanches" },
4370 { 4, "landslips" },
4371 { 5, "chemicalSpillage" },
4372 { 6, "winterClosure" },
4373 { 7, "sinkhole" },
4374 { 8, "earthquakeDamage" },
4375 { 9, "fallenTrees" },
4376 { 10, "rockfalls" },
4377 { 11, "sewerOverflow" },
4378 { 12, "stormDamage" },
4379 { 13, "subsidence" },
4380 { 14, "burstPipe" },
4381 { 15, "burstWaterMain" },
4382 { 16, "fallenPowerCables" },
4383 { 17, "snowDrifts" },
4384 { 0, NULL }
4388 static int
4389 dissect_its_ImpassabilitySubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4390 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4391 0U, 255U, NULL, false);
4393 return offset;
4398 static int
4399 dissect_its_InformationQuality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4400 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4401 0U, 7U, NULL, false);
4403 return offset;
4407 static const value_string its_InterferenceManagementZoneType_vals[] = {
4408 { 0, "permanentCenDsrcTolling" },
4409 { 1, "temporaryCenDsrcTolling" },
4410 { 2, "unavailable" },
4411 { 3, "urbanRail" },
4412 { 4, "satelliteStation" },
4413 { 5, "fixedLinks" },
4414 { 0, NULL }
4418 static int
4419 dissect_its_InterferenceManagementZoneType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4420 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4421 6, NULL, true, 0, NULL);
4423 return offset;
4427 static const value_string its_Iso3833VehicleType_vals[] = {
4428 { 0, "passengerCar" },
4429 { 1, "saloon" },
4430 { 2, "convertibleSaloon" },
4431 { 3, "pullmanSaloon" },
4432 { 4, "stationWagon" },
4433 { 5, "truckStationWagon" },
4434 { 6, "coupe" },
4435 { 7, "convertible" },
4436 { 8, "multipurposePassengerCar" },
4437 { 9, "forwardControlPassengerCar" },
4438 { 10, "specialPassengerCar" },
4439 { 11, "bus" },
4440 { 12, "minibus" },
4441 { 13, "urbanBus" },
4442 { 14, "interurbanCoach" },
4443 { 15, "longDistanceCoach" },
4444 { 16, "articulatedBus" },
4445 { 17, "trolleyBus" },
4446 { 18, "specialBus" },
4447 { 19, "commercialVehicle" },
4448 { 20, "specialCommercialVehicle" },
4449 { 21, "specialVehicle" },
4450 { 22, "trailingTowingVehicle" },
4451 { 23, "semiTrailerTowingVehicle" },
4452 { 24, "trailer" },
4453 { 25, "busTrailer" },
4454 { 26, "generalPurposeTrailer" },
4455 { 27, "caravan" },
4456 { 28, "specialTrailer" },
4457 { 29, "semiTrailer" },
4458 { 30, "busSemiTrailer" },
4459 { 31, "generalPurposeSemiTrailer" },
4460 { 32, "specialSemiTrailer" },
4461 { 33, "roadTrain" },
4462 { 34, "passengerRoadTrain" },
4463 { 35, "articulatedRoadTrain" },
4464 { 36, "doubleRoadTrain" },
4465 { 37, "compositeRoadTrain" },
4466 { 38, "specialRoadTrain" },
4467 { 39, "moped" },
4468 { 40, "motorCycle" },
4469 { 0, NULL }
4473 static int
4474 dissect_its_Iso3833VehicleType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4475 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4476 0U, 255U, NULL, false);
4478 return offset;
4483 static int
4484 dissect_its_IviIdentificationNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4485 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4486 1U, 32767U, NULL, true);
4488 return offset;
4492 static const value_string its_LanePosition_vals[] = {
4493 { -1, "offTheRoad" },
4494 { 0, "innerHardShoulder" },
4495 { 14, "outerHardShoulder" },
4496 { 0, NULL }
4500 static int
4501 dissect_its_LanePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4502 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4503 -1, 14U, NULL, false);
4505 return offset;
4509 static const value_string its_LaneType_vals[] = {
4510 { 0, "traffic" },
4511 { 1, "through" },
4512 { 2, "reversible" },
4513 { 3, "acceleration" },
4514 { 4, "deceleration" },
4515 { 5, "leftHandTurning" },
4516 { 6, "rightHandTurning" },
4517 { 7, "dedicatedVehicle" },
4518 { 8, "bus" },
4519 { 9, "taxi" },
4520 { 10, "hov" },
4521 { 11, "hot" },
4522 { 12, "pedestrian" },
4523 { 13, "cycleLane" },
4524 { 14, "median" },
4525 { 15, "striping" },
4526 { 16, "trackedVehicle" },
4527 { 17, "parking" },
4528 { 18, "emergency" },
4529 { 19, "verge" },
4530 { 20, "minimumRiskManoeuvre" },
4531 { 21, "exclusiveCycleLane" },
4532 { 31, "unknown" },
4533 { 0, NULL }
4537 static int
4538 dissect_its_LaneType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4539 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4540 0U, 31U, NULL, false);
4542 return offset;
4547 static int
4548 dissect_its_Latitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4549 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4550 -900000000, 900000001U, NULL, false);
4552 return offset;
4557 static int
4558 dissect_its_LateralAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4559 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4560 -160, 161U, NULL, false);
4562 return offset;
4566 static int * const its_LightBarSirenInUse_bits[] = {
4567 &hf_its_LightBarSirenInUse_lightBarActivated,
4568 &hf_its_LightBarSirenInUse_sirenActivated,
4569 NULL
4572 static int
4573 dissect_its_LightBarSirenInUse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4574 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4575 2, 2, false, its_LightBarSirenInUse_bits, 2, NULL, NULL);
4577 return offset;
4582 static int
4583 dissect_its_Longitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4584 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4585 -1800000000, 1800000001U, NULL, false);
4587 return offset;
4592 static int
4593 dissect_its_LongitudinalAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4594 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4595 -160, 161U, NULL, false);
4597 return offset;
4601 static const value_string its_LongitudinalLanePositionValue_vals[] = {
4602 { 32766, "outOfRange" },
4603 { 32767, "unavailable" },
4604 { 0, NULL }
4608 static int
4609 dissect_its_LongitudinalLanePositionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4610 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4611 0U, 32767U, NULL, false);
4613 return offset;
4617 static const value_string its_LongitudinalLanePositionConfidence_vals[] = {
4618 { 1022, "outOfRange" },
4619 { 1023, "unavailable" },
4620 { 0, NULL }
4624 static int
4625 dissect_its_LongitudinalLanePositionConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4626 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4627 0U, 1023U, NULL, false);
4629 return offset;
4633 static int * const its_MatrixIncludedComponents_bits[] = {
4634 &hf_its_MatrixIncludedComponents_xPosition,
4635 &hf_its_MatrixIncludedComponents_yPosition,
4636 &hf_its_MatrixIncludedComponents_zPosition,
4637 &hf_its_MatrixIncludedComponents_xVelocityOrVelocityMagnitude,
4638 &hf_its_MatrixIncludedComponents_yVelocityOrVelocityDirection,
4639 &hf_its_MatrixIncludedComponents_zSpeed,
4640 &hf_its_MatrixIncludedComponents_xAccelOrAccelMagnitude,
4641 &hf_its_MatrixIncludedComponents_yAccelOrAccelDirection,
4642 &hf_its_MatrixIncludedComponents_zAcceleration,
4643 &hf_its_MatrixIncludedComponents_zAngle,
4644 &hf_its_MatrixIncludedComponents_yAngle,
4645 &hf_its_MatrixIncludedComponents_xAngle,
4646 &hf_its_MatrixIncludedComponents_zAngularVelocity,
4647 NULL
4650 static int
4651 dissect_its_MatrixIncludedComponents(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4652 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4653 13, 13, true, its_MatrixIncludedComponents_bits, 13, NULL, NULL);
4655 return offset;
4659 static const value_string its_MessageId_vals[] = {
4660 { ITS_DENM, "denm" },
4661 { ITS_CAM, "cam" },
4662 { ITS_POIM, "poim" },
4663 { ITS_SPATEM, "spatem" },
4664 { ITS_MAPEM, "mapem" },
4665 { ITS_IVIM, "ivim" },
4666 { ITS_RFU1, "rfu1" },
4667 { ITS_RFU2, "rfu2" },
4668 { ITS_SREM, "srem" },
4669 { ITS_SSEM, "ssem" },
4670 { ITS_EVCSN, "evcsn" },
4671 { ITS_SAEM, "saem" },
4672 { ITS_RTCMEM, "rtcmem" },
4673 { ITS_CPM, "cpm" },
4674 { ITS_IMZM, "imzm" },
4675 { ITS_VAM, "vam" },
4676 { ITS_DSM, "dsm" },
4677 { ITS_PCIM, "pcim" },
4678 { ITS_PCVM, "pcvm" },
4679 { ITS_MCM, "mcm" },
4680 { ITS_PAM, "pam" },
4681 { 0, NULL }
4685 static int
4686 dissect_its_MessageId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4687 uint32_t msgId;
4688 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4689 0U, 255U, &msgId, false);
4691 its_header_t *its_hdr = its_get_private_data(actx->pinfo);
4692 its_hdr->msgId = msgId;
4695 return offset;
4699 static const value_string its_NumberOfOccupants_vals[] = {
4700 { 126, "outOfRange" },
4701 { 127, "unavailable" },
4702 { 0, NULL }
4706 static int
4707 dissect_its_NumberOfOccupants(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4708 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4709 0U, 127U, NULL, false);
4711 return offset;
4715 static const value_string its_ObjectPerceptionQuality_vals[] = {
4716 { 0, "noConfidence" },
4717 { 15, "fullConfidence" },
4718 { 0, NULL }
4722 static int
4723 dissect_its_ObjectPerceptionQuality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4724 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4725 0U, 15U, NULL, false);
4727 return offset;
4732 static int
4733 dissect_its_ObjectDimensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4734 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4735 1U, 256U, NULL, false);
4737 return offset;
4742 static int
4743 dissect_its_ObjectDimensionConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4744 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4745 1U, 32U, NULL, false);
4747 return offset;
4752 static int
4753 dissect_its_OpeningDaysHours(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4754 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
4755 NO_BOUND, NO_BOUND, false);
4757 return offset;
4762 static int
4763 dissect_its_OrdinalNumber3b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4764 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4765 1U, 8U, NULL, false);
4767 return offset;
4771 static const value_string its_OtherSubClass_vals[] = {
4772 { 0, "unknown" },
4773 { 1, "singleObject" },
4774 { 2, "multipleObjects" },
4775 { 3, "bulkMaterial" },
4776 { 0, NULL }
4780 static int
4781 dissect_its_OtherSubClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4782 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4783 0U, 255U, NULL, false);
4785 return offset;
4790 static int
4791 dissect_its_PathDeltaTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4792 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4793 1U, 65535U, NULL, true);
4795 return offset;
4799 static const value_string its_PerformanceClass_vals[] = {
4800 { 0, "unavailable" },
4801 { 1, "performanceClassA" },
4802 { 2, "performanceClassB" },
4803 { 0, NULL }
4807 static int
4808 dissect_its_PerformanceClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4809 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4810 0U, 7U, NULL, false);
4812 return offset;
4817 static int
4818 dissect_its_PhoneNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4819 offset = dissect_per_NumericString(tvb, offset, actx, tree, hf_index,
4820 1, 16, false,
4821 NULL);
4823 return offset;
4827 static const value_string its_PosCentMass_vals[] = {
4828 { 1, "tenCentimetres" },
4829 { 62, "outOfRange" },
4830 { 63, "unavailable" },
4831 { 0, NULL }
4835 static int
4836 dissect_its_PosCentMass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4837 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4838 1U, 63U, NULL, false);
4840 return offset;
4844 static const value_string its_PositioningSolutionType_vals[] = {
4845 { 0, "noPositioningSolution" },
4846 { 1, "sGNSS" },
4847 { 2, "dGNSS" },
4848 { 3, "sGNSSplusDR" },
4849 { 4, "dGNSSplusDR" },
4850 { 5, "dR" },
4851 { 6, "manuallyByOperator" },
4852 { 0, NULL }
4856 static int
4857 dissect_its_PositioningSolutionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4858 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4859 6, NULL, true, 1, NULL);
4861 return offset;
4865 static int * const its_PositionOfOccupants_bits[] = {
4866 &hf_its_PositionOfOccupants_row1LeftOccupied,
4867 &hf_its_PositionOfOccupants_row1RightOccupied,
4868 &hf_its_PositionOfOccupants_row1MidOccupied,
4869 &hf_its_PositionOfOccupants_row1NotDetectable,
4870 &hf_its_PositionOfOccupants_row1NotPresent,
4871 &hf_its_PositionOfOccupants_row2LeftOccupied,
4872 &hf_its_PositionOfOccupants_row2RightOccupied,
4873 &hf_its_PositionOfOccupants_row2MidOccupied,
4874 &hf_its_PositionOfOccupants_row2NotDetectable,
4875 &hf_its_PositionOfOccupants_row2NotPresent,
4876 &hf_its_PositionOfOccupants_row3LeftOccupied,
4877 &hf_its_PositionOfOccupants_row3RightOccupied,
4878 &hf_its_PositionOfOccupants_row3MidOccupied,
4879 &hf_its_PositionOfOccupants_row3NotDetectable,
4880 &hf_its_PositionOfOccupants_row3NotPresent,
4881 &hf_its_PositionOfOccupants_row4LeftOccupied,
4882 &hf_its_PositionOfOccupants_row4RightOccupied,
4883 &hf_its_PositionOfOccupants_row4MidOccupied,
4884 &hf_its_PositionOfOccupants_row4NotDetectable,
4885 &hf_its_PositionOfOccupants_row4NotPresent,
4886 NULL
4889 static int
4890 dissect_its_PositionOfOccupants(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4891 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4892 20, 20, false, its_PositionOfOccupants_bits, 20, NULL, NULL);
4894 return offset;
4898 static const value_string its_PosFrontAx_vals[] = {
4899 { 19, "outOfRange" },
4900 { 20, "unavailable" },
4901 { 0, NULL }
4905 static int
4906 dissect_its_PosFrontAx(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4907 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4908 1U, 20U, NULL, false);
4910 return offset;
4914 static const value_string its_PosLonCarr_vals[] = {
4915 { 126, "outOfRange" },
4916 { 127, "unavailable" },
4917 { 0, NULL }
4921 static int
4922 dissect_its_PosLonCarr(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4923 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4924 1U, 127U, NULL, false);
4926 return offset;
4930 static const value_string its_PosPillar_vals[] = {
4931 { 29, "outOfRange" },
4932 { 30, "unavailable" },
4933 { 0, NULL }
4937 static int
4938 dissect_its_PosPillar(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4939 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4940 1U, 30U, NULL, false);
4942 return offset;
4946 static const value_string its_PostCrashSubCauseCode_vals[] = {
4947 { 0, "unavailable" },
4948 { 1, "accidentWithoutECallTriggered" },
4949 { 2, "accidentWithECallManuallyTriggered" },
4950 { 3, "accidentWithECallAutomaticallyTriggered" },
4951 { 4, "accidentWithECallTriggeredWithoutAccessToCellularNetwork" },
4952 { 0, NULL }
4956 static int
4957 dissect_its_PostCrashSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4958 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4959 0U, 255U, NULL, false);
4961 return offset;
4966 static int
4967 dissect_its_ProtectedZoneId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4968 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4969 0U, 134217727U, NULL, false);
4971 return offset;
4976 static int
4977 dissect_its_ProtectedZoneRadius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4978 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4979 1U, 255U, NULL, true);
4981 return offset;
4985 static const value_string its_ProtectedZoneType_vals[] = {
4986 { 0, "permanentCenDsrcTolling" },
4987 { 1, "temporaryCenDsrcTolling" },
4988 { 0, NULL }
4992 static int
4993 dissect_its_ProtectedZoneType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4994 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4995 1, NULL, true, 1, NULL);
4997 return offset;
5002 static int
5003 dissect_its_PtActivationData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5004 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
5005 1, 20, false, &((its_pt_activation_data_t*)actx->private_data)->data);
5007 return offset;
5011 static const value_string its_PtActivationType_vals[] = {
5012 { 0, "undefinedCodingType" },
5013 { 1, "r09-16CodingType" },
5014 { 2, "vdv-50149CodingType" },
5015 { 0, NULL }
5019 static int
5020 dissect_its_PtActivationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5021 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5022 0U, 255U, &((its_pt_activation_data_t*)actx->private_data)->type, false);
5024 return offset;
5028 static const value_string its_RailwayLevelCrossingSubCauseCode_vals[] = {
5029 { 0, "unavailable" },
5030 { 1, "doNotCrossAbnormalSituation" },
5031 { 2, "closed" },
5032 { 3, "unguarded" },
5033 { 4, "nominal" },
5034 { 0, NULL }
5038 static int
5039 dissect_its_RailwayLevelCrossingSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5040 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5041 0U, 255U, NULL, false);
5043 return offset;
5047 static const value_string its_RequestResponseIndication_vals[] = {
5048 { 0, "request" },
5049 { 1, "response" },
5050 { 0, NULL }
5054 static int
5055 dissect_its_RequestResponseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5056 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5057 2, NULL, false, 0, NULL);
5059 return offset;
5063 static const value_string its_RescueAndRecoveryWorkInProgressSubCauseCode_vals[] = {
5064 { 0, "unavailable" },
5065 { 1, "emergencyVehicles" },
5066 { 2, "rescueHelicopterLanding" },
5067 { 3, "policeActivityOngoing" },
5068 { 4, "medicalEmergencyOngoing" },
5069 { 5, "childAbductionInProgress" },
5070 { 6, "prioritizedVehicle" },
5071 { 7, "rescueAndRecoveryVehicle" },
5072 { 0, NULL }
5076 static int
5077 dissect_its_RescueAndRecoveryWorkInProgressSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5078 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5079 0U, 255U, NULL, false);
5081 return offset;
5085 static const value_string its_RoadType_vals[] = {
5086 { 0, "urban-NoStructuralSeparationToOppositeLanes" },
5087 { 1, "urban-WithStructuralSeparationToOppositeLanes" },
5088 { 2, "nonUrban-NoStructuralSeparationToOppositeLanes" },
5089 { 3, "nonUrban-WithStructuralSeparationToOppositeLanes" },
5090 { 0, NULL }
5094 static int
5095 dissect_its_RoadType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5096 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5097 4, NULL, false, 0, NULL);
5099 return offset;
5103 static const value_string its_RoadworksSubCauseCode_vals[] = {
5104 { 0, "unavailable" },
5105 { 1, "majorRoadworks" },
5106 { 2, "roadMarkingWork" },
5107 { 3, "slowMovingRoadMaintenance" },
5108 { 4, "shortTermStationaryRoadworks" },
5109 { 5, "streetCleaning" },
5110 { 6, "winterService" },
5111 { 0, NULL }
5115 static int
5116 dissect_its_RoadworksSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5117 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5118 0U, 255U, NULL, false);
5120 return offset;
5125 static int
5126 dissect_its_SafeDistanceIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5127 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
5129 return offset;
5134 static int
5135 dissect_its_SemiAxisLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5136 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5137 0U, 4095U, NULL, false);
5139 return offset;
5143 static const value_string its_SensorType_vals[] = {
5144 { 0, "undefined" },
5145 { 1, "radar" },
5146 { 2, "lidar" },
5147 { 3, "monovideo" },
5148 { 4, "stereovision" },
5149 { 5, "nightvision" },
5150 { 6, "ultrasonic" },
5151 { 7, "pmd" },
5152 { 8, "inductionLoop" },
5153 { 9, "sphericalCamera" },
5154 { 10, "uwb" },
5155 { 11, "acoustic" },
5156 { 12, "localAggregation" },
5157 { 13, "itsAggregation" },
5158 { 0, NULL }
5162 static int
5163 dissect_its_SensorType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5164 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5165 0U, 31U, NULL, false);
5167 return offset;
5171 static int * const its_SensorTypes_bits[] = {
5172 &hf_its_SensorTypes_undefined,
5173 &hf_its_SensorTypes_radar,
5174 &hf_its_SensorTypes_lidar,
5175 &hf_its_SensorTypes_monovideo,
5176 &hf_its_SensorTypes_stereovision,
5177 &hf_its_SensorTypes_nightvision,
5178 &hf_its_SensorTypes_ultrasonic,
5179 &hf_its_SensorTypes_pmd,
5180 &hf_its_SensorTypes_inductionLoop,
5181 &hf_its_SensorTypes_sphericalCamera,
5182 &hf_its_SensorTypes_uwb,
5183 &hf_its_SensorTypes_acoustic,
5184 &hf_its_SensorTypes_localAggregation,
5185 &hf_its_SensorTypes_itsAggregation,
5186 NULL
5189 static int
5190 dissect_its_SensorTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5191 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5192 16, 16, true, its_SensorTypes_bits, 14, NULL, NULL);
5194 return offset;
5199 static int
5200 dissect_its_SequenceNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5201 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5202 0U, 65535U, NULL, false);
5204 return offset;
5208 static const value_string its_SignalViolationSubCauseCode_vals[] = {
5209 { 0, "unavailable" },
5210 { 1, "stopSignViolation" },
5211 { 2, "trafficLightViolation" },
5212 { 3, "turningRegulationViolation" },
5213 { 0, NULL }
5217 static int
5218 dissect_its_SignalViolationSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5219 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5220 0U, 255U, NULL, false);
5222 return offset;
5226 static const value_string its_SlowVehicleSubCauseCode_vals[] = {
5227 { 0, "unavailable" },
5228 { 1, "maintenanceVehicle" },
5229 { 2, "vehiclesSlowingToLookAtAccident" },
5230 { 3, "abnormalLoad" },
5231 { 4, "abnormalWideLoad" },
5232 { 5, "convoy" },
5233 { 6, "snowplough" },
5234 { 7, "deicing" },
5235 { 8, "saltingVehicles" },
5236 { 0, NULL }
5240 static int
5241 dissect_its_SlowVehicleSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5242 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5243 0U, 255U, NULL, false);
5245 return offset;
5249 static int * const its_SpecialTransportType_bits[] = {
5250 &hf_its_SpecialTransportType_heavyLoad,
5251 &hf_its_SpecialTransportType_excessWidth,
5252 &hf_its_SpecialTransportType_excessLength,
5253 &hf_its_SpecialTransportType_excessHeight,
5254 NULL
5257 static int
5258 dissect_its_SpecialTransportType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5259 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5260 4, 4, false, its_SpecialTransportType_bits, 4, NULL, NULL);
5262 return offset;
5267 static int
5268 dissect_its_SpeedConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5269 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5270 1U, 127U, NULL, false);
5272 return offset;
5277 static int
5278 dissect_its_SpeedLimit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5279 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5280 1U, 255U, NULL, false);
5282 return offset;
5287 static int
5288 dissect_its_SpeedValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5289 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5290 0U, 16383U, NULL, false);
5292 return offset;
5296 static int * const its_StoredInformationType_bits[] = {
5297 &hf_its_StoredInformationType_undefined,
5298 &hf_its_StoredInformationType_staticDb,
5299 &hf_its_StoredInformationType_dynamicDb,
5300 &hf_its_StoredInformationType_realTimeDb,
5301 &hf_its_StoredInformationType_map,
5302 NULL
5305 static int
5306 dissect_its_StoredInformationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5307 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5308 8, 8, true, its_StoredInformationType_bits, 5, NULL, NULL);
5310 return offset;
5314 static const value_string its_VelocityComponentValue_vals[] = {
5315 { -16383, "negativeOutOfRange" },
5316 { 16382, "positiveOutOfRange" },
5317 { 16383, "unavailable" },
5318 { 0, NULL }
5322 static int
5323 dissect_its_VelocityComponentValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5324 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5325 -16383, 16383U, NULL, false);
5327 return offset;
5331 static const value_string its_StabilityLossProbability_vals[] = {
5332 { 0, "stable" },
5333 { 50, "totalLossOfStability" },
5334 { 63, "unavailable" },
5335 { 0, NULL }
5339 static int
5340 dissect_its_StabilityLossProbability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5341 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5342 0U, 63U, NULL, false);
5344 return offset;
5349 static int
5350 dissect_its_StandardLength12b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5351 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5352 0U, 4095U, NULL, false);
5354 return offset;
5358 static const value_string its_StandardLength3b_vals[] = {
5359 { 0, "lessThan50m" },
5360 { 1, "lessThan100m" },
5361 { 2, "lessThan200m" },
5362 { 3, "lessThan500m" },
5363 { 4, "lessThan1000m" },
5364 { 5, "lessThan5km" },
5365 { 6, "lessThan10km" },
5366 { 7, "over10km" },
5367 { 0, NULL }
5371 static int
5372 dissect_its_StandardLength3b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5373 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5374 8, NULL, false, 0, NULL);
5376 return offset;
5381 static int
5382 dissect_its_StandardLength9b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5383 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5384 0U, 511U, NULL, false);
5386 return offset;
5391 static int
5392 dissect_its_StandardLength1B(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5393 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5394 0U, 255U, NULL, false);
5396 return offset;
5400 static const value_string its_StationarySince_vals[] = {
5401 { 0, "lessThan1Minute" },
5402 { 1, "lessThan2Minutes" },
5403 { 2, "lessThan15Minutes" },
5404 { 3, "equalOrGreater15Minutes" },
5405 { 0, NULL }
5409 static int
5410 dissect_its_StationarySince(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5411 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5412 4, NULL, false, 0, NULL);
5414 return offset;
5418 static const value_string its_StationaryVehicleSubCauseCode_vals[] = {
5419 { 0, "unavailable" },
5420 { 1, "humanProblem" },
5421 { 2, "vehicleBreakdown" },
5422 { 3, "postCrash" },
5423 { 4, "publicTransportStop" },
5424 { 5, "carryingDangerousGoods" },
5425 { 6, "vehicleOnFire" },
5426 { 0, NULL }
5430 static int
5431 dissect_its_StationaryVehicleSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5432 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5433 0U, 255U, NULL, false);
5435 return offset;
5440 static int
5441 dissect_its_StationId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5442 uint32_t stationId;
5443 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5444 0U, 4294967295U, &stationId, false);
5446 its_header_t *its_hdr = its_get_private_data(actx->pinfo);
5447 its_hdr->stationId = stationId;
5450 return offset;
5455 static int
5456 dissect_its_StationID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5457 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5458 0U, 4294967295U, NULL, false);
5460 return offset;
5464 static const value_string its_StationType_vals[] = {
5465 { 0, "unknown" },
5466 { 1, "pedestrian" },
5467 { 2, "cyclist" },
5468 { 3, "moped" },
5469 { 4, "motorcycle" },
5470 { 5, "passengerCar" },
5471 { 6, "bus" },
5472 { 7, "lightTruck" },
5473 { 8, "heavyTruck" },
5474 { 9, "trailer" },
5475 { 10, "specialVehicle" },
5476 { 11, "tram" },
5477 { 12, "lightVruVehicle" },
5478 { 13, "animal" },
5479 { 15, "roadSideUnit" },
5480 { 0, NULL }
5484 static int
5485 dissect_its_StationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5486 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5487 0U, 255U, NULL, false);
5489 return offset;
5494 static int
5495 dissect_its_SteeringWheelAngleConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5496 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5497 1U, 127U, NULL, false);
5499 return offset;
5504 static int
5505 dissect_its_SteeringWheelAngleValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5506 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5507 -511, 512U, NULL, false);
5509 return offset;
5514 static int
5515 dissect_its_SubCauseCodeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5516 // Overwrite hf_index
5517 hf_index = *find_subcause_from_cause((CauseCodeType_enum) ((its_private_data_t*)actx->private_data)->cause_code);
5518 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5519 0U, 255U, NULL, false);
5522 return offset;
5526 static const value_string its_Temperature_vals[] = {
5527 { -60, "equalOrSmallerThanMinus60Deg" },
5528 { 67, "equalOrGreaterThan67Deg" },
5529 { 0, NULL }
5533 static int
5534 dissect_its_Temperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5535 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5536 -60, 67U, NULL, false);
5538 return offset;
5543 static int
5544 dissect_its_TimestampIts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5545 offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
5546 0U, UINT64_C(4398046511103), NULL, false);
5548 return offset;
5552 static const value_string its_TrafficConditionSubCauseCode_vals[] = {
5553 { 0, "unavailable" },
5554 { 1, "increasedVolumeOfTraffic" },
5555 { 2, "trafficJamSlowlyIncreasing" },
5556 { 3, "trafficJamIncreasing" },
5557 { 4, "trafficJamStronglyIncreasing" },
5558 { 5, "trafficJam" },
5559 { 6, "trafficJamSlightlyDecreasing" },
5560 { 7, "trafficJamDecreasing" },
5561 { 8, "trafficJamStronglyDecreasing" },
5562 { 9, "trafficJamStable" },
5563 { 0, NULL }
5567 static int
5568 dissect_its_TrafficConditionSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5569 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5570 0U, 255U, NULL, false);
5572 return offset;
5576 static const value_string its_TrafficDirection_vals[] = {
5577 { 0, "allTrafficDirections" },
5578 { 1, "sameAsReferenceDirection-upstreamOfReferencePosition" },
5579 { 2, "sameAsReferenceDirection-downstreamOfReferencePosition" },
5580 { 3, "oppositeToReferenceDirection" },
5581 { 0, NULL }
5585 static int
5586 dissect_its_TrafficDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5587 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5588 4, NULL, false, 0, NULL);
5590 return offset;
5594 static const value_string its_TrafficParticipantType_vals[] = {
5595 { 0, "unknown" },
5596 { 1, "pedestrian" },
5597 { 2, "cyclist" },
5598 { 3, "moped" },
5599 { 4, "motorcycle" },
5600 { 5, "passengerCar" },
5601 { 6, "bus" },
5602 { 7, "lightTruck" },
5603 { 8, "heavyTruck" },
5604 { 9, "trailer" },
5605 { 10, "specialVehicle" },
5606 { 11, "tram" },
5607 { 12, "lightVruVehicle" },
5608 { 13, "animal" },
5609 { 14, "agricultural" },
5610 { 15, "roadSideUnit" },
5611 { 0, NULL }
5615 static int
5616 dissect_its_TrafficParticipantType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5617 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5618 0U, 255U, NULL, false);
5620 return offset;
5624 static const value_string its_TrafficRule_vals[] = {
5625 { 0, "noPassing" },
5626 { 1, "noPassingForTrucks" },
5627 { 2, "passToRight" },
5628 { 3, "passToLeft" },
5629 { 4, "passToLeftOrRight" },
5630 { 0, NULL }
5634 static int
5635 dissect_its_TrafficRule(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5636 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5637 4, NULL, true, 1, NULL);
5639 return offset;
5643 static const value_string its_TrajectoryInterceptionProbability_vals[] = {
5644 { 63, "unavailable" },
5645 { 0, NULL }
5649 static int
5650 dissect_its_TrajectoryInterceptionProbability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5651 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5652 0U, 63U, NULL, false);
5654 return offset;
5658 static const value_string its_TrajectoryInterceptionConfidence_vals[] = {
5659 { 0, "lessthan50percent" },
5660 { 1, "between50and70Percent" },
5661 { 2, "between70and90Percent" },
5662 { 3, "above90Percent" },
5663 { 0, NULL }
5667 static int
5668 dissect_its_TrajectoryInterceptionConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5669 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5670 0U, 3U, NULL, false);
5672 return offset;
5676 static const value_string its_TurningDirection_vals[] = {
5677 { 0, "left" },
5678 { 1, "right" },
5679 { 0, NULL }
5683 static int
5684 dissect_its_TurningDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5685 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5686 2, NULL, false, 0, NULL);
5688 return offset;
5692 static const value_string its_TurningRadius_vals[] = {
5693 { 254, "outOfRange" },
5694 { 255, "unavailable" },
5695 { 0, NULL }
5699 static int
5700 dissect_its_TurningRadius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5701 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5702 1U, 255U, NULL, false);
5704 return offset;
5709 static int
5710 dissect_its_VDS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5711 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
5712 6, 6, false,
5713 NULL);
5715 return offset;
5719 static const value_string its_VehicleBreakdownSubCauseCode_vals[] = {
5720 { 0, "unavailable" },
5721 { 1, "lackOfFuel" },
5722 { 2, "lackOfBatteryPower" },
5723 { 3, "engineProblem" },
5724 { 4, "transmissionProblem" },
5725 { 5, "engineCoolingProblem" },
5726 { 6, "brakingSystemProblem" },
5727 { 7, "steeringProblem" },
5728 { 8, "tyrePuncture" },
5729 { 9, "tyrePressureProblem" },
5730 { 10, "vehicleOnFire" },
5731 { 0, NULL }
5735 static int
5736 dissect_its_VehicleBreakdownSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5737 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5738 0U, 255U, NULL, false);
5740 return offset;
5744 static const value_string its_VehicleHeight_vals[] = {
5745 { 126, "outOfRange" },
5746 { 127, "unavailable" },
5747 { 0, NULL }
5751 static int
5752 dissect_its_VehicleHeight(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5753 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5754 1U, 128U, NULL, false);
5756 return offset;
5760 static const value_string its_VehicleLengthConfidenceIndication_vals[] = {
5761 { 0, "noTrailerPresent" },
5762 { 1, "trailerPresentWithKnownLength" },
5763 { 2, "trailerPresentWithUnknownLength" },
5764 { 3, "trailerPresenceIsUnknown" },
5765 { 4, "unavailable" },
5766 { 0, NULL }
5770 static int
5771 dissect_its_VehicleLengthConfidenceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5772 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5773 5, NULL, false, 0, NULL);
5775 return offset;
5780 static int
5781 dissect_its_VehicleLengthValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5782 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5783 1U, 1023U, NULL, false);
5785 return offset;
5789 static const value_string its_VehicleMass_vals[] = {
5790 { 1023, "outOfRange" },
5791 { 1024, "unavailable" },
5792 { 0, NULL }
5796 static int
5797 dissect_its_VehicleMass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5798 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5799 1U, 1024U, NULL, false);
5801 return offset;
5805 static const value_string its_VehicleRole_vals[] = {
5806 { 0, "default" },
5807 { 1, "publicTransport" },
5808 { 2, "specialTransport" },
5809 { 3, "dangerousGoods" },
5810 { 4, "roadWork" },
5811 { 5, "rescue" },
5812 { 6, "emergency" },
5813 { 7, "safetyCar" },
5814 { 8, "agriculture" },
5815 { 9, "commercial" },
5816 { 10, "military" },
5817 { 11, "roadOperator" },
5818 { 12, "taxi" },
5819 { 13, "uvar" },
5820 { 14, "rfu1" },
5821 { 15, "rfu2" },
5822 { 0, NULL }
5826 static int
5827 dissect_its_VehicleRole(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5828 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5829 16, NULL, false, 0, NULL);
5831 return offset;
5836 static int
5837 dissect_its_VehicleWidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5838 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5839 1U, 62U, NULL, false);
5841 return offset;
5846 static int
5847 dissect_its_VerticalAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5848 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5849 -160, 161U, NULL, false);
5851 return offset;
5855 static int * const its_VruClusterProfiles_bits[] = {
5856 &hf_its_VruClusterProfiles_pedestrian,
5857 &hf_its_VruClusterProfiles_bicyclist,
5858 &hf_its_VruClusterProfiles_motorcyclist,
5859 &hf_its_VruClusterProfiles_animal,
5860 NULL
5863 static int
5864 dissect_its_VruClusterProfiles(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5865 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
5866 4, 4, false, its_VruClusterProfiles_bits, 4, NULL, NULL);
5868 return offset;
5872 static const value_string its_VruDeviceUsage_vals[] = {
5873 { 0, "unavailable" },
5874 { 1, "other" },
5875 { 2, "idle" },
5876 { 3, "listeningToAudio" },
5877 { 4, "typing" },
5878 { 5, "calling" },
5879 { 6, "playingGames" },
5880 { 7, "reading" },
5881 { 8, "viewing" },
5882 { 0, NULL }
5886 static int
5887 dissect_its_VruDeviceUsage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5888 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5889 0U, 15U, NULL, false);
5891 return offset;
5895 static const value_string its_VruEnvironment_vals[] = {
5896 { 0, "unavailable" },
5897 { 1, "intersectionCrossing" },
5898 { 2, "zebraCrossing" },
5899 { 3, "sidewalk" },
5900 { 4, "onVehicleRoad" },
5901 { 5, "protectedGeographicArea" },
5902 { 0, NULL }
5906 static int
5907 dissect_its_VruEnvironment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5908 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5909 0U, 15U, NULL, false);
5911 return offset;
5915 static const value_string its_VruMovementControl_vals[] = {
5916 { 0, "unavailable" },
5917 { 1, "braking" },
5918 { 2, "hardBraking" },
5919 { 3, "stopPedaling" },
5920 { 4, "brakingAndStopPedaling" },
5921 { 5, "hardBrakingAndStopPedaling" },
5922 { 6, "noReaction" },
5923 { 0, NULL }
5927 static int
5928 dissect_its_VruMovementControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5929 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5930 0U, 15U, NULL, false);
5932 return offset;
5936 static const value_string its_VruSubProfilePedestrian_vals[] = {
5937 { 0, "unavailable" },
5938 { 1, "ordinary-pedestrian" },
5939 { 2, "road-worker" },
5940 { 3, "first-responder" },
5941 { 0, NULL }
5945 static int
5946 dissect_its_VruSubProfilePedestrian(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5947 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5948 0U, 15U, NULL, false);
5950 return offset;
5954 static const value_string its_VruSubProfileBicyclist_vals[] = {
5955 { 0, "unavailable" },
5956 { 1, "bicyclist" },
5957 { 2, "wheelchair-user" },
5958 { 3, "horse-and-rider" },
5959 { 4, "rollerskater" },
5960 { 5, "e-scooter" },
5961 { 6, "personal-transporter" },
5962 { 7, "pedelec" },
5963 { 8, "speed-pedelec" },
5964 { 9, "roadbike" },
5965 { 10, "childrensbike" },
5966 { 0, NULL }
5970 static int
5971 dissect_its_VruSubProfileBicyclist(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5972 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5973 0U, 15U, NULL, false);
5975 return offset;
5979 static const value_string its_VruSubProfileMotorcyclist_vals[] = {
5980 { 0, "unavailable" },
5981 { 1, "moped" },
5982 { 2, "motorcycle" },
5983 { 3, "motorcycle-and-sidecar-right" },
5984 { 4, "motorcycle-and-sidecar-left" },
5985 { 0, NULL }
5989 static int
5990 dissect_its_VruSubProfileMotorcyclist(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5991 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
5992 0U, 15U, NULL, false);
5994 return offset;
5998 static const value_string its_VruSubProfileAnimal_vals[] = {
5999 { 0, "unavailable" },
6000 { 1, "wild-animal" },
6001 { 2, "farm-animal" },
6002 { 3, "service-animal" },
6003 { 0, NULL }
6007 static int
6008 dissect_its_VruSubProfileAnimal(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6009 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6010 0U, 15U, NULL, false);
6012 return offset;
6016 static const value_string its_VruSizeClass_vals[] = {
6017 { 0, "unavailable" },
6018 { 1, "low" },
6019 { 2, "medium" },
6020 { 3, "high" },
6021 { 0, NULL }
6025 static int
6026 dissect_its_VruSizeClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6027 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6028 0U, 15U, NULL, false);
6030 return offset;
6034 static int * const its_VruSpecificExteriorLights_bits[] = {
6035 &hf_its_VruSpecificExteriorLights_unavailable,
6036 &hf_its_VruSpecificExteriorLights_backFlashLight,
6037 &hf_its_VruSpecificExteriorLights_helmetLight,
6038 &hf_its_VruSpecificExteriorLights_armLight,
6039 &hf_its_VruSpecificExteriorLights_legLight,
6040 &hf_its_VruSpecificExteriorLights_wheelLight,
6041 NULL
6044 static int
6045 dissect_its_VruSpecificExteriorLights(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6046 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
6047 8, 8, false, its_VruSpecificExteriorLights_bits, 6, NULL, NULL);
6049 return offset;
6053 static const value_string its_WheelBaseVehicle_vals[] = {
6054 { 126, "outOfRange" },
6055 { 127, "unavailable" },
6056 { 0, NULL }
6060 static int
6061 dissect_its_WheelBaseVehicle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6062 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6063 1U, 127U, NULL, false);
6065 return offset;
6069 static const value_string its_Wgs84AngleConfidence_vals[] = {
6070 { 126, "outOfRange" },
6071 { 127, "unavailable" },
6072 { 0, NULL }
6076 static int
6077 dissect_its_Wgs84AngleConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6078 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6079 1U, 127U, NULL, false);
6081 return offset;
6085 static const value_string its_Wgs84AngleValue_vals[] = {
6086 { 0, "wgs84North" },
6087 { 900, "wgs84East" },
6088 { 1800, "wgs84South" },
6089 { 2700, "wgs84West" },
6090 { 3600, "doNotUse" },
6091 { 3601, "unavailable" },
6092 { 0, NULL }
6096 static int
6097 dissect_its_Wgs84AngleValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6098 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6099 0U, 3601U, NULL, false);
6101 return offset;
6106 static int
6107 dissect_its_WMInumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6108 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
6109 1, 3, false,
6110 NULL);
6112 return offset;
6116 static const value_string its_WrongWayDrivingSubCauseCode_vals[] = {
6117 { 0, "unavailable" },
6118 { 1, "wrongLane" },
6119 { 2, "wrongDirection" },
6120 { 0, NULL }
6124 static int
6125 dissect_its_WrongWayDrivingSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6126 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6127 0U, 255U, NULL, false);
6129 return offset;
6133 static const value_string its_YawRateConfidence_vals[] = {
6134 { 0, "degSec-000-01" },
6135 { 1, "degSec-000-05" },
6136 { 2, "degSec-000-10" },
6137 { 3, "degSec-001-00" },
6138 { 4, "degSec-005-00" },
6139 { 5, "degSec-010-00" },
6140 { 6, "degSec-100-00" },
6141 { 7, "outOfRange" },
6142 { 8, "unavailable" },
6143 { 0, NULL }
6147 static int
6148 dissect_its_YawRateConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6149 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
6150 9, NULL, false, 0, NULL);
6152 return offset;
6157 static int
6158 dissect_its_YawRateValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6159 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6160 -32766, 32767U, NULL, false);
6162 return offset;
6166 static const per_sequence_t its_AccelerationMagnitude_sequence[] = {
6167 { &hf_its_accelerationMagnitudeValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationMagnitudeValue },
6168 { &hf_its_accelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationConfidence },
6169 { NULL, 0, 0, NULL }
6172 static int
6173 dissect_its_AccelerationMagnitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6174 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6175 ett_its_AccelerationMagnitude, its_AccelerationMagnitude_sequence);
6177 return offset;
6181 static const per_sequence_t its_CartesianAngle_sequence[] = {
6182 { &hf_its_value_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngleValue },
6183 { &hf_its_confidence_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AngleConfidence },
6184 { NULL, 0, 0, NULL }
6187 static int
6188 dissect_its_CartesianAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6189 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6190 ett_its_CartesianAngle, its_CartesianAngle_sequence);
6192 return offset;
6196 static const per_sequence_t its_AccelerationComponent_sequence[] = {
6197 { &hf_its_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationValue },
6198 { &hf_its_confidence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationConfidence },
6199 { NULL, 0, 0, NULL }
6202 static int
6203 dissect_its_AccelerationComponent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6204 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6205 ett_its_AccelerationComponent, its_AccelerationComponent_sequence);
6207 return offset;
6211 static const per_sequence_t its_AccelerationPolarWithZ_sequence[] = {
6212 { &hf_its_accelerationMagnitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationMagnitude },
6213 { &hf_its_accelerationDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngle },
6214 { &hf_its_zAcceleration , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_AccelerationComponent },
6215 { NULL, 0, 0, NULL }
6218 static int
6219 dissect_its_AccelerationPolarWithZ(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6220 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6221 ett_its_AccelerationPolarWithZ, its_AccelerationPolarWithZ_sequence);
6223 return offset;
6227 static const per_sequence_t its_AccelerationCartesian_sequence[] = {
6228 { &hf_its_xAcceleration , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationComponent },
6229 { &hf_its_yAcceleration , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationComponent },
6230 { &hf_its_zAcceleration , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_AccelerationComponent },
6231 { NULL, 0, 0, NULL }
6234 static int
6235 dissect_its_AccelerationCartesian(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6236 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6237 ett_its_AccelerationCartesian, its_AccelerationCartesian_sequence);
6239 return offset;
6243 static const value_string its_Acceleration3dWithConfidence_vals[] = {
6244 { 0, "polarAcceleration" },
6245 { 1, "cartesianAcceleration" },
6246 { 0, NULL }
6249 static const per_choice_t its_Acceleration3dWithConfidence_choice[] = {
6250 { 0, &hf_its_polarAcceleration, ASN1_NO_EXTENSIONS , dissect_its_AccelerationPolarWithZ },
6251 { 1, &hf_its_cartesianAcceleration, ASN1_NO_EXTENSIONS , dissect_its_AccelerationCartesian },
6252 { 0, NULL, 0, NULL }
6255 static int
6256 dissect_its_Acceleration3dWithConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6257 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6258 ett_its_Acceleration3dWithConfidence, its_Acceleration3dWithConfidence_choice,
6259 NULL);
6261 return offset;
6265 static const per_sequence_t its_AccelerationChangeIndication_sequence[] = {
6266 { &hf_its_accelOrDecel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_AccelerationChange },
6267 { &hf_its_actionDeltaTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaTimeTenthOfSecond },
6268 { NULL, 0, 0, NULL }
6271 static int
6272 dissect_its_AccelerationChangeIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6273 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6274 ett_its_AccelerationChangeIndication, its_AccelerationChangeIndication_sequence);
6276 return offset;
6280 static const per_sequence_t its_ActionId_sequence[] = {
6281 { &hf_its_originatingStationId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StationId },
6282 { &hf_its_sequenceNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SequenceNumber },
6283 { NULL, 0, 0, NULL }
6286 static int
6287 dissect_its_ActionId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6288 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6289 ett_its_ActionId, its_ActionId_sequence);
6291 return offset;
6295 static const per_sequence_t its_ActionID_sequence[] = {
6296 { &hf_its_originatingStationId_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StationID },
6297 { &hf_its_sequenceNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SequenceNumber },
6298 { NULL, 0, 0, NULL }
6301 static int
6302 dissect_its_ActionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6303 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6304 ett_its_ActionID, its_ActionID_sequence);
6306 return offset;
6310 static const per_sequence_t its_ActionIdList_sequence_of[1] = {
6311 { &hf_its_ActionIdList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ActionId },
6314 static int
6315 dissect_its_ActionIdList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6316 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
6317 ett_its_ActionIdList, its_ActionIdList_sequence_of,
6318 1, 8, true);
6320 return offset;
6324 static const per_sequence_t its_Altitude_sequence[] = {
6325 { &hf_its_altitudeValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AltitudeValue },
6326 { &hf_its_altitudeConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AltitudeConfidence },
6327 { NULL, 0, 0, NULL }
6330 static int
6331 dissect_its_Altitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6332 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6333 ett_its_Altitude, its_Altitude_sequence);
6335 return offset;
6339 static const per_sequence_t its_PositionConfidenceEllipse_sequence[] = {
6340 { &hf_its_semiMajorAxisLength_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SemiAxisLength },
6341 { &hf_its_semiMinorAxisLength_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SemiAxisLength },
6342 { &hf_its_semiMajorAxisOrientation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Wgs84AngleValue },
6343 { NULL, 0, 0, NULL }
6346 static int
6347 dissect_its_PositionConfidenceEllipse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6348 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6349 ett_its_PositionConfidenceEllipse, its_PositionConfidenceEllipse_sequence);
6351 return offset;
6355 static const per_sequence_t its_ReferencePositionWithConfidence_sequence[] = {
6356 { &hf_its_latitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
6357 { &hf_its_longitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
6358 { &hf_its_positionConfidenceEllipse_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PositionConfidenceEllipse },
6359 { &hf_its_altitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Altitude },
6360 { NULL, 0, 0, NULL }
6363 static int
6364 dissect_its_ReferencePositionWithConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6365 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6366 ett_its_ReferencePositionWithConfidence, its_ReferencePositionWithConfidence_sequence);
6368 return offset;
6372 static const per_sequence_t its_BasicContainer_sequence[] = {
6373 { &hf_its_stationType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TrafficParticipantType },
6374 { &hf_its_referencePosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ReferencePositionWithConfidence },
6375 { NULL, 0, 0, NULL }
6378 static int
6379 dissect_its_BasicContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6380 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6381 ett_its_BasicContainer, its_BasicContainer_sequence);
6383 return offset;
6387 static const per_sequence_t its_CartesianAngularVelocityComponent_sequence[] = {
6388 { &hf_its_value_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngularVelocityComponentValue },
6389 { &hf_its_confidence_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AngularSpeedConfidence },
6390 { NULL, 0, 0, NULL }
6393 static int
6394 dissect_its_CartesianAngularVelocityComponent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6395 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6396 ett_its_CartesianAngularVelocityComponent, its_CartesianAngularVelocityComponent_sequence);
6398 return offset;
6402 static const per_sequence_t its_CartesianCoordinateWithConfidence_sequence[] = {
6403 { &hf_its_value_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianCoordinateLarge },
6404 { &hf_its_confidence_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CoordinateConfidence },
6405 { NULL, 0, 0, NULL }
6408 static int
6409 dissect_its_CartesianCoordinateWithConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6410 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6411 ett_its_CartesianCoordinateWithConfidence, its_CartesianCoordinateWithConfidence_sequence);
6413 return offset;
6417 static const per_sequence_t its_CartesianPosition3d_sequence[] = {
6418 { &hf_its_xCoordinate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianCoordinate },
6419 { &hf_its_yCoordinate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianCoordinate },
6420 { &hf_its_zCoordinate , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianCoordinate },
6421 { NULL, 0, 0, NULL }
6424 static int
6425 dissect_its_CartesianPosition3d(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6426 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6427 ett_its_CartesianPosition3d, its_CartesianPosition3d_sequence);
6429 return offset;
6433 static const per_sequence_t its_CartesianPosition3dWithConfidence_sequence[] = {
6434 { &hf_its_xCoordinate_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianCoordinateWithConfidence },
6435 { &hf_its_yCoordinate_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianCoordinateWithConfidence },
6436 { &hf_its_zCoordinate_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianCoordinateWithConfidence },
6437 { NULL, 0, 0, NULL }
6440 static int
6441 dissect_its_CartesianPosition3dWithConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6442 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6443 ett_its_CartesianPosition3dWithConfidence, its_CartesianPosition3dWithConfidence_sequence);
6445 return offset;
6449 static const per_sequence_t its_CauseCode_sequence[] = {
6450 { &hf_its_causeCode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_CauseCodeType },
6451 { &hf_its_subCauseCode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_SubCauseCodeType },
6452 { NULL, 0, 0, NULL }
6455 static int
6456 dissect_its_CauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6457 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6458 ett_its_CauseCode, its_CauseCode_sequence);
6460 return offset;
6464 static const value_string its_CauseCodeChoice_vals[] = {
6465 { 0, "reserved0" },
6466 { 1, "trafficCondition1" },
6467 { 2, "accident2" },
6468 { 3, "roadworks3" },
6469 { 4, "reserved4" },
6470 { 5, "impassability5" },
6471 { 6, "adverseWeatherCondition-Adhesion6" },
6472 { 7, "aquaplaning7" },
6473 { 8, "reserved8" },
6474 { 9, "hazardousLocation-SurfaceCondition9" },
6475 { 10, "hazardousLocation-ObstacleOnTheRoad10" },
6476 { 11, "hazardousLocation-AnimalOnTheRoad11" },
6477 { 12, "humanPresenceOnTheRoad12" },
6478 { 13, "reserved13" },
6479 { 14, "wrongWayDriving14" },
6480 { 15, "rescueAndRecoveryWorkInProgress15" },
6481 { 16, "reserved16" },
6482 { 17, "adverseWeatherCondition-ExtremeWeatherCondition17" },
6483 { 18, "adverseWeatherCondition-Visibility18" },
6484 { 19, "adverseWeatherCondition-Precipitation19" },
6485 { 20, "violence20" },
6486 { 21, "reserved21" },
6487 { 22, "reserved22" },
6488 { 23, "reserved23" },
6489 { 24, "reserved24" },
6490 { 25, "reserved25" },
6491 { 26, "slowVehicle26" },
6492 { 27, "dangerousEndOfQueue27" },
6493 { 28, "publicTransportVehicleApproaching28" },
6494 { 29, "reserved29" },
6495 { 30, "reserved30" },
6496 { 31, "reserved31" },
6497 { 32, "reserved32" },
6498 { 33, "reserved33" },
6499 { 34, "reserved34" },
6500 { 35, "reserved35" },
6501 { 36, "reserved36" },
6502 { 37, "reserved37" },
6503 { 38, "reserved38" },
6504 { 39, "reserved39" },
6505 { 40, "reserved40" },
6506 { 41, "reserved41" },
6507 { 42, "reserved42" },
6508 { 43, "reserved43" },
6509 { 44, "reserved44" },
6510 { 45, "reserved45" },
6511 { 46, "reserved46" },
6512 { 47, "reserved47" },
6513 { 48, "reserved48" },
6514 { 49, "reserved49" },
6515 { 50, "reserved50" },
6516 { 51, "reserved51" },
6517 { 52, "reserved52" },
6518 { 53, "reserved53" },
6519 { 54, "reserved54" },
6520 { 55, "reserved55" },
6521 { 56, "reserved56" },
6522 { 57, "reserved57" },
6523 { 58, "reserved58" },
6524 { 59, "reserved59" },
6525 { 60, "reserved60" },
6526 { 61, "reserved61" },
6527 { 62, "reserved62" },
6528 { 63, "reserved63" },
6529 { 64, "reserved64" },
6530 { 65, "reserved65" },
6531 { 66, "reserved66" },
6532 { 67, "reserved67" },
6533 { 68, "reserved68" },
6534 { 69, "reserved69" },
6535 { 70, "reserved70" },
6536 { 71, "reserved71" },
6537 { 72, "reserved72" },
6538 { 73, "reserved73" },
6539 { 74, "reserved74" },
6540 { 75, "reserved75" },
6541 { 76, "reserved76" },
6542 { 77, "reserved77" },
6543 { 78, "reserved78" },
6544 { 79, "reserved79" },
6545 { 80, "reserved80" },
6546 { 81, "reserved81" },
6547 { 82, "reserved82" },
6548 { 83, "reserved83" },
6549 { 84, "reserved84" },
6550 { 85, "reserved85" },
6551 { 86, "reserved86" },
6552 { 87, "reserved87" },
6553 { 88, "reserved88" },
6554 { 89, "reserved89" },
6555 { 90, "reserved90" },
6556 { 91, "vehicleBreakdown91" },
6557 { 92, "postCrash92" },
6558 { 93, "humanProblem93" },
6559 { 94, "stationaryVehicle94" },
6560 { 95, "emergencyVehicleApproaching95" },
6561 { 96, "hazardousLocation-DangerousCurve96" },
6562 { 97, "collisionRisk97" },
6563 { 98, "signalViolation98" },
6564 { 99, "dangerousSituation99" },
6565 { 100, "railwayLevelCrossing100" },
6566 { 101, "reserved101" },
6567 { 102, "reserved102" },
6568 { 103, "reserved103" },
6569 { 104, "reserved104" },
6570 { 105, "reserved105" },
6571 { 106, "reserved106" },
6572 { 107, "reserved107" },
6573 { 108, "reserved108" },
6574 { 109, "reserved109" },
6575 { 110, "reserved110" },
6576 { 111, "reserved111" },
6577 { 112, "reserved112" },
6578 { 113, "reserved113" },
6579 { 114, "reserved114" },
6580 { 115, "reserved115" },
6581 { 116, "reserved116" },
6582 { 117, "reserved117" },
6583 { 118, "reserved118" },
6584 { 119, "reserved119" },
6585 { 120, "reserved120" },
6586 { 121, "reserved121" },
6587 { 122, "reserved122" },
6588 { 123, "reserved123" },
6589 { 124, "reserved124" },
6590 { 125, "reserved125" },
6591 { 126, "reserved126" },
6592 { 127, "reserved127" },
6593 { 128, "reserved128" },
6594 { 0, NULL }
6597 static const per_choice_t its_CauseCodeChoice_choice[] = {
6598 { 0, &hf_its_reserved0 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6599 { 1, &hf_its_trafficCondition1, ASN1_NO_EXTENSIONS , dissect_its_TrafficConditionSubCauseCode },
6600 { 2, &hf_its_accident2 , ASN1_NO_EXTENSIONS , dissect_its_AccidentSubCauseCode },
6601 { 3, &hf_its_roadworks3 , ASN1_NO_EXTENSIONS , dissect_its_RoadworksSubCauseCode },
6602 { 4, &hf_its_reserved4 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6603 { 5, &hf_its_impassability5 , ASN1_NO_EXTENSIONS , dissect_its_ImpassabilitySubCauseCode },
6604 { 6, &hf_its_adverseWeatherCondition_Adhesion6, ASN1_NO_EXTENSIONS , dissect_its_AdverseWeatherCondition_AdhesionSubCauseCode },
6605 { 7, &hf_its_aquaplaning7 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6606 { 8, &hf_its_reserved8 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6607 { 9, &hf_its_hazardousLocation_SurfaceCondition9, ASN1_NO_EXTENSIONS , dissect_its_HazardousLocation_SurfaceConditionSubCauseCode },
6608 { 10, &hf_its_hazardousLocation_ObstacleOnTheRoad10, ASN1_NO_EXTENSIONS , dissect_its_HazardousLocation_ObstacleOnTheRoadSubCauseCode },
6609 { 11, &hf_its_hazardousLocation_AnimalOnTheRoad11, ASN1_NO_EXTENSIONS , dissect_its_HazardousLocation_AnimalOnTheRoadSubCauseCode },
6610 { 12, &hf_its_humanPresenceOnTheRoad12, ASN1_NO_EXTENSIONS , dissect_its_HumanPresenceOnTheRoadSubCauseCode },
6611 { 13, &hf_its_reserved13 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6612 { 14, &hf_its_wrongWayDriving14, ASN1_NO_EXTENSIONS , dissect_its_WrongWayDrivingSubCauseCode },
6613 { 15, &hf_its_rescueAndRecoveryWorkInProgress15, ASN1_NO_EXTENSIONS , dissect_its_RescueAndRecoveryWorkInProgressSubCauseCode },
6614 { 16, &hf_its_reserved16 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6615 { 17, &hf_its_adverseWeatherCondition_ExtremeWeatherCondition17, ASN1_NO_EXTENSIONS , dissect_its_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode },
6616 { 18, &hf_its_adverseWeatherCondition_Visibility18, ASN1_NO_EXTENSIONS , dissect_its_AdverseWeatherCondition_VisibilitySubCauseCode },
6617 { 19, &hf_its_adverseWeatherCondition_Precipitation19, ASN1_NO_EXTENSIONS , dissect_its_AdverseWeatherCondition_PrecipitationSubCauseCode },
6618 { 20, &hf_its_violence20 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6619 { 21, &hf_its_reserved21 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6620 { 22, &hf_its_reserved22 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6621 { 23, &hf_its_reserved23 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6622 { 24, &hf_its_reserved24 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6623 { 25, &hf_its_reserved25 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6624 { 26, &hf_its_slowVehicle26 , ASN1_NO_EXTENSIONS , dissect_its_SlowVehicleSubCauseCode },
6625 { 27, &hf_its_dangerousEndOfQueue27, ASN1_NO_EXTENSIONS , dissect_its_DangerousEndOfQueueSubCauseCode },
6626 { 28, &hf_its_publicTransportVehicleApproaching28, ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6627 { 29, &hf_its_reserved29 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6628 { 30, &hf_its_reserved30 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6629 { 31, &hf_its_reserved31 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6630 { 32, &hf_its_reserved32 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6631 { 33, &hf_its_reserved33 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6632 { 34, &hf_its_reserved34 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6633 { 35, &hf_its_reserved35 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6634 { 36, &hf_its_reserved36 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6635 { 37, &hf_its_reserved37 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6636 { 38, &hf_its_reserved38 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6637 { 39, &hf_its_reserved39 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6638 { 40, &hf_its_reserved40 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6639 { 41, &hf_its_reserved41 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6640 { 42, &hf_its_reserved42 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6641 { 43, &hf_its_reserved43 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6642 { 44, &hf_its_reserved44 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6643 { 45, &hf_its_reserved45 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6644 { 46, &hf_its_reserved46 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6645 { 47, &hf_its_reserved47 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6646 { 48, &hf_its_reserved48 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6647 { 49, &hf_its_reserved49 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6648 { 50, &hf_its_reserved50 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6649 { 51, &hf_its_reserved51 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6650 { 52, &hf_its_reserved52 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6651 { 53, &hf_its_reserved53 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6652 { 54, &hf_its_reserved54 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6653 { 55, &hf_its_reserved55 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6654 { 56, &hf_its_reserved56 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6655 { 57, &hf_its_reserved57 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6656 { 58, &hf_its_reserved58 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6657 { 59, &hf_its_reserved59 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6658 { 60, &hf_its_reserved60 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6659 { 61, &hf_its_reserved61 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6660 { 62, &hf_its_reserved62 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6661 { 63, &hf_its_reserved63 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6662 { 64, &hf_its_reserved64 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6663 { 65, &hf_its_reserved65 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6664 { 66, &hf_its_reserved66 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6665 { 67, &hf_its_reserved67 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6666 { 68, &hf_its_reserved68 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6667 { 69, &hf_its_reserved69 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6668 { 70, &hf_its_reserved70 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6669 { 71, &hf_its_reserved71 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6670 { 72, &hf_its_reserved72 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6671 { 73, &hf_its_reserved73 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6672 { 74, &hf_its_reserved74 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6673 { 75, &hf_its_reserved75 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6674 { 76, &hf_its_reserved76 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6675 { 77, &hf_its_reserved77 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6676 { 78, &hf_its_reserved78 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6677 { 79, &hf_its_reserved79 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6678 { 80, &hf_its_reserved80 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6679 { 81, &hf_its_reserved81 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6680 { 82, &hf_its_reserved82 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6681 { 83, &hf_its_reserved83 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6682 { 84, &hf_its_reserved84 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6683 { 85, &hf_its_reserved85 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6684 { 86, &hf_its_reserved86 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6685 { 87, &hf_its_reserved87 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6686 { 88, &hf_its_reserved88 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6687 { 89, &hf_its_reserved89 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6688 { 90, &hf_its_reserved90 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6689 { 91, &hf_its_vehicleBreakdown91, ASN1_NO_EXTENSIONS , dissect_its_VehicleBreakdownSubCauseCode },
6690 { 92, &hf_its_postCrash92 , ASN1_NO_EXTENSIONS , dissect_its_PostCrashSubCauseCode },
6691 { 93, &hf_its_humanProblem93 , ASN1_NO_EXTENSIONS , dissect_its_HumanProblemSubCauseCode },
6692 { 94, &hf_its_stationaryVehicle94, ASN1_NO_EXTENSIONS , dissect_its_StationaryVehicleSubCauseCode },
6693 { 95, &hf_its_emergencyVehicleApproaching95, ASN1_NO_EXTENSIONS , dissect_its_EmergencyVehicleApproachingSubCauseCode },
6694 { 96, &hf_its_hazardousLocation_DangerousCurve96, ASN1_NO_EXTENSIONS , dissect_its_HazardousLocation_DangerousCurveSubCauseCode },
6695 { 97, &hf_its_collisionRisk97 , ASN1_NO_EXTENSIONS , dissect_its_CollisionRiskSubCauseCode },
6696 { 98, &hf_its_signalViolation98, ASN1_NO_EXTENSIONS , dissect_its_SignalViolationSubCauseCode },
6697 { 99, &hf_its_dangerousSituation99, ASN1_NO_EXTENSIONS , dissect_its_DangerousSituationSubCauseCode },
6698 { 100, &hf_its_railwayLevelCrossing100, ASN1_NO_EXTENSIONS , dissect_its_RailwayLevelCrossingSubCauseCode },
6699 { 101, &hf_its_reserved101 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6700 { 102, &hf_its_reserved102 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6701 { 103, &hf_its_reserved103 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6702 { 104, &hf_its_reserved104 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6703 { 105, &hf_its_reserved105 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6704 { 106, &hf_its_reserved106 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6705 { 107, &hf_its_reserved107 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6706 { 108, &hf_its_reserved108 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6707 { 109, &hf_its_reserved109 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6708 { 110, &hf_its_reserved110 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6709 { 111, &hf_its_reserved111 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6710 { 112, &hf_its_reserved112 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6711 { 113, &hf_its_reserved113 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6712 { 114, &hf_its_reserved114 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6713 { 115, &hf_its_reserved115 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6714 { 116, &hf_its_reserved116 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6715 { 117, &hf_its_reserved117 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6716 { 118, &hf_its_reserved118 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6717 { 119, &hf_its_reserved119 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6718 { 120, &hf_its_reserved120 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6719 { 121, &hf_its_reserved121 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6720 { 122, &hf_its_reserved122 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6721 { 123, &hf_its_reserved123 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6722 { 124, &hf_its_reserved124 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6723 { 125, &hf_its_reserved125 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6724 { 126, &hf_its_reserved126 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6725 { 127, &hf_its_reserved127 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6726 { 128, &hf_its_reserved128 , ASN1_NO_EXTENSIONS , dissect_its_SubCauseCodeType },
6727 { 0, NULL, 0, NULL }
6730 static int
6731 dissect_its_CauseCodeChoice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6732 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
6733 ett_its_CauseCodeChoice, its_CauseCodeChoice_choice,
6734 NULL);
6736 return offset;
6740 static const per_sequence_t its_CauseCodeV2_sequence[] = {
6741 { &hf_its_ccAndScc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_CauseCodeChoice },
6742 { NULL, 0, 0, NULL }
6745 static int
6746 dissect_its_CauseCodeV2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6747 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6748 ett_its_CauseCodeV2, its_CauseCodeV2_sequence);
6750 return offset;
6754 static const per_sequence_t its_CenDsrcTollingZone_sequence[] = {
6755 { &hf_its_protectedZoneLatitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
6756 { &hf_its_protectedZoneLongitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
6757 { &hf_its_cenDsrcTollingZoneId, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ProtectedZoneId },
6758 { NULL, 0, 0, NULL }
6761 static int
6762 dissect_its_CenDsrcTollingZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6763 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6764 ett_its_CenDsrcTollingZone, its_CenDsrcTollingZone_sequence);
6766 return offset;
6770 static const per_sequence_t its_CircularShape_sequence[] = {
6771 { &hf_its_shapeReferencePoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianPosition3d },
6772 { &hf_its_radius , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StandardLength12b },
6773 { &hf_its_height , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_StandardLength12b },
6774 { NULL, 0, 0, NULL }
6777 static int
6778 dissect_its_CircularShape(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6779 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6780 ett_its_CircularShape, its_CircularShape_sequence);
6782 return offset;
6786 static const per_sequence_t its_ClosedLanes_sequence[] = {
6787 { &hf_its_innerhardShoulderStatus, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_HardShoulderStatus },
6788 { &hf_its_outerhardShoulderStatus, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_HardShoulderStatus },
6789 { &hf_its_drivingLaneStatus, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DrivingLaneStatus },
6790 { NULL, 0, 0, NULL }
6793 static int
6794 dissect_its_ClosedLanes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6795 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6796 ett_its_ClosedLanes, its_ClosedLanes_sequence);
6798 return offset;
6802 static const per_sequence_t its_ClusterBreakupInfo_sequence[] = {
6803 { &hf_its_clusterBreakupReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ClusterBreakupReason },
6804 { &hf_its_breakupTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaTimeQuarterSecond },
6805 { NULL, 0, 0, NULL }
6808 static int
6809 dissect_its_ClusterBreakupInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6810 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6811 ett_its_ClusterBreakupInfo, its_ClusterBreakupInfo_sequence);
6813 return offset;
6817 static const per_sequence_t its_ClusterJoinInfo_sequence[] = {
6818 { &hf_its_clusterId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Identifier1B },
6819 { &hf_its_joinTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaTimeQuarterSecond },
6820 { NULL, 0, 0, NULL }
6823 static int
6824 dissect_its_ClusterJoinInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6825 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6826 ett_its_ClusterJoinInfo, its_ClusterJoinInfo_sequence);
6828 return offset;
6832 static const per_sequence_t its_ClusterLeaveInfo_sequence[] = {
6833 { &hf_its_clusterId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Identifier1B },
6834 { &hf_its_clusterLeaveReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ClusterLeaveReason },
6835 { NULL, 0, 0, NULL }
6838 static int
6839 dissect_its_ClusterLeaveInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6840 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6841 ett_its_ClusterLeaveInfo, its_ClusterLeaveInfo_sequence);
6843 return offset;
6847 static const per_sequence_t its_CorrelationColumn_sequence_of[1] = {
6848 { &hf_its_CorrelationColumn_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CorrelationCellValue },
6851 static int
6852 dissect_its_CorrelationColumn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6853 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
6854 ett_its_CorrelationColumn, its_CorrelationColumn_sequence_of,
6855 1, 13, true);
6857 return offset;
6861 static const per_sequence_t its_Curvature_sequence[] = {
6862 { &hf_its_curvatureValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CurvatureValue },
6863 { &hf_its_curvatureConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CurvatureConfidence },
6864 { NULL, 0, 0, NULL }
6867 static int
6868 dissect_its_Curvature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6869 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6870 ett_its_Curvature, its_Curvature_sequence);
6872 return offset;
6877 static int
6878 dissect_its_INTEGER_0_9999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6879 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
6880 0U, 9999U, NULL, false);
6882 return offset;
6887 static int
6888 dissect_its_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6889 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
6891 return offset;
6896 static int
6897 dissect_its_IA5String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6898 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
6899 1, 24, false,
6900 NULL);
6902 return offset;
6907 static int
6908 dissect_its_UTF8String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6909 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
6910 1, 24, false);
6912 return offset;
6916 static const per_sequence_t its_DangerousGoodsExtended_sequence[] = {
6917 { &hf_its_dangerousGoodsType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DangerousGoodsBasic },
6918 { &hf_its_unNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_INTEGER_0_9999 },
6919 { &hf_its_elevatedTemperature, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_BOOLEAN },
6920 { &hf_its_tunnelsRestricted, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_BOOLEAN },
6921 { &hf_its_limitedQuantity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_BOOLEAN },
6922 { &hf_its_emergencyActionCode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_IA5String_SIZE_1_24 },
6923 { &hf_its_phoneNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_PhoneNumber },
6924 { &hf_its_companyName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_UTF8String_SIZE_1_24 },
6925 { NULL, 0, 0, NULL }
6928 static int
6929 dissect_its_DangerousGoodsExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6930 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6931 ett_its_DangerousGoodsExtended, its_DangerousGoodsExtended_sequence);
6933 return offset;
6937 static const per_sequence_t its_DeltaReferencePosition_sequence[] = {
6938 { &hf_its_deltaLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DeltaLatitude },
6939 { &hf_its_deltaLongitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DeltaLongitude },
6940 { &hf_its_deltaAltitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DeltaAltitude },
6941 { NULL, 0, 0, NULL }
6944 static int
6945 dissect_its_DeltaReferencePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6946 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6947 ett_its_DeltaReferencePosition, its_DeltaReferencePosition_sequence);
6949 return offset;
6953 static const per_sequence_t its_PosConfidenceEllipse_sequence[] = {
6954 { &hf_its_semiMajorConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SemiAxisLength },
6955 { &hf_its_semiMinorConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SemiAxisLength },
6956 { &hf_its_semiMajorOrientation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_HeadingValue },
6957 { NULL, 0, 0, NULL }
6960 static int
6961 dissect_its_PosConfidenceEllipse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6962 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6963 ett_its_PosConfidenceEllipse, its_PosConfidenceEllipse_sequence);
6965 return offset;
6969 static const per_sequence_t its_ReferencePosition_sequence[] = {
6970 { &hf_its_latitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
6971 { &hf_its_longitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
6972 { &hf_its_positionConfidenceEllipse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PosConfidenceEllipse },
6973 { &hf_its_altitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Altitude },
6974 { NULL, 0, 0, NULL }
6977 static int
6978 dissect_its_ReferencePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6979 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
6980 ett_its_ReferencePosition, its_ReferencePosition_sequence);
6982 return offset;
6986 static const per_sequence_t its_DigitalMap_sequence_of[1] = {
6987 { &hf_its_DigitalMap_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ReferencePosition },
6990 static int
6991 dissect_its_DigitalMap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6992 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
6993 ett_its_DigitalMap, its_DigitalMap_sequence_of,
6994 1, 256, false);
6996 return offset;
7000 static const per_sequence_t its_EllipticalShape_sequence[] = {
7001 { &hf_its_shapeReferencePoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianPosition3d },
7002 { &hf_its_semiMajorAxisLength, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StandardLength12b },
7003 { &hf_its_semiMinorAxisLength, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StandardLength12b },
7004 { &hf_its_orientation , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianAngleValue },
7005 { &hf_its_height , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_StandardLength12b },
7006 { NULL, 0, 0, NULL }
7009 static int
7010 dissect_its_EllipticalShape(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7011 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7012 ett_its_EllipticalShape, its_EllipticalShape_sequence);
7014 return offset;
7018 static const per_sequence_t its_EulerAnglesWithConfidence_sequence[] = {
7019 { &hf_its_zAngle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngle },
7020 { &hf_its_yAngle , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianAngle },
7021 { &hf_its_xAngle , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianAngle },
7022 { NULL, 0, 0, NULL }
7025 static int
7026 dissect_its_EulerAnglesWithConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7027 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7028 ett_its_EulerAnglesWithConfidence, its_EulerAnglesWithConfidence_sequence);
7030 return offset;
7035 static int
7036 dissect_its_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7037 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
7039 return offset;
7043 static const value_string its_EuVehicleCategoryCode_vals[] = {
7044 { 0, "euVehicleCategoryL" },
7045 { 1, "euVehicleCategoryM" },
7046 { 2, "euVehicleCategoryN" },
7047 { 3, "euVehicleCategoryO" },
7048 { 4, "euVehicleCategoryT" },
7049 { 5, "euVehicleCategoryG" },
7050 { 0, NULL }
7053 static const per_choice_t its_EuVehicleCategoryCode_choice[] = {
7054 { 0, &hf_its_euVehicleCategoryL, ASN1_NO_EXTENSIONS , dissect_its_EuVehicleCategoryL },
7055 { 1, &hf_its_euVehicleCategoryM, ASN1_NO_EXTENSIONS , dissect_its_EuVehicleCategoryM },
7056 { 2, &hf_its_euVehicleCategoryN, ASN1_NO_EXTENSIONS , dissect_its_EuVehicleCategoryN },
7057 { 3, &hf_its_euVehicleCategoryO, ASN1_NO_EXTENSIONS , dissect_its_EuVehicleCategoryO },
7058 { 4, &hf_its_euVehicleCategoryT, ASN1_NO_EXTENSIONS , dissect_its_NULL },
7059 { 5, &hf_its_euVehicleCategoryG, ASN1_NO_EXTENSIONS , dissect_its_NULL },
7060 { 0, NULL, 0, NULL }
7063 static int
7064 dissect_its_EuVehicleCategoryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7065 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7066 ett_its_EuVehicleCategoryCode, its_EuVehicleCategoryCode_choice,
7067 NULL);
7069 return offset;
7073 static const per_sequence_t its_EventPoint_sequence[] = {
7074 { &hf_its_eventPosition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DeltaReferencePosition },
7075 { &hf_its_eventDeltaTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_PathDeltaTime },
7076 { &hf_its_informationQuality, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_InformationQuality },
7077 { NULL, 0, 0, NULL }
7080 static int
7081 dissect_its_EventPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7082 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7083 ett_its_EventPoint, its_EventPoint_sequence);
7085 return offset;
7089 static const per_sequence_t its_EventHistory_sequence_of[1] = {
7090 { &hf_its_EventHistory_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_EventPoint },
7093 static int
7094 dissect_its_EventHistory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7095 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7096 ett_its_EventHistory, its_EventHistory_sequence_of,
7097 1, 23, false);
7099 return offset;
7104 static int
7105 dissect_its_EventZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7106 offset = dissect_its_EventHistory(tvb, offset, actx, tree, hf_index);
7108 return offset;
7112 static const per_sequence_t its_LanePositionAndType_sequence[] = {
7113 { &hf_its_transversalPosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_LanePosition },
7114 { &hf_its_laneType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_LaneType },
7115 { &hf_its_direction_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Direction },
7116 { NULL, 0, 0, NULL }
7119 static int
7120 dissect_its_LanePositionAndType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7121 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7122 ett_its_LanePositionAndType, its_LanePositionAndType_sequence);
7124 return offset;
7128 static const per_sequence_t its_LanePositionWithLateralDetails_sequence[] = {
7129 { &hf_its_transversalPosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_LanePosition },
7130 { &hf_its_laneType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_LaneType },
7131 { &hf_its_direction_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Direction },
7132 { &hf_its_distanceToLeftBorder, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StandardLength9b },
7133 { &hf_its_distanceToRightBorder, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StandardLength9b },
7134 { NULL, 0, 0, NULL }
7137 static int
7138 dissect_its_LanePositionWithLateralDetails(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7139 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7140 ett_its_LanePositionWithLateralDetails, its_LanePositionWithLateralDetails_sequence);
7142 return offset;
7146 static const per_sequence_t its_TrafficIslandPosition_sequence[] = {
7147 { &hf_its_oneSide , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_LanePositionAndType },
7148 { &hf_its_otherSide , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_LanePositionAndType },
7149 { NULL, 0, 0, NULL }
7152 static int
7153 dissect_its_TrafficIslandPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7154 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7155 ett_its_TrafficIslandPosition, its_TrafficIslandPosition_sequence);
7157 return offset;
7161 static const value_string its_LanePositionOptions_vals[] = {
7162 { 0, "simplelanePosition" },
7163 { 1, "simpleLaneType" },
7164 { 2, "detailedlanePosition" },
7165 { 3, "lanePositionWithLateralDetails" },
7166 { 4, "trafficIslandPosition" },
7167 { 0, NULL }
7170 static const per_choice_t its_LanePositionOptions_choice[] = {
7171 { 0, &hf_its_simplelanePosition, ASN1_EXTENSION_ROOT , dissect_its_LanePosition },
7172 { 1, &hf_its_simpleLaneType , ASN1_EXTENSION_ROOT , dissect_its_LaneType },
7173 { 2, &hf_its_detailedlanePosition, ASN1_EXTENSION_ROOT , dissect_its_LanePositionAndType },
7174 { 3, &hf_its_lanePositionWithLateralDetails, ASN1_EXTENSION_ROOT , dissect_its_LanePositionWithLateralDetails },
7175 { 4, &hf_its_trafficIslandPosition, ASN1_EXTENSION_ROOT , dissect_its_TrafficIslandPosition },
7176 { 0, NULL, 0, NULL }
7179 static int
7180 dissect_its_LanePositionOptions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7181 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7182 ett_its_LanePositionOptions, its_LanePositionOptions_choice,
7183 NULL);
7185 return offset;
7189 static const per_sequence_t its_RoadSegmentReferenceId_sequence[] = {
7190 { &hf_its_region , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_Identifier2B },
7191 { &hf_its_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Identifier2B },
7192 { NULL, 0, 0, NULL }
7195 static int
7196 dissect_its_RoadSegmentReferenceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7197 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7198 ett_its_RoadSegmentReferenceId, its_RoadSegmentReferenceId_sequence);
7200 return offset;
7204 static const per_sequence_t its_IntersectionReferenceId_sequence[] = {
7205 { &hf_its_region , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_Identifier2B },
7206 { &hf_its_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Identifier2B },
7207 { NULL, 0, 0, NULL }
7210 static int
7211 dissect_its_IntersectionReferenceId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7212 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7213 ett_its_IntersectionReferenceId, its_IntersectionReferenceId_sequence);
7215 return offset;
7219 static const value_string its_MapReference_vals[] = {
7220 { 0, "roadsegment" },
7221 { 1, "intersection" },
7222 { 0, NULL }
7225 static const per_choice_t its_MapReference_choice[] = {
7226 { 0, &hf_its_roadsegment , ASN1_NO_EXTENSIONS , dissect_its_RoadSegmentReferenceId },
7227 { 1, &hf_its_intersection , ASN1_NO_EXTENSIONS , dissect_its_IntersectionReferenceId },
7228 { 0, NULL, 0, NULL }
7231 static int
7232 dissect_its_MapReference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7233 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7234 ett_its_MapReference, its_MapReference_choice,
7235 NULL);
7237 return offset;
7241 static const per_sequence_t its_LongitudinalLanePosition_sequence[] = {
7242 { &hf_its_longitudinalLanePositionValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LongitudinalLanePositionValue },
7243 { &hf_its_longitudinalLanePositionConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LongitudinalLanePositionConfidence },
7244 { NULL, 0, 0, NULL }
7247 static int
7248 dissect_its_LongitudinalLanePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7249 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7250 ett_its_LongitudinalLanePosition, its_LongitudinalLanePosition_sequence);
7252 return offset;
7256 static const per_sequence_t its_MapPosition_sequence[] = {
7257 { &hf_its_mapReference , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_MapReference },
7258 { &hf_its_laneId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Identifier1B },
7259 { &hf_its_connectionId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Identifier1B },
7260 { &hf_its_longitudinalLanePosition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_LongitudinalLanePosition },
7261 { NULL, 0, 0, NULL }
7264 static int
7265 dissect_its_MapPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7266 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7267 ett_its_MapPosition, its_MapPosition_sequence);
7269 return offset;
7273 static const per_sequence_t its_MetaInformation_sequence[] = {
7274 { &hf_its_usedDetectionInformation, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_SensorTypes },
7275 { &hf_its_usedStoredInformation, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StoredInformationType },
7276 { &hf_its_confidenceValue , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ConfidenceLevel },
7277 { NULL, 0, 0, NULL }
7280 static int
7281 dissect_its_MetaInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7282 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7283 ett_its_MetaInformation, its_MetaInformation_sequence);
7285 return offset;
7289 static const per_sequence_t its_GeneralizedLanePosition_sequence[] = {
7290 { &hf_its_lanePositionBased, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_LanePositionOptions },
7291 { &hf_its_mapBased , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_MapPosition },
7292 { &hf_its_confidence_04 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_MetaInformation },
7293 { NULL, 0, 0, NULL }
7296 static int
7297 dissect_its_GeneralizedLanePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7298 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7299 ett_its_GeneralizedLanePosition, its_GeneralizedLanePosition_sequence);
7301 return offset;
7305 static const per_sequence_t its_Heading_sequence[] = {
7306 { &hf_its_headingValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_HeadingValue },
7307 { &hf_its_headingConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_HeadingConfidence },
7308 { NULL, 0, 0, NULL }
7311 static int
7312 dissect_its_Heading(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7313 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7314 ett_its_Heading, its_Heading_sequence);
7316 return offset;
7320 static const per_sequence_t its_HeadingChangeIndication_sequence[] = {
7321 { &hf_its_direction , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TurningDirection },
7322 { &hf_its_actionDeltaTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaTimeTenthOfSecond },
7323 { NULL, 0, 0, NULL }
7326 static int
7327 dissect_its_HeadingChangeIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7328 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7329 ett_its_HeadingChangeIndication, its_HeadingChangeIndication_sequence);
7331 return offset;
7336 static int
7337 dissect_its_INTEGER_1_99999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7338 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7339 1U, 99999U, NULL, false);
7341 return offset;
7346 static int
7347 dissect_its_INTEGER_0_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7348 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7349 0U, 15U, NULL, false);
7351 return offset;
7355 static const per_sequence_t its_InterferenceManagementChannel_sequence[] = {
7356 { &hf_its_centreFrequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_INTEGER_1_99999 },
7357 { &hf_its_channelWidth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_INTEGER_0_9999 },
7358 { &hf_its_exponent , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_INTEGER_0_15 },
7359 { NULL, 0, 0, NULL }
7362 static int
7363 dissect_its_InterferenceManagementChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7364 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7365 ett_its_InterferenceManagementChannel, its_InterferenceManagementChannel_sequence);
7367 return offset;
7371 static const per_sequence_t its_RectangularShape_sequence[] = {
7372 { &hf_its_shapeReferencePoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianPosition3d },
7373 { &hf_its_semiLength , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StandardLength12b },
7374 { &hf_its_semiBreadth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StandardLength12b },
7375 { &hf_its_orientation , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianAngleValue },
7376 { &hf_its_height , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_StandardLength12b },
7377 { NULL, 0, 0, NULL }
7380 static int
7381 dissect_its_RectangularShape(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7382 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7383 ett_its_RectangularShape, its_RectangularShape_sequence);
7385 return offset;
7389 static const per_sequence_t its_SequenceOfCartesianPosition3d_sequence_of[1] = {
7390 { &hf_its_SequenceOfCartesianPosition3d_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianPosition3d },
7393 static int
7394 dissect_its_SequenceOfCartesianPosition3d(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7395 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7396 ett_its_SequenceOfCartesianPosition3d, its_SequenceOfCartesianPosition3d_sequence_of,
7397 1, 16, true);
7399 return offset;
7404 static int
7405 dissect_its_SequenceOfCartesianPosition3d_SIZE_3_16_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7406 offset = dissect_per_size_constrained_type(tvb, offset, actx, tree, hf_index, dissect_its_SequenceOfCartesianPosition3d,
7407 "SequenceOfCartesianPosition3d", 3, 16, true);
7409 return offset;
7413 static const per_sequence_t its_PolygonalShape_sequence[] = {
7414 { &hf_its_shapeReferencePoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianPosition3d },
7415 { &hf_its_polygon , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SequenceOfCartesianPosition3d_SIZE_3_16_ },
7416 { &hf_its_height , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_StandardLength12b },
7417 { NULL, 0, 0, NULL }
7420 static int
7421 dissect_its_PolygonalShape(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7422 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7423 ett_its_PolygonalShape, its_PolygonalShape_sequence);
7425 return offset;
7429 static const per_sequence_t its_RadialShape_sequence[] = {
7430 { &hf_its_shapeReferencePoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianPosition3d },
7431 { &hf_its_range , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StandardLength12b },
7432 { &hf_its_horizontalOpeningAngleStart, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngleValue },
7433 { &hf_its_horizontalOpeningAngleEnd, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngleValue },
7434 { &hf_its_verticalOpeningAngleStart, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianAngleValue },
7435 { &hf_its_verticalOpeningAngleEnd, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianAngleValue },
7436 { NULL, 0, 0, NULL }
7439 static int
7440 dissect_its_RadialShape(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7441 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7442 ett_its_RadialShape, its_RadialShape_sequence);
7444 return offset;
7448 static const per_sequence_t its_RadialShapeDetails_sequence[] = {
7449 { &hf_its_range , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StandardLength12b },
7450 { &hf_its_horizontalOpeningAngleStart, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngleValue },
7451 { &hf_its_horizontalOpeningAngleEnd, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngleValue },
7452 { &hf_its_verticalOpeningAngleStart, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianAngleValue },
7453 { &hf_its_verticalOpeningAngleEnd, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianAngleValue },
7454 { NULL, 0, 0, NULL }
7457 static int
7458 dissect_its_RadialShapeDetails(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7459 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7460 ett_its_RadialShapeDetails, its_RadialShapeDetails_sequence);
7462 return offset;
7466 static const per_sequence_t its_RadialShapesList_sequence_of[1] = {
7467 { &hf_its_RadialShapesList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_RadialShapeDetails },
7470 static int
7471 dissect_its_RadialShapesList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7472 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7473 ett_its_RadialShapesList, its_RadialShapesList_sequence_of,
7474 1, 16, true);
7476 return offset;
7480 static const per_sequence_t its_RadialShapes_sequence[] = {
7481 { &hf_its_refPointId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Identifier1B },
7482 { &hf_its_xCoordinate_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianCoordinateSmall },
7483 { &hf_its_yCoordinate_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianCoordinateSmall },
7484 { &hf_its_zCoordinate_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CartesianCoordinateSmall },
7485 { &hf_its_radialShapesList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_RadialShapesList },
7486 { NULL, 0, 0, NULL }
7489 static int
7490 dissect_its_RadialShapes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7491 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7492 ett_its_RadialShapes, its_RadialShapes_sequence);
7494 return offset;
7498 static const value_string its_Shape_vals[] = {
7499 { 0, "rectangular" },
7500 { 1, "circular" },
7501 { 2, "polygonal" },
7502 { 3, "elliptical" },
7503 { 4, "radial" },
7504 { 5, "radialShapes" },
7505 { 0, NULL }
7508 static const per_choice_t its_Shape_choice[] = {
7509 { 0, &hf_its_rectangular , ASN1_EXTENSION_ROOT , dissect_its_RectangularShape },
7510 { 1, &hf_its_circular , ASN1_EXTENSION_ROOT , dissect_its_CircularShape },
7511 { 2, &hf_its_polygonal , ASN1_EXTENSION_ROOT , dissect_its_PolygonalShape },
7512 { 3, &hf_its_elliptical , ASN1_EXTENSION_ROOT , dissect_its_EllipticalShape },
7513 { 4, &hf_its_radial , ASN1_EXTENSION_ROOT , dissect_its_RadialShape },
7514 { 5, &hf_its_radialShapes , ASN1_EXTENSION_ROOT , dissect_its_RadialShapes },
7515 { 0, NULL, 0, NULL }
7518 static int
7519 dissect_its_Shape(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7520 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7521 ett_its_Shape, its_Shape_choice,
7522 NULL);
7524 return offset;
7528 static const per_sequence_t its_InterferenceManagementZoneDefinition_sequence[] = {
7529 { &hf_its_interferenceManagementZoneLatitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
7530 { &hf_its_interferenceManagementZoneLongitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
7531 { &hf_its_interferenceManagementZoneId, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ProtectedZoneId },
7532 { &hf_its_interferenceManagementZoneShape, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Shape },
7533 { NULL, 0, 0, NULL }
7536 static int
7537 dissect_its_InterferenceManagementZoneDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7538 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7539 ett_its_InterferenceManagementZoneDefinition, its_InterferenceManagementZoneDefinition_sequence);
7541 return offset;
7546 static int
7547 dissect_its_INTEGER_0_10000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7548 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7549 0U, 10000U, NULL, false);
7551 return offset;
7556 static int
7557 dissect_its_INTEGER_0_30(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7558 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7559 0U, 30U, NULL, false);
7561 return offset;
7566 static int
7567 dissect_its_INTEGER_0_1200(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7568 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7569 0U, 1200U, NULL, false);
7571 return offset;
7576 static int
7577 dissect_its_INTEGER_0_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7578 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7579 0U, 20U, NULL, false);
7581 return offset;
7585 static const per_sequence_t its_MitigationPerTechnologyClass_sequence[] = {
7586 { &hf_its_accessTechnologyClass, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_AccessTechnologyClass },
7587 { &hf_its_lowDutyCycle , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_INTEGER_0_10000 },
7588 { &hf_its_powerReduction , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_INTEGER_0_30 },
7589 { &hf_its_dmcToffLimit , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_INTEGER_0_1200 },
7590 { &hf_its_dmcTonLimit , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_INTEGER_0_20 },
7591 { NULL, 0, 0, NULL }
7594 static int
7595 dissect_its_MitigationPerTechnologyClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7596 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7597 ett_its_MitigationPerTechnologyClass, its_MitigationPerTechnologyClass_sequence);
7599 return offset;
7603 static const per_sequence_t its_MitigationForTechnologies_sequence_of[1] = {
7604 { &hf_its_MitigationForTechnologies_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_MitigationPerTechnologyClass },
7607 static int
7608 dissect_its_MitigationForTechnologies(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7609 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7610 ett_its_MitigationForTechnologies, its_MitigationForTechnologies_sequence_of,
7611 1, 8, false);
7613 return offset;
7617 static const per_sequence_t its_InterferenceManagementInfoPerChannel_sequence[] = {
7618 { &hf_its_interferenceManagementChannel, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_InterferenceManagementChannel },
7619 { &hf_its_interferenceManagementZoneType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_InterferenceManagementZoneType },
7620 { &hf_its_interferenceManagementMitigationType, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_MitigationForTechnologies },
7621 { &hf_its_expiryTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_TimestampIts },
7622 { NULL, 0, 0, NULL }
7625 static int
7626 dissect_its_InterferenceManagementInfoPerChannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7627 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7628 ett_its_InterferenceManagementInfoPerChannel, its_InterferenceManagementInfoPerChannel_sequence);
7630 return offset;
7634 static const per_sequence_t its_InterferenceManagementInfo_sequence_of[1] = {
7635 { &hf_its_InterferenceManagementInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_InterferenceManagementInfoPerChannel },
7638 static int
7639 dissect_its_InterferenceManagementInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7640 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7641 ett_its_InterferenceManagementInfo, its_InterferenceManagementInfo_sequence_of,
7642 1, 16, true);
7644 return offset;
7648 static const per_sequence_t its_InterferenceManagementZone_sequence[] = {
7649 { &hf_its_zoneDefinition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_InterferenceManagementZoneDefinition },
7650 { &hf_its_managementInfo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_InterferenceManagementInfo },
7651 { NULL, 0, 0, NULL }
7654 static int
7655 dissect_its_InterferenceManagementZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7656 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7657 ett_its_InterferenceManagementZone, its_InterferenceManagementZone_sequence);
7659 return offset;
7663 static const per_sequence_t its_InterferenceManagementZones_sequence_of[1] = {
7664 { &hf_its_InterferenceManagementZones_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_InterferenceManagementZone },
7667 static int
7668 dissect_its_InterferenceManagementZones(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7669 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7670 ett_its_InterferenceManagementZones, its_InterferenceManagementZones_sequence_of,
7671 1, 16, true);
7673 return offset;
7677 static const per_sequence_t its_ItineraryPath_sequence_of[1] = {
7678 { &hf_its_ItineraryPath_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ReferencePosition },
7681 static int
7682 dissect_its_ItineraryPath(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7683 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7684 ett_its_ItineraryPath, its_ItineraryPath_sequence_of,
7685 1, 40, false);
7687 return offset;
7692 static int
7693 dissect_its_ProtocolVersion(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7694 uint32_t version;
7695 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7696 0U, 255U, &version, false);
7698 its_header_t *its_hdr = its_get_private_data(actx->pinfo);
7699 its_hdr->version = version;
7702 return offset;
7706 static const per_sequence_t its_ItsPduHeader_sequence[] = {
7707 { &hf_its_protocolVersion , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ProtocolVersion },
7708 { &hf_its_messageId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_MessageId },
7709 { &hf_its_stationId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StationId },
7710 { NULL, 0, 0, NULL }
7713 static int
7714 dissect_its_ItsPduHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7715 uint8_t version = tvb_get_uint8(tvb, 0);
7716 int test_offset = offset;
7717 if ((test_offset = dissector_try_uint(its_version_subdissector_table, version, tvb, actx->pinfo, tree))) {
7718 return test_offset;
7720 // Lets try it that way, regarless of version value...
7721 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7722 ett_its_ItsPduHeader, its_ItsPduHeader_sequence);
7724 tap_queue_packet(its_tap, actx->pinfo, actx->private_data);
7725 tvbuff_t *next_tvb = tvb_new_subset_length(tvb, offset >> 3, -1);
7726 its_header_t *its_hdr = its_get_private_data(actx->pinfo);
7727 int data_offset = dissector_try_uint(its_msgid_subdissector_table, (its_hdr->version << 16)+its_hdr->msgId, next_tvb, actx->pinfo, tree);
7728 if (!data_offset) {
7729 proto_tree_add_expert(tree, actx->pinfo, &ei_its_no_sub_dis, next_tvb, 0, - 1);
7730 data_offset = call_data_dissector(next_tvb, actx->pinfo, tree);
7732 offset += data_offset;
7734 return offset;
7738 static const per_sequence_t its_LateralAcceleration_sequence[] = {
7739 { &hf_its_lateralAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LateralAccelerationValue },
7740 { &hf_its_lateralAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationConfidence },
7741 { NULL, 0, 0, NULL }
7744 static int
7745 dissect_its_LateralAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7746 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7747 ett_its_LateralAcceleration, its_LateralAcceleration_sequence);
7749 return offset;
7753 static const per_sequence_t its_LongitudinalAcceleration_sequence[] = {
7754 { &hf_its_longitudinalAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LongitudinalAccelerationValue },
7755 { &hf_its_longitudinalAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationConfidence },
7756 { NULL, 0, 0, NULL }
7759 static int
7760 dissect_its_LongitudinalAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7761 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7762 ett_its_LongitudinalAcceleration, its_LongitudinalAcceleration_sequence);
7764 return offset;
7768 static const per_sequence_t its_LowerTriangularPositiveSemidefiniteMatrixColumns_sequence_of[1] = {
7769 { &hf_its_LowerTriangularPositiveSemidefiniteMatrixColumns_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CorrelationColumn },
7772 static int
7773 dissect_its_LowerTriangularPositiveSemidefiniteMatrixColumns(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7774 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7775 ett_its_LowerTriangularPositiveSemidefiniteMatrixColumns, its_LowerTriangularPositiveSemidefiniteMatrixColumns_sequence_of,
7776 1, 13, true);
7778 return offset;
7782 static const per_sequence_t its_LowerTriangularPositiveSemidefiniteMatrix_sequence[] = {
7783 { &hf_its_componentsIncludedIntheMatrix, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_MatrixIncludedComponents },
7784 { &hf_its_matrix , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LowerTriangularPositiveSemidefiniteMatrixColumns },
7785 { NULL, 0, 0, NULL }
7788 static int
7789 dissect_its_LowerTriangularPositiveSemidefiniteMatrix(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7790 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7791 ett_its_LowerTriangularPositiveSemidefiniteMatrix, its_LowerTriangularPositiveSemidefiniteMatrix_sequence);
7793 return offset;
7797 static const per_sequence_t its_LowerTriangularPositiveSemidefiniteMatrices_sequence_of[1] = {
7798 { &hf_its_LowerTriangularPositiveSemidefiniteMatrices_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LowerTriangularPositiveSemidefiniteMatrix },
7801 static int
7802 dissect_its_LowerTriangularPositiveSemidefiniteMatrices(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7803 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7804 ett_its_LowerTriangularPositiveSemidefiniteMatrices, its_LowerTriangularPositiveSemidefiniteMatrices_sequence_of,
7805 1, 4, false);
7807 return offset;
7812 static int
7813 dissect_its_INTEGER_1_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7814 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7815 1U, 100U, NULL, false);
7817 return offset;
7822 static int
7823 dissect_its_INTEGER_M5_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7824 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7825 -5, 2U, NULL, false);
7827 return offset;
7831 static const per_sequence_t its_MessageRateHz_sequence[] = {
7832 { &hf_its_mantissa , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_INTEGER_1_100 },
7833 { &hf_its_exponent_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_INTEGER_M5_2 },
7834 { NULL, 0, 0, NULL }
7837 static int
7838 dissect_its_MessageRateHz(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7839 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7840 ett_its_MessageRateHz, its_MessageRateHz_sequence);
7842 return offset;
7846 static const per_sequence_t its_MessageSegmentationInfo_sequence[] = {
7847 { &hf_its_totalMsgNo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CardinalNumber3b },
7848 { &hf_its_thisMsgNo , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_OrdinalNumber3b },
7849 { NULL, 0, 0, NULL }
7852 static int
7853 dissect_its_MessageSegmentationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7854 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7855 ett_its_MessageSegmentationInfo, its_MessageSegmentationInfo_sequence);
7857 return offset;
7862 static int
7863 dissect_its_TrafficParticipantType_CONSTR001(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7864 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
7865 0U, 14U, NULL, false);
7867 return offset;
7871 static const value_string its_VruProfileAndSubprofile_vals[] = {
7872 { 0, "pedestrian" },
7873 { 1, "bicyclistAndLightVruVehicle" },
7874 { 2, "motorcyclist" },
7875 { 3, "animal" },
7876 { 0, NULL }
7879 static const per_choice_t its_VruProfileAndSubprofile_choice[] = {
7880 { 0, &hf_its_pedestrian , ASN1_EXTENSION_ROOT , dissect_its_VruSubProfilePedestrian },
7881 { 1, &hf_its_bicyclistAndLightVruVehicle, ASN1_EXTENSION_ROOT , dissect_its_VruSubProfileBicyclist },
7882 { 2, &hf_its_motorcyclist , ASN1_EXTENSION_ROOT , dissect_its_VruSubProfileMotorcyclist },
7883 { 3, &hf_its_animal , ASN1_EXTENSION_ROOT , dissect_its_VruSubProfileAnimal },
7884 { 0, NULL, 0, NULL }
7887 static int
7888 dissect_its_VruProfileAndSubprofile(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7889 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7890 ett_its_VruProfileAndSubprofile, its_VruProfileAndSubprofile_choice,
7891 NULL);
7893 return offset;
7897 static const per_sequence_t its_VruClusterInformation_sequence[] = {
7898 { &hf_its_clusterId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Identifier1B },
7899 { &hf_its_clusterBoundingBoxShape, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Shape },
7900 { &hf_its_clusterCardinalitySize, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_CardinalNumber1B },
7901 { &hf_its_clusterProfiles , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VruClusterProfiles },
7902 { NULL, 0, 0, NULL }
7905 static int
7906 dissect_its_VruClusterInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7907 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7908 ett_its_VruClusterInformation, its_VruClusterInformation_sequence);
7910 return offset;
7914 static const value_string its_ObjectClass_vals[] = {
7915 { 0, "vehicleSubClass" },
7916 { 1, "vruSubClass" },
7917 { 2, "groupSubClass" },
7918 { 3, "otherSubClass" },
7919 { 0, NULL }
7922 static const per_choice_t its_ObjectClass_choice[] = {
7923 { 0, &hf_its_vehicleSubClass , ASN1_EXTENSION_ROOT , dissect_its_TrafficParticipantType_CONSTR001 },
7924 { 1, &hf_its_vruSubClass , ASN1_EXTENSION_ROOT , dissect_its_VruProfileAndSubprofile },
7925 { 2, &hf_its_groupSubClass , ASN1_EXTENSION_ROOT , dissect_its_VruClusterInformation },
7926 { 3, &hf_its_otherSubClass , ASN1_EXTENSION_ROOT , dissect_its_OtherSubClass },
7927 { 0, NULL, 0, NULL }
7930 static int
7931 dissect_its_ObjectClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7932 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
7933 ett_its_ObjectClass, its_ObjectClass_choice,
7934 NULL);
7936 return offset;
7940 static const per_sequence_t its_ObjectClassWithConfidence_sequence[] = {
7941 { &hf_its_objectClass , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ObjectClass },
7942 { &hf_its_confidence_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ConfidenceLevel },
7943 { NULL, 0, 0, NULL }
7946 static int
7947 dissect_its_ObjectClassWithConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7948 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7949 ett_its_ObjectClassWithConfidence, its_ObjectClassWithConfidence_sequence);
7951 return offset;
7955 static const per_sequence_t its_ObjectClassDescription_sequence_of[1] = {
7956 { &hf_its_ObjectClassDescription_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ObjectClassWithConfidence },
7959 static int
7960 dissect_its_ObjectClassDescription(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7961 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
7962 ett_its_ObjectClassDescription, its_ObjectClassDescription_sequence_of,
7963 1, 8, false);
7965 return offset;
7969 static const per_sequence_t its_ObjectDimension_sequence[] = {
7970 { &hf_its_value_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ObjectDimensionValue },
7971 { &hf_its_confidence_06 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ObjectDimensionConfidence },
7972 { NULL, 0, 0, NULL }
7975 static int
7976 dissect_its_ObjectDimension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7977 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7978 ett_its_ObjectDimension, its_ObjectDimension_sequence);
7980 return offset;
7984 static const per_sequence_t its_PathPoint_sequence[] = {
7985 { &hf_its_pathPosition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DeltaReferencePosition },
7986 { &hf_its_pathDeltaTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_PathDeltaTime },
7987 { NULL, 0, 0, NULL }
7990 static int
7991 dissect_its_PathPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7992 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
7993 ett_its_PathPoint, its_PathPoint_sequence);
7995 return offset;
7999 static const per_sequence_t its_Path_sequence_of[1] = {
8000 { &hf_its_Path_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PathPoint },
8003 static int
8004 dissect_its_Path(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8005 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8006 ett_its_Path, its_Path_sequence_of,
8007 0, 40, false);
8009 return offset;
8013 static const value_string its_PathDeltaTimeChoice_vals[] = {
8014 { 0, "deltaTimeHighPrecision" },
8015 { 1, "deltaTimeBigRange" },
8016 { 0, NULL }
8019 static const per_choice_t its_PathDeltaTimeChoice_choice[] = {
8020 { 0, &hf_its_deltaTimeHighPrecision, ASN1_EXTENSION_ROOT , dissect_its_DeltaTimeTenthOfSecond },
8021 { 1, &hf_its_deltaTimeBigRange, ASN1_EXTENSION_ROOT , dissect_its_DeltaTimeTenSeconds },
8022 { 0, NULL, 0, NULL }
8025 static int
8026 dissect_its_PathDeltaTimeChoice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8027 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8028 ett_its_PathDeltaTimeChoice, its_PathDeltaTimeChoice_choice,
8029 NULL);
8031 return offset;
8035 static const per_sequence_t its_PathHistory_sequence_of[1] = {
8036 { &hf_its_PathHistory_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PathPoint },
8039 static int
8040 dissect_its_PathHistory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8041 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8042 ett_its_PathHistory, its_PathHistory_sequence_of,
8043 0, 40, false);
8045 return offset;
8049 static const per_sequence_t its_PathPointPredicted_sequence[] = {
8050 { &hf_its_deltaLatitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaLatitude },
8051 { &hf_its_deltaLongitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaLongitude },
8052 { &hf_its_horizontalPositionConfidence, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_PosConfidenceEllipse },
8053 { &hf_its_deltaAltitude , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DeltaAltitude },
8054 { &hf_its_altitudeConfidence, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_AltitudeConfidence },
8055 { &hf_its_pathDeltaTime_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_PathDeltaTimeChoice },
8056 { &hf_its_symmetricAreaOffset, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_StandardLength9b },
8057 { &hf_its_asymmetricAreaOffset, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_StandardLength9b },
8058 { NULL, 0, 0, NULL }
8061 static int
8062 dissect_its_PathPointPredicted(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8063 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8064 ett_its_PathPointPredicted, its_PathPointPredicted_sequence);
8066 return offset;
8070 static const per_sequence_t its_PathPredicted_sequence_of[1] = {
8071 { &hf_its_PathPredicted_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PathPointPredicted },
8074 static int
8075 dissect_its_PathPredicted(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8076 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8077 ett_its_PathPredicted, its_PathPredicted_sequence_of,
8078 1, 16, true);
8080 return offset;
8084 static const per_sequence_t its_Speed_sequence[] = {
8085 { &hf_its_speedValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SpeedValue },
8086 { &hf_its_speedConfidence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SpeedConfidence },
8087 { NULL, 0, 0, NULL }
8090 static int
8091 dissect_its_Speed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8092 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8093 ett_its_Speed, its_Speed_sequence);
8095 return offset;
8099 static const per_sequence_t its_VelocityComponent_sequence[] = {
8100 { &hf_its_value_05 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VelocityComponentValue },
8101 { &hf_its_confidence_07 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SpeedConfidence },
8102 { NULL, 0, 0, NULL }
8105 static int
8106 dissect_its_VelocityComponent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8107 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8108 ett_its_VelocityComponent, its_VelocityComponent_sequence);
8110 return offset;
8114 static const per_sequence_t its_VelocityPolarWithZ_sequence[] = {
8115 { &hf_its_velocityMagnitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Speed },
8116 { &hf_its_velocityDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngle },
8117 { &hf_its_zVelocity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_VelocityComponent },
8118 { NULL, 0, 0, NULL }
8121 static int
8122 dissect_its_VelocityPolarWithZ(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8123 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8124 ett_its_VelocityPolarWithZ, its_VelocityPolarWithZ_sequence);
8126 return offset;
8130 static const per_sequence_t its_VelocityCartesian_sequence[] = {
8131 { &hf_its_xVelocity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VelocityComponent },
8132 { &hf_its_yVelocity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VelocityComponent },
8133 { &hf_its_zVelocity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_VelocityComponent },
8134 { NULL, 0, 0, NULL }
8137 static int
8138 dissect_its_VelocityCartesian(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8139 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8140 ett_its_VelocityCartesian, its_VelocityCartesian_sequence);
8142 return offset;
8146 static const value_string its_Velocity3dWithConfidence_vals[] = {
8147 { 0, "polarVelocity" },
8148 { 1, "cartesianVelocity" },
8149 { 0, NULL }
8152 static const per_choice_t its_Velocity3dWithConfidence_choice[] = {
8153 { 0, &hf_its_polarVelocity , ASN1_NO_EXTENSIONS , dissect_its_VelocityPolarWithZ },
8154 { 1, &hf_its_cartesianVelocity, ASN1_NO_EXTENSIONS , dissect_its_VelocityCartesian },
8155 { 0, NULL, 0, NULL }
8158 static int
8159 dissect_its_Velocity3dWithConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8160 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8161 ett_its_Velocity3dWithConfidence, its_Velocity3dWithConfidence_choice,
8162 NULL);
8164 return offset;
8169 static int
8170 dissect_its_DeltaTimeMilliSecondSigned_0_2047(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8171 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8172 0U, 2047U, NULL, false);
8174 return offset;
8178 static const per_sequence_t its_SequenceOfIdentifier1B_sequence_of[1] = {
8179 { &hf_its_SequenceOfIdentifier1B_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Identifier1B },
8182 static int
8183 dissect_its_SequenceOfIdentifier1B(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8184 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8185 ett_its_SequenceOfIdentifier1B, its_SequenceOfIdentifier1B_sequence_of,
8186 1, 128, true);
8188 return offset;
8192 static const per_sequence_t its_PerceivedObject_sequence[] = {
8193 { &hf_its_objectId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Identifier2B },
8194 { &hf_its_measurementDeltaTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaTimeMilliSecondSigned },
8195 { &hf_its_position , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_CartesianPosition3dWithConfidence },
8196 { &hf_its_velocity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Velocity3dWithConfidence },
8197 { &hf_its_acceleration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Acceleration3dWithConfidence },
8198 { &hf_its_angles , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_EulerAnglesWithConfidence },
8199 { &hf_its_zAngularVelocity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_CartesianAngularVelocityComponent },
8200 { &hf_its_lowerTriangularCorrelationMatrices, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_LowerTriangularPositiveSemidefiniteMatrices },
8201 { &hf_its_objectDimensionZ, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ObjectDimension },
8202 { &hf_its_objectDimensionY, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ObjectDimension },
8203 { &hf_its_objectDimensionX, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ObjectDimension },
8204 { &hf_its_objectAge , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DeltaTimeMilliSecondSigned_0_2047 },
8205 { &hf_its_objectPerceptionQuality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ObjectPerceptionQuality },
8206 { &hf_its_sensorIdList , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SequenceOfIdentifier1B },
8207 { &hf_its_classification , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ObjectClassDescription },
8208 { &hf_its_mapPosition , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_MapPosition },
8209 { NULL, 0, 0, NULL }
8212 static int
8213 dissect_its_PerceivedObject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8214 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8215 ett_its_PerceivedObject, its_PerceivedObject_sequence);
8217 return offset;
8221 static const per_sequence_t its_PositionOfPillars_sequence_of[1] = {
8222 { &hf_its_PositionOfPillars_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PosPillar },
8225 static int
8226 dissect_its_PositionOfPillars(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8227 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8228 ett_its_PositionOfPillars, its_PositionOfPillars_sequence_of,
8229 1, 3, true);
8231 return offset;
8235 static const per_sequence_t its_ProtectedCommunicationZone_sequence[] = {
8236 { &hf_its_protectedZoneType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ProtectedZoneType },
8237 { &hf_its_expiryTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_TimestampIts },
8238 { &hf_its_protectedZoneLatitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
8239 { &hf_its_protectedZoneLongitude, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
8240 { &hf_its_protectedZoneRadius, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ProtectedZoneRadius },
8241 { &hf_its_protectedZoneId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ProtectedZoneId },
8242 { NULL, 0, 0, NULL }
8245 static int
8246 dissect_its_ProtectedCommunicationZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8247 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8248 ett_its_ProtectedCommunicationZone, its_ProtectedCommunicationZone_sequence);
8250 return offset;
8254 static const per_sequence_t its_ProtectedCommunicationZonesRSU_sequence_of[1] = {
8255 { &hf_its_ProtectedCommunicationZonesRSU_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ProtectedCommunicationZone },
8258 static int
8259 dissect_its_ProtectedCommunicationZonesRSU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8260 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8261 ett_its_ProtectedCommunicationZonesRSU, its_ProtectedCommunicationZonesRSU_sequence_of,
8262 1, 16, false);
8264 return offset;
8268 static const per_sequence_t its_PtActivation_sequence[] = {
8269 { &hf_its_ptActivationType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PtActivationType },
8270 { &hf_its_ptActivationData, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PtActivationData },
8271 { NULL, 0, 0, NULL }
8274 static int
8275 dissect_its_PtActivation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8276 void *priv_data = actx->private_data;
8277 its_pt_activation_data_t *pta;
8279 pta = wmem_new0(actx->pinfo->pool, its_pt_activation_data_t);
8280 actx->private_data = pta;
8281 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8282 ett_its_PtActivation, its_PtActivation_sequence);
8284 dissector_try_uint_with_data(cam_pt_activation_table, pta->type, pta->data, actx->pinfo, tree, true, NULL);
8285 actx->private_data = priv_data;
8286 return offset;
8290 static const per_sequence_t its_RestrictedTypes_sequence_of[1] = {
8291 { &hf_its_RestrictedTypes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_StationType },
8294 static int
8295 dissect_its_RestrictedTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8296 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8297 ett_its_RestrictedTypes, its_RestrictedTypes_sequence_of,
8298 1, 3, true);
8300 return offset;
8304 static const per_sequence_t its_SafeDistanceIndication_sequence[] = {
8305 { &hf_its_subjectStation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_StationId },
8306 { &hf_its_safeDistanceIndicator, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_SafeDistanceIndicator },
8307 { &hf_its_timeToCollision , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DeltaTimeTenthOfSecond },
8308 { NULL, 0, 0, NULL }
8311 static int
8312 dissect_its_SafeDistanceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8313 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8314 ett_its_SafeDistanceIndication, its_SafeDistanceIndication_sequence);
8316 return offset;
8320 static const per_sequence_t its_SequenceOfSafeDistanceIndication_sequence_of[1] = {
8321 { &hf_its_SequenceOfSafeDistanceIndication_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SafeDistanceIndication },
8324 static int
8325 dissect_its_SequenceOfSafeDistanceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8326 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8327 ett_its_SequenceOfSafeDistanceIndication, its_SequenceOfSafeDistanceIndication_sequence_of,
8328 1, 8, true);
8330 return offset;
8334 static const per_sequence_t its_TrajectoryInterceptionIndication_sequence[] = {
8335 { &hf_its_subjectStation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_StationId },
8336 { &hf_its_trajectoryInterceptionProbability, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TrajectoryInterceptionProbability },
8337 { &hf_its_trajectoryInterceptionConfidence, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_TrajectoryInterceptionConfidence },
8338 { NULL, 0, 0, NULL }
8341 static int
8342 dissect_its_TrajectoryInterceptionIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8343 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8344 ett_its_TrajectoryInterceptionIndication, its_TrajectoryInterceptionIndication_sequence);
8346 return offset;
8350 static const per_sequence_t its_SequenceOfTrajectoryInterceptionIndication_sequence_of[1] = {
8351 { &hf_its_SequenceOfTrajectoryInterceptionIndication_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_TrajectoryInterceptionIndication },
8354 static int
8355 dissect_its_SequenceOfTrajectoryInterceptionIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8356 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8357 ett_its_SequenceOfTrajectoryInterceptionIndication, its_SequenceOfTrajectoryInterceptionIndication_sequence_of,
8358 1, 8, true);
8360 return offset;
8364 static const per_sequence_t its_StabilityChangeIndication_sequence[] = {
8365 { &hf_its_lossProbability , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StabilityLossProbability },
8366 { &hf_its_actionDeltaTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaTimeTenthOfSecond },
8367 { NULL, 0, 0, NULL }
8370 static int
8371 dissect_its_StabilityChangeIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8372 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8373 ett_its_StabilityChangeIndication, its_StabilityChangeIndication_sequence);
8375 return offset;
8379 static const per_sequence_t its_SteeringWheelAngle_sequence[] = {
8380 { &hf_its_steeringWheelAngleValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SteeringWheelAngleValue },
8381 { &hf_its_steeringWheelAngleConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SteeringWheelAngleConfidence },
8382 { NULL, 0, 0, NULL }
8385 static int
8386 dissect_its_SteeringWheelAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8387 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8388 ett_its_SteeringWheelAngle, its_SteeringWheelAngle_sequence);
8390 return offset;
8394 static const per_sequence_t its_Traces_sequence_of[1] = {
8395 { &hf_its_Traces_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Path },
8398 static int
8399 dissect_its_Traces(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8400 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
8401 ett_its_Traces, its_Traces_sequence_of,
8402 1, 7, false);
8404 return offset;
8408 static const per_sequence_t its_TrailerData_sequence[] = {
8409 { &hf_its_refPointId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Identifier1B },
8410 { &hf_its_hitchPointOffset, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StandardLength1B },
8411 { &hf_its_frontOverhang , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_StandardLength1B },
8412 { &hf_its_rearOverhang , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_StandardLength1B },
8413 { &hf_its_trailerWidth , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VehicleWidth },
8414 { &hf_its_hitchAngle , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_CartesianAngle },
8415 { NULL, 0, 0, NULL }
8418 static int
8419 dissect_its_TrailerData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8420 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8421 ett_its_TrailerData, its_TrailerData_sequence);
8423 return offset;
8428 static int
8429 dissect_its_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8430 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8431 0U, 127U, NULL, false);
8433 return offset;
8438 static int
8439 dissect_its_INTEGER_128_16511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8440 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8441 128U, 16511U, NULL, false);
8443 return offset;
8448 static int
8449 dissect_its_INTEGER_16512_2113663(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8450 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8451 16512U, 2113663U, NULL, false);
8453 return offset;
8458 static int
8459 dissect_its_Ext3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8460 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8461 2113664U, 270549119U, NULL, true);
8463 return offset;
8467 static const value_string its_Ext2_vals[] = {
8468 { 0, "content" },
8469 { 1, "extension" },
8470 { 0, NULL }
8473 static const per_choice_t its_Ext2_choice[] = {
8474 { 0, &hf_its_e2Content , ASN1_NO_EXTENSIONS , dissect_its_INTEGER_16512_2113663 },
8475 { 1, &hf_its_e1Extension , ASN1_NO_EXTENSIONS , dissect_its_Ext3 },
8476 { 0, NULL, 0, NULL }
8479 static int
8480 dissect_its_Ext2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8481 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8482 ett_its_Ext2, its_Ext2_choice,
8483 NULL);
8485 return offset;
8489 static const value_string its_Ext1_vals[] = {
8490 { 0, "content" },
8491 { 1, "extension" },
8492 { 0, NULL }
8495 static const per_choice_t its_Ext1_choice[] = {
8496 { 0, &hf_its_e1Content , ASN1_NO_EXTENSIONS , dissect_its_INTEGER_128_16511 },
8497 { 1, &hf_its_e2Extension , ASN1_NO_EXTENSIONS , dissect_its_Ext2 },
8498 { 0, NULL, 0, NULL }
8501 static int
8502 dissect_its_Ext1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8503 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8504 ett_its_Ext1, its_Ext1_choice,
8505 NULL);
8507 return offset;
8511 static const value_string its_VarLengthNumber_vals[] = {
8512 { 0, "content" },
8513 { 1, "extension" },
8514 { 0, NULL }
8517 static const per_choice_t its_VarLengthNumber_choice[] = {
8518 { 0, &hf_its_vlnContent , ASN1_NO_EXTENSIONS , dissect_its_INTEGER_0_127 },
8519 { 1, &hf_its_vlnExtension , ASN1_NO_EXTENSIONS , dissect_its_Ext1 },
8520 { 0, NULL, 0, NULL }
8523 static int
8524 dissect_its_VarLengthNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8525 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
8526 ett_its_VarLengthNumber, its_VarLengthNumber_choice,
8527 NULL);
8529 return offset;
8533 static const per_sequence_t its_VerticalAcceleration_sequence[] = {
8534 { &hf_its_verticalAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VerticalAccelerationValue },
8535 { &hf_its_verticalAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationConfidence },
8536 { NULL, 0, 0, NULL }
8539 static int
8540 dissect_its_VerticalAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8541 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8542 ett_its_VerticalAcceleration, its_VerticalAcceleration_sequence);
8544 return offset;
8548 static const per_sequence_t its_VehicleIdentification_sequence[] = {
8549 { &hf_its_wMInumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_WMInumber },
8550 { &hf_its_vDS , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VDS },
8551 { NULL, 0, 0, NULL }
8554 static int
8555 dissect_its_VehicleIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8556 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8557 ett_its_VehicleIdentification, its_VehicleIdentification_sequence);
8559 return offset;
8563 static const per_sequence_t its_VehicleLength_sequence[] = {
8564 { &hf_its_vehicleLengthValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VehicleLengthValue },
8565 { &hf_its_vehicleLengthConfidenceIndication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VehicleLengthConfidenceIndication },
8566 { NULL, 0, 0, NULL }
8569 static int
8570 dissect_its_VehicleLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8571 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8572 ett_its_VehicleLength, its_VehicleLength_sequence);
8574 return offset;
8578 static const per_sequence_t its_VruExteriorLights_sequence[] = {
8579 { &hf_its_vehicular , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ExteriorLights },
8580 { &hf_its_vruSpecific , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_VruSpecificExteriorLights },
8581 { NULL, 0, 0, NULL }
8584 static int
8585 dissect_its_VruExteriorLights(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8586 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8587 ett_its_VruExteriorLights, its_VruExteriorLights_sequence);
8589 return offset;
8593 static const per_sequence_t its_Wgs84Angle_sequence[] = {
8594 { &hf_its_value_06 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Wgs84AngleValue },
8595 { &hf_its_confidence_08 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Wgs84AngleConfidence },
8596 { NULL, 0, 0, NULL }
8599 static int
8600 dissect_its_Wgs84Angle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8601 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8602 ett_its_Wgs84Angle, its_Wgs84Angle_sequence);
8604 return offset;
8608 static const per_sequence_t its_YawRate_sequence[] = {
8609 { &hf_its_yawRateValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_YawRateValue },
8610 { &hf_its_yawRateConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_YawRateConfidence },
8611 { NULL, 0, 0, NULL }
8614 static int
8615 dissect_its_YawRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8616 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8617 ett_its_YawRate, its_YawRate_sequence);
8619 return offset;
8622 /*--- PDUs ---*/
8624 static int dissect_its_ItsPduHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8625 int offset = 0;
8626 asn1_ctx_t asn1_ctx;
8627 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
8628 offset = dissect_its_ItsPduHeader(tvb, offset, &asn1_ctx, tree, hf_its_its_ItsPduHeader_PDU);
8629 offset += 7; offset >>= 3;
8630 return offset;
8634 /* --- Module ITS-ContainerV1 --- --- --- */
8638 static int
8639 dissect_itsv1_StationID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8640 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8641 0U, 4294967295U, NULL, false);
8643 return offset;
8648 static int
8649 dissect_itsv1_Latitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8650 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8651 -900000000, 900000001U, NULL, false);
8653 return offset;
8658 static int
8659 dissect_itsv1_Longitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8660 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8661 -1800000000, 1800000001U, NULL, false);
8663 return offset;
8668 static int
8669 dissect_itsv1_SemiAxisLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8670 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8671 0U, 4095U, NULL, false);
8673 return offset;
8678 static int
8679 dissect_itsv1_HeadingValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8680 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8681 0U, 3601U, NULL, false);
8683 return offset;
8687 static const per_sequence_t itsv1_PosConfidenceEllipse_sequence[] = {
8688 { &hf_itsv1_semiMajorConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SemiAxisLength },
8689 { &hf_itsv1_semiMinorConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SemiAxisLength },
8690 { &hf_itsv1_semiMajorOrientation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeadingValue },
8691 { NULL, 0, 0, NULL }
8694 static int
8695 dissect_itsv1_PosConfidenceEllipse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8696 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8697 ett_itsv1_PosConfidenceEllipse, itsv1_PosConfidenceEllipse_sequence);
8699 return offset;
8704 static int
8705 dissect_itsv1_AltitudeValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8706 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8707 -100000, 800001U, NULL, false);
8709 return offset;
8713 static const value_string itsv1_AltitudeConfidence_vals[] = {
8714 { 0, "alt-000-01" },
8715 { 1, "alt-000-02" },
8716 { 2, "alt-000-05" },
8717 { 3, "alt-000-10" },
8718 { 4, "alt-000-20" },
8719 { 5, "alt-000-50" },
8720 { 6, "alt-001-00" },
8721 { 7, "alt-002-00" },
8722 { 8, "alt-005-00" },
8723 { 9, "alt-010-00" },
8724 { 10, "alt-020-00" },
8725 { 11, "alt-050-00" },
8726 { 12, "alt-100-00" },
8727 { 13, "alt-200-00" },
8728 { 14, "outOfRange" },
8729 { 15, "unavailable" },
8730 { 0, NULL }
8734 static int
8735 dissect_itsv1_AltitudeConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8736 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
8737 16, NULL, false, 0, NULL);
8739 return offset;
8743 static const per_sequence_t itsv1_Altitude_sequence[] = {
8744 { &hf_itsv1_altitudeValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AltitudeValue },
8745 { &hf_itsv1_altitudeConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AltitudeConfidence },
8746 { NULL, 0, 0, NULL }
8749 static int
8750 dissect_itsv1_Altitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8751 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8752 ett_itsv1_Altitude, itsv1_Altitude_sequence);
8754 return offset;
8758 static const per_sequence_t itsv1_ReferencePosition_sequence[] = {
8759 { &hf_itsv1_latitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Latitude },
8760 { &hf_itsv1_longitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Longitude },
8761 { &hf_itsv1_positionConfidenceEllipse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosConfidenceEllipse },
8762 { &hf_itsv1_altitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Altitude },
8763 { NULL, 0, 0, NULL }
8766 static int
8767 dissect_itsv1_ReferencePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8768 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8769 ett_itsv1_ReferencePosition, itsv1_ReferencePosition_sequence);
8771 return offset;
8776 static int
8777 dissect_itsv1_DeltaLatitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8778 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8779 -131071, 131072U, NULL, false);
8781 return offset;
8786 static int
8787 dissect_itsv1_DeltaLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8788 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8789 -131071, 131072U, NULL, false);
8791 return offset;
8796 static int
8797 dissect_itsv1_DeltaAltitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8798 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8799 -12700, 12800U, NULL, false);
8801 return offset;
8805 static const per_sequence_t itsv1_DeltaReferencePosition_sequence[] = {
8806 { &hf_itsv1_deltaLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaLatitude },
8807 { &hf_itsv1_deltaLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaLongitude },
8808 { &hf_itsv1_deltaAltitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaAltitude },
8809 { NULL, 0, 0, NULL }
8812 static int
8813 dissect_itsv1_DeltaReferencePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8814 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8815 ett_itsv1_DeltaReferencePosition, itsv1_DeltaReferencePosition_sequence);
8817 return offset;
8822 static int
8823 dissect_itsv1_PathDeltaTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8824 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8825 1U, 65535U, NULL, true);
8827 return offset;
8831 static const per_sequence_t itsv1_PathPoint_sequence[] = {
8832 { &hf_itsv1_pathPosition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaReferencePosition },
8833 { &hf_itsv1_pathDeltaTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_PathDeltaTime },
8834 { NULL, 0, 0, NULL }
8837 static int
8838 dissect_itsv1_PathPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8839 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8840 ett_itsv1_PathPoint, itsv1_PathPoint_sequence);
8842 return offset;
8846 static const value_string itsv1_PtActivationType_vals[] = {
8847 { 0, "undefinedCodingType" },
8848 { 1, "r09-16CodingType" },
8849 { 2, "vdv-50149CodingType" },
8850 { 0, NULL }
8854 static int
8855 dissect_itsv1_PtActivationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8856 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8857 0U, 255U, &((its_pt_activation_data_t*)actx->private_data)->type, false);
8859 return offset;
8864 static int
8865 dissect_itsv1_PtActivationData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8866 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
8867 1, 20, false, &((its_pt_activation_data_t*)actx->private_data)->data);
8869 return offset;
8873 static const per_sequence_t itsv1_PtActivation_sequence[] = {
8874 { &hf_itsv1_ptActivationType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PtActivationType },
8875 { &hf_itsv1_ptActivationData, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PtActivationData },
8876 { NULL, 0, 0, NULL }
8879 static int
8880 dissect_itsv1_PtActivation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8881 void *priv_data = actx->private_data;
8882 its_pt_activation_data_t *pta;
8884 pta = wmem_new0(actx->pinfo->pool, its_pt_activation_data_t);
8885 actx->private_data = pta;
8886 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8887 ett_itsv1_PtActivation, itsv1_PtActivation_sequence);
8889 dissector_try_uint_with_data(cam_pt_activation_table, pta->type, pta->data, actx->pinfo, tree, true, NULL);
8890 actx->private_data = priv_data;
8891 return offset;
8895 static int * const itsv1_AccelerationControl_bits[] = {
8896 &hf_itsv1_AccelerationControl_brakePedalEngaged,
8897 &hf_itsv1_AccelerationControl_gasPedalEngaged,
8898 &hf_itsv1_AccelerationControl_emergencyBrakeEngaged,
8899 &hf_itsv1_AccelerationControl_collisionWarningEngaged,
8900 &hf_itsv1_AccelerationControl_accEngaged,
8901 &hf_itsv1_AccelerationControl_cruiseControlEngaged,
8902 &hf_itsv1_AccelerationControl_speedLimiterEngaged,
8903 NULL
8906 static int
8907 dissect_itsv1_AccelerationControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8908 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
8909 7, 7, false, itsv1_AccelerationControl_bits, 7, NULL, NULL);
8911 return offset;
8915 static const value_string itsv1_CauseCodeTypeV1_vals[] = {
8916 { 0, "reserved" },
8917 { 1, "trafficCondition" },
8918 { 2, "accident" },
8919 { 3, "roadworks" },
8920 { 6, "adverseWeatherCondition-Adhesion" },
8921 { 9, "hazardousLocation-SurfaceCondition" },
8922 { 10, "hazardousLocation-ObstacleOnTheRoad" },
8923 { 11, "hazardousLocation-AnimalOnTheRoad" },
8924 { 12, "humanPresenceOnTheRoad" },
8925 { 14, "wrongWayDriving" },
8926 { 15, "rescueAndRecoveryWorkInProgress" },
8927 { 17, "adverseWeatherCondition-ExtremeWeatherCondition" },
8928 { 18, "adverseWeatherCondition-Visibility" },
8929 { 19, "adverseWeatherCondition-Precipitation" },
8930 { 26, "slowVehicle" },
8931 { 27, "dangerousEndOfQueue" },
8932 { 91, "vehicleBreakdown" },
8933 { 92, "postCrash" },
8934 { 93, "humanProblem" },
8935 { 94, "stationaryVehicle" },
8936 { 95, "emergencyVehicleApproaching" },
8937 { 96, "hazardousLocation-DangerousCurve" },
8938 { 97, "collisionRisk" },
8939 { 98, "signalViolation" },
8940 { 99, "dangerousSituation" },
8941 { 0, NULL }
8945 static int
8946 dissect_itsv1_CauseCodeTypeV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8947 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8948 0U, 255U, NULL, false);
8950 return offset;
8955 static int
8956 dissect_itsv1_SubCauseCodeTypeV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8957 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8958 0U, 255U, NULL, false);
8960 return offset;
8964 static const per_sequence_t itsv1_CauseCode_sequence[] = {
8965 { &hf_itsv1_causeCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_CauseCodeTypeV1 },
8966 { &hf_itsv1_subCauseCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SubCauseCodeTypeV1 },
8967 { NULL, 0, 0, NULL }
8970 static int
8971 dissect_itsv1_CauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8972 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
8973 ett_itsv1_CauseCode, itsv1_CauseCode_sequence);
8975 return offset;
8979 static const value_string itsv1_RoadworksSubCauseCode_vals[] = {
8980 { 0, "unavailable" },
8981 { 1, "majorRoadworks" },
8982 { 2, "roadMarkingWork" },
8983 { 3, "slowMovingRoadMaintenance" },
8984 { 4, "shortTermStationaryRoadworks" },
8985 { 5, "streetCleaning" },
8986 { 6, "winterService" },
8987 { 0, NULL }
8991 static int
8992 dissect_itsv1_RoadworksSubCauseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8993 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
8994 0U, 255U, NULL, false);
8996 return offset;
9001 static int
9002 dissect_itsv1_CurvatureValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9003 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9004 -30000, 30001U, NULL, false);
9006 return offset;
9010 static const value_string itsv1_CurvatureConfidence_vals[] = {
9011 { 0, "onePerMeter-0-00002" },
9012 { 1, "onePerMeter-0-0001" },
9013 { 2, "onePerMeter-0-0005" },
9014 { 3, "onePerMeter-0-002" },
9015 { 4, "onePerMeter-0-01" },
9016 { 5, "onePerMeter-0-1" },
9017 { 6, "outOfRange" },
9018 { 7, "unavailable" },
9019 { 0, NULL }
9023 static int
9024 dissect_itsv1_CurvatureConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9025 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9026 8, NULL, false, 0, NULL);
9028 return offset;
9032 static const per_sequence_t itsv1_Curvature_sequence[] = {
9033 { &hf_itsv1_curvatureValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_CurvatureValue },
9034 { &hf_itsv1_curvatureConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_CurvatureConfidence },
9035 { NULL, 0, 0, NULL }
9038 static int
9039 dissect_itsv1_Curvature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9040 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9041 ett_itsv1_Curvature, itsv1_Curvature_sequence);
9043 return offset;
9047 static const value_string itsv1_CurvatureCalculationMode_vals[] = {
9048 { 0, "yawRateUsed" },
9049 { 1, "yawRateNotUsed" },
9050 { 2, "unavailable" },
9051 { 0, NULL }
9055 static int
9056 dissect_itsv1_CurvatureCalculationMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9057 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9058 3, NULL, true, 0, NULL);
9060 return offset;
9065 static int
9066 dissect_itsv1_HeadingConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9067 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9068 1U, 127U, NULL, false);
9070 return offset;
9074 static const per_sequence_t itsv1_Heading_sequence[] = {
9075 { &hf_itsv1_headingValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeadingValue },
9076 { &hf_itsv1_headingConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeadingConfidence },
9077 { NULL, 0, 0, NULL }
9080 static int
9081 dissect_itsv1_Heading(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9082 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9083 ett_itsv1_Heading, itsv1_Heading_sequence);
9085 return offset;
9089 static const value_string itsv1_LanePosition_vals[] = {
9090 { -1, "offTheRoad" },
9091 { 0, "hardShoulder" },
9092 { 1, "outermostDrivingLane" },
9093 { 2, "secondLaneFromOutside" },
9094 { 0, NULL }
9098 static int
9099 dissect_itsv1_LanePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9100 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9101 -1, 14U, NULL, false);
9103 return offset;
9107 static const value_string itsv1_HardShoulderStatus_vals[] = {
9108 { 0, "availableForStopping" },
9109 { 1, "closed" },
9110 { 2, "availableForDriving" },
9111 { 0, NULL }
9115 static int
9116 dissect_itsv1_HardShoulderStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9117 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9118 3, NULL, false, 0, NULL);
9120 return offset;
9124 static int * const itsv1_DrivingLaneStatus_bits[] = {
9125 &hf_itsv1_DrivingLaneStatus_spare_bit0,
9126 &hf_itsv1_DrivingLaneStatus_outermostLaneClosed,
9127 &hf_itsv1_DrivingLaneStatus_secondLaneFromOutsideClosed,
9128 NULL
9131 static int
9132 dissect_itsv1_DrivingLaneStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9133 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
9134 1, 14, false, itsv1_DrivingLaneStatus_bits, 3, NULL, NULL);
9136 return offset;
9140 static const per_sequence_t itsv1_ClosedLanes_sequence[] = {
9141 { &hf_itsv1_hardShoulderStatus, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_HardShoulderStatus },
9142 { &hf_itsv1_drivingLaneStatus, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_DrivingLaneStatus },
9143 { NULL, 0, 0, NULL }
9146 static int
9147 dissect_itsv1_ClosedLanes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9148 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9149 ett_itsv1_ClosedLanes, itsv1_ClosedLanes_sequence);
9151 return offset;
9155 static const value_string itsv1_PerformanceClass_vals[] = {
9156 { 0, "unavailable" },
9157 { 1, "performanceClassA" },
9158 { 2, "performanceClassB" },
9159 { 0, NULL }
9163 static int
9164 dissect_itsv1_PerformanceClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9165 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9166 0U, 7U, NULL, false);
9168 return offset;
9173 static int
9174 dissect_itsv1_SpeedValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9175 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9176 0U, 16383U, NULL, false);
9178 return offset;
9183 static int
9184 dissect_itsv1_SpeedConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9185 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9186 1U, 127U, NULL, false);
9188 return offset;
9192 static const value_string itsv1_VehicleMass_vals[] = {
9193 { 1, "hundredKg" },
9194 { 1024, "unavailable" },
9195 { 0, NULL }
9199 static int
9200 dissect_itsv1_VehicleMass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9201 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9202 1U, 1024U, NULL, false);
9204 return offset;
9208 static const per_sequence_t itsv1_Speed_sequence[] = {
9209 { &hf_itsv1_speedValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SpeedValue },
9210 { &hf_itsv1_speedConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SpeedConfidence },
9211 { NULL, 0, 0, NULL }
9214 static int
9215 dissect_itsv1_Speed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9216 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9217 ett_itsv1_Speed, itsv1_Speed_sequence);
9219 return offset;
9223 static const value_string itsv1_DriveDirection_vals[] = {
9224 { 0, "forward" },
9225 { 1, "backward" },
9226 { 2, "unavailable" },
9227 { 0, NULL }
9231 static int
9232 dissect_itsv1_DriveDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9233 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9234 3, NULL, false, 0, NULL);
9236 return offset;
9241 static int
9242 dissect_itsv1_EmbarkationStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9243 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
9245 return offset;
9250 static int
9251 dissect_itsv1_LongitudinalAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9252 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9253 -160, 161U, NULL, false);
9255 return offset;
9260 static int
9261 dissect_itsv1_AccelerationConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9262 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9263 0U, 102U, NULL, false);
9265 return offset;
9269 static const per_sequence_t itsv1_LongitudinalAcceleration_sequence[] = {
9270 { &hf_itsv1_longitudinalAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LongitudinalAccelerationValue },
9271 { &hf_itsv1_longitudinalAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AccelerationConfidence },
9272 { NULL, 0, 0, NULL }
9275 static int
9276 dissect_itsv1_LongitudinalAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9277 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9278 ett_itsv1_LongitudinalAcceleration, itsv1_LongitudinalAcceleration_sequence);
9280 return offset;
9285 static int
9286 dissect_itsv1_LateralAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9287 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9288 -160, 161U, NULL, false);
9290 return offset;
9294 static const per_sequence_t itsv1_LateralAcceleration_sequence[] = {
9295 { &hf_itsv1_lateralAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LateralAccelerationValue },
9296 { &hf_itsv1_lateralAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AccelerationConfidence },
9297 { NULL, 0, 0, NULL }
9300 static int
9301 dissect_itsv1_LateralAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9302 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9303 ett_itsv1_LateralAcceleration, itsv1_LateralAcceleration_sequence);
9305 return offset;
9310 static int
9311 dissect_itsv1_VerticalAccelerationValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9312 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9313 -160, 161U, NULL, false);
9315 return offset;
9319 static const per_sequence_t itsv1_VerticalAcceleration_sequence[] = {
9320 { &hf_itsv1_verticalAccelerationValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VerticalAccelerationValue },
9321 { &hf_itsv1_verticalAccelerationConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_AccelerationConfidence },
9322 { NULL, 0, 0, NULL }
9325 static int
9326 dissect_itsv1_VerticalAcceleration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9327 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9328 ett_itsv1_VerticalAcceleration, itsv1_VerticalAcceleration_sequence);
9330 return offset;
9334 static const value_string itsv1_StationType_vals[] = {
9335 { 0, "unknown" },
9336 { 1, "pedestrian" },
9337 { 2, "cyclist" },
9338 { 3, "moped" },
9339 { 4, "motorcycle" },
9340 { 5, "passengerCar" },
9341 { 6, "bus" },
9342 { 7, "lightTruck" },
9343 { 8, "heavyTruck" },
9344 { 9, "trailer" },
9345 { 10, "specialVehicles" },
9346 { 11, "tram" },
9347 { 15, "roadSideUnit" },
9348 { 0, NULL }
9352 static int
9353 dissect_itsv1_StationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9354 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9355 0U, 255U, NULL, false);
9357 return offset;
9361 static int * const itsv1_ExteriorLights_bits[] = {
9362 &hf_itsv1_ExteriorLights_lowBeamHeadlightsOn,
9363 &hf_itsv1_ExteriorLights_highBeamHeadlightsOn,
9364 &hf_itsv1_ExteriorLights_leftTurnSignalOn,
9365 &hf_itsv1_ExteriorLights_rightTurnSignalOn,
9366 &hf_itsv1_ExteriorLights_daytimeRunningLightsOn,
9367 &hf_itsv1_ExteriorLights_reverseLightOn,
9368 &hf_itsv1_ExteriorLights_fogLightOn,
9369 &hf_itsv1_ExteriorLights_parkingLightsOn,
9370 NULL
9373 static int
9374 dissect_itsv1_ExteriorLights(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9375 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
9376 8, 8, false, itsv1_ExteriorLights_bits, 8, NULL, NULL);
9378 return offset;
9382 static const value_string itsv1_DangerousGoodsBasic_vals[] = {
9383 { 0, "explosives1" },
9384 { 1, "explosives2" },
9385 { 2, "explosives3" },
9386 { 3, "explosives4" },
9387 { 4, "explosives5" },
9388 { 5, "explosives6" },
9389 { 6, "flammableGases" },
9390 { 7, "nonFlammableGases" },
9391 { 8, "toxicGases" },
9392 { 9, "flammableLiquids" },
9393 { 10, "flammableSolids" },
9394 { 11, "substancesLiableToSpontaneousCombustion" },
9395 { 12, "substancesEmittingFlammableGasesUponContactWithWater" },
9396 { 13, "oxidizingSubstances" },
9397 { 14, "organicPeroxides" },
9398 { 15, "toxicSubstances" },
9399 { 16, "infectiousSubstances" },
9400 { 17, "radioactiveMaterial" },
9401 { 18, "corrosiveSubstances" },
9402 { 19, "miscellaneousDangerousSubstances" },
9403 { 0, NULL }
9407 static int
9408 dissect_itsv1_DangerousGoodsBasic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9409 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9410 20, NULL, false, 0, NULL);
9412 return offset;
9417 static int
9418 dissect_itsv1_INTEGER_0_9999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9419 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9420 0U, 9999U, NULL, false);
9422 return offset;
9427 static int
9428 dissect_itsv1_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9429 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
9431 return offset;
9436 static int
9437 dissect_itsv1_IA5String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9438 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
9439 1, 24, false,
9440 NULL);
9442 return offset;
9447 static int
9448 dissect_itsv1_UTF8String_SIZE_1_24(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9449 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
9450 1, 24, false);
9452 return offset;
9456 static const per_sequence_t itsv1_DangerousGoodsExtended_sequence[] = {
9457 { &hf_itsv1_dangerousGoodsType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DangerousGoodsBasic },
9458 { &hf_itsv1_unNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_INTEGER_0_9999 },
9459 { &hf_itsv1_elevatedTemperature, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_BOOLEAN },
9460 { &hf_itsv1_tunnelsRestricted, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_BOOLEAN },
9461 { &hf_itsv1_limitedQuantity, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_BOOLEAN },
9462 { &hf_itsv1_emergencyActionCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_IA5String_SIZE_1_24 },
9463 { &hf_itsv1_phoneNumber , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_IA5String_SIZE_1_24 },
9464 { &hf_itsv1_companyName , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_UTF8String_SIZE_1_24 },
9465 { NULL, 0, 0, NULL }
9468 static int
9469 dissect_itsv1_DangerousGoodsExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9470 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9471 ett_itsv1_DangerousGoodsExtended, itsv1_DangerousGoodsExtended_sequence);
9473 return offset;
9477 static int * const itsv1_SpecialTransportType_bits[] = {
9478 &hf_itsv1_SpecialTransportType_heavyLoad,
9479 &hf_itsv1_SpecialTransportType_excessWidth,
9480 &hf_itsv1_SpecialTransportType_excessLength,
9481 &hf_itsv1_SpecialTransportType_excessHeight,
9482 NULL
9485 static int
9486 dissect_itsv1_SpecialTransportType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9487 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
9488 4, 4, false, itsv1_SpecialTransportType_bits, 4, NULL, NULL);
9490 return offset;
9494 static int * const itsv1_LightBarSirenInUse_bits[] = {
9495 &hf_itsv1_LightBarSirenInUse_lightBarActivated,
9496 &hf_itsv1_LightBarSirenInUse_sirenActivated,
9497 NULL
9500 static int
9501 dissect_itsv1_LightBarSirenInUse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9502 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
9503 2, 2, false, itsv1_LightBarSirenInUse_bits, 2, NULL, NULL);
9505 return offset;
9509 static const value_string itsv1_HeightLonCarr_vals[] = {
9510 { 1, "oneCentimeter" },
9511 { 100, "unavailable" },
9512 { 0, NULL }
9516 static int
9517 dissect_itsv1_HeightLonCarr(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9518 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9519 1U, 100U, NULL, false);
9521 return offset;
9525 static const value_string itsv1_PosLonCarr_vals[] = {
9526 { 1, "oneCentimeter" },
9527 { 127, "unavailable" },
9528 { 0, NULL }
9532 static int
9533 dissect_itsv1_PosLonCarr(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9534 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9535 1U, 127U, NULL, false);
9537 return offset;
9541 static const value_string itsv1_PosPillar_vals[] = {
9542 { 1, "tenCentimeters" },
9543 { 30, "unavailable" },
9544 { 0, NULL }
9548 static int
9549 dissect_itsv1_PosPillar(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9550 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9551 1U, 30U, NULL, false);
9553 return offset;
9557 static const value_string itsv1_PosCentMass_vals[] = {
9558 { 1, "tenCentimeters" },
9559 { 63, "unavailable" },
9560 { 0, NULL }
9564 static int
9565 dissect_itsv1_PosCentMass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9566 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9567 1U, 63U, NULL, false);
9569 return offset;
9573 static const value_string itsv1_RequestResponseIndication_vals[] = {
9574 { 0, "request" },
9575 { 1, "response" },
9576 { 0, NULL }
9580 static int
9581 dissect_itsv1_RequestResponseIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9582 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9583 2, NULL, false, 0, NULL);
9585 return offset;
9590 static int
9591 dissect_itsv1_SpeedLimit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9592 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9593 1U, 255U, NULL, false);
9595 return offset;
9599 static const value_string itsv1_StationarySince_vals[] = {
9600 { 0, "lessThan1Minute" },
9601 { 1, "lessThan2Minutes" },
9602 { 2, "lessThan15Minutes" },
9603 { 3, "equalOrGreater15Minutes" },
9604 { 0, NULL }
9608 static int
9609 dissect_itsv1_StationarySince(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9610 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9611 4, NULL, false, 0, NULL);
9613 return offset;
9617 static const value_string itsv1_Temperature_vals[] = {
9618 { -60, "equalOrSmallerThanMinus60Deg" },
9619 { 1, "oneDegreeCelsius" },
9620 { 67, "equalOrGreaterThan67Deg" },
9621 { 0, NULL }
9625 static int
9626 dissect_itsv1_Temperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9627 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9628 -60, 67U, NULL, false);
9630 return offset;
9634 static const value_string itsv1_TrafficRule_vals[] = {
9635 { 0, "noPassing" },
9636 { 1, "noPassingForTrucks" },
9637 { 2, "passToRight" },
9638 { 3, "passToLeft" },
9639 { 0, NULL }
9643 static int
9644 dissect_itsv1_TrafficRule(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9645 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9646 4, NULL, true, 0, NULL);
9648 return offset;
9652 static const value_string itsv1_WheelBaseVehicle_vals[] = {
9653 { 1, "tenCentimeters" },
9654 { 127, "unavailable" },
9655 { 0, NULL }
9659 static int
9660 dissect_itsv1_WheelBaseVehicle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9661 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9662 1U, 127U, NULL, false);
9664 return offset;
9668 static const value_string itsv1_TurningRadius_vals[] = {
9669 { 1, "point4Meters" },
9670 { 255, "unavailable" },
9671 { 0, NULL }
9675 static int
9676 dissect_itsv1_TurningRadius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9677 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9678 1U, 255U, NULL, false);
9680 return offset;
9684 static const value_string itsv1_PosFrontAx_vals[] = {
9685 { 1, "tenCentimeters" },
9686 { 20, "unavailable" },
9687 { 0, NULL }
9691 static int
9692 dissect_itsv1_PosFrontAx(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9693 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9694 1U, 20U, NULL, false);
9696 return offset;
9700 static int * const itsv1_PositionOfOccupants_bits[] = {
9701 &hf_itsv1_PositionOfOccupants_row1LeftOccupied,
9702 &hf_itsv1_PositionOfOccupants_row1RightOccupied,
9703 &hf_itsv1_PositionOfOccupants_row1MidOccupied,
9704 &hf_itsv1_PositionOfOccupants_row1NotDetectable,
9705 &hf_itsv1_PositionOfOccupants_row1NotPresent,
9706 &hf_itsv1_PositionOfOccupants_row2LeftOccupied,
9707 &hf_itsv1_PositionOfOccupants_row2RightOccupied,
9708 &hf_itsv1_PositionOfOccupants_row2MidOccupied,
9709 &hf_itsv1_PositionOfOccupants_row2NotDetectable,
9710 &hf_itsv1_PositionOfOccupants_row2NotPresent,
9711 &hf_itsv1_PositionOfOccupants_row3LeftOccupied,
9712 &hf_itsv1_PositionOfOccupants_row3RightOccupied,
9713 &hf_itsv1_PositionOfOccupants_row3MidOccupied,
9714 &hf_itsv1_PositionOfOccupants_row3NotDetectable,
9715 &hf_itsv1_PositionOfOccupants_row3NotPresent,
9716 &hf_itsv1_PositionOfOccupants_row4LeftOccupied,
9717 &hf_itsv1_PositionOfOccupants_row4RightOccupied,
9718 &hf_itsv1_PositionOfOccupants_row4MidOccupied,
9719 &hf_itsv1_PositionOfOccupants_row4NotDetectable,
9720 &hf_itsv1_PositionOfOccupants_row4NotPresent,
9721 NULL
9724 static int
9725 dissect_itsv1_PositionOfOccupants(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9726 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
9727 20, 20, false, itsv1_PositionOfOccupants_bits, 20, NULL, NULL);
9729 return offset;
9733 static const value_string itsv1_PositioningSolutionType_vals[] = {
9734 { 0, "noPositioningSolution" },
9735 { 1, "sGNSS" },
9736 { 2, "dGNSS" },
9737 { 3, "sGNSSplusDR" },
9738 { 4, "dGNSSplusDR" },
9739 { 5, "dR" },
9740 { 0, NULL }
9744 static int
9745 dissect_itsv1_PositioningSolutionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9746 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9747 6, NULL, true, 0, NULL);
9749 return offset;
9754 static int
9755 dissect_itsv1_WMInumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9756 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
9757 1, 3, false,
9758 NULL);
9760 return offset;
9765 static int
9766 dissect_itsv1_VDS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9767 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
9768 6, 6, false,
9769 NULL);
9771 return offset;
9775 static const per_sequence_t itsv1_VehicleIdentification_sequence[] = {
9776 { &hf_itsv1_wMInumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_WMInumber },
9777 { &hf_itsv1_vDS , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_VDS },
9778 { NULL, 0, 0, NULL }
9781 static int
9782 dissect_itsv1_VehicleIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9783 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9784 ett_itsv1_VehicleIdentification, itsv1_VehicleIdentification_sequence);
9786 return offset;
9790 static int * const itsv1_EnergyStorageType_bits[] = {
9791 &hf_itsv1_EnergyStorageType_hydrogenStorage,
9792 &hf_itsv1_EnergyStorageType_electricEnergyStorage,
9793 &hf_itsv1_EnergyStorageType_liquidPropaneGas,
9794 &hf_itsv1_EnergyStorageType_compressedNaturalGas,
9795 &hf_itsv1_EnergyStorageType_diesel,
9796 &hf_itsv1_EnergyStorageType_gasoline,
9797 &hf_itsv1_EnergyStorageType_ammonia,
9798 NULL
9801 static int
9802 dissect_itsv1_EnergyStorageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9803 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
9804 7, 7, false, itsv1_EnergyStorageType_bits, 7, NULL, NULL);
9806 return offset;
9811 static int
9812 dissect_itsv1_VehicleLengthValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9813 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9814 1U, 1023U, NULL, false);
9816 return offset;
9820 static const value_string itsv1_VehicleLengthConfidenceIndication_vals[] = {
9821 { 0, "noTrailerPresent" },
9822 { 1, "trailerPresentWithKnownLength" },
9823 { 2, "trailerPresentWithUnknownLength" },
9824 { 3, "trailerPresenceIsUnknown" },
9825 { 4, "unavailable" },
9826 { 0, NULL }
9830 static int
9831 dissect_itsv1_VehicleLengthConfidenceIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9832 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9833 5, NULL, false, 0, NULL);
9835 return offset;
9839 static const per_sequence_t itsv1_VehicleLength_sequence[] = {
9840 { &hf_itsv1_vehicleLengthValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleLengthValue },
9841 { &hf_itsv1_vehicleLengthConfidenceIndication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleLengthConfidenceIndication },
9842 { NULL, 0, 0, NULL }
9845 static int
9846 dissect_itsv1_VehicleLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9847 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9848 ett_itsv1_VehicleLength, itsv1_VehicleLength_sequence);
9850 return offset;
9855 static int
9856 dissect_itsv1_VehicleWidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9857 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9858 1U, 62U, NULL, false);
9860 return offset;
9864 static const per_sequence_t itsv1_PathHistory_sequence_of[1] = {
9865 { &hf_itsv1_PathHistory_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PathPoint },
9868 static int
9869 dissect_itsv1_PathHistory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9870 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
9871 ett_itsv1_PathHistory, itsv1_PathHistory_sequence_of,
9872 0, 40, false);
9874 return offset;
9878 static int * const itsv1_EmergencyPriority_bits[] = {
9879 &hf_itsv1_EmergencyPriority_requestForRightOfWay,
9880 &hf_itsv1_EmergencyPriority_requestForFreeCrossingAtATrafficLight,
9881 NULL
9884 static int
9885 dissect_itsv1_EmergencyPriority(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9886 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
9887 2, 2, false, itsv1_EmergencyPriority_bits, 2, NULL, NULL);
9889 return offset;
9893 static const value_string itsv1_InformationQuality_vals[] = {
9894 { 0, "unavailable" },
9895 { 1, "lowest" },
9896 { 7, "highest" },
9897 { 0, NULL }
9901 static int
9902 dissect_itsv1_InformationQuality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9903 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9904 0U, 7U, NULL, false);
9906 return offset;
9910 static const value_string itsv1_RoadType_vals[] = {
9911 { 0, "urban-NoStructuralSeparationToOppositeLanes" },
9912 { 1, "urban-WithStructuralSeparationToOppositeLanes" },
9913 { 2, "nonUrban-NoStructuralSeparationToOppositeLanes" },
9914 { 3, "nonUrban-WithStructuralSeparationToOppositeLanes" },
9915 { 0, NULL }
9919 static int
9920 dissect_itsv1_RoadType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9921 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9922 4, NULL, false, 0, NULL);
9924 return offset;
9929 static int
9930 dissect_itsv1_SteeringWheelAngleValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9931 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9932 -511, 512U, NULL, false);
9934 return offset;
9939 static int
9940 dissect_itsv1_SteeringWheelAngleConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9941 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
9942 1U, 127U, NULL, false);
9944 return offset;
9948 static const per_sequence_t itsv1_SteeringWheelAngle_sequence[] = {
9949 { &hf_itsv1_steeringWheelAngleValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SteeringWheelAngleValue },
9950 { &hf_itsv1_steeringWheelAngleConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SteeringWheelAngleConfidence },
9951 { NULL, 0, 0, NULL }
9954 static int
9955 dissect_itsv1_SteeringWheelAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9956 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
9957 ett_itsv1_SteeringWheelAngle, itsv1_SteeringWheelAngle_sequence);
9959 return offset;
9964 static int
9965 dissect_itsv1_TimestampIts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9966 offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
9967 0U, UINT64_C(4398046511103), NULL, false);
9969 return offset;
9973 static const value_string itsv1_VehicleRole_vals[] = {
9974 { 0, "default" },
9975 { 1, "publicTransport" },
9976 { 2, "specialTransport" },
9977 { 3, "dangerousGoods" },
9978 { 4, "roadWork" },
9979 { 5, "rescue" },
9980 { 6, "emergency" },
9981 { 7, "safetyCar" },
9982 { 8, "agriculture" },
9983 { 9, "commercial" },
9984 { 10, "military" },
9985 { 11, "roadOperator" },
9986 { 12, "taxi" },
9987 { 13, "reserved1" },
9988 { 14, "reserved2" },
9989 { 15, "reserved3" },
9990 { 0, NULL }
9994 static int
9995 dissect_itsv1_VehicleRole(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
9996 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
9997 16, NULL, false, 0, NULL);
9999 return offset;
10004 static int
10005 dissect_itsv1_YawRateValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10006 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10007 -32766, 32767U, NULL, false);
10009 return offset;
10013 static const value_string itsv1_YawRateConfidence_vals[] = {
10014 { 0, "degSec-000-01" },
10015 { 1, "degSec-000-05" },
10016 { 2, "degSec-000-10" },
10017 { 3, "degSec-001-00" },
10018 { 4, "degSec-005-00" },
10019 { 5, "degSec-010-00" },
10020 { 6, "degSec-100-00" },
10021 { 7, "outOfRange" },
10022 { 8, "unavailable" },
10023 { 0, NULL }
10027 static int
10028 dissect_itsv1_YawRateConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10029 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10030 9, NULL, false, 0, NULL);
10032 return offset;
10036 static const per_sequence_t itsv1_YawRate_sequence[] = {
10037 { &hf_itsv1_yawRateValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_YawRateValue },
10038 { &hf_itsv1_yawRateConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_YawRateConfidence },
10039 { NULL, 0, 0, NULL }
10042 static int
10043 dissect_itsv1_YawRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10044 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10045 ett_itsv1_YawRate, itsv1_YawRate_sequence);
10047 return offset;
10051 static const value_string itsv1_ProtectedZoneType_vals[] = {
10052 { 0, "cenDsrcTolling" },
10053 { 0, NULL }
10057 static int
10058 dissect_itsv1_ProtectedZoneType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10059 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10060 1, NULL, true, 0, NULL);
10062 return offset;
10066 static const value_string itsv1_RelevanceDistance_vals[] = {
10067 { 0, "lessThan50m" },
10068 { 1, "lessThan100m" },
10069 { 2, "lessThan200m" },
10070 { 3, "lessThan500m" },
10071 { 4, "lessThan1000m" },
10072 { 5, "lessThan5km" },
10073 { 6, "lessThan10km" },
10074 { 7, "over10km" },
10075 { 0, NULL }
10079 static int
10080 dissect_itsv1_RelevanceDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10081 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10082 8, NULL, false, 0, NULL);
10084 return offset;
10088 static const value_string itsv1_RelevanceTrafficDirection_vals[] = {
10089 { 0, "allTrafficDirections" },
10090 { 1, "upstreamTraffic" },
10091 { 2, "downstreamTraffic" },
10092 { 3, "oppositeTraffic" },
10093 { 0, NULL }
10097 static int
10098 dissect_itsv1_RelevanceTrafficDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10099 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10100 4, NULL, false, 0, NULL);
10102 return offset;
10106 static const value_string itsv1_TransmissionInterval_vals[] = {
10107 { 1, "oneMilliSecond" },
10108 { 10000, "tenSeconds" },
10109 { 0, NULL }
10113 static int
10114 dissect_itsv1_TransmissionInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10115 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10116 1U, 10000U, NULL, false);
10118 return offset;
10123 static int
10124 dissect_itsv1_ValidityDuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10125 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10126 0U, 86400U, NULL, false);
10128 return offset;
10133 static int
10134 dissect_itsv1_SequenceNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10135 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10136 0U, 65535U, NULL, false);
10138 return offset;
10142 static const per_sequence_t itsv1_ActionID_sequence[] = {
10143 { &hf_itsv1_originatingStationID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_StationID },
10144 { &hf_itsv1_sequenceNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SequenceNumber },
10145 { NULL, 0, 0, NULL }
10148 static int
10149 dissect_itsv1_ActionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10150 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10151 ett_itsv1_ActionID, itsv1_ActionID_sequence);
10153 return offset;
10157 static const per_sequence_t itsv1_ItineraryPath_sequence_of[1] = {
10158 { &hf_itsv1_ItineraryPath_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ReferencePosition },
10161 static int
10162 dissect_itsv1_ItineraryPath(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10163 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
10164 ett_itsv1_ItineraryPath, itsv1_ItineraryPath_sequence_of,
10165 1, 40, false);
10167 return offset;
10171 static const value_string itsv1_ProtectedZoneRadius_vals[] = {
10172 { 1, "oneMeter" },
10173 { 0, NULL }
10177 static int
10178 dissect_itsv1_ProtectedZoneRadius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10179 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10180 1U, 255U, NULL, true);
10182 return offset;
10187 static int
10188 dissect_itsv1_ProtectedZoneID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10189 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10190 0U, 134217727U, NULL, false);
10192 return offset;
10196 static const per_sequence_t itsv1_ProtectedCommunicationZone_sequence[] = {
10197 { &hf_itsv1_protectedZoneType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ProtectedZoneType },
10198 { &hf_itsv1_expiryTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_TimestampIts },
10199 { &hf_itsv1_protectedZoneLatitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Latitude },
10200 { &hf_itsv1_protectedZoneLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Longitude },
10201 { &hf_itsv1_protectedZoneRadius, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ProtectedZoneRadius },
10202 { &hf_itsv1_protectedZoneID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ProtectedZoneID },
10203 { NULL, 0, 0, NULL }
10206 static int
10207 dissect_itsv1_ProtectedCommunicationZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10208 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10209 ett_itsv1_ProtectedCommunicationZone, itsv1_ProtectedCommunicationZone_sequence);
10211 return offset;
10215 static const per_sequence_t itsv1_Traces_sequence_of[1] = {
10216 { &hf_itsv1_Traces_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PathHistory },
10219 static int
10220 dissect_itsv1_Traces(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10221 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
10222 ett_itsv1_Traces, itsv1_Traces_sequence_of,
10223 1, 7, false);
10225 return offset;
10229 static const value_string itsv1_NumberOfOccupants_vals[] = {
10230 { 1, "oneOccupant" },
10231 { 127, "unavailable" },
10232 { 0, NULL }
10236 static int
10237 dissect_itsv1_NumberOfOccupants(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10238 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10239 0U, 127U, NULL, false);
10241 return offset;
10245 static const per_sequence_t itsv1_PositionOfPillars_sequence_of[1] = {
10246 { &hf_itsv1_PositionOfPillars_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosPillar },
10249 static int
10250 dissect_itsv1_PositionOfPillars(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10251 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
10252 ett_itsv1_PositionOfPillars, itsv1_PositionOfPillars_sequence_of,
10253 1, 3, true);
10255 return offset;
10259 static const per_sequence_t itsv1_RestrictedTypes_sequence_of[1] = {
10260 { &hf_itsv1_RestrictedTypes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_StationType },
10263 static int
10264 dissect_itsv1_RestrictedTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10265 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
10266 ett_itsv1_RestrictedTypes, itsv1_RestrictedTypes_sequence_of,
10267 1, 3, true);
10269 return offset;
10273 static const per_sequence_t itsv1_EventPoint_sequence[] = {
10274 { &hf_itsv1_eventPosition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DeltaReferencePosition },
10275 { &hf_itsv1_eventDeltaTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_PathDeltaTime },
10276 { &hf_itsv1_informationQuality, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_InformationQuality },
10277 { NULL, 0, 0, NULL }
10280 static int
10281 dissect_itsv1_EventPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10282 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10283 ett_itsv1_EventPoint, itsv1_EventPoint_sequence);
10285 return offset;
10289 static const per_sequence_t itsv1_EventHistory_sequence_of[1] = {
10290 { &hf_itsv1_EventHistory_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_EventPoint },
10293 static int
10294 dissect_itsv1_EventHistory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10295 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
10296 ett_itsv1_EventHistory, itsv1_EventHistory_sequence_of,
10297 1, 23, false);
10299 return offset;
10303 static const per_sequence_t itsv1_ProtectedCommunicationZonesRSU_sequence_of[1] = {
10304 { &hf_itsv1_ProtectedCommunicationZonesRSU_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ProtectedCommunicationZone },
10307 static int
10308 dissect_itsv1_ProtectedCommunicationZonesRSU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10309 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
10310 ett_itsv1_ProtectedCommunicationZonesRSU, itsv1_ProtectedCommunicationZonesRSU_sequence_of,
10311 1, 16, false);
10313 return offset;
10318 static int
10319 dissect_itsv1_CenDsrcTollingZoneID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10320 offset = dissect_itsv1_ProtectedZoneID(tvb, offset, actx, tree, hf_index);
10322 return offset;
10326 static const per_sequence_t itsv1_CenDsrcTollingZone_sequence[] = {
10327 { &hf_itsv1_protectedZoneLatitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Latitude },
10328 { &hf_itsv1_protectedZoneLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Longitude },
10329 { &hf_itsv1_cenDsrcTollingZoneID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CenDsrcTollingZoneID },
10330 { NULL, 0, 0, NULL }
10333 static int
10334 dissect_itsv1_CenDsrcTollingZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10335 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10336 ett_itsv1_CenDsrcTollingZone, itsv1_CenDsrcTollingZone_sequence);
10338 return offset;
10342 /* --- Module AVIAEINumberingAndDataStructures --- --- --- */
10346 static int
10347 dissect_anads_CountryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10348 tvbuff_t *val_tvb = NULL;
10349 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
10350 10, 10, false, NULL, 0, &val_tvb, NULL);
10352 append_country_code_fmt(actx->created_item, val_tvb);
10354 return offset;
10359 static int
10360 dissect_anads_AVIAEIIssuerIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10361 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10362 0U, 16383U, NULL, false);
10364 return offset;
10368 /* --- Module EfcDsrcApplication --- --- --- */
10372 static int
10373 dissect_dsrc_app_Int2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10374 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10375 0U, 65535U, NULL, false);
10377 return offset;
10381 static const per_sequence_t dsrc_app_AxleWeightLimits_sequence[] = {
10382 { &hf_dsrc_app_maxLadenweightOnAxle1, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10383 { &hf_dsrc_app_maxLadenweightOnAxle2, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10384 { &hf_dsrc_app_maxLadenweightOnAxle3, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10385 { &hf_dsrc_app_maxLadenweightOnAxle4, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10386 { &hf_dsrc_app_maxLadenweightOnAxle5, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10387 { NULL, 0, 0, NULL }
10390 static int
10391 dissect_dsrc_app_AxleWeightLimits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10392 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10393 ett_dsrc_app_AxleWeightLimits, dsrc_app_AxleWeightLimits_sequence);
10395 return offset;
10399 static const value_string dsrc_app_UnitType_vals[] = {
10400 { 0, "mg-km" },
10401 { 1, "mg-kWh" },
10402 { 0, NULL }
10406 static int
10407 dissect_dsrc_app_UnitType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10408 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10409 2, NULL, false, 0, NULL);
10411 return offset;
10416 static int
10417 dissect_dsrc_app_INTEGER_0_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10418 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10419 0U, 32767U, NULL, false);
10421 return offset;
10425 static const per_sequence_t dsrc_app_T_particulate_sequence[] = {
10426 { &hf_dsrc_app_unitType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_UnitType },
10427 { &hf_dsrc_app_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_INTEGER_0_32767 },
10428 { NULL, 0, 0, NULL }
10431 static int
10432 dissect_dsrc_app_T_particulate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10433 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10434 ett_dsrc_app_T_particulate, dsrc_app_T_particulate_sequence);
10436 return offset;
10440 static const per_sequence_t dsrc_app_DieselEmissionValues_sequence[] = {
10441 { &hf_dsrc_app_particulate, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_T_particulate },
10442 { &hf_dsrc_app_absorptionCoeff, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10443 { NULL, 0, 0, NULL }
10446 static int
10447 dissect_dsrc_app_DieselEmissionValues(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10448 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10449 ett_dsrc_app_DieselEmissionValues, dsrc_app_DieselEmissionValues_sequence);
10451 return offset;
10455 static const value_string dsrc_app_EuroValue_vals[] = {
10456 { 0, "noEntry" },
10457 { 1, "euro-1" },
10458 { 2, "euro-2" },
10459 { 3, "euro-3" },
10460 { 4, "euro-4" },
10461 { 5, "euro-5" },
10462 { 6, "euro-6" },
10463 { 7, "reservedForUse1" },
10464 { 8, "reservedForUse2" },
10465 { 9, "reservedForUse3" },
10466 { 10, "reservedForUse4" },
10467 { 11, "reservedForUse5" },
10468 { 12, "reservedForUse6" },
10469 { 13, "reservedForUse7" },
10470 { 14, "reservedForUse8" },
10471 { 15, "eev" },
10472 { 0, NULL }
10476 static int
10477 dissect_dsrc_app_EuroValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10478 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10479 16, NULL, false, 0, NULL);
10481 return offset;
10485 static const value_string dsrc_app_CopValue_vals[] = {
10486 { 0, "noEntry" },
10487 { 1, "co2class1" },
10488 { 2, "co2class2" },
10489 { 3, "co2class3" },
10490 { 4, "co2class4" },
10491 { 5, "co2class5" },
10492 { 6, "co2class6" },
10493 { 7, "co2class7" },
10494 { 8, "reservedforUse" },
10495 { 0, NULL }
10499 static int
10500 dissect_dsrc_app_CopValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10501 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10502 9, NULL, false, 0, NULL);
10504 return offset;
10508 static const per_sequence_t dsrc_app_EnvironmentalCharacteristics_sequence[] = {
10509 { &hf_dsrc_app_euroValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_EuroValue },
10510 { &hf_dsrc_app_copValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_CopValue },
10511 { NULL, 0, 0, NULL }
10514 static int
10515 dissect_dsrc_app_EnvironmentalCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10516 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10517 ett_dsrc_app_EnvironmentalCharacteristics, dsrc_app_EnvironmentalCharacteristics_sequence);
10519 return offset;
10523 static const value_string dsrc_app_EngineCharacteristics_vals[] = {
10524 { 0, "noEntry" },
10525 { 1, "noEngine" },
10526 { 2, "petrolUnleaded" },
10527 { 3, "petrolLeaded" },
10528 { 4, "diesel" },
10529 { 5, "lPG" },
10530 { 6, "battery" },
10531 { 7, "solar" },
10532 { 8, "hybrid" },
10533 { 9, "hydrogen" },
10534 { 0, NULL }
10538 static int
10539 dissect_dsrc_app_EngineCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10540 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10541 0U, 255U, NULL, false);
10543 return offset;
10547 static const per_sequence_t dsrc_app_ExhaustEmissionValues_sequence[] = {
10548 { &hf_dsrc_app_unitType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_UnitType },
10549 { &hf_dsrc_app_emissionCO , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_INTEGER_0_32767 },
10550 { &hf_dsrc_app_emissionHC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10551 { &hf_dsrc_app_emissionNOX, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10552 { &hf_dsrc_app_emissionHCNOX, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10553 { NULL, 0, 0, NULL }
10556 static int
10557 dissect_dsrc_app_ExhaustEmissionValues(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10558 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10559 ett_dsrc_app_ExhaustEmissionValues, dsrc_app_ExhaustEmissionValues_sequence);
10561 return offset;
10566 static int
10567 dissect_dsrc_app_Int1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10568 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10569 0U, 255U, NULL, false);
10571 return offset;
10575 static const per_sequence_t dsrc_app_PassengerCapacity_sequence[] = {
10576 { &hf_dsrc_app_numberOfSeats, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int1 },
10577 { &hf_dsrc_app_numberOfStandingPlaces, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int1 },
10578 { NULL, 0, 0, NULL }
10581 static int
10582 dissect_dsrc_app_PassengerCapacity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10583 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10584 ett_dsrc_app_PassengerCapacity, dsrc_app_PassengerCapacity_sequence);
10586 return offset;
10590 static const per_sequence_t dsrc_app_Provider_sequence[] = {
10591 { &hf_dsrc_app_countryCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_anads_CountryCode },
10592 { &hf_dsrc_app_providerIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_anads_AVIAEIIssuerIdentifier },
10593 { NULL, 0, 0, NULL }
10596 static int
10597 dissect_dsrc_app_Provider(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10598 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10599 ett_dsrc_app_Provider, dsrc_app_Provider_sequence);
10601 return offset;
10605 static const per_sequence_t dsrc_app_SoundLevel_sequence[] = {
10606 { &hf_dsrc_app_soundstationary, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int1 },
10607 { &hf_dsrc_app_sounddriveby, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int1 },
10608 { NULL, 0, 0, NULL }
10611 static int
10612 dissect_dsrc_app_SoundLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10613 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10614 ett_dsrc_app_SoundLevel, dsrc_app_SoundLevel_sequence);
10616 return offset;
10620 static const per_sequence_t dsrc_app_VehicleDimensions_sequence[] = {
10621 { &hf_dsrc_app_vehicleLengthOverall, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int1 },
10622 { &hf_dsrc_app_vehicleHeigthOverall, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int1 },
10623 { &hf_dsrc_app_vehicleWidthOverall, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int1 },
10624 { NULL, 0, 0, NULL }
10627 static int
10628 dissect_dsrc_app_VehicleDimensions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10629 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10630 ett_dsrc_app_VehicleDimensions, dsrc_app_VehicleDimensions_sequence);
10632 return offset;
10636 static const per_sequence_t dsrc_app_VehicleWeightLimits_sequence[] = {
10637 { &hf_dsrc_app_vehicleMaxLadenWeight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10638 { &hf_dsrc_app_vehicleTrainMaximumWeight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10639 { &hf_dsrc_app_vehicleWeightUnladen, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Int2 },
10640 { NULL, 0, 0, NULL }
10643 static int
10644 dissect_dsrc_app_VehicleWeightLimits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10645 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10646 ett_dsrc_app_VehicleWeightLimits, dsrc_app_VehicleWeightLimits_sequence);
10648 return offset;
10652 /* --- Module DSRC --- --- --- */
10655 static const value_string dsrc_RegionId_vals[] = {
10656 { noRegion, "noRegion" },
10657 { addGrpA, "addGrpA" },
10658 { addGrpB, "addGrpB" },
10659 { addGrpC, "addGrpC" },
10660 { 0, NULL }
10664 static int
10665 dissect_dsrc_RegionId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10666 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10667 0U, 255U, &((its_private_data_t*)actx->private_data)->region_id, false);
10669 return offset;
10674 static int
10675 dissect_dsrc_T_regExtValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10676 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_regextval_pdu);
10678 return offset;
10682 static const per_sequence_t dsrc_RegionalExtension_sequence[] = {
10683 { &hf_dsrc_regionId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionId },
10684 { &hf_dsrc_regExtValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_T_regExtValue },
10685 { NULL, 0, 0, NULL }
10688 static int
10689 dissect_dsrc_RegionalExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10690 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10691 ett_dsrc_RegionalExtension, dsrc_RegionalExtension_sequence);
10693 return offset;
10698 static int
10699 dissect_dsrc_MinuteOfTheYear(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10700 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10701 0U, 527040U, NULL, false);
10703 return offset;
10708 static int
10709 dissect_dsrc_MsgCount(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10710 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10711 0U, 127U, NULL, false);
10713 return offset;
10717 static const value_string dsrc_LayerType_vals[] = {
10718 { 0, "none" },
10719 { 1, "mixedContent" },
10720 { 2, "generalMapData" },
10721 { 3, "intersectionData" },
10722 { 4, "curveData" },
10723 { 5, "roadwaySectionData" },
10724 { 6, "parkingAreaData" },
10725 { 7, "sharedLaneData" },
10726 { 0, NULL }
10730 static int
10731 dissect_dsrc_LayerType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10732 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10733 8, NULL, true, 0, NULL);
10735 return offset;
10740 static int
10741 dissect_dsrc_LayerID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10742 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10743 0U, 100U, NULL, false);
10745 return offset;
10750 static int
10751 dissect_dsrc_DescriptiveName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10752 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
10753 1, 63, false,
10754 NULL);
10756 return offset;
10761 static int
10762 dissect_dsrc_RoadRegulatorID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10763 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10764 0U, 65535U, NULL, false);
10766 return offset;
10771 static int
10772 dissect_dsrc_IntersectionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10773 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10774 0U, 65535U, NULL, false);
10776 return offset;
10780 static const per_sequence_t dsrc_IntersectionReferenceID_sequence[] = {
10781 { &hf_dsrc_region , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_RoadRegulatorID },
10782 { &hf_dsrc_irId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionID },
10783 { NULL, 0, 0, NULL }
10786 static int
10787 dissect_dsrc_IntersectionReferenceID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10788 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10789 ett_dsrc_IntersectionReferenceID, dsrc_IntersectionReferenceID_sequence);
10791 return offset;
10796 static int
10797 dissect_dsrc_Elevation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10798 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10799 -4096, 61439U, NULL, false);
10801 return offset;
10805 static const per_sequence_t dsrc_T_Position3DRegional_sequence_of[1] = {
10806 { &hf_dsrc_p3dRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
10809 static int
10810 dissect_dsrc_T_Position3DRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10811 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
10812 ett_dsrc_T_Position3DRegional, dsrc_T_Position3DRegional_sequence_of,
10813 1, 4, false);
10815 return offset;
10819 static const per_sequence_t dsrc_Position3D_sequence[] = {
10820 { &hf_dsrc_lat , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
10821 { &hf_dsrc_long , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
10822 { &hf_dsrc_p3dElevation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Elevation },
10823 { &hf_dsrc_p3dRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_Position3DRegional },
10824 { NULL, 0, 0, NULL }
10827 static int
10828 dissect_dsrc_Position3D(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10829 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
10830 ((its_private_data_t*)actx->private_data)->type = Reg_Position3D;
10831 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10832 ett_dsrc_Position3D, dsrc_Position3D_sequence);
10834 ((its_private_data_t*)actx->private_data)->type = save;
10835 return offset;
10840 static int
10841 dissect_dsrc_LaneWidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10842 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10843 0U, 32767U, NULL, false);
10845 return offset;
10849 static const value_string dsrc_SpeedLimitType_vals[] = {
10850 { 0, "unknown" },
10851 { 1, "maxSpeedInSchoolZone" },
10852 { 2, "maxSpeedInSchoolZoneWhenChildrenArePresent" },
10853 { 3, "maxSpeedInConstructionZone" },
10854 { 4, "vehicleMinSpeed" },
10855 { 5, "vehicleMaxSpeed" },
10856 { 6, "vehicleNightMaxSpeed" },
10857 { 7, "truckMinSpeed" },
10858 { 8, "truckMaxSpeed" },
10859 { 9, "truckNightMaxSpeed" },
10860 { 10, "vehiclesWithTrailersMinSpeed" },
10861 { 11, "vehiclesWithTrailersMaxSpeed" },
10862 { 12, "vehiclesWithTrailersNightMaxSpeed" },
10863 { 0, NULL }
10867 static int
10868 dissect_dsrc_SpeedLimitType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10869 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
10870 13, NULL, true, 0, NULL);
10872 return offset;
10877 static int
10878 dissect_dsrc_Velocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10879 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10880 0U, 8191U, NULL, false);
10882 return offset;
10886 static const per_sequence_t dsrc_RegulatorySpeedLimit_sequence[] = {
10887 { &hf_dsrc_rslType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SpeedLimitType },
10888 { &hf_dsrc_rslSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Velocity },
10889 { NULL, 0, 0, NULL }
10892 static int
10893 dissect_dsrc_RegulatorySpeedLimit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10894 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
10895 ett_dsrc_RegulatorySpeedLimit, dsrc_RegulatorySpeedLimit_sequence);
10897 return offset;
10901 static const per_sequence_t dsrc_SpeedLimitList_sequence_of[1] = {
10902 { &hf_dsrc_SpeedLimitList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegulatorySpeedLimit },
10905 static int
10906 dissect_dsrc_SpeedLimitList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10907 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
10908 ett_dsrc_SpeedLimitList, dsrc_SpeedLimitList_sequence_of,
10909 1, 9, false);
10911 return offset;
10916 static int
10917 dissect_dsrc_LaneID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10918 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10919 0U, 255U, NULL, false);
10921 return offset;
10926 static int
10927 dissect_dsrc_ApproachID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10928 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
10929 0U, 15U, NULL, false);
10931 return offset;
10935 static int * const dsrc_LaneDirection_bits[] = {
10936 &hf_dsrc_LaneDirection_ingressPath,
10937 &hf_dsrc_LaneDirection_egressPath,
10938 NULL
10941 static int
10942 dissect_dsrc_LaneDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10943 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
10944 2, 2, false, dsrc_LaneDirection_bits, 2, NULL, NULL);
10946 return offset;
10950 static int * const dsrc_LaneSharing_bits[] = {
10951 &hf_dsrc_LaneSharing_overlappingLaneDescriptionProvided,
10952 &hf_dsrc_LaneSharing_multipleLanesTreatedAsOneLane,
10953 &hf_dsrc_LaneSharing_otherNonMotorizedTrafficTypes,
10954 &hf_dsrc_LaneSharing_individualMotorizedVehicleTraffic,
10955 &hf_dsrc_LaneSharing_busVehicleTraffic,
10956 &hf_dsrc_LaneSharing_taxiVehicleTraffic,
10957 &hf_dsrc_LaneSharing_pedestriansTraffic,
10958 &hf_dsrc_LaneSharing_cyclistVehicleTraffic,
10959 &hf_dsrc_LaneSharing_trackedVehicleTraffic,
10960 &hf_dsrc_LaneSharing_pedestrianTraffic,
10961 NULL
10964 static int
10965 dissect_dsrc_LaneSharing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10966 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
10967 10, 10, false, dsrc_LaneSharing_bits, 10, NULL, NULL);
10969 return offset;
10973 static int * const dsrc_LaneAttributes_Vehicle_bits[] = {
10974 &hf_dsrc_LaneAttributes_Vehicle_isVehicleRevocableLane,
10975 &hf_dsrc_LaneAttributes_Vehicle_isVehicleFlyOverLane,
10976 &hf_dsrc_LaneAttributes_Vehicle_hovLaneUseOnly,
10977 &hf_dsrc_LaneAttributes_Vehicle_restrictedToBusUse,
10978 &hf_dsrc_LaneAttributes_Vehicle_restrictedToTaxiUse,
10979 &hf_dsrc_LaneAttributes_Vehicle_restrictedFromPublicUse,
10980 &hf_dsrc_LaneAttributes_Vehicle_hasIRbeaconCoverage,
10981 &hf_dsrc_LaneAttributes_Vehicle_permissionOnRequest,
10982 NULL
10985 static int
10986 dissect_dsrc_LaneAttributes_Vehicle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
10987 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
10988 8, 8, true, dsrc_LaneAttributes_Vehicle_bits, 8, NULL, NULL);
10990 return offset;
10994 static int * const dsrc_LaneAttributes_Crosswalk_bits[] = {
10995 &hf_dsrc_LaneAttributes_Crosswalk_crosswalkRevocableLane,
10996 &hf_dsrc_LaneAttributes_Crosswalk_bicyleUseAllowed,
10997 &hf_dsrc_LaneAttributes_Crosswalk_isXwalkFlyOverLane,
10998 &hf_dsrc_LaneAttributes_Crosswalk_fixedCycleTime,
10999 &hf_dsrc_LaneAttributes_Crosswalk_biDirectionalCycleTimes,
11000 &hf_dsrc_LaneAttributes_Crosswalk_hasPushToWalkButton,
11001 &hf_dsrc_LaneAttributes_Crosswalk_audioSupport,
11002 &hf_dsrc_LaneAttributes_Crosswalk_rfSignalRequestPresent,
11003 &hf_dsrc_LaneAttributes_Crosswalk_unsignalizedSegmentsPresent,
11004 NULL
11007 static int
11008 dissect_dsrc_LaneAttributes_Crosswalk(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11009 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
11010 16, 16, false, dsrc_LaneAttributes_Crosswalk_bits, 9, NULL, NULL);
11012 return offset;
11016 static int * const dsrc_LaneAttributes_Bike_bits[] = {
11017 &hf_dsrc_LaneAttributes_Bike_bikeRevocableLane,
11018 &hf_dsrc_LaneAttributes_Bike_pedestrianUseAllowed,
11019 &hf_dsrc_LaneAttributes_Bike_isBikeFlyOverLane,
11020 &hf_dsrc_LaneAttributes_Bike_fixedCycleTime,
11021 &hf_dsrc_LaneAttributes_Bike_biDirectionalCycleTimes,
11022 &hf_dsrc_LaneAttributes_Bike_isolatedByBarrier,
11023 &hf_dsrc_LaneAttributes_Bike_unsignalizedSegmentsPresent,
11024 NULL
11027 static int
11028 dissect_dsrc_LaneAttributes_Bike(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11029 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
11030 16, 16, false, dsrc_LaneAttributes_Bike_bits, 7, NULL, NULL);
11032 return offset;
11036 static int * const dsrc_LaneAttributes_Sidewalk_bits[] = {
11037 &hf_dsrc_LaneAttributes_Sidewalk_sidewalk_RevocableLane,
11038 &hf_dsrc_LaneAttributes_Sidewalk_bicyleUseAllowed,
11039 &hf_dsrc_LaneAttributes_Sidewalk_isSidewalkFlyOverLane,
11040 &hf_dsrc_LaneAttributes_Sidewalk_walkBikes,
11041 NULL
11044 static int
11045 dissect_dsrc_LaneAttributes_Sidewalk(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11046 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
11047 16, 16, false, dsrc_LaneAttributes_Sidewalk_bits, 4, NULL, NULL);
11049 return offset;
11053 static int * const dsrc_LaneAttributes_Barrier_bits[] = {
11054 &hf_dsrc_LaneAttributes_Barrier_median_RevocableLane,
11055 &hf_dsrc_LaneAttributes_Barrier_median,
11056 &hf_dsrc_LaneAttributes_Barrier_whiteLineHashing,
11057 &hf_dsrc_LaneAttributes_Barrier_stripedLines,
11058 &hf_dsrc_LaneAttributes_Barrier_doubleStripedLines,
11059 &hf_dsrc_LaneAttributes_Barrier_trafficCones,
11060 &hf_dsrc_LaneAttributes_Barrier_constructionBarrier,
11061 &hf_dsrc_LaneAttributes_Barrier_trafficChannels,
11062 &hf_dsrc_LaneAttributes_Barrier_lowCurbs,
11063 &hf_dsrc_LaneAttributes_Barrier_highCurbs,
11064 NULL
11067 static int
11068 dissect_dsrc_LaneAttributes_Barrier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11069 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
11070 16, 16, false, dsrc_LaneAttributes_Barrier_bits, 10, NULL, NULL);
11072 return offset;
11076 static int * const dsrc_LaneAttributes_Striping_bits[] = {
11077 &hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesRevocableLane,
11078 &hf_dsrc_LaneAttributes_Striping_stripeDrawOnLeft,
11079 &hf_dsrc_LaneAttributes_Striping_stripeDrawOnRight,
11080 &hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesLeft,
11081 &hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesRight,
11082 &hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesAhead,
11083 NULL
11086 static int
11087 dissect_dsrc_LaneAttributes_Striping(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11088 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
11089 16, 16, false, dsrc_LaneAttributes_Striping_bits, 6, NULL, NULL);
11091 return offset;
11095 static int * const dsrc_LaneAttributes_TrackedVehicle_bits[] = {
11096 &hf_dsrc_LaneAttributes_TrackedVehicle_spec_RevocableLane,
11097 &hf_dsrc_LaneAttributes_TrackedVehicle_spec_commuterRailRoadTrack,
11098 &hf_dsrc_LaneAttributes_TrackedVehicle_spec_lightRailRoadTrack,
11099 &hf_dsrc_LaneAttributes_TrackedVehicle_spec_heavyRailRoadTrack,
11100 &hf_dsrc_LaneAttributes_TrackedVehicle_spec_otherRailType,
11101 NULL
11104 static int
11105 dissect_dsrc_LaneAttributes_TrackedVehicle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11106 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
11107 16, 16, false, dsrc_LaneAttributes_TrackedVehicle_bits, 5, NULL, NULL);
11109 return offset;
11113 static int * const dsrc_LaneAttributes_Parking_bits[] = {
11114 &hf_dsrc_LaneAttributes_Parking_parkingRevocableLane,
11115 &hf_dsrc_LaneAttributes_Parking_parallelParkingInUse,
11116 &hf_dsrc_LaneAttributes_Parking_headInParkingInUse,
11117 &hf_dsrc_LaneAttributes_Parking_doNotParkZone,
11118 &hf_dsrc_LaneAttributes_Parking_parkingForBusUse,
11119 &hf_dsrc_LaneAttributes_Parking_parkingForTaxiUse,
11120 &hf_dsrc_LaneAttributes_Parking_noPublicParkingUse,
11121 NULL
11124 static int
11125 dissect_dsrc_LaneAttributes_Parking(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11126 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
11127 16, 16, false, dsrc_LaneAttributes_Parking_bits, 7, NULL, NULL);
11129 return offset;
11133 static const value_string dsrc_LaneTypeAttributes_vals[] = {
11134 { 0, "vehicle" },
11135 { 1, "crosswalk" },
11136 { 2, "bikeLane" },
11137 { 3, "sidewalk" },
11138 { 4, "median" },
11139 { 5, "striping" },
11140 { 6, "trackedVehicle" },
11141 { 7, "parking" },
11142 { 0, NULL }
11145 static const per_choice_t dsrc_LaneTypeAttributes_choice[] = {
11146 { 0, &hf_dsrc_vehicle , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneAttributes_Vehicle },
11147 { 1, &hf_dsrc_crosswalk , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneAttributes_Crosswalk },
11148 { 2, &hf_dsrc_bikeLane , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneAttributes_Bike },
11149 { 3, &hf_dsrc_sidewalk , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneAttributes_Sidewalk },
11150 { 4, &hf_dsrc_median , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneAttributes_Barrier },
11151 { 5, &hf_dsrc_striping , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneAttributes_Striping },
11152 { 6, &hf_dsrc_trackedVehicle , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneAttributes_TrackedVehicle },
11153 { 7, &hf_dsrc_parking , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneAttributes_Parking },
11154 { 0, NULL, 0, NULL }
11157 static int
11158 dissect_dsrc_LaneTypeAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11159 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
11160 ett_dsrc_LaneTypeAttributes, dsrc_LaneTypeAttributes_choice,
11161 NULL);
11163 return offset;
11167 static const per_sequence_t dsrc_LaneAttributes_sequence[] = {
11168 { &hf_dsrc_directionalUse , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneDirection },
11169 { &hf_dsrc_sharedWith , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneSharing },
11170 { &hf_dsrc_laneType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneTypeAttributes },
11171 { &hf_dsrc_laRegional , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_RegionalExtension },
11172 { NULL, 0, 0, NULL }
11175 static int
11176 dissect_dsrc_LaneAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11177 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
11178 ((its_private_data_t*)actx->private_data)->type = Reg_LaneAttributes;
11179 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11180 ett_dsrc_LaneAttributes, dsrc_LaneAttributes_sequence);
11182 ((its_private_data_t*)actx->private_data)->type = save;
11183 return offset;
11187 static int * const dsrc_AllowedManeuvers_bits[] = {
11188 &hf_dsrc_AllowedManeuvers_maneuverStraightAllowed,
11189 &hf_dsrc_AllowedManeuvers_maneuverLeftAllowed,
11190 &hf_dsrc_AllowedManeuvers_maneuverRightAllowed,
11191 &hf_dsrc_AllowedManeuvers_maneuverUTurnAllowed,
11192 &hf_dsrc_AllowedManeuvers_maneuverLeftTurnOnRedAllowed,
11193 &hf_dsrc_AllowedManeuvers_maneuverRightTurnOnRedAllowed,
11194 &hf_dsrc_AllowedManeuvers_maneuverLaneChangeAllowed,
11195 &hf_dsrc_AllowedManeuvers_maneuverNoStoppingAllowed,
11196 &hf_dsrc_AllowedManeuvers_yieldAllwaysRequired,
11197 &hf_dsrc_AllowedManeuvers_goWithHalt,
11198 &hf_dsrc_AllowedManeuvers_caution,
11199 &hf_dsrc_AllowedManeuvers_reserved1,
11200 NULL
11203 static int
11204 dissect_dsrc_AllowedManeuvers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11205 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
11206 12, 12, false, dsrc_AllowedManeuvers_bits, 12, NULL, NULL);
11208 return offset;
11213 static int
11214 dissect_dsrc_Offset_B10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11215 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11216 -512, 511U, NULL, false);
11218 return offset;
11222 static const per_sequence_t dsrc_Node_XY_20b_sequence[] = {
11223 { &hf_dsrc_n20bX , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B10 },
11224 { &hf_dsrc_n20bY , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B10 },
11225 { NULL, 0, 0, NULL }
11228 static int
11229 dissect_dsrc_Node_XY_20b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11230 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11231 ett_dsrc_Node_XY_20b, dsrc_Node_XY_20b_sequence);
11233 return offset;
11238 static int
11239 dissect_dsrc_Offset_B11(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11240 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11241 -1024, 1023U, NULL, false);
11243 return offset;
11247 static const per_sequence_t dsrc_Node_XY_22b_sequence[] = {
11248 { &hf_dsrc_n22bX , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B11 },
11249 { &hf_dsrc_n22bY , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B11 },
11250 { NULL, 0, 0, NULL }
11253 static int
11254 dissect_dsrc_Node_XY_22b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11255 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11256 ett_dsrc_Node_XY_22b, dsrc_Node_XY_22b_sequence);
11258 return offset;
11263 static int
11264 dissect_dsrc_Offset_B12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11265 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11266 -2048, 2047U, NULL, false);
11268 return offset;
11272 static const per_sequence_t dsrc_Node_XY_24b_sequence[] = {
11273 { &hf_dsrc_n24bX , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B12 },
11274 { &hf_dsrc_n24bY , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B12 },
11275 { NULL, 0, 0, NULL }
11278 static int
11279 dissect_dsrc_Node_XY_24b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11280 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11281 ett_dsrc_Node_XY_24b, dsrc_Node_XY_24b_sequence);
11283 return offset;
11288 static int
11289 dissect_dsrc_Offset_B13(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11290 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11291 -4096, 4095U, NULL, false);
11293 return offset;
11297 static const per_sequence_t dsrc_Node_XY_26b_sequence[] = {
11298 { &hf_dsrc_n26bX , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B13 },
11299 { &hf_dsrc_n26bY , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B13 },
11300 { NULL, 0, 0, NULL }
11303 static int
11304 dissect_dsrc_Node_XY_26b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11305 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11306 ett_dsrc_Node_XY_26b, dsrc_Node_XY_26b_sequence);
11308 return offset;
11313 static int
11314 dissect_dsrc_Offset_B14(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11315 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11316 -8192, 8191U, NULL, false);
11318 return offset;
11322 static const per_sequence_t dsrc_Node_XY_28b_sequence[] = {
11323 { &hf_dsrc_n28bX , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B14 },
11324 { &hf_dsrc_n28bY , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B14 },
11325 { NULL, 0, 0, NULL }
11328 static int
11329 dissect_dsrc_Node_XY_28b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11330 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11331 ett_dsrc_Node_XY_28b, dsrc_Node_XY_28b_sequence);
11333 return offset;
11338 static int
11339 dissect_dsrc_Offset_B16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11340 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11341 -32768, 32767U, NULL, false);
11343 return offset;
11347 static const per_sequence_t dsrc_Node_XY_32b_sequence[] = {
11348 { &hf_dsrc_n32bX , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B16 },
11349 { &hf_dsrc_n32bY , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B16 },
11350 { NULL, 0, 0, NULL }
11353 static int
11354 dissect_dsrc_Node_XY_32b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11355 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11356 ett_dsrc_Node_XY_32b, dsrc_Node_XY_32b_sequence);
11358 return offset;
11362 static const per_sequence_t dsrc_Node_LLmD_64b_sequence[] = {
11363 { &hf_dsrc_lon , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
11364 { &hf_dsrc_lat , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
11365 { NULL, 0, 0, NULL }
11368 static int
11369 dissect_dsrc_Node_LLmD_64b(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11370 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11371 ett_dsrc_Node_LLmD_64b, dsrc_Node_LLmD_64b_sequence);
11373 return offset;
11377 static const value_string dsrc_NodeOffsetPointXY_vals[] = {
11378 { 0, "node-XY1" },
11379 { 1, "node-XY2" },
11380 { 2, "node-XY3" },
11381 { 3, "node-XY4" },
11382 { 4, "node-XY5" },
11383 { 5, "node-XY6" },
11384 { 6, "node-LatLon" },
11385 { 7, "regional" },
11386 { 0, NULL }
11389 static const per_choice_t dsrc_NodeOffsetPointXY_choice[] = {
11390 { 0, &hf_dsrc_node_XY1 , ASN1_NO_EXTENSIONS , dissect_dsrc_Node_XY_20b },
11391 { 1, &hf_dsrc_node_XY2 , ASN1_NO_EXTENSIONS , dissect_dsrc_Node_XY_22b },
11392 { 2, &hf_dsrc_node_XY3 , ASN1_NO_EXTENSIONS , dissect_dsrc_Node_XY_24b },
11393 { 3, &hf_dsrc_node_XY4 , ASN1_NO_EXTENSIONS , dissect_dsrc_Node_XY_26b },
11394 { 4, &hf_dsrc_node_XY5 , ASN1_NO_EXTENSIONS , dissect_dsrc_Node_XY_28b },
11395 { 5, &hf_dsrc_node_XY6 , ASN1_NO_EXTENSIONS , dissect_dsrc_Node_XY_32b },
11396 { 6, &hf_dsrc_node_LatLon , ASN1_NO_EXTENSIONS , dissect_dsrc_Node_LLmD_64b },
11397 { 7, &hf_dsrc_nopxyRegional , ASN1_NO_EXTENSIONS , dissect_dsrc_RegionalExtension },
11398 { 0, NULL, 0, NULL }
11401 static int
11402 dissect_dsrc_NodeOffsetPointXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11403 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
11404 ((its_private_data_t*)actx->private_data)->type = Reg_NodeOffsetPointXY;
11405 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
11406 ett_dsrc_NodeOffsetPointXY, dsrc_NodeOffsetPointXY_choice,
11407 NULL);
11409 ((its_private_data_t*)actx->private_data)->type = save;
11410 return offset;
11414 static const value_string dsrc_NodeAttributeXY_vals[] = {
11415 { 0, "reserved" },
11416 { 1, "stopLine" },
11417 { 2, "roundedCapStyleA" },
11418 { 3, "roundedCapStyleB" },
11419 { 4, "mergePoint" },
11420 { 5, "divergePoint" },
11421 { 6, "downstreamStopLine" },
11422 { 7, "downstreamStartNode" },
11423 { 8, "closedToTraffic" },
11424 { 9, "safeIsland" },
11425 { 10, "curbPresentAtStepOff" },
11426 { 11, "hydrantPresent" },
11427 { 0, NULL }
11431 static int
11432 dissect_dsrc_NodeAttributeXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11433 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
11434 12, NULL, true, 0, NULL);
11436 return offset;
11440 static const per_sequence_t dsrc_NodeAttributeXYList_sequence_of[1] = {
11441 { &hf_dsrc_NodeAttributeXYList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeAttributeXY },
11444 static int
11445 dissect_dsrc_NodeAttributeXYList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11446 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11447 ett_dsrc_NodeAttributeXYList, dsrc_NodeAttributeXYList_sequence_of,
11448 1, 8, false);
11450 return offset;
11454 static const value_string dsrc_SegmentAttributeXY_vals[] = {
11455 { 0, "reserved" },
11456 { 1, "doNotBlock" },
11457 { 2, "whiteLine" },
11458 { 3, "mergingLaneLeft" },
11459 { 4, "mergingLaneRight" },
11460 { 5, "curbOnLeft" },
11461 { 6, "curbOnRight" },
11462 { 7, "loadingzoneOnLeft" },
11463 { 8, "loadingzoneOnRight" },
11464 { 9, "turnOutPointOnLeft" },
11465 { 10, "turnOutPointOnRight" },
11466 { 11, "adjacentParkingOnLeft" },
11467 { 12, "adjacentParkingOnRight" },
11468 { 13, "adjacentBikeLaneOnLeft" },
11469 { 14, "adjacentBikeLaneOnRight" },
11470 { 15, "sharedBikeLane" },
11471 { 16, "bikeBoxInFront" },
11472 { 17, "transitStopOnLeft" },
11473 { 18, "transitStopOnRight" },
11474 { 19, "transitStopInLane" },
11475 { 20, "sharedWithTrackedVehicle" },
11476 { 21, "safeIsland" },
11477 { 22, "lowCurbsPresent" },
11478 { 23, "rumbleStripPresent" },
11479 { 24, "audibleSignalingPresent" },
11480 { 25, "adaptiveTimingPresent" },
11481 { 26, "rfSignalRequestPresent" },
11482 { 27, "partialCurbIntrusion" },
11483 { 28, "taperToLeft" },
11484 { 29, "taperToRight" },
11485 { 30, "taperToCenterLine" },
11486 { 31, "parallelParking" },
11487 { 32, "headInParking" },
11488 { 33, "freeParking" },
11489 { 34, "timeRestrictionsOnParking" },
11490 { 35, "costToPark" },
11491 { 36, "midBlockCurbPresent" },
11492 { 37, "unEvenPavementPresent" },
11493 { 0, NULL }
11497 static int
11498 dissect_dsrc_SegmentAttributeXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11499 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
11500 38, NULL, true, 0, NULL);
11502 return offset;
11506 static const per_sequence_t dsrc_SegmentAttributeXYList_sequence_of[1] = {
11507 { &hf_dsrc_SegmentAttributeXYList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SegmentAttributeXY },
11510 static int
11511 dissect_dsrc_SegmentAttributeXYList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11512 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11513 ett_dsrc_SegmentAttributeXYList, dsrc_SegmentAttributeXYList_sequence_of,
11514 1, 8, false);
11516 return offset;
11521 static int
11522 dissect_dsrc_DeltaAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11523 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11524 -150, 150U, NULL, false);
11526 return offset;
11531 static int
11532 dissect_dsrc_RoadwayCrownAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11533 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11534 -128, 127U, NULL, false);
11536 return offset;
11541 static int
11542 dissect_dsrc_MergeDivergeNodeAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11543 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11544 -180, 180U, NULL, false);
11546 return offset;
11550 static const per_sequence_t dsrc_T_LaneDataAttributeRegional_sequence_of[1] = {
11551 { &hf_dsrc_ldaRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
11554 static int
11555 dissect_dsrc_T_LaneDataAttributeRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11556 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11557 ett_dsrc_T_LaneDataAttributeRegional, dsrc_T_LaneDataAttributeRegional_sequence_of,
11558 1, 4, false);
11560 return offset;
11564 static const value_string dsrc_LaneDataAttribute_vals[] = {
11565 { 0, "pathEndPointAngle" },
11566 { 1, "laneCrownPointCenter" },
11567 { 2, "laneCrownPointLeft" },
11568 { 3, "laneCrownPointRight" },
11569 { 4, "laneAngle" },
11570 { 5, "speedLimits" },
11571 { 6, "regional" },
11572 { 0, NULL }
11575 static const per_choice_t dsrc_LaneDataAttribute_choice[] = {
11576 { 0, &hf_dsrc_pathEndPointAngle, ASN1_EXTENSION_ROOT , dissect_dsrc_DeltaAngle },
11577 { 1, &hf_dsrc_laneCrownPointCenter, ASN1_EXTENSION_ROOT , dissect_dsrc_RoadwayCrownAngle },
11578 { 2, &hf_dsrc_laneCrownPointLeft, ASN1_EXTENSION_ROOT , dissect_dsrc_RoadwayCrownAngle },
11579 { 3, &hf_dsrc_laneCrownPointRight, ASN1_EXTENSION_ROOT , dissect_dsrc_RoadwayCrownAngle },
11580 { 4, &hf_dsrc_laneAngle , ASN1_EXTENSION_ROOT , dissect_dsrc_MergeDivergeNodeAngle },
11581 { 5, &hf_dsrc_speedLimits , ASN1_EXTENSION_ROOT , dissect_dsrc_SpeedLimitList },
11582 { 6, &hf_dsrc_ldaRegional , ASN1_EXTENSION_ROOT , dissect_dsrc_T_LaneDataAttributeRegional },
11583 { 0, NULL, 0, NULL }
11586 static int
11587 dissect_dsrc_LaneDataAttribute(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11588 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
11589 ((its_private_data_t*)actx->private_data)->type = Reg_LaneDataAttribute;
11590 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
11591 ett_dsrc_LaneDataAttribute, dsrc_LaneDataAttribute_choice,
11592 NULL);
11594 ((its_private_data_t*)actx->private_data)->type = save;
11595 return offset;
11599 static const per_sequence_t dsrc_LaneDataAttributeList_sequence_of[1] = {
11600 { &hf_dsrc_LaneDataAttributeList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneDataAttribute },
11603 static int
11604 dissect_dsrc_LaneDataAttributeList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11605 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11606 ett_dsrc_LaneDataAttributeList, dsrc_LaneDataAttributeList_sequence_of,
11607 1, 8, false);
11609 return offset;
11613 static const per_sequence_t dsrc_T_NodeAttributeSetXYRegional_sequence_of[1] = {
11614 { &hf_dsrc_nasxyRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
11617 static int
11618 dissect_dsrc_T_NodeAttributeSetXYRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11619 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11620 ett_dsrc_T_NodeAttributeSetXYRegional, dsrc_T_NodeAttributeSetXYRegional_sequence_of,
11621 1, 4, false);
11623 return offset;
11627 static const per_sequence_t dsrc_NodeAttributeSetXY_sequence[] = {
11628 { &hf_dsrc_localNode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_NodeAttributeXYList },
11629 { &hf_dsrc_disabled , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SegmentAttributeXYList },
11630 { &hf_dsrc_enabled , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SegmentAttributeXYList },
11631 { &hf_dsrc_data , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneDataAttributeList },
11632 { &hf_dsrc_dWidth , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Offset_B10 },
11633 { &hf_dsrc_dElevation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Offset_B10 },
11634 { &hf_dsrc_nasxyRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_NodeAttributeSetXYRegional },
11635 { NULL, 0, 0, NULL }
11638 static int
11639 dissect_dsrc_NodeAttributeSetXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11640 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
11641 ((its_private_data_t*)actx->private_data)->type = Reg_NodeAttributeSetXY;
11642 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11643 ett_dsrc_NodeAttributeSetXY, dsrc_NodeAttributeSetXY_sequence);
11645 ((its_private_data_t*)actx->private_data)->type = save;
11646 return offset;
11650 static const per_sequence_t dsrc_NodeXY_sequence[] = {
11651 { &hf_dsrc_delta , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeOffsetPointXY },
11652 { &hf_dsrc_attributes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_NodeAttributeSetXY },
11653 { NULL, 0, 0, NULL }
11656 static int
11657 dissect_dsrc_NodeXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11658 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11659 ett_dsrc_NodeXY, dsrc_NodeXY_sequence);
11661 return offset;
11665 static const per_sequence_t dsrc_NodeSetXY_sequence_of[1] = {
11666 { &hf_dsrc_NodeSetXY_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeXY },
11669 static int
11670 dissect_dsrc_NodeSetXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11671 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11672 ett_dsrc_NodeSetXY, dsrc_NodeSetXY_sequence_of,
11673 2, 63, false);
11675 return offset;
11680 static int
11681 dissect_dsrc_DrivenLineOffsetSm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11682 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11683 -2047, 2047U, NULL, false);
11685 return offset;
11690 static int
11691 dissect_dsrc_DrivenLineOffsetLg(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11692 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11693 -32767, 32767U, NULL, false);
11695 return offset;
11699 static const value_string dsrc_T_offsetXaxis_vals[] = {
11700 { 0, "small" },
11701 { 1, "large" },
11702 { 0, NULL }
11705 static const per_choice_t dsrc_T_offsetXaxis_choice[] = {
11706 { 0, &hf_dsrc_small , ASN1_NO_EXTENSIONS , dissect_dsrc_DrivenLineOffsetSm },
11707 { 1, &hf_dsrc_large , ASN1_NO_EXTENSIONS , dissect_dsrc_DrivenLineOffsetLg },
11708 { 0, NULL, 0, NULL }
11711 static int
11712 dissect_dsrc_T_offsetXaxis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11713 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
11714 ett_dsrc_T_offsetXaxis, dsrc_T_offsetXaxis_choice,
11715 NULL);
11717 return offset;
11721 static const value_string dsrc_T_offsetYaxis_vals[] = {
11722 { 0, "small" },
11723 { 1, "large" },
11724 { 0, NULL }
11727 static const per_choice_t dsrc_T_offsetYaxis_choice[] = {
11728 { 0, &hf_dsrc_small , ASN1_NO_EXTENSIONS , dissect_dsrc_DrivenLineOffsetSm },
11729 { 1, &hf_dsrc_large , ASN1_NO_EXTENSIONS , dissect_dsrc_DrivenLineOffsetLg },
11730 { 0, NULL, 0, NULL }
11733 static int
11734 dissect_dsrc_T_offsetYaxis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11735 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
11736 ett_dsrc_T_offsetYaxis, dsrc_T_offsetYaxis_choice,
11737 NULL);
11739 return offset;
11744 static int
11745 dissect_dsrc_Angle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11746 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11747 0U, 28800U, NULL, false);
11749 return offset;
11754 static int
11755 dissect_dsrc_Scale_B12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11756 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11757 -2048, 2047U, NULL, false);
11759 return offset;
11763 static const per_sequence_t dsrc_T_ComputedLaneRegional_sequence_of[1] = {
11764 { &hf_dsrc_clRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
11767 static int
11768 dissect_dsrc_T_ComputedLaneRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11769 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11770 ett_dsrc_T_ComputedLaneRegional, dsrc_T_ComputedLaneRegional_sequence_of,
11771 1, 4, false);
11773 return offset;
11777 static const per_sequence_t dsrc_ComputedLane_sequence[] = {
11778 { &hf_dsrc_referenceLaneId, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneID },
11779 { &hf_dsrc_offsetXaxis , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_T_offsetXaxis },
11780 { &hf_dsrc_offsetYaxis , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_T_offsetYaxis },
11781 { &hf_dsrc_rotateXY , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Angle },
11782 { &hf_dsrc_scaleXaxis , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Scale_B12 },
11783 { &hf_dsrc_scaleYaxis , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Scale_B12 },
11784 { &hf_dsrc_clRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_ComputedLaneRegional },
11785 { NULL, 0, 0, NULL }
11788 static int
11789 dissect_dsrc_ComputedLane(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11790 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
11791 ((its_private_data_t*)actx->private_data)->type = Reg_ComputedLane;
11792 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11793 ett_dsrc_ComputedLane, dsrc_ComputedLane_sequence);
11795 ((its_private_data_t*)actx->private_data)->type = save;
11796 return offset;
11800 static const value_string dsrc_NodeListXY_vals[] = {
11801 { 0, "nodes" },
11802 { 1, "computed" },
11803 { 0, NULL }
11806 static const per_choice_t dsrc_NodeListXY_choice[] = {
11807 { 0, &hf_dsrc_nodes , ASN1_EXTENSION_ROOT , dissect_dsrc_NodeSetXY },
11808 { 1, &hf_dsrc_computed , ASN1_EXTENSION_ROOT , dissect_dsrc_ComputedLane },
11809 { 0, NULL, 0, NULL }
11812 static int
11813 dissect_dsrc_NodeListXY(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11814 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
11815 ett_dsrc_NodeListXY, dsrc_NodeListXY_choice,
11816 NULL);
11818 return offset;
11822 static const per_sequence_t dsrc_ConnectingLane_sequence[] = {
11823 { &hf_dsrc_lane , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneID },
11824 { &hf_dsrc_maneuver , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_AllowedManeuvers },
11825 { NULL, 0, 0, NULL }
11828 static int
11829 dissect_dsrc_ConnectingLane(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11830 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11831 ett_dsrc_ConnectingLane, dsrc_ConnectingLane_sequence);
11833 return offset;
11838 static int
11839 dissect_dsrc_SignalGroupID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11840 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11841 0U, 255U, NULL, false);
11843 return offset;
11848 static int
11849 dissect_dsrc_RestrictionClassID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11850 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11851 0U, 255U, NULL, false);
11853 return offset;
11858 static int
11859 dissect_dsrc_LaneConnectionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11860 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
11861 0U, 255U, NULL, false);
11863 return offset;
11867 static const per_sequence_t dsrc_Connection_sequence[] = {
11868 { &hf_dsrc_connectingLane , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ConnectingLane },
11869 { &hf_dsrc_remoteIntersection, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_IntersectionReferenceID },
11870 { &hf_dsrc_signalGroup , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_SignalGroupID },
11871 { &hf_dsrc_userClass , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_RestrictionClassID },
11872 { &hf_dsrc_connectionID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_LaneConnectionID },
11873 { NULL, 0, 0, NULL }
11876 static int
11877 dissect_dsrc_Connection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11878 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11879 ett_dsrc_Connection, dsrc_Connection_sequence);
11881 return offset;
11885 static const per_sequence_t dsrc_ConnectsToList_sequence_of[1] = {
11886 { &hf_dsrc_ConnectsToList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Connection },
11889 static int
11890 dissect_dsrc_ConnectsToList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11891 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11892 ett_dsrc_ConnectsToList, dsrc_ConnectsToList_sequence_of,
11893 1, 16, false);
11895 return offset;
11899 static const per_sequence_t dsrc_OverlayLaneList_sequence_of[1] = {
11900 { &hf_dsrc_OverlayLaneList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneID },
11903 static int
11904 dissect_dsrc_OverlayLaneList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11905 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11906 ett_dsrc_OverlayLaneList, dsrc_OverlayLaneList_sequence_of,
11907 1, 5, false);
11909 return offset;
11913 static const per_sequence_t dsrc_T_GenericLaneRegional_sequence_of[1] = {
11914 { &hf_dsrc_glRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
11917 static int
11918 dissect_dsrc_T_GenericLaneRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11919 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11920 ett_dsrc_T_GenericLaneRegional, dsrc_T_GenericLaneRegional_sequence_of,
11921 1, 4, false);
11923 return offset;
11927 static const per_sequence_t dsrc_GenericLane_sequence[] = {
11928 { &hf_dsrc_laneID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneID },
11929 { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName },
11930 { &hf_dsrc_ingressApproach, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ApproachID },
11931 { &hf_dsrc_egressApproach , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ApproachID },
11932 { &hf_dsrc_laneAttributes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneAttributes },
11933 { &hf_dsrc_maneuvers , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_AllowedManeuvers },
11934 { &hf_dsrc_nodeList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeListXY },
11935 { &hf_dsrc_connectsTo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ConnectsToList },
11936 { &hf_dsrc_overlays , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_OverlayLaneList },
11937 { &hf_dsrc_glRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_GenericLaneRegional },
11938 { NULL, 0, 0, NULL }
11941 static int
11942 dissect_dsrc_GenericLane(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11943 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
11944 ((its_private_data_t*)actx->private_data)->type = Reg_GenericLane;
11945 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11946 ett_dsrc_GenericLane, dsrc_GenericLane_sequence);
11948 ((its_private_data_t*)actx->private_data)->type = save;
11949 return offset;
11953 static const per_sequence_t dsrc_LaneList_sequence_of[1] = {
11954 { &hf_dsrc_LaneList_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_GenericLane },
11957 static int
11958 dissect_dsrc_LaneList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11959 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11960 ett_dsrc_LaneList, dsrc_LaneList_sequence_of,
11961 1, 255, false);
11963 return offset;
11967 static const per_sequence_t dsrc_SignalControlZone_sequence[] = {
11968 { &hf_dsrc_zone , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
11969 { NULL, 0, 0, NULL }
11972 static int
11973 dissect_dsrc_SignalControlZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11974 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
11975 ((its_private_data_t*)actx->private_data)->type = Reg_SignalControlZone;
11976 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
11977 ett_dsrc_SignalControlZone, dsrc_SignalControlZone_sequence);
11979 ((its_private_data_t*)actx->private_data)->type = save;
11980 return offset;
11984 static const per_sequence_t dsrc_PreemptPriorityList_sequence_of[1] = {
11985 { &hf_dsrc_PreemptPriorityList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalControlZone },
11988 static int
11989 dissect_dsrc_PreemptPriorityList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
11990 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
11991 ett_dsrc_PreemptPriorityList, dsrc_PreemptPriorityList_sequence_of,
11992 1, 32, false);
11994 return offset;
11998 static const per_sequence_t dsrc_T_IntersectionGeometryRegional_sequence_of[1] = {
11999 { &hf_dsrc_igRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
12002 static int
12003 dissect_dsrc_T_IntersectionGeometryRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12004 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12005 ett_dsrc_T_IntersectionGeometryRegional, dsrc_T_IntersectionGeometryRegional_sequence_of,
12006 1, 4, false);
12008 return offset;
12012 static const per_sequence_t dsrc_IntersectionGeometry_sequence[] = {
12013 { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName },
12014 { &hf_dsrc_igId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID },
12015 { &hf_dsrc_revision , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount },
12016 { &hf_dsrc_refPoint , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_Position3D },
12017 { &hf_dsrc_laneWidth , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneWidth },
12018 { &hf_dsrc_speedLimits , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedLimitList },
12019 { &hf_dsrc_laneSet , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneList },
12020 { &hf_dsrc_preemptPriorityData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_PreemptPriorityList },
12021 { &hf_dsrc_igRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_IntersectionGeometryRegional },
12022 { NULL, 0, 0, NULL }
12025 static int
12026 dissect_dsrc_IntersectionGeometry(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12027 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
12028 ((its_private_data_t*)actx->private_data)->type = Reg_IntersectionGeometry;
12029 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12030 ett_dsrc_IntersectionGeometry, dsrc_IntersectionGeometry_sequence);
12032 ((its_private_data_t*)actx->private_data)->type = save;
12033 return offset;
12037 static const per_sequence_t dsrc_IntersectionGeometryList_sequence_of[1] = {
12038 { &hf_dsrc_IntersectionGeometryList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionGeometry },
12041 static int
12042 dissect_dsrc_IntersectionGeometryList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12043 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12044 ett_dsrc_IntersectionGeometryList, dsrc_IntersectionGeometryList_sequence_of,
12045 1, 32, false);
12047 return offset;
12052 static int
12053 dissect_dsrc_RoadSegmentID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12054 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12055 0U, 65535U, NULL, false);
12057 return offset;
12061 static const per_sequence_t dsrc_RoadSegmentReferenceID_sequence[] = {
12062 { &hf_dsrc_region , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_RoadRegulatorID },
12063 { &hf_dsrc_rsrId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RoadSegmentID },
12064 { NULL, 0, 0, NULL }
12067 static int
12068 dissect_dsrc_RoadSegmentReferenceID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12069 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12070 ett_dsrc_RoadSegmentReferenceID, dsrc_RoadSegmentReferenceID_sequence);
12072 return offset;
12076 static const per_sequence_t dsrc_RoadLaneSetList_sequence_of[1] = {
12077 { &hf_dsrc_RoadLaneSetList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_GenericLane },
12080 static int
12081 dissect_dsrc_RoadLaneSetList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12082 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12083 ett_dsrc_RoadLaneSetList, dsrc_RoadLaneSetList_sequence_of,
12084 1, 255, false);
12086 return offset;
12090 static const per_sequence_t dsrc_T_RoadSegmentRegional_sequence_of[1] = {
12091 { &hf_dsrc_rsRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
12094 static int
12095 dissect_dsrc_T_RoadSegmentRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12096 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12097 ett_dsrc_T_RoadSegmentRegional, dsrc_T_RoadSegmentRegional_sequence_of,
12098 1, 4, false);
12100 return offset;
12104 static const per_sequence_t dsrc_RoadSegment_sequence[] = {
12105 { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName },
12106 { &hf_dsrc_rsId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RoadSegmentReferenceID },
12107 { &hf_dsrc_revision , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount },
12108 { &hf_dsrc_refPoint , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_Position3D },
12109 { &hf_dsrc_laneWidth , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneWidth },
12110 { &hf_dsrc_speedLimits , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedLimitList },
12111 { &hf_dsrc_roadLaneSet , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RoadLaneSetList },
12112 { &hf_dsrc_rsRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_RoadSegmentRegional },
12113 { NULL, 0, 0, NULL }
12116 static int
12117 dissect_dsrc_RoadSegment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12118 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
12119 ((its_private_data_t*)actx->private_data)->type = Reg_RoadSegment;
12120 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12121 ett_dsrc_RoadSegment, dsrc_RoadSegment_sequence);
12123 ((its_private_data_t*)actx->private_data)->type = save;
12124 return offset;
12128 static const per_sequence_t dsrc_RoadSegmentList_sequence_of[1] = {
12129 { &hf_dsrc_RoadSegmentList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RoadSegment },
12132 static int
12133 dissect_dsrc_RoadSegmentList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12134 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12135 ett_dsrc_RoadSegmentList, dsrc_RoadSegmentList_sequence_of,
12136 1, 32, false);
12138 return offset;
12143 static int
12144 dissect_dsrc_IA5String_SIZE_1_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12145 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
12146 1, 255, false,
12147 NULL);
12149 return offset;
12153 static const per_sequence_t dsrc_DataParameters_sequence[] = {
12154 { &hf_dsrc_processMethod , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IA5String_SIZE_1_255 },
12155 { &hf_dsrc_processAgency , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IA5String_SIZE_1_255 },
12156 { &hf_dsrc_lastCheckedDate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IA5String_SIZE_1_255 },
12157 { &hf_dsrc_geoidUsed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IA5String_SIZE_1_255 },
12158 { NULL, 0, 0, NULL }
12161 static int
12162 dissect_dsrc_DataParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12163 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12164 ett_dsrc_DataParameters, dsrc_DataParameters_sequence);
12166 return offset;
12170 static const value_string dsrc_RestrictionAppliesTo_vals[] = {
12171 { 0, "none" },
12172 { 1, "equippedTransit" },
12173 { 2, "equippedTaxis" },
12174 { 3, "equippedOther" },
12175 { 4, "emissionCompliant" },
12176 { 5, "equippedBicycle" },
12177 { 6, "weightCompliant" },
12178 { 7, "heightCompliant" },
12179 { 8, "pedestrians" },
12180 { 9, "slowMovingPersons" },
12181 { 10, "wheelchairUsers" },
12182 { 11, "visualDisabilities" },
12183 { 12, "audioDisabilities" },
12184 { 13, "otherUnknownDisabilities" },
12185 { 0, NULL }
12189 static int
12190 dissect_dsrc_RestrictionAppliesTo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12191 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12192 14, NULL, true, 0, NULL);
12194 return offset;
12198 static const per_sequence_t dsrc_T_RestrictionUserTypeRegional_sequence_of[1] = {
12199 { &hf_dsrc_rutRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
12202 static int
12203 dissect_dsrc_T_RestrictionUserTypeRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12204 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12205 ett_dsrc_T_RestrictionUserTypeRegional, dsrc_T_RestrictionUserTypeRegional_sequence_of,
12206 1, 4, false);
12208 return offset;
12212 static const value_string dsrc_RestrictionUserType_vals[] = {
12213 { 0, "basicType" },
12214 { 1, "regional" },
12215 { 0, NULL }
12218 static const per_choice_t dsrc_RestrictionUserType_choice[] = {
12219 { 0, &hf_dsrc_basicType , ASN1_EXTENSION_ROOT , dissect_dsrc_RestrictionAppliesTo },
12220 { 1, &hf_dsrc_rutRegional , ASN1_EXTENSION_ROOT , dissect_dsrc_T_RestrictionUserTypeRegional },
12221 { 0, NULL, 0, NULL }
12224 static int
12225 dissect_dsrc_RestrictionUserType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12226 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
12227 ((its_private_data_t*)actx->private_data)->type = Reg_RestrictionUserType;
12228 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
12229 ett_dsrc_RestrictionUserType, dsrc_RestrictionUserType_choice,
12230 NULL);
12232 ((its_private_data_t*)actx->private_data)->type = save;
12233 return offset;
12237 static const per_sequence_t dsrc_RestrictionUserTypeList_sequence_of[1] = {
12238 { &hf_dsrc_RestrictionUserTypeList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RestrictionUserType },
12241 static int
12242 dissect_dsrc_RestrictionUserTypeList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12243 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12244 ett_dsrc_RestrictionUserTypeList, dsrc_RestrictionUserTypeList_sequence_of,
12245 1, 16, false);
12247 return offset;
12251 static const per_sequence_t dsrc_RestrictionClassAssignment_sequence[] = {
12252 { &hf_dsrc_scaId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RestrictionClassID },
12253 { &hf_dsrc_users , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RestrictionUserTypeList },
12254 { NULL, 0, 0, NULL }
12257 static int
12258 dissect_dsrc_RestrictionClassAssignment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12259 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12260 ett_dsrc_RestrictionClassAssignment, dsrc_RestrictionClassAssignment_sequence);
12262 return offset;
12266 static const per_sequence_t dsrc_RestrictionClassList_sequence_of[1] = {
12267 { &hf_dsrc_RestrictionClassList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RestrictionClassAssignment },
12270 static int
12271 dissect_dsrc_RestrictionClassList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12272 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12273 ett_dsrc_RestrictionClassList, dsrc_RestrictionClassList_sequence_of,
12274 1, 254, false);
12276 return offset;
12280 static const per_sequence_t dsrc_T_MAPRegional_sequence_of[1] = {
12281 { &hf_dsrc_mapRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
12284 static int
12285 dissect_dsrc_T_MAPRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12286 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12287 ett_dsrc_T_MAPRegional, dsrc_T_MAPRegional_sequence_of,
12288 1, 4, false);
12290 return offset;
12294 static const per_sequence_t dsrc_MapData_sequence[] = {
12295 { &hf_dsrc_mdTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear },
12296 { &hf_dsrc_msgIssueRevision, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount },
12297 { &hf_dsrc_layerType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LayerType },
12298 { &hf_dsrc_layerID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LayerID },
12299 { &hf_dsrc_mdIntersections, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionGeometryList },
12300 { &hf_dsrc_roadSegments , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RoadSegmentList },
12301 { &hf_dsrc_dataParameters , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DataParameters },
12302 { &hf_dsrc_restrictionList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RestrictionClassList },
12303 { &hf_dsrc_mapRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_MAPRegional },
12304 { NULL, 0, 0, NULL }
12307 static int
12308 dissect_dsrc_MapData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12309 its_private_data_t *regext = wmem_new0(actx->pinfo->pool, its_private_data_t);
12310 actx->private_data = (void*)regext;
12311 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "MAPEM");
12312 col_set_str(actx->pinfo->cinfo, COL_INFO, "MAPEM");
12313 regext->type = Reg_MapData;
12314 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12315 ett_dsrc_MapData, dsrc_MapData_sequence);
12317 return offset;
12321 static const value_string dsrc_RTCM_Revision_vals[] = {
12322 { 0, "unknown" },
12323 { 1, "rtcmRev2" },
12324 { 2, "rtcmRev3" },
12325 { 3, "reserved" },
12326 { 0, NULL }
12330 static int
12331 dissect_dsrc_RTCM_Revision(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12332 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12333 4, NULL, true, 0, NULL);
12335 return offset;
12340 static int
12341 dissect_dsrc_DYear(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12342 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12343 0U, 4095U, NULL, false);
12345 return offset;
12350 static int
12351 dissect_dsrc_DMonth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12352 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12353 0U, 12U, NULL, false);
12355 return offset;
12360 static int
12361 dissect_dsrc_DDay(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12362 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12363 0U, 31U, NULL, false);
12365 return offset;
12370 static int
12371 dissect_dsrc_DHour(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12372 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12373 0U, 31U, NULL, false);
12375 return offset;
12380 static int
12381 dissect_dsrc_DMinute(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12382 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12383 0U, 60U, NULL, false);
12385 return offset;
12390 static int
12391 dissect_dsrc_DSecond(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12392 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12393 0U, 65535U, NULL, false);
12395 return offset;
12400 static int
12401 dissect_dsrc_DOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12402 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12403 -840, 840U, NULL, false);
12405 return offset;
12409 static const per_sequence_t dsrc_DDateTime_sequence[] = {
12410 { &hf_dsrc_year , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DYear },
12411 { &hf_dsrc_month , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DMonth },
12412 { &hf_dsrc_day , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DDay },
12413 { &hf_dsrc_hour , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DHour },
12414 { &hf_dsrc_minute , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DMinute },
12415 { &hf_dsrc_second , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DSecond },
12416 { &hf_dsrc_offset , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_DOffset },
12417 { NULL, 0, 0, NULL }
12420 static int
12421 dissect_dsrc_DDateTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12422 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12423 ett_dsrc_DDateTime, dsrc_DDateTime_sequence);
12425 return offset;
12430 static int
12431 dissect_dsrc_HeadingDSRC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12432 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12433 0U, 28800U, NULL, false);
12435 return offset;
12439 static const value_string dsrc_TransmissionState_vals[] = {
12440 { 0, "neutral" },
12441 { 1, "park" },
12442 { 2, "forwardGears" },
12443 { 3, "reverseGears" },
12444 { 4, "reserved1" },
12445 { 5, "reserved2" },
12446 { 6, "reserved3" },
12447 { 7, "unavailable" },
12448 { 0, NULL }
12452 static int
12453 dissect_dsrc_TransmissionState(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12454 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12455 8, NULL, false, 0, NULL);
12457 return offset;
12461 static const per_sequence_t dsrc_TransmissionAndSpeed_sequence[] = {
12462 { &hf_dsrc_transmisson , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_TransmissionState },
12463 { &hf_dsrc_tasSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Velocity },
12464 { NULL, 0, 0, NULL }
12467 static int
12468 dissect_dsrc_TransmissionAndSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12469 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12470 ett_dsrc_TransmissionAndSpeed, dsrc_TransmissionAndSpeed_sequence);
12472 return offset;
12477 static int
12478 dissect_dsrc_SemiMajorAxisAccuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12479 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12480 0U, 255U, NULL, false);
12482 return offset;
12487 static int
12488 dissect_dsrc_SemiMinorAxisAccuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12489 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12490 0U, 255U, NULL, false);
12492 return offset;
12497 static int
12498 dissect_dsrc_SemiMajorAxisOrientation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12499 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12500 0U, 65535U, NULL, false);
12502 return offset;
12506 static const per_sequence_t dsrc_PositionalAccuracy_sequence[] = {
12507 { &hf_dsrc_semiMajor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SemiMajorAxisAccuracy },
12508 { &hf_dsrc_semiMinor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SemiMinorAxisAccuracy },
12509 { &hf_dsrc_orientation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SemiMajorAxisOrientation },
12510 { NULL, 0, 0, NULL }
12513 static int
12514 dissect_dsrc_PositionalAccuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12515 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12516 ett_dsrc_PositionalAccuracy, dsrc_PositionalAccuracy_sequence);
12518 return offset;
12522 static const value_string dsrc_TimeConfidence_vals[] = {
12523 { 0, "unavailable" },
12524 { 1, "time-100-000" },
12525 { 2, "time-050-000" },
12526 { 3, "time-020-000" },
12527 { 4, "time-010-000" },
12528 { 5, "time-002-000" },
12529 { 6, "time-001-000" },
12530 { 7, "time-000-500" },
12531 { 8, "time-000-200" },
12532 { 9, "time-000-100" },
12533 { 10, "time-000-050" },
12534 { 11, "time-000-020" },
12535 { 12, "time-000-010" },
12536 { 13, "time-000-005" },
12537 { 14, "time-000-002" },
12538 { 15, "time-000-001" },
12539 { 16, "time-000-000-5" },
12540 { 17, "time-000-000-2" },
12541 { 18, "time-000-000-1" },
12542 { 19, "time-000-000-05" },
12543 { 20, "time-000-000-02" },
12544 { 21, "time-000-000-01" },
12545 { 22, "time-000-000-005" },
12546 { 23, "time-000-000-002" },
12547 { 24, "time-000-000-001" },
12548 { 25, "time-000-000-000-5" },
12549 { 26, "time-000-000-000-2" },
12550 { 27, "time-000-000-000-1" },
12551 { 28, "time-000-000-000-05" },
12552 { 29, "time-000-000-000-02" },
12553 { 30, "time-000-000-000-01" },
12554 { 31, "time-000-000-000-005" },
12555 { 32, "time-000-000-000-002" },
12556 { 33, "time-000-000-000-001" },
12557 { 34, "time-000-000-000-000-5" },
12558 { 35, "time-000-000-000-000-2" },
12559 { 36, "time-000-000-000-000-1" },
12560 { 37, "time-000-000-000-000-05" },
12561 { 38, "time-000-000-000-000-02" },
12562 { 39, "time-000-000-000-000-01" },
12563 { 0, NULL }
12567 static int
12568 dissect_dsrc_TimeConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12569 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12570 40, NULL, false, 0, NULL);
12572 return offset;
12576 static const value_string dsrc_PositionConfidence_vals[] = {
12577 { 0, "unavailable" },
12578 { 1, "a500m" },
12579 { 2, "a200m" },
12580 { 3, "a100m" },
12581 { 4, "a50m" },
12582 { 5, "a20m" },
12583 { 6, "a10m" },
12584 { 7, "a5m" },
12585 { 8, "a2m" },
12586 { 9, "a1m" },
12587 { 10, "a50cm" },
12588 { 11, "a20cm" },
12589 { 12, "a10cm" },
12590 { 13, "a5cm" },
12591 { 14, "a2cm" },
12592 { 15, "a1cm" },
12593 { 0, NULL }
12597 static int
12598 dissect_dsrc_PositionConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12599 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12600 16, NULL, false, 0, NULL);
12602 return offset;
12606 static const value_string dsrc_ElevationConfidence_vals[] = {
12607 { 0, "unavailable" },
12608 { 1, "elev-500-00" },
12609 { 2, "elev-200-00" },
12610 { 3, "elev-100-00" },
12611 { 4, "elev-050-00" },
12612 { 5, "elev-020-00" },
12613 { 6, "elev-010-00" },
12614 { 7, "elev-005-00" },
12615 { 8, "elev-002-00" },
12616 { 9, "elev-001-00" },
12617 { 10, "elev-000-50" },
12618 { 11, "elev-000-20" },
12619 { 12, "elev-000-10" },
12620 { 13, "elev-000-05" },
12621 { 14, "elev-000-02" },
12622 { 15, "elev-000-01" },
12623 { 0, NULL }
12627 static int
12628 dissect_dsrc_ElevationConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12629 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12630 16, NULL, false, 0, NULL);
12632 return offset;
12636 static const per_sequence_t dsrc_PositionConfidenceSet_sequence[] = {
12637 { &hf_dsrc_pos , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_PositionConfidence },
12638 { &hf_dsrc_pcsElevation , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ElevationConfidence },
12639 { NULL, 0, 0, NULL }
12642 static int
12643 dissect_dsrc_PositionConfidenceSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12644 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12645 ett_dsrc_PositionConfidenceSet, dsrc_PositionConfidenceSet_sequence);
12647 return offset;
12651 static const value_string dsrc_HeadingConfidenceDSRC_vals[] = {
12652 { 0, "unavailable" },
12653 { 1, "prec10deg" },
12654 { 2, "prec05deg" },
12655 { 3, "prec01deg" },
12656 { 4, "prec0-1deg" },
12657 { 5, "prec0-05deg" },
12658 { 6, "prec0-01deg" },
12659 { 7, "prec0-0125deg" },
12660 { 0, NULL }
12664 static int
12665 dissect_dsrc_HeadingConfidenceDSRC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12666 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12667 8, NULL, false, 0, NULL);
12669 return offset;
12673 static const value_string dsrc_SpeedConfidenceDSRC_vals[] = {
12674 { 0, "unavailable" },
12675 { 1, "prec100ms" },
12676 { 2, "prec10ms" },
12677 { 3, "prec5ms" },
12678 { 4, "prec1ms" },
12679 { 5, "prec0-1ms" },
12680 { 6, "prec0-05ms" },
12681 { 7, "prec0-01ms" },
12682 { 0, NULL }
12686 static int
12687 dissect_dsrc_SpeedConfidenceDSRC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12688 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12689 8, NULL, false, 0, NULL);
12691 return offset;
12695 static const value_string dsrc_ThrottleConfidence_vals[] = {
12696 { 0, "unavailable" },
12697 { 1, "prec10percent" },
12698 { 2, "prec1percent" },
12699 { 3, "prec0-5percent" },
12700 { 0, NULL }
12704 static int
12705 dissect_dsrc_ThrottleConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12706 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12707 4, NULL, false, 0, NULL);
12709 return offset;
12713 static const per_sequence_t dsrc_SpeedandHeadingandThrottleConfidence_sequence[] = {
12714 { &hf_dsrc_shtcheading , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_HeadingConfidenceDSRC },
12715 { &hf_dsrc_shtcSpeed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SpeedConfidenceDSRC },
12716 { &hf_dsrc_throttle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ThrottleConfidence },
12717 { NULL, 0, 0, NULL }
12720 static int
12721 dissect_dsrc_SpeedandHeadingandThrottleConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12722 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12723 ett_dsrc_SpeedandHeadingandThrottleConfidence, dsrc_SpeedandHeadingandThrottleConfidence_sequence);
12725 return offset;
12729 static const per_sequence_t dsrc_FullPositionVector_sequence[] = {
12730 { &hf_dsrc_utcTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DDateTime },
12731 { &hf_dsrc_long , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
12732 { &hf_dsrc_lat , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
12733 { &hf_dsrc_fpvElevation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Elevation },
12734 { &hf_dsrc_fpvHeading , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_HeadingDSRC },
12735 { &hf_dsrc_fpvSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransmissionAndSpeed },
12736 { &hf_dsrc_posAccuracy , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_PositionalAccuracy },
12737 { &hf_dsrc_timeConfidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TimeConfidence },
12738 { &hf_dsrc_posConfidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_PositionConfidenceSet },
12739 { &hf_dsrc_speedConfidence, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedandHeadingandThrottleConfidence },
12740 { NULL, 0, 0, NULL }
12743 static int
12744 dissect_dsrc_FullPositionVector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12745 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12746 ett_dsrc_FullPositionVector, dsrc_FullPositionVector_sequence);
12748 return offset;
12752 static int * const dsrc_GNSSstatus_bits[] = {
12753 &hf_dsrc_GNSSstatus_unavailable,
12754 &hf_dsrc_GNSSstatus_isHealthy,
12755 &hf_dsrc_GNSSstatus_isMonitored,
12756 &hf_dsrc_GNSSstatus_baseStationType,
12757 &hf_dsrc_GNSSstatus_aPDOPofUnder5,
12758 &hf_dsrc_GNSSstatus_inViewOfUnder5,
12759 &hf_dsrc_GNSSstatus_localCorrectionsPresent,
12760 &hf_dsrc_GNSSstatus_networkCorrectionsPresent,
12761 NULL
12764 static int
12765 dissect_dsrc_GNSSstatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12766 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
12767 8, 8, false, dsrc_GNSSstatus_bits, 8, NULL, NULL);
12769 return offset;
12774 static int
12775 dissect_dsrc_Offset_B09(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12776 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12777 -256, 255U, NULL, false);
12779 return offset;
12783 static const per_sequence_t dsrc_AntennaOffsetSet_sequence[] = {
12784 { &hf_dsrc_antOffsetX , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B12 },
12785 { &hf_dsrc_antOffsetY , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B09 },
12786 { &hf_dsrc_antOffsetZ , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_Offset_B10 },
12787 { NULL, 0, 0, NULL }
12790 static int
12791 dissect_dsrc_AntennaOffsetSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12792 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12793 ett_dsrc_AntennaOffsetSet, dsrc_AntennaOffsetSet_sequence);
12795 return offset;
12799 static const per_sequence_t dsrc_RTCMheader_sequence[] = {
12800 { &hf_dsrc_status , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_GNSSstatus },
12801 { &hf_dsrc_offsetSet , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_AntennaOffsetSet },
12802 { NULL, 0, 0, NULL }
12805 static int
12806 dissect_dsrc_RTCMheader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12807 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12808 ett_dsrc_RTCMheader, dsrc_RTCMheader_sequence);
12810 return offset;
12815 static int
12816 dissect_dsrc_RTCMmessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12817 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
12818 1, 1023, false, NULL);
12820 return offset;
12824 static const per_sequence_t dsrc_RTCMmessageList_sequence_of[1] = {
12825 { &hf_dsrc_RTCMmessageList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RTCMmessage },
12828 static int
12829 dissect_dsrc_RTCMmessageList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12830 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12831 ett_dsrc_RTCMmessageList, dsrc_RTCMmessageList_sequence_of,
12832 1, 5, false);
12834 return offset;
12838 static const per_sequence_t dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension_sequence_of[1] = {
12839 { &hf_dsrc_regional_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
12842 static int
12843 dissect_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12844 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12845 ett_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension, dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension_sequence_of,
12846 1, 4, false);
12848 return offset;
12852 static const per_sequence_t dsrc_RTCMcorrections_sequence[] = {
12853 { &hf_dsrc_msgCnt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount },
12854 { &hf_dsrc_rev , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RTCM_Revision },
12855 { &hf_dsrc_timeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear },
12856 { &hf_dsrc_anchorPoint , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_FullPositionVector },
12857 { &hf_dsrc_rtcmHeader , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RTCMheader },
12858 { &hf_dsrc_msgs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RTCMmessageList },
12859 { &hf_dsrc_regional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension },
12860 { NULL, 0, 0, NULL }
12863 static int
12864 dissect_dsrc_RTCMcorrections(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12865 its_private_data_t *regext = wmem_new0(actx->pinfo->pool, its_private_data_t);
12866 actx->private_data = (void*)regext;
12867 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "RTCMEM");
12868 col_set_str(actx->pinfo->cinfo, COL_INFO, "RTCMEM");
12869 regext->type = Reg_RTCMcorrections;
12870 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12871 ett_dsrc_RTCMcorrections, dsrc_RTCMcorrections_sequence);
12873 return offset;
12877 static int * const dsrc_IntersectionStatusObject_bits[] = {
12878 &hf_dsrc_IntersectionStatusObject_manualControlIsEnabled,
12879 &hf_dsrc_IntersectionStatusObject_stopTimeIsActivated,
12880 &hf_dsrc_IntersectionStatusObject_failureFlash,
12881 &hf_dsrc_IntersectionStatusObject_preemptIsActive,
12882 &hf_dsrc_IntersectionStatusObject_signalPriorityIsActive,
12883 &hf_dsrc_IntersectionStatusObject_fixedTimeOperation,
12884 &hf_dsrc_IntersectionStatusObject_trafficDependentOperation,
12885 &hf_dsrc_IntersectionStatusObject_standbyOperation,
12886 &hf_dsrc_IntersectionStatusObject_failureMode,
12887 &hf_dsrc_IntersectionStatusObject_off,
12888 &hf_dsrc_IntersectionStatusObject_recentMAPmessageUpdate,
12889 &hf_dsrc_IntersectionStatusObject_recentChangeInMAPassignedLanesIDsUsed,
12890 &hf_dsrc_IntersectionStatusObject_noValidMAPisAvailableAtThisTime,
12891 &hf_dsrc_IntersectionStatusObject_noValidSPATisAvailableAtThisTime,
12892 NULL
12895 static int
12896 dissect_dsrc_IntersectionStatusObject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12897 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
12898 16, 16, false, dsrc_IntersectionStatusObject_bits, 14, NULL, NULL);
12900 return offset;
12904 static const per_sequence_t dsrc_EnabledLaneList_sequence_of[1] = {
12905 { &hf_dsrc_EnabledLaneList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneID },
12908 static int
12909 dissect_dsrc_EnabledLaneList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12910 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
12911 ett_dsrc_EnabledLaneList, dsrc_EnabledLaneList_sequence_of,
12912 1, 16, false);
12914 return offset;
12918 static const value_string dsrc_MovementPhaseState_vals[] = {
12919 { 0, "unavailable" },
12920 { 1, "dark" },
12921 { 2, "stop-Then-Proceed" },
12922 { 3, "stop-And-Remain" },
12923 { 4, "pre-Movement" },
12924 { 5, "permissive-Movement-Allowed" },
12925 { 6, "protected-Movement-Allowed" },
12926 { 7, "permissive-clearance" },
12927 { 8, "protected-clearance" },
12928 { 9, "caution-Conflicting-Traffic" },
12929 { 0, NULL }
12933 static int
12934 dissect_dsrc_MovementPhaseState(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12935 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12936 10, NULL, false, 0, NULL);
12938 return offset;
12943 static int
12944 dissect_dsrc_TimeMark(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12945 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12946 0U, 36001U, NULL, false);
12948 return offset;
12953 static int
12954 dissect_dsrc_TimeIntervalConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12955 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
12956 0U, 15U, NULL, false);
12958 return offset;
12962 static const per_sequence_t dsrc_TimeChangeDetails_sequence[] = {
12963 { &hf_dsrc_startTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark },
12964 { &hf_dsrc_minEndTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_TimeMark },
12965 { &hf_dsrc_maxEndTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark },
12966 { &hf_dsrc_likelyTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark },
12967 { &hf_dsrc_tcdConfidence , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeIntervalConfidence },
12968 { &hf_dsrc_nextTime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_dsrc_TimeMark },
12969 { NULL, 0, 0, NULL }
12972 static int
12973 dissect_dsrc_TimeChangeDetails(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12974 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
12975 ett_dsrc_TimeChangeDetails, dsrc_TimeChangeDetails_sequence);
12977 return offset;
12981 static const value_string dsrc_AdvisorySpeedType_vals[] = {
12982 { 0, "none" },
12983 { 1, "greenwave" },
12984 { 2, "ecoDrive" },
12985 { 3, "transit" },
12986 { 0, NULL }
12990 static int
12991 dissect_dsrc_AdvisorySpeedType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
12992 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
12993 4, NULL, true, 0, NULL);
12995 return offset;
13000 static int
13001 dissect_dsrc_SpeedAdvice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13002 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
13003 0U, 500U, NULL, false);
13005 return offset;
13010 static int
13011 dissect_dsrc_ZoneLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13012 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
13013 0U, 10000U, NULL, false);
13015 return offset;
13019 static const per_sequence_t dsrc_T_AdvisorySpeedRegional_sequence_of[1] = {
13020 { &hf_dsrc_asRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13023 static int
13024 dissect_dsrc_T_AdvisorySpeedRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13025 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13026 ett_dsrc_T_AdvisorySpeedRegional, dsrc_T_AdvisorySpeedRegional_sequence_of,
13027 1, 4, false);
13029 return offset;
13033 static const per_sequence_t dsrc_AdvisorySpeed_sequence[] = {
13034 { &hf_dsrc_asType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_AdvisorySpeedType },
13035 { &hf_dsrc_asSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedAdvice },
13036 { &hf_dsrc_asConfidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SpeedConfidenceDSRC },
13037 { &hf_dsrc_distance , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength },
13038 { &hf_dsrc_class , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RestrictionClassID },
13039 { &hf_dsrc_asRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_AdvisorySpeedRegional },
13040 { NULL, 0, 0, NULL }
13043 static int
13044 dissect_dsrc_AdvisorySpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13045 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13046 ((its_private_data_t*)actx->private_data)->type = Reg_AdvisorySpeed;
13047 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13048 ett_dsrc_AdvisorySpeed, dsrc_AdvisorySpeed_sequence);
13050 ((its_private_data_t*)actx->private_data)->type = save;
13051 return offset;
13055 static const per_sequence_t dsrc_AdvisorySpeedList_sequence_of[1] = {
13056 { &hf_dsrc_AdvisorySpeedList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_AdvisorySpeed },
13059 static int
13060 dissect_dsrc_AdvisorySpeedList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13061 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13062 ett_dsrc_AdvisorySpeedList, dsrc_AdvisorySpeedList_sequence_of,
13063 1, 16, false);
13065 return offset;
13069 static const per_sequence_t dsrc_T_MovementEventRegional_sequence_of[1] = {
13070 { &hf_dsrc_meRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13073 static int
13074 dissect_dsrc_T_MovementEventRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13075 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13076 ett_dsrc_T_MovementEventRegional, dsrc_T_MovementEventRegional_sequence_of,
13077 1, 4, false);
13079 return offset;
13083 static const per_sequence_t dsrc_MovementEvent_sequence[] = {
13084 { &hf_dsrc_eventState , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementPhaseState },
13085 { &hf_dsrc_timing , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TimeChangeDetails },
13086 { &hf_dsrc_speeds , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_AdvisorySpeedList },
13087 { &hf_dsrc_meRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_MovementEventRegional },
13088 { NULL, 0, 0, NULL }
13091 static int
13092 dissect_dsrc_MovementEvent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13093 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13094 ((its_private_data_t*)actx->private_data)->type = Reg_MovementEvent;
13095 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13096 ett_dsrc_MovementEvent, dsrc_MovementEvent_sequence);
13098 ((its_private_data_t*)actx->private_data)->type = save;
13099 return offset;
13103 static const per_sequence_t dsrc_MovementEventList_sequence_of[1] = {
13104 { &hf_dsrc_MovementEventList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementEvent },
13107 static int
13108 dissect_dsrc_MovementEventList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13109 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13110 ett_dsrc_MovementEventList, dsrc_MovementEventList_sequence_of,
13111 1, 16, false);
13113 return offset;
13118 static int
13119 dissect_dsrc_WaitOnStopline(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13120 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
13122 return offset;
13127 static int
13128 dissect_dsrc_PedestrianBicycleDetect(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13129 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
13131 return offset;
13135 static const per_sequence_t dsrc_T_ConnectionManeuverAssistRegional_sequence_of[1] = {
13136 { &hf_dsrc_cmaRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13139 static int
13140 dissect_dsrc_T_ConnectionManeuverAssistRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13141 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13142 ett_dsrc_T_ConnectionManeuverAssistRegional, dsrc_T_ConnectionManeuverAssistRegional_sequence_of,
13143 1, 4, false);
13145 return offset;
13149 static const per_sequence_t dsrc_ConnectionManeuverAssist_sequence[] = {
13150 { &hf_dsrc_connectionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneConnectionID },
13151 { &hf_dsrc_queueLength , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength },
13152 { &hf_dsrc_availableStorageLength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ZoneLength },
13153 { &hf_dsrc_waitOnStop , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_WaitOnStopline },
13154 { &hf_dsrc_pedBicycleDetect, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_PedestrianBicycleDetect },
13155 { &hf_dsrc_cmaRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_ConnectionManeuverAssistRegional },
13156 { NULL, 0, 0, NULL }
13159 static int
13160 dissect_dsrc_ConnectionManeuverAssist(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13161 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13162 ((its_private_data_t*)actx->private_data)->type = Reg_ConnectionManeuverAssist;
13163 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13164 ett_dsrc_ConnectionManeuverAssist, dsrc_ConnectionManeuverAssist_sequence);
13166 ((its_private_data_t*)actx->private_data)->type = save;
13167 return offset;
13171 static const per_sequence_t dsrc_ManeuverAssistList_sequence_of[1] = {
13172 { &hf_dsrc_ManeuverAssistList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_ConnectionManeuverAssist },
13175 static int
13176 dissect_dsrc_ManeuverAssistList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13177 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13178 ett_dsrc_ManeuverAssistList, dsrc_ManeuverAssistList_sequence_of,
13179 1, 16, false);
13181 return offset;
13185 static const per_sequence_t dsrc_T_MovementStateRegional_sequence_of[1] = {
13186 { &hf_dsrc_msRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13189 static int
13190 dissect_dsrc_T_MovementStateRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13191 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13192 ett_dsrc_T_MovementStateRegional, dsrc_T_MovementStateRegional_sequence_of,
13193 1, 4, false);
13195 return offset;
13199 static const per_sequence_t dsrc_MovementState_sequence[] = {
13200 { &hf_dsrc_movementName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName },
13201 { &hf_dsrc_signalGroup , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalGroupID },
13202 { &hf_dsrc_state_time_speed, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementEventList },
13203 { &hf_dsrc_maneuverAssistList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ManeuverAssistList },
13204 { &hf_dsrc_msRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_MovementStateRegional },
13205 { NULL, 0, 0, NULL }
13208 static int
13209 dissect_dsrc_MovementState(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13210 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13211 ((its_private_data_t*)actx->private_data)->type = Reg_MovementState;
13212 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13213 ett_dsrc_MovementState, dsrc_MovementState_sequence);
13215 ((its_private_data_t*)actx->private_data)->type = save;
13216 return offset;
13220 static const per_sequence_t dsrc_MovementList_sequence_of[1] = {
13221 { &hf_dsrc_MovementList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementState },
13224 static int
13225 dissect_dsrc_MovementList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13226 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13227 ett_dsrc_MovementList, dsrc_MovementList_sequence_of,
13228 1, 255, false);
13230 return offset;
13234 static const per_sequence_t dsrc_T_IntersectionStateRegional_sequence_of[1] = {
13235 { &hf_dsrc_isRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13238 static int
13239 dissect_dsrc_T_IntersectionStateRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13240 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13241 ett_dsrc_T_IntersectionStateRegional, dsrc_T_IntersectionStateRegional_sequence_of,
13242 1, 4, false);
13244 return offset;
13248 static const per_sequence_t dsrc_IntersectionState_sequence[] = {
13249 { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName },
13250 { &hf_dsrc_isId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID },
13251 { &hf_dsrc_revision , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount },
13252 { &hf_dsrc_isStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionStatusObject },
13253 { &hf_dsrc_moy , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear },
13254 { &hf_dsrc_isTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond },
13255 { &hf_dsrc_enabledLanes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_EnabledLaneList },
13256 { &hf_dsrc_states , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MovementList },
13257 { &hf_dsrc_maneuverAssistList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_ManeuverAssistList },
13258 { &hf_dsrc_isRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_IntersectionStateRegional },
13259 { NULL, 0, 0, NULL }
13262 static int
13263 dissect_dsrc_IntersectionState(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13264 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13265 ((its_private_data_t*)actx->private_data)->type = Reg_IntersectionState;
13266 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13267 ett_dsrc_IntersectionState, dsrc_IntersectionState_sequence);
13269 ((its_private_data_t*)actx->private_data)->type = save;
13270 return offset;
13274 static const per_sequence_t dsrc_IntersectionStateList_sequence_of[1] = {
13275 { &hf_dsrc_IntersectionStateList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionState },
13278 static int
13279 dissect_dsrc_IntersectionStateList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13280 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13281 ett_dsrc_IntersectionStateList, dsrc_IntersectionStateList_sequence_of,
13282 1, 32, false);
13284 return offset;
13288 static const per_sequence_t dsrc_T_SPATRegional_sequence_of[1] = {
13289 { &hf_dsrc_spatRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13292 static int
13293 dissect_dsrc_T_SPATRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13294 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13295 ett_dsrc_T_SPATRegional, dsrc_T_SPATRegional_sequence_of,
13296 1, 4, false);
13298 return offset;
13302 static const per_sequence_t dsrc_SPAT_sequence[] = {
13303 { &hf_dsrc_spatTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear },
13304 { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName },
13305 { &hf_dsrc_spatIntersections, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionStateList },
13306 { &hf_dsrc_spatRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SPATRegional },
13307 { NULL, 0, 0, NULL }
13310 static int
13311 dissect_dsrc_SPAT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13312 its_private_data_t *regext = wmem_new0(actx->pinfo->pool, its_private_data_t);
13313 actx->private_data = (void*)regext;
13314 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "SPATEM");
13315 col_set_str(actx->pinfo->cinfo, COL_INFO, "SPATEM");
13316 regext->type = Reg_SPAT;
13317 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13318 ett_dsrc_SPAT, dsrc_SPAT_sequence);
13320 return offset;
13325 static int
13326 dissect_dsrc_RequestID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13327 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
13328 0U, 255U, NULL, false);
13330 return offset;
13334 static const value_string dsrc_PriorityRequestType_vals[] = {
13335 { 0, "priorityRequestTypeReserved" },
13336 { 1, "priorityRequest" },
13337 { 2, "priorityRequestUpdate" },
13338 { 3, "priorityCancellation" },
13339 { 0, NULL }
13343 static int
13344 dissect_dsrc_PriorityRequestType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13345 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
13346 4, NULL, true, 0, NULL);
13348 return offset;
13352 static const value_string dsrc_IntersectionAccessPoint_vals[] = {
13353 { 0, "lane" },
13354 { 1, "approach" },
13355 { 2, "connection" },
13356 { 0, NULL }
13359 static const per_choice_t dsrc_IntersectionAccessPoint_choice[] = {
13360 { 0, &hf_dsrc_lane , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneID },
13361 { 1, &hf_dsrc_approach , ASN1_EXTENSION_ROOT , dissect_dsrc_ApproachID },
13362 { 2, &hf_dsrc_connection , ASN1_EXTENSION_ROOT , dissect_dsrc_LaneConnectionID },
13363 { 0, NULL, 0, NULL }
13366 static int
13367 dissect_dsrc_IntersectionAccessPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13368 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
13369 ett_dsrc_IntersectionAccessPoint, dsrc_IntersectionAccessPoint_choice,
13370 NULL);
13372 return offset;
13376 static const per_sequence_t dsrc_T_SignalRequestRegional_sequence_of[1] = {
13377 { &hf_dsrc_srRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13380 static int
13381 dissect_dsrc_T_SignalRequestRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13382 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13383 ett_dsrc_T_SignalRequestRegional, dsrc_T_SignalRequestRegional_sequence_of,
13384 1, 4, false);
13386 return offset;
13390 static const per_sequence_t dsrc_SignalRequest_sequence[] = {
13391 { &hf_dsrc_srId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID },
13392 { &hf_dsrc_requestID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestID },
13393 { &hf_dsrc_requestType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_PriorityRequestType },
13394 { &hf_dsrc_inBoundLane , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionAccessPoint },
13395 { &hf_dsrc_outBoundLane , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionAccessPoint },
13396 { &hf_dsrc_srRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalRequestRegional },
13397 { NULL, 0, 0, NULL }
13400 static int
13401 dissect_dsrc_SignalRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13402 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13403 ((its_private_data_t*)actx->private_data)->type = Reg_SignalRequest;
13404 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13405 ett_dsrc_SignalRequest, dsrc_SignalRequest_sequence);
13407 ((its_private_data_t*)actx->private_data)->type = save;
13408 return offset;
13412 static const per_sequence_t dsrc_T_SignalRequestPackageRegional_sequence_of[1] = {
13413 { &hf_dsrc_srpRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13416 static int
13417 dissect_dsrc_T_SignalRequestPackageRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13418 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13419 ett_dsrc_T_SignalRequestPackageRegional, dsrc_T_SignalRequestPackageRegional_sequence_of,
13420 1, 4, false);
13422 return offset;
13426 static const per_sequence_t dsrc_SignalRequestPackage_sequence[] = {
13427 { &hf_dsrc_srpRequest , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalRequest },
13428 { &hf_dsrc_srpMinute , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear },
13429 { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond },
13430 { &hf_dsrc_duration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond },
13431 { &hf_dsrc_srpRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalRequestPackageRegional },
13432 { NULL, 0, 0, NULL }
13435 static int
13436 dissect_dsrc_SignalRequestPackage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13437 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13438 ((its_private_data_t*)actx->private_data)->type = Reg_SignalRequestPackage;
13439 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13440 ett_dsrc_SignalRequestPackage, dsrc_SignalRequestPackage_sequence);
13442 ((its_private_data_t*)actx->private_data)->type = save;
13443 return offset;
13447 static const per_sequence_t dsrc_SignalRequestList_sequence_of[1] = {
13448 { &hf_dsrc_SignalRequestList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalRequestPackage },
13451 static int
13452 dissect_dsrc_SignalRequestList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13453 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13454 ett_dsrc_SignalRequestList, dsrc_SignalRequestList_sequence_of,
13455 1, 32, false);
13457 return offset;
13462 static int
13463 dissect_dsrc_TemporaryID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13464 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
13465 4, 4, false, NULL);
13467 return offset;
13471 static const value_string dsrc_VehicleID_vals[] = {
13472 { 0, "entityID" },
13473 { 1, "stationID" },
13474 { 0, NULL }
13477 static const per_choice_t dsrc_VehicleID_choice[] = {
13478 { 0, &hf_dsrc_entityID , ASN1_NO_EXTENSIONS , dissect_dsrc_TemporaryID },
13479 { 1, &hf_dsrc_stationID , ASN1_NO_EXTENSIONS , dissect_its_StationID },
13480 { 0, NULL, 0, NULL }
13483 static int
13484 dissect_dsrc_VehicleID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13485 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
13486 ett_dsrc_VehicleID, dsrc_VehicleID_choice,
13487 NULL);
13489 return offset;
13493 static const value_string dsrc_BasicVehicleRole_vals[] = {
13494 { 0, "basicVehicle" },
13495 { 1, "publicTransport" },
13496 { 2, "specialTransport" },
13497 { 3, "dangerousGoods" },
13498 { 4, "roadWork" },
13499 { 5, "roadRescue" },
13500 { 6, "emergency" },
13501 { 7, "safetyCar" },
13502 { 8, "none-unknown" },
13503 { 9, "truck" },
13504 { 10, "motorcycle" },
13505 { 11, "roadSideSource" },
13506 { 12, "police" },
13507 { 13, "fire" },
13508 { 14, "ambulance" },
13509 { 15, "dot" },
13510 { 16, "transit" },
13511 { 17, "slowMoving" },
13512 { 18, "stopNgo" },
13513 { 19, "cyclist" },
13514 { 20, "pedestrian" },
13515 { 21, "nonMotorized" },
13516 { 22, "military" },
13517 { 0, NULL }
13521 static int
13522 dissect_dsrc_BasicVehicleRole(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13523 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
13524 23, NULL, true, 0, NULL);
13526 return offset;
13530 static const value_string dsrc_RequestSubRole_vals[] = {
13531 { 0, "requestSubRoleUnKnown" },
13532 { 1, "requestSubRole1" },
13533 { 2, "requestSubRole2" },
13534 { 3, "requestSubRole3" },
13535 { 4, "requestSubRole4" },
13536 { 5, "requestSubRole5" },
13537 { 6, "requestSubRole6" },
13538 { 7, "requestSubRole7" },
13539 { 8, "requestSubRole8" },
13540 { 9, "requestSubRole9" },
13541 { 10, "requestSubRole10" },
13542 { 11, "requestSubRole11" },
13543 { 12, "requestSubRole12" },
13544 { 13, "requestSubRole13" },
13545 { 14, "requestSubRole14" },
13546 { 15, "requestSubRoleReserved" },
13547 { 0, NULL }
13551 static int
13552 dissect_dsrc_RequestSubRole(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13553 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
13554 16, NULL, false, 0, NULL);
13556 return offset;
13560 static const value_string dsrc_RequestImportanceLevel_vals[] = {
13561 { 0, "requestImportanceLevelUnKnown" },
13562 { 1, "requestImportanceLevel1" },
13563 { 2, "requestImportanceLevel2" },
13564 { 3, "requestImportanceLevel3" },
13565 { 4, "requestImportanceLevel4" },
13566 { 5, "requestImportanceLevel5" },
13567 { 6, "requestImportanceLevel6" },
13568 { 7, "requestImportanceLevel7" },
13569 { 8, "requestImportanceLevel8" },
13570 { 9, "requestImportanceLevel9" },
13571 { 10, "requestImportanceLevel10" },
13572 { 11, "requestImportanceLevel11" },
13573 { 12, "requestImportanceLevel12" },
13574 { 13, "requestImportanceLevel13" },
13575 { 14, "requestImportanceLevel14" },
13576 { 15, "requestImportanceReserved" },
13577 { 0, NULL }
13581 static int
13582 dissect_dsrc_RequestImportanceLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13583 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
13584 16, NULL, false, 0, NULL);
13586 return offset;
13590 static const value_string dsrc_VehicleType_vals[] = {
13591 { 0, "none" },
13592 { 1, "unknown" },
13593 { 2, "special" },
13594 { 3, "moto" },
13595 { 4, "car" },
13596 { 5, "carOther" },
13597 { 6, "bus" },
13598 { 7, "axleCnt2" },
13599 { 8, "axleCnt3" },
13600 { 9, "axleCnt4" },
13601 { 10, "axleCnt4Trailer" },
13602 { 11, "axleCnt5Trailer" },
13603 { 12, "axleCnt6Trailer" },
13604 { 13, "axleCnt5MultiTrailer" },
13605 { 14, "axleCnt6MultiTrailer" },
13606 { 15, "axleCnt7MultiTrailer" },
13607 { 0, NULL }
13611 static int
13612 dissect_dsrc_VehicleType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13613 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
13614 16, NULL, true, 0, NULL);
13616 return offset;
13620 static const per_sequence_t dsrc_RequestorType_sequence[] = {
13621 { &hf_dsrc_role , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_BasicVehicleRole },
13622 { &hf_dsrc_subrole , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestSubRole },
13623 { &hf_dsrc_rtRequest , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestImportanceLevel },
13624 { &hf_dsrc_iso3883 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Iso3833VehicleType },
13625 { &hf_dsrc_hpmsType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_VehicleType },
13626 { &hf_dsrc_rtRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RegionalExtension },
13627 { NULL, 0, 0, NULL }
13630 static int
13631 dissect_dsrc_RequestorType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13632 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13633 ((its_private_data_t*)actx->private_data)->type = Reg_RequestorType;
13634 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13635 ett_dsrc_RequestorType, dsrc_RequestorType_sequence);
13637 ((its_private_data_t*)actx->private_data)->type = save;
13638 return offset;
13642 static const per_sequence_t dsrc_RequestorPositionVector_sequence[] = {
13643 { &hf_dsrc_rpvPosition , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_Position3D },
13644 { &hf_dsrc_rpvHeading , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_Angle },
13645 { &hf_dsrc_rpvSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransmissionAndSpeed },
13646 { NULL, 0, 0, NULL }
13649 static int
13650 dissect_dsrc_RequestorPositionVector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13651 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13652 ett_dsrc_RequestorPositionVector, dsrc_RequestorPositionVector_sequence);
13654 return offset;
13658 static int * const dsrc_TransitVehicleStatus_bits[] = {
13659 &hf_dsrc_TransitVehicleStatus_loading,
13660 &hf_dsrc_TransitVehicleStatus_anADAuse,
13661 &hf_dsrc_TransitVehicleStatus_aBikeLoad,
13662 &hf_dsrc_TransitVehicleStatus_doorOpen,
13663 &hf_dsrc_TransitVehicleStatus_charging,
13664 &hf_dsrc_TransitVehicleStatus_atStopLine,
13665 NULL
13668 static int
13669 dissect_dsrc_TransitVehicleStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13670 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
13671 8, 8, false, dsrc_TransitVehicleStatus_bits, 6, NULL, NULL);
13673 return offset;
13677 static const value_string dsrc_TransitVehicleOccupancy_vals[] = {
13678 { 0, "occupancyUnknown" },
13679 { 1, "occupancyEmpty" },
13680 { 2, "occupancyVeryLow" },
13681 { 3, "occupancyLow" },
13682 { 4, "occupancyMed" },
13683 { 5, "occupancyHigh" },
13684 { 6, "occupancyNearlyFull" },
13685 { 7, "occupancyFull" },
13686 { 0, NULL }
13690 static int
13691 dissect_dsrc_TransitVehicleOccupancy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13692 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
13693 8, NULL, false, 0, NULL);
13695 return offset;
13700 static int
13701 dissect_dsrc_DeltaTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13702 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
13703 -122, 121U, NULL, false);
13705 return offset;
13709 static const per_sequence_t dsrc_T_RequestorDescriptionRegional_sequence_of[1] = {
13710 { &hf_dsrc_rdRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13713 static int
13714 dissect_dsrc_T_RequestorDescriptionRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13715 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13716 ett_dsrc_T_RequestorDescriptionRegional, dsrc_T_RequestorDescriptionRegional_sequence_of,
13717 1, 4, false);
13719 return offset;
13723 static const per_sequence_t dsrc_RequestorDescription_sequence[] = {
13724 { &hf_dsrc_rdId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_VehicleID },
13725 { &hf_dsrc_rdType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorType },
13726 { &hf_dsrc_rdPosition , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorPositionVector },
13727 { &hf_dsrc_name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName },
13728 { &hf_dsrc_routeName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DescriptiveName },
13729 { &hf_dsrc_transitStatus , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransitVehicleStatus },
13730 { &hf_dsrc_transitOccupancy, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_TransitVehicleOccupancy },
13731 { &hf_dsrc_transitSchedule, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DeltaTime },
13732 { &hf_dsrc_rdRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_RequestorDescriptionRegional },
13733 { NULL, 0, 0, NULL }
13736 static int
13737 dissect_dsrc_RequestorDescription(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13738 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13739 ((its_private_data_t*)actx->private_data)->type = Reg_RequestorDescription;
13740 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13741 ett_dsrc_RequestorDescription, dsrc_RequestorDescription_sequence);
13743 ((its_private_data_t*)actx->private_data)->type = save;
13744 return offset;
13748 static const per_sequence_t dsrc_T_SRMRegional_sequence_of[1] = {
13749 { &hf_dsrc_srmRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13752 static int
13753 dissect_dsrc_T_SRMRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13754 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13755 ett_dsrc_T_SRMRegional, dsrc_T_SRMRegional_sequence_of,
13756 1, 4, false);
13758 return offset;
13762 static const per_sequence_t dsrc_SignalRequestMessage_sequence[] = {
13763 { &hf_dsrc_srmTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear },
13764 { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_DSecond },
13765 { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MsgCount },
13766 { &hf_dsrc_requests , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SignalRequestList },
13767 { &hf_dsrc_requestor , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestorDescription },
13768 { &hf_dsrc_srmRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SRMRegional },
13769 { NULL, 0, 0, NULL }
13772 static int
13773 dissect_dsrc_SignalRequestMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13774 its_private_data_t *regext = wmem_new0(actx->pinfo->pool, its_private_data_t);
13775 actx->private_data = (void*)regext;
13776 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "SREM");
13777 col_set_str(actx->pinfo->cinfo, COL_INFO, "SREM");
13778 regext->type = Reg_SignalRequestMessage;
13779 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13780 ett_dsrc_SignalRequestMessage, dsrc_SignalRequestMessage_sequence);
13782 return offset;
13786 static const per_sequence_t dsrc_SignalRequesterInfo_sequence[] = {
13787 { &hf_dsrc_sriId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_VehicleID },
13788 { &hf_dsrc_sriRequest , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_RequestID },
13789 { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount },
13790 { &hf_dsrc_role , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_BasicVehicleRole },
13791 { &hf_dsrc_typeData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_RequestorType },
13792 { NULL, 0, 0, NULL }
13795 static int
13796 dissect_dsrc_SignalRequesterInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13797 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13798 ett_dsrc_SignalRequesterInfo, dsrc_SignalRequesterInfo_sequence);
13800 return offset;
13804 static const value_string dsrc_PrioritizationResponseStatus_vals[] = {
13805 { 0, "unknown" },
13806 { 1, "requested" },
13807 { 2, "processing" },
13808 { 3, "watchOtherTraffic" },
13809 { 4, "granted" },
13810 { 5, "rejected" },
13811 { 6, "maxPresence" },
13812 { 7, "reserviceLocked" },
13813 { 0, NULL }
13817 static int
13818 dissect_dsrc_PrioritizationResponseStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13819 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
13820 8, NULL, true, 0, NULL);
13822 return offset;
13826 static const per_sequence_t dsrc_T_SignalStatusPackageRegional_sequence_of[1] = {
13827 { &hf_dsrc_sspRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13830 static int
13831 dissect_dsrc_T_SignalStatusPackageRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13832 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13833 ett_dsrc_T_SignalStatusPackageRegional, dsrc_T_SignalStatusPackageRegional_sequence_of,
13834 1, 4, false);
13836 return offset;
13840 static const per_sequence_t dsrc_SignalStatusPackage_sequence[] = {
13841 { &hf_dsrc_requester , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_SignalRequesterInfo },
13842 { &hf_dsrc_inboundOn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionAccessPoint },
13843 { &hf_dsrc_outboundOn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionAccessPoint },
13844 { &hf_dsrc_sspMinute , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear },
13845 { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond },
13846 { &hf_dsrc_duration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DSecond },
13847 { &hf_dsrc_sspStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_PrioritizationResponseStatus },
13848 { &hf_dsrc_sspRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalStatusPackageRegional },
13849 { NULL, 0, 0, NULL }
13852 static int
13853 dissect_dsrc_SignalStatusPackage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13854 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13855 ((its_private_data_t*)actx->private_data)->type = Reg_SignalStatusPackage;
13856 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13857 ett_dsrc_SignalStatusPackage, dsrc_SignalStatusPackage_sequence);
13859 ((its_private_data_t*)actx->private_data)->type = save;
13860 return offset;
13864 static const per_sequence_t dsrc_SignalStatusPackageList_sequence_of[1] = {
13865 { &hf_dsrc_SignalStatusPackageList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusPackage },
13868 static int
13869 dissect_dsrc_SignalStatusPackageList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13870 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13871 ett_dsrc_SignalStatusPackageList, dsrc_SignalStatusPackageList_sequence_of,
13872 1, 32, false);
13874 return offset;
13878 static const per_sequence_t dsrc_T_SignalStatusRegional_sequence_of[1] = {
13879 { &hf_dsrc_ssRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13882 static int
13883 dissect_dsrc_T_SignalStatusRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13884 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13885 ett_dsrc_T_SignalStatusRegional, dsrc_T_SignalStatusRegional_sequence_of,
13886 1, 4, false);
13888 return offset;
13892 static const per_sequence_t dsrc_SignalStatus_sequence[] = {
13893 { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_MsgCount },
13894 { &hf_dsrc_ssId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_IntersectionReferenceID },
13895 { &hf_dsrc_sigStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusPackageList },
13896 { &hf_dsrc_ssRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SignalStatusRegional },
13897 { NULL, 0, 0, NULL }
13900 static int
13901 dissect_dsrc_SignalStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13902 enum regext_type_enum save = ((its_private_data_t*)actx->private_data)->type;
13903 ((its_private_data_t*)actx->private_data)->type = Reg_SignalStatus;
13904 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13905 ett_dsrc_SignalStatus, dsrc_SignalStatus_sequence);
13907 ((its_private_data_t*)actx->private_data)->type = save;
13908 return offset;
13912 static const per_sequence_t dsrc_SignalStatusList_sequence_of[1] = {
13913 { &hf_dsrc_SignalStatusList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatus },
13916 static int
13917 dissect_dsrc_SignalStatusList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13918 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13919 ett_dsrc_SignalStatusList, dsrc_SignalStatusList_sequence_of,
13920 1, 32, false);
13922 return offset;
13926 static const per_sequence_t dsrc_T_SSMRegional_sequence_of[1] = {
13927 { &hf_dsrc_ssmRegional_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_RegionalExtension },
13930 static int
13931 dissect_dsrc_T_SSMRegional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13932 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
13933 ett_dsrc_T_SSMRegional, dsrc_T_SSMRegional_sequence_of,
13934 1, 4, false);
13936 return offset;
13940 static const per_sequence_t dsrc_SignalStatusMessage_sequence[] = {
13941 { &hf_dsrc_ssmTimeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MinuteOfTheYear },
13942 { &hf_dsrc_second , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_DSecond },
13943 { &hf_dsrc_sequenceNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_MsgCount },
13944 { &hf_dsrc_ssmStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalStatusList },
13945 { &hf_dsrc_ssmRegional , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_T_SSMRegional },
13946 { NULL, 0, 0, NULL }
13949 static int
13950 dissect_dsrc_SignalStatusMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13951 its_private_data_t *regext = wmem_new0(actx->pinfo->pool, its_private_data_t);
13952 actx->private_data = (void*)regext;
13953 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "SSEM");
13954 col_set_str(actx->pinfo->cinfo, COL_INFO, "SSEM");
13955 regext->type = Reg_SignalStatusMessage;
13956 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
13957 ett_dsrc_SignalStatusMessage, dsrc_SignalStatusMessage_sequence);
13959 return offset;
13963 static const value_string dsrc_FuelType_vals[] = {
13964 { 0, "unknownFuel" },
13965 { 1, "gasoline" },
13966 { 2, "ethanol" },
13967 { 3, "diesel" },
13968 { 4, "electric" },
13969 { 5, "hybrid" },
13970 { 6, "hydrogen" },
13971 { 7, "natGasLiquid" },
13972 { 8, "natGasComp" },
13973 { 9, "propane" },
13974 { 0, NULL }
13978 static int
13979 dissect_dsrc_FuelType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
13980 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
13981 0U, 15U, NULL, false);
13983 return offset;
13986 /*--- PDUs ---*/
13988 static int dissect_dsrc_MapData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
13989 int offset = 0;
13990 asn1_ctx_t asn1_ctx;
13991 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
13992 offset = dissect_dsrc_MapData(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_MapData_PDU);
13993 offset += 7; offset >>= 3;
13994 return offset;
13996 static int dissect_dsrc_RTCMcorrections_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
13997 int offset = 0;
13998 asn1_ctx_t asn1_ctx;
13999 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14000 offset = dissect_dsrc_RTCMcorrections(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_RTCMcorrections_PDU);
14001 offset += 7; offset >>= 3;
14002 return offset;
14004 static int dissect_dsrc_SPAT_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14005 int offset = 0;
14006 asn1_ctx_t asn1_ctx;
14007 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14008 offset = dissect_dsrc_SPAT(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SPAT_PDU);
14009 offset += 7; offset >>= 3;
14010 return offset;
14012 static int dissect_dsrc_SignalRequestMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14013 int offset = 0;
14014 asn1_ctx_t asn1_ctx;
14015 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14016 offset = dissect_dsrc_SignalRequestMessage(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SignalRequestMessage_PDU);
14017 offset += 7; offset >>= 3;
14018 return offset;
14020 static int dissect_dsrc_SignalStatusMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14021 int offset = 0;
14022 asn1_ctx_t asn1_ctx;
14023 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14024 offset = dissect_dsrc_SignalStatusMessage(tvb, offset, &asn1_ctx, tree, hf_dsrc_dsrc_SignalStatusMessage_PDU);
14025 offset += 7; offset >>= 3;
14026 return offset;
14030 /* --- Module AddGrpC --- --- --- */
14033 static const value_string AddGrpC_TimeReference_vals[] = {
14034 { 1, "oneMilliSec" },
14035 { 0, NULL }
14039 static int
14040 dissect_AddGrpC_TimeReference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14041 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14042 0U, 60000U, NULL, false);
14044 return offset;
14048 static const per_sequence_t AddGrpC_ItsStationPosition_sequence[] = {
14049 { &hf_AddGrpC_stationID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StationID },
14050 { &hf_AddGrpC_laneID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneID },
14051 { &hf_AddGrpC_nodeXY , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_NodeOffsetPointXY },
14052 { &hf_AddGrpC_timeReference, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_TimeReference },
14053 { NULL, 0, 0, NULL }
14056 static int
14057 dissect_AddGrpC_ItsStationPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14058 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14059 ett_AddGrpC_ItsStationPosition, AddGrpC_ItsStationPosition_sequence);
14061 return offset;
14065 static const per_sequence_t AddGrpC_ItsStationPositionList_sequence_of[1] = {
14066 { &hf_AddGrpC_ItsStationPositionList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_AddGrpC_ItsStationPosition },
14069 static int
14070 dissect_AddGrpC_ItsStationPositionList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14071 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
14072 ett_AddGrpC_ItsStationPositionList, AddGrpC_ItsStationPositionList_sequence_of,
14073 1, 5, false);
14075 return offset;
14079 static const per_sequence_t AddGrpC_ConnectionManeuverAssist_addGrpC_sequence[] = {
14080 { &hf_AddGrpC_itsStationPosition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_ItsStationPositionList },
14081 { NULL, 0, 0, NULL }
14084 static int
14085 dissect_AddGrpC_ConnectionManeuverAssist_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14086 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14087 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14088 ett_AddGrpC_ConnectionManeuverAssist_addGrpC, AddGrpC_ConnectionManeuverAssist_addGrpC_sequence);
14090 return offset;
14094 static const per_sequence_t AddGrpC_ConnectionTrajectory_addGrpC_sequence[] = {
14095 { &hf_AddGrpC_nodes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeSetXY },
14096 { &hf_AddGrpC_connectionID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneConnectionID },
14097 { NULL, 0, 0, NULL }
14100 static int
14101 dissect_AddGrpC_ConnectionTrajectory_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14102 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14103 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14104 ett_AddGrpC_ConnectionTrajectory_addGrpC, AddGrpC_ConnectionTrajectory_addGrpC_sequence);
14106 return offset;
14110 static const per_sequence_t AddGrpC_PrioritizationResponse_sequence[] = {
14111 { &hf_AddGrpC_stationID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StationID },
14112 { &hf_AddGrpC_priorState , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_PrioritizationResponseStatus },
14113 { &hf_AddGrpC_signalGroup , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalGroupID },
14114 { NULL, 0, 0, NULL }
14117 static int
14118 dissect_AddGrpC_PrioritizationResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14119 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14120 ett_AddGrpC_PrioritizationResponse, AddGrpC_PrioritizationResponse_sequence);
14122 return offset;
14126 static const per_sequence_t AddGrpC_PrioritizationResponseList_sequence_of[1] = {
14127 { &hf_AddGrpC_PrioritizationResponseList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_AddGrpC_PrioritizationResponse },
14130 static int
14131 dissect_AddGrpC_PrioritizationResponseList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14132 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
14133 ett_AddGrpC_PrioritizationResponseList, AddGrpC_PrioritizationResponseList_sequence_of,
14134 1, 10, false);
14136 return offset;
14140 static const per_sequence_t AddGrpC_IntersectionState_addGrpC_sequence[] = {
14141 { &hf_AddGrpC_activePrioritizations, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_PrioritizationResponseList },
14142 { NULL, 0, 0, NULL }
14145 static int
14146 dissect_AddGrpC_IntersectionState_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14147 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14148 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14149 ett_AddGrpC_IntersectionState_addGrpC, AddGrpC_IntersectionState_addGrpC_sequence);
14151 return offset;
14155 static const per_sequence_t AddGrpC_LaneAttributes_addGrpC_sequence[] = {
14156 { &hf_AddGrpC_maxVehicleHeight, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VehicleHeight },
14157 { &hf_AddGrpC_maxVehicleWeight, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VehicleMass },
14158 { NULL, 0, 0, NULL }
14161 static int
14162 dissect_AddGrpC_LaneAttributes_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14163 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14164 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14165 ett_AddGrpC_LaneAttributes_addGrpC, AddGrpC_LaneAttributes_addGrpC_sequence);
14167 return offset;
14171 static const per_sequence_t AddGrpC_SignalHeadLocation_sequence[] = {
14172 { &hf_AddGrpC_nodeXY , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeOffsetPointXY },
14173 { &hf_AddGrpC_nodeZ , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaAltitude },
14174 { &hf_AddGrpC_signalGroupID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_SignalGroupID },
14175 { NULL, 0, 0, NULL }
14178 static int
14179 dissect_AddGrpC_SignalHeadLocation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14180 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14181 ett_AddGrpC_SignalHeadLocation, AddGrpC_SignalHeadLocation_sequence);
14183 return offset;
14187 static const per_sequence_t AddGrpC_SignalHeadLocationList_sequence_of[1] = {
14188 { &hf_AddGrpC_SignalHeadLocationList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_AddGrpC_SignalHeadLocation },
14191 static int
14192 dissect_AddGrpC_SignalHeadLocationList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14193 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
14194 ett_AddGrpC_SignalHeadLocationList, AddGrpC_SignalHeadLocationList_sequence_of,
14195 1, 64, false);
14197 return offset;
14201 static const per_sequence_t AddGrpC_MapData_addGrpC_sequence[] = {
14202 { &hf_AddGrpC_signalHeadLocations, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_SignalHeadLocationList },
14203 { NULL, 0, 0, NULL }
14206 static int
14207 dissect_AddGrpC_MapData_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14208 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14209 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14210 ett_AddGrpC_MapData_addGrpC, AddGrpC_MapData_addGrpC_sequence);
14212 return offset;
14216 static const value_string AddGrpC_ExceptionalCondition_vals[] = {
14217 { 0, "unknown" },
14218 { 1, "publicTransportPriority" },
14219 { 2, "emergencyVehiclePriority" },
14220 { 3, "trainPriority" },
14221 { 4, "bridgeOpen" },
14222 { 5, "vehicleHeight" },
14223 { 6, "weather" },
14224 { 7, "trafficJam" },
14225 { 8, "tunnelClosure" },
14226 { 9, "meteringActive" },
14227 { 10, "truckPriority" },
14228 { 11, "bicyclePlatoonPriority" },
14229 { 12, "vehiclePlatoonPriority" },
14230 { 0, NULL }
14234 static int
14235 dissect_AddGrpC_ExceptionalCondition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14236 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
14237 13, NULL, true, 0, NULL);
14239 return offset;
14243 static const per_sequence_t AddGrpC_MovementEvent_addGrpC_sequence[] = {
14244 { &hf_AddGrpC_stateChangeReason, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_ExceptionalCondition },
14245 { NULL, 0, 0, NULL }
14248 static int
14249 dissect_AddGrpC_MovementEvent_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14250 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14251 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14252 ett_AddGrpC_MovementEvent_addGrpC, AddGrpC_MovementEvent_addGrpC_sequence);
14254 return offset;
14258 static const value_string AddGrpC_PtvRequestType_vals[] = {
14259 { 0, "preRequest" },
14260 { 1, "mainRequest" },
14261 { 2, "doorCloseRequest" },
14262 { 3, "cancelRequest" },
14263 { 4, "emergencyRequest" },
14264 { 0, NULL }
14268 static int
14269 dissect_AddGrpC_PtvRequestType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14270 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
14271 5, NULL, true, 0, NULL);
14273 return offset;
14278 static int
14279 dissect_AddGrpC_INTEGER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14280 offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
14282 return offset;
14286 static const per_sequence_t AddGrpC_Node_sequence[] = {
14287 { &hf_AddGrpC_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_AddGrpC_INTEGER },
14288 { &hf_AddGrpC_lane , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneID },
14289 { &hf_AddGrpC_connectionID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneConnectionID },
14290 { &hf_AddGrpC_intersectionID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_IntersectionID },
14291 { NULL, 0, 0, NULL }
14294 static int
14295 dissect_AddGrpC_Node(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14296 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14297 ett_AddGrpC_Node, AddGrpC_Node_sequence);
14299 return offset;
14303 static const per_sequence_t AddGrpC_NodeLink_sequence_of[1] = {
14304 { &hf_AddGrpC_NodeLink_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_AddGrpC_Node },
14307 static int
14308 dissect_AddGrpC_NodeLink(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14309 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
14310 ett_AddGrpC_NodeLink, AddGrpC_NodeLink_sequence_of,
14311 1, 5, false);
14313 return offset;
14317 static const per_sequence_t AddGrpC_NodeAttributeSet_addGrpC_sequence[] = {
14318 { &hf_AddGrpC_ptvRequest , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_PtvRequestType },
14319 { &hf_AddGrpC_nodeLink , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_NodeLink },
14320 { &hf_AddGrpC_node , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_Node },
14321 { NULL, 0, 0, NULL }
14324 static int
14325 dissect_AddGrpC_NodeAttributeSet_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14326 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14327 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14328 ett_AddGrpC_NodeAttributeSet_addGrpC, AddGrpC_NodeAttributeSet_addGrpC_sequence);
14330 return offset;
14334 static const per_sequence_t AddGrpC_Position3D_addGrpC_sequence[] = {
14335 { &hf_AddGrpC_altitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Altitude },
14336 { NULL, 0, 0, NULL }
14339 static int
14340 dissect_AddGrpC_Position3D_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14341 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14342 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14343 ett_AddGrpC_Position3D_addGrpC, AddGrpC_Position3D_addGrpC_sequence);
14345 return offset;
14349 static const value_string AddGrpC_EmissionType_vals[] = {
14350 { 0, "euro1" },
14351 { 1, "euro2" },
14352 { 2, "euro3" },
14353 { 3, "euro4" },
14354 { 4, "euro5" },
14355 { 5, "euro6" },
14356 { 0, NULL }
14360 static int
14361 dissect_AddGrpC_EmissionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14362 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
14363 6, NULL, true, 0, NULL);
14365 return offset;
14369 static const per_sequence_t AddGrpC_RestrictionUserType_addGrpC_sequence[] = {
14370 { &hf_AddGrpC_emission , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_EmissionType },
14371 { &hf_AddGrpC_fuel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_FuelType },
14372 { NULL, 0, 0, NULL }
14375 static int
14376 dissect_AddGrpC_RestrictionUserType_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14377 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14378 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14379 ett_AddGrpC_RestrictionUserType_addGrpC, AddGrpC_RestrictionUserType_addGrpC_sequence);
14381 return offset;
14385 static const value_string AddGrpC_BatteryStatus_vals[] = {
14386 { 0, "unknown" },
14387 { 1, "critical" },
14388 { 2, "low" },
14389 { 3, "good" },
14390 { 0, NULL }
14394 static int
14395 dissect_AddGrpC_BatteryStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14396 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
14397 4, NULL, true, 0, NULL);
14399 return offset;
14403 static const per_sequence_t AddGrpC_RequestorDescription_addGrpC_sequence[] = {
14404 { &hf_AddGrpC_fuel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_FuelType },
14405 { &hf_AddGrpC_batteryStatus, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_BatteryStatus },
14406 { NULL, 0, 0, NULL }
14409 static int
14410 dissect_AddGrpC_RequestorDescription_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14411 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14412 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14413 ett_AddGrpC_RequestorDescription_addGrpC, AddGrpC_RequestorDescription_addGrpC_sequence);
14415 return offset;
14419 static const value_string AddGrpC_RejectedReason_vals[] = {
14420 { 0, "unknown" },
14421 { 1, "exceptionalCondition" },
14422 { 2, "maxWaitingTimeExceeded" },
14423 { 3, "ptPriorityDisabled" },
14424 { 4, "higherPTPriorityGranted" },
14425 { 5, "vehicleTrackingUnknown" },
14426 { 0, NULL }
14430 static int
14431 dissect_AddGrpC_RejectedReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14432 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
14433 6, NULL, true, 0, NULL);
14435 return offset;
14439 static const per_sequence_t AddGrpC_SignalStatusPackage_addGrpC_sequence[] = {
14440 { &hf_AddGrpC_synchToSchedule, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_DeltaTime },
14441 { &hf_AddGrpC_rejectedReason, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_AddGrpC_RejectedReason },
14442 { NULL, 0, 0, NULL }
14445 static int
14446 dissect_AddGrpC_SignalStatusPackage_addGrpC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14447 actx->private_data = wmem_new0(actx->pinfo->pool, its_private_data_t);
14448 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14449 ett_AddGrpC_SignalStatusPackage_addGrpC, AddGrpC_SignalStatusPackage_addGrpC_sequence);
14451 return offset;
14454 /*--- PDUs ---*/
14456 static int dissect_AddGrpC_ConnectionManeuverAssist_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14457 int offset = 0;
14458 asn1_ctx_t asn1_ctx;
14459 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14460 offset = dissect_AddGrpC_ConnectionManeuverAssist_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_ConnectionManeuverAssist_addGrpC_PDU);
14461 offset += 7; offset >>= 3;
14462 return offset;
14464 static int dissect_AddGrpC_ConnectionTrajectory_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14465 int offset = 0;
14466 asn1_ctx_t asn1_ctx;
14467 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14468 offset = dissect_AddGrpC_ConnectionTrajectory_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_ConnectionTrajectory_addGrpC_PDU);
14469 offset += 7; offset >>= 3;
14470 return offset;
14472 static int dissect_AddGrpC_IntersectionState_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14473 int offset = 0;
14474 asn1_ctx_t asn1_ctx;
14475 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14476 offset = dissect_AddGrpC_IntersectionState_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_IntersectionState_addGrpC_PDU);
14477 offset += 7; offset >>= 3;
14478 return offset;
14480 static int dissect_AddGrpC_LaneAttributes_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14481 int offset = 0;
14482 asn1_ctx_t asn1_ctx;
14483 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14484 offset = dissect_AddGrpC_LaneAttributes_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_LaneAttributes_addGrpC_PDU);
14485 offset += 7; offset >>= 3;
14486 return offset;
14488 static int dissect_AddGrpC_MapData_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14489 int offset = 0;
14490 asn1_ctx_t asn1_ctx;
14491 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14492 offset = dissect_AddGrpC_MapData_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_MapData_addGrpC_PDU);
14493 offset += 7; offset >>= 3;
14494 return offset;
14496 static int dissect_AddGrpC_MovementEvent_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14497 int offset = 0;
14498 asn1_ctx_t asn1_ctx;
14499 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14500 offset = dissect_AddGrpC_MovementEvent_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_MovementEvent_addGrpC_PDU);
14501 offset += 7; offset >>= 3;
14502 return offset;
14504 static int dissect_AddGrpC_NodeAttributeSet_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14505 int offset = 0;
14506 asn1_ctx_t asn1_ctx;
14507 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14508 offset = dissect_AddGrpC_NodeAttributeSet_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_NodeAttributeSet_addGrpC_PDU);
14509 offset += 7; offset >>= 3;
14510 return offset;
14512 static int dissect_AddGrpC_Position3D_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14513 int offset = 0;
14514 asn1_ctx_t asn1_ctx;
14515 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14516 offset = dissect_AddGrpC_Position3D_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_Position3D_addGrpC_PDU);
14517 offset += 7; offset >>= 3;
14518 return offset;
14520 static int dissect_AddGrpC_RestrictionUserType_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14521 int offset = 0;
14522 asn1_ctx_t asn1_ctx;
14523 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14524 offset = dissect_AddGrpC_RestrictionUserType_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_RestrictionUserType_addGrpC_PDU);
14525 offset += 7; offset >>= 3;
14526 return offset;
14528 static int dissect_AddGrpC_RequestorDescription_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14529 int offset = 0;
14530 asn1_ctx_t asn1_ctx;
14531 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14532 offset = dissect_AddGrpC_RequestorDescription_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_RequestorDescription_addGrpC_PDU);
14533 offset += 7; offset >>= 3;
14534 return offset;
14536 static int dissect_AddGrpC_SignalStatusPackage_addGrpC_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
14537 int offset = 0;
14538 asn1_ctx_t asn1_ctx;
14539 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
14540 offset = dissect_AddGrpC_SignalStatusPackage_addGrpC(tvb, offset, &asn1_ctx, tree, hf_AddGrpC_AddGrpC_SignalStatusPackage_addGrpC_PDU);
14541 offset += 7; offset >>= 3;
14542 return offset;
14546 /* --- Module REGION --- --- --- */
14549 /* --- Module GDD --- --- --- */
14551 /*--- Cyclic dependencies ---*/
14553 /* GddStructure -> GddAttributes -> GddAttributes/_item -> InternationalSign-destinationInformation -> InternationalSign-destinationInformation/ioList -> DestinationInformationIO -> DestinationInformationIO/destPlace -> DestinationPlace -> GddStructure */
14554 static int dissect_gdd_GddStructure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
14559 static int
14560 dissect_gdd_Pictogram_countryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14561 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
14562 2, 2, false, NULL);
14564 return offset;
14568 static const value_string gdd_Pictogram_trafficSign_vals[] = {
14569 { 11, "dangerWarning" },
14570 { 12, "regulatory" },
14571 { 13, "informative" },
14572 { 0, NULL }
14575 static uint32_t gdd_Pictogram_trafficSign_value_map[3+0] = {11, 12, 13};
14577 static int
14578 dissect_gdd_Pictogram_trafficSign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14579 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
14580 3, NULL, true, 0, gdd_Pictogram_trafficSign_value_map);
14582 return offset;
14586 static const value_string gdd_Pictogram_publicFacilitySign_vals[] = {
14587 { 21, "publicFacilities" },
14588 { 0, NULL }
14591 static uint32_t gdd_Pictogram_publicFacilitySign_value_map[1+0] = {21};
14593 static int
14594 dissect_gdd_Pictogram_publicFacilitySign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14595 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
14596 1, NULL, true, 0, gdd_Pictogram_publicFacilitySign_value_map);
14598 return offset;
14602 static const value_string gdd_Pictogram_conditionsSign_vals[] = {
14603 { 31, "ambientCondition" },
14604 { 32, "roadCondition" },
14605 { 0, NULL }
14608 static uint32_t gdd_Pictogram_conditionsSign_value_map[2+0] = {31, 32};
14610 static int
14611 dissect_gdd_Pictogram_conditionsSign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14612 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
14613 2, NULL, true, 0, gdd_Pictogram_conditionsSign_value_map);
14615 return offset;
14619 static const value_string gdd_Pictogram_serviceCategory_vals[] = {
14620 { 0, "trafficSignPictogram" },
14621 { 1, "publicFacilitiesPictogram" },
14622 { 2, "ambientOrRoadConditionPictogram" },
14623 { 0, NULL }
14626 static const per_choice_t gdd_Pictogram_serviceCategory_choice[] = {
14627 { 0, &hf_gdd_trafficSignPictogram, ASN1_NO_EXTENSIONS , dissect_gdd_Pictogram_trafficSign },
14628 { 1, &hf_gdd_publicFacilitiesPictogram, ASN1_NO_EXTENSIONS , dissect_gdd_Pictogram_publicFacilitySign },
14629 { 2, &hf_gdd_ambientOrRoadConditionPictogram, ASN1_NO_EXTENSIONS , dissect_gdd_Pictogram_conditionsSign },
14630 { 0, NULL, 0, NULL }
14633 static int
14634 dissect_gdd_Pictogram_serviceCategory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14635 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
14636 ett_gdd_Pictogram_serviceCategory, gdd_Pictogram_serviceCategory_choice,
14637 NULL);
14639 return offset;
14644 static int
14645 dissect_gdd_Pictogram_nature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14646 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14647 1U, 9U, NULL, false);
14649 return offset;
14654 static int
14655 dissect_gdd_Pictogram_serialNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14656 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14657 0U, 99U, NULL, false);
14659 return offset;
14663 static const per_sequence_t gdd_Pictogram_category_sequence[] = {
14664 { &hf_gdd_nature , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Pictogram_nature },
14665 { &hf_gdd_serialNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Pictogram_serialNumber },
14666 { NULL, 0, 0, NULL }
14669 static int
14670 dissect_gdd_Pictogram_category(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14671 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14672 ett_gdd_Pictogram_category, gdd_Pictogram_category_sequence);
14674 return offset;
14678 static const per_sequence_t gdd_Pictogram_sequence[] = {
14679 { &hf_gdd_countryCode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_Pictogram_countryCode },
14680 { &hf_gdd_serviceCategoryCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Pictogram_serviceCategory },
14681 { &hf_gdd_pictogramCategoryCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Pictogram_category },
14682 { NULL, 0, 0, NULL }
14685 static int
14686 dissect_gdd_Pictogram(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14687 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14688 ett_gdd_Pictogram, gdd_Pictogram_sequence);
14690 return offset;
14695 static int
14696 dissect_gdd_Year(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14697 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14698 2000U, 2127U, NULL, true);
14700 return offset;
14704 static const per_sequence_t gdd_T_year_sequence[] = {
14705 { &hf_gdd_yearRangeStartYear, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Year },
14706 { &hf_gdd_yearRangeEndYear, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Year },
14707 { NULL, 0, 0, NULL }
14710 static int
14711 dissect_gdd_T_year(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14712 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14713 ett_gdd_T_year, gdd_T_year_sequence);
14715 return offset;
14720 static int
14721 dissect_gdd_MonthDay_month(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14722 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14723 1U, 12U, NULL, false);
14725 return offset;
14730 static int
14731 dissect_gdd_MonthDay_day(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14732 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14733 1U, 31U, NULL, false);
14735 return offset;
14739 static const per_sequence_t gdd_MonthDay_sequence[] = {
14740 { &hf_gdd_month , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_MonthDay_month },
14741 { &hf_gdd_day , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_MonthDay_day },
14742 { NULL, 0, 0, NULL }
14745 static int
14746 dissect_gdd_MonthDay(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14747 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14748 ett_gdd_MonthDay, gdd_MonthDay_sequence);
14750 return offset;
14754 static const per_sequence_t gdd_T_month_day_sequence[] = {
14755 { &hf_gdd_dateRangeStartMonthDate, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_MonthDay },
14756 { &hf_gdd_dateRangeEndMonthDate, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_MonthDay },
14757 { NULL, 0, 0, NULL }
14760 static int
14761 dissect_gdd_T_month_day(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14762 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14763 ett_gdd_T_month_day, gdd_T_month_day_sequence);
14765 return offset;
14769 static int * const gdd_RPDT_bits[] = {
14770 &hf_gdd_RPDT_national_holiday,
14771 &hf_gdd_RPDT_even_days,
14772 &hf_gdd_RPDT_odd_days,
14773 &hf_gdd_RPDT_market_day,
14774 NULL
14777 static int
14778 dissect_gdd_RPDT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14779 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
14780 4, 4, false, gdd_RPDT_bits, 4, NULL, NULL);
14782 return offset;
14787 static int
14788 dissect_gdd_HoursMinutes_hours(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14789 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14790 0U, 23U, NULL, false);
14792 return offset;
14797 static int
14798 dissect_gdd_HoursMinutes_mins(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14799 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14800 0U, 59U, NULL, false);
14802 return offset;
14806 static const per_sequence_t gdd_HoursMinutes_sequence[] = {
14807 { &hf_gdd_hours , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_HoursMinutes_hours },
14808 { &hf_gdd_mins , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_HoursMinutes_mins },
14809 { NULL, 0, 0, NULL }
14812 static int
14813 dissect_gdd_HoursMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14814 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14815 ett_gdd_HoursMinutes, gdd_HoursMinutes_sequence);
14817 return offset;
14821 static const per_sequence_t gdd_T_hourMinutes_sequence[] = {
14822 { &hf_gdd_timeRangeStartTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_HoursMinutes },
14823 { &hf_gdd_timeRangeEndTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_HoursMinutes },
14824 { NULL, 0, 0, NULL }
14827 static int
14828 dissect_gdd_T_hourMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14829 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14830 ett_gdd_T_hourMinutes, gdd_T_hourMinutes_sequence);
14832 return offset;
14836 static int * const gdd_DayOfWeek_bits[] = {
14837 &hf_gdd_DayOfWeek_unused,
14838 &hf_gdd_DayOfWeek_monday,
14839 &hf_gdd_DayOfWeek_tuesday,
14840 &hf_gdd_DayOfWeek_wednesday,
14841 &hf_gdd_DayOfWeek_thursday,
14842 &hf_gdd_DayOfWeek_friday,
14843 &hf_gdd_DayOfWeek_saturday,
14844 &hf_gdd_DayOfWeek_sunday,
14845 NULL
14848 static int
14849 dissect_gdd_DayOfWeek(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14850 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
14851 8, 8, false, gdd_DayOfWeek_bits, 8, NULL, NULL);
14853 return offset;
14857 static const per_sequence_t gdd_InternationalSign_applicablePeriod_sequence[] = {
14858 { &hf_gdd_year , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_T_year },
14859 { &hf_gdd_month_day , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_T_month_day },
14860 { &hf_gdd_repeatingPeriodDayTypes, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_RPDT },
14861 { &hf_gdd_hourMinutes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_T_hourMinutes },
14862 { &hf_gdd_dateRangeOfWeek , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DayOfWeek },
14863 { &hf_gdd_durationHourminute, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_HoursMinutes },
14864 { NULL, 0, 0, NULL }
14867 static int
14868 dissect_gdd_InternationalSign_applicablePeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14869 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14870 ett_gdd_InternationalSign_applicablePeriod, gdd_InternationalSign_applicablePeriod_sequence);
14872 return offset;
14877 static int
14878 dissect_gdd_InternationalSign_exemptedApplicablePeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14879 offset = dissect_gdd_InternationalSign_applicablePeriod(tvb, offset, actx, tree, hf_index);
14881 return offset;
14885 static const value_string gdd_InternationalSign_directionalFlowOfLane_vals[] = {
14886 { 2, "sLT" },
14887 { 1, "sDL" },
14888 { 3, "sRT" },
14889 { 4, "lTO" },
14890 { 5, "rTO" },
14891 { 6, "cLL" },
14892 { 7, "cRI" },
14893 { 8, "oVL" },
14894 { 0, NULL }
14898 static int
14899 dissect_gdd_InternationalSign_directionalFlowOfLane(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14900 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14901 1U, 8U, NULL, false);
14903 return offset;
14908 static int
14909 dissect_gdd_INTEGER_1_16384(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14910 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14911 1U, 16384U, NULL, false);
14913 return offset;
14917 static const value_string gdd_Code_Units_vals[] = {
14918 { 0, "kmperh" },
14919 { 1, "milesperh" },
14920 { 2, "kilometre" },
14921 { 3, "metre" },
14922 { 4, "decimetre" },
14923 { 5, "centimetre" },
14924 { 6, "mile" },
14925 { 7, "yard" },
14926 { 8, "foot" },
14927 { 9, "minutesOfTime" },
14928 { 10, "tonnes" },
14929 { 11, "hundredkg" },
14930 { 12, "pound" },
14931 { 13, "rateOfIncline" },
14932 { 14, "durationinminutes" },
14933 { 0, NULL }
14938 static int
14939 dissect_gdd_Code_Units_CONSTR002(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14940 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14941 2U, 8U, NULL, false);
14943 return offset;
14947 static const per_sequence_t gdd_Distance_sequence[] = {
14948 { &hf_gdd_dValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_INTEGER_1_16384 },
14949 { &hf_gdd_unit , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Code_Units_CONSTR002 },
14950 { NULL, 0, 0, NULL }
14953 static int
14954 dissect_gdd_Distance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14955 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14956 ett_gdd_Distance, gdd_Distance_sequence);
14958 return offset;
14963 static int
14964 dissect_gdd_Code_Units_10_12(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14965 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
14966 10U, 12U, NULL, false);
14968 return offset;
14972 static const per_sequence_t gdd_Weight_sequence[] = {
14973 { &hf_gdd_wValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_INTEGER_1_16384 },
14974 { &hf_gdd_unit_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Code_Units_10_12 },
14975 { NULL, 0, 0, NULL }
14978 static int
14979 dissect_gdd_Weight(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14980 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14981 ett_gdd_Weight, gdd_Weight_sequence);
14983 return offset;
14987 static const per_sequence_t gdd_InternationalSign_applicableVehicleDimensions_sequence[] = {
14988 { &hf_gdd_vehicleHeight , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_Distance },
14989 { &hf_gdd_vehicleWidth , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_Distance },
14990 { &hf_gdd_vehicleLength , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_Distance },
14991 { &hf_gdd_vehicleWeight , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_Weight },
14992 { NULL, 0, 0, NULL }
14995 static int
14996 dissect_gdd_InternationalSign_applicableVehicleDimensions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
14997 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
14998 ett_gdd_InternationalSign_applicableVehicleDimensions, gdd_InternationalSign_applicableVehicleDimensions_sequence);
15000 return offset;
15005 static int
15006 dissect_gdd_INTEGER_0_250(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15007 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15008 0U, 250U, NULL, false);
15010 return offset;
15015 static int
15016 dissect_gdd_Code_Units_0_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15017 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15018 0U, 1U, NULL, false);
15020 return offset;
15024 static const per_sequence_t gdd_InternationalSign_speedLimits_sequence[] = {
15025 { &hf_gdd_speedLimitMax , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_INTEGER_0_250 },
15026 { &hf_gdd_speedLimitMin , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_INTEGER_0_250 },
15027 { &hf_gdd_unit_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Code_Units_0_1 },
15028 { NULL, 0, 0, NULL }
15031 static int
15032 dissect_gdd_InternationalSign_speedLimits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15033 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15034 ett_gdd_InternationalSign_speedLimits, gdd_InternationalSign_speedLimits_sequence);
15036 return offset;
15041 static int
15042 dissect_gdd_InternationalSign_rateOfIncline(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15043 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15044 1U, 32U, NULL, false);
15046 return offset;
15051 static int
15052 dissect_gdd_InternationalSign_distanceBetweenVehicles(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15053 offset = dissect_gdd_Distance(tvb, offset, actx, tree, hf_index);
15055 return offset;
15060 static int
15061 dissect_gdd_DistinInfo_junctionDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15062 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15063 1U, 128U, NULL, false);
15065 return offset;
15070 static int
15071 dissect_gdd_DistinInfo_roundaboutCwDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15072 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15073 1U, 128U, NULL, false);
15075 return offset;
15080 static int
15081 dissect_gdd_DistinInfo_roundaboutCcwDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15082 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15083 1U, 128U, NULL, false);
15085 return offset;
15090 static int
15091 dissect_gdd_IO_arrowDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15092 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15093 0U, 7U, NULL, false);
15095 return offset;
15099 static const value_string gdd_DestinationType_vals[] = {
15100 { 0, "none" },
15101 { 1, "importantArea" },
15102 { 2, "principalArea" },
15103 { 3, "generalArea" },
15104 { 4, "wellKnownPoint" },
15105 { 5, "country" },
15106 { 6, "city" },
15107 { 7, "street" },
15108 { 8, "industrialArea" },
15109 { 9, "historicArea" },
15110 { 10, "touristicArea" },
15111 { 11, "culturalArea" },
15112 { 12, "touristicRoute" },
15113 { 13, "recommendedRoute" },
15114 { 14, "touristicAttraction" },
15115 { 15, "geographicArea" },
15116 { 0, NULL }
15120 static int
15121 dissect_gdd_DestinationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15122 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15123 0U, 15U, NULL, true);
15125 return offset;
15130 static int
15131 dissect_gdd_DestPlace_destBlob(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15132 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
15133 NO_BOUND, NO_BOUND, false, NULL);
15135 return offset;
15140 static int
15141 dissect_gdd_DestPlace_placeNameIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15142 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15143 1U, 999U, NULL, false);
15145 return offset;
15150 static int
15151 dissect_gdd_DestPlace_placeNameText(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15152 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
15153 NO_BOUND, NO_BOUND, false);
15155 return offset;
15159 static const per_sequence_t gdd_DestinationPlace_sequence[] = {
15160 { &hf_gdd_destType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_DestinationType },
15161 { &hf_gdd_destRSCode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_GddStructure },
15162 { &hf_gdd_destBlob , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DestPlace_destBlob },
15163 { &hf_gdd_placeNameIdentification, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DestPlace_placeNameIdentification },
15164 { &hf_gdd_placeNameText , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DestPlace_placeNameText },
15165 { NULL, 0, 0, NULL }
15168 static int
15169 dissect_gdd_DestinationPlace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15170 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15171 ett_gdd_DestinationPlace, gdd_DestinationPlace_sequence);
15173 return offset;
15177 static const per_sequence_t gdd_SEQUENCE_SIZE_1_4__OF_DestinationPlace_sequence_of[1] = {
15178 { &hf_gdd_destPlace_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_DestinationPlace },
15181 static int
15182 dissect_gdd_SEQUENCE_SIZE_1_4__OF_DestinationPlace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15183 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15184 ett_gdd_SEQUENCE_SIZE_1_4__OF_DestinationPlace, gdd_SEQUENCE_SIZE_1_4__OF_DestinationPlace_sequence_of,
15185 1, 4, true);
15187 return offset;
15191 static const value_string gdd_DestinationRoadType_vals[] = {
15192 { 0, "none" },
15193 { 1, "nationalHighway" },
15194 { 2, "localHighway" },
15195 { 3, "tollExpresswayMotorway" },
15196 { 4, "internationalHighway" },
15197 { 5, "highway" },
15198 { 6, "expressway" },
15199 { 7, "nationalRoad" },
15200 { 8, "regionalProvincialRoad" },
15201 { 9, "localRoad" },
15202 { 10, "motorwayJunction" },
15203 { 11, "diversion" },
15204 { 12, "rfu1" },
15205 { 13, "rfu2" },
15206 { 14, "rfu3" },
15207 { 15, "rfu4" },
15208 { 0, NULL }
15212 static int
15213 dissect_gdd_DestinationRoadType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15214 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15215 0U, 15U, NULL, true);
15217 return offset;
15222 static int
15223 dissect_gdd_DestRoad_roadNumberIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15224 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15225 1U, 999U, NULL, false);
15227 return offset;
15232 static int
15233 dissect_gdd_DestRoad_roadNumberText(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15234 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
15235 NO_BOUND, NO_BOUND, false);
15237 return offset;
15241 static const per_sequence_t gdd_DestinationRoad_sequence[] = {
15242 { &hf_gdd_derType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_DestinationRoadType },
15243 { &hf_gdd_roadNumberIdentifier_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DestRoad_roadNumberIdentifier },
15244 { &hf_gdd_roadNumberText , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DestRoad_roadNumberText },
15245 { NULL, 0, 0, NULL }
15248 static int
15249 dissect_gdd_DestinationRoad(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15250 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15251 ett_gdd_DestinationRoad, gdd_DestinationRoad_sequence);
15253 return offset;
15257 static const per_sequence_t gdd_SEQUENCE_SIZE_1_4__OF_DestinationRoad_sequence_of[1] = {
15258 { &hf_gdd_destRoad_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_DestinationRoad },
15261 static int
15262 dissect_gdd_SEQUENCE_SIZE_1_4__OF_DestinationRoad(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15263 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15264 ett_gdd_SEQUENCE_SIZE_1_4__OF_DestinationRoad, gdd_SEQUENCE_SIZE_1_4__OF_DestinationRoad_sequence_of,
15265 1, 4, true);
15267 return offset;
15272 static int
15273 dissect_gdd_IO_roadNumberIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15274 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15275 1U, 999U, NULL, false);
15277 return offset;
15282 static int
15283 dissect_gdd_IO_streetName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15284 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15285 1U, 999U, NULL, false);
15287 return offset;
15292 static int
15293 dissect_gdd_IO_streetNameText(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15294 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
15295 NO_BOUND, NO_BOUND, false);
15297 return offset;
15302 static int
15303 dissect_gdd_DistOrDuration_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15304 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15305 1U, 16384U, NULL, false);
15307 return offset;
15312 static int
15313 dissect_gdd_DistOrDuration_Units(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15314 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15315 2U, 9U, NULL, false);
15317 return offset;
15321 static const per_sequence_t gdd_DistanceOrDuration_sequence[] = {
15322 { &hf_gdd_dodValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_DistOrDuration_value },
15323 { &hf_gdd_unit_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_DistOrDuration_Units },
15324 { NULL, 0, 0, NULL }
15327 static int
15328 dissect_gdd_DistanceOrDuration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15329 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15330 ett_gdd_DistanceOrDuration, gdd_DistanceOrDuration_sequence);
15332 return offset;
15336 static const per_sequence_t gdd_DestinationInformationIO_sequence[] = {
15337 { &hf_gdd_arrowDirection , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_IO_arrowDirection },
15338 { &hf_gdd_destPlace , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_SEQUENCE_SIZE_1_4__OF_DestinationPlace },
15339 { &hf_gdd_destRoad , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_SEQUENCE_SIZE_1_4__OF_DestinationRoad },
15340 { &hf_gdd_roadNumberIdentifier, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_IO_roadNumberIdentifier },
15341 { &hf_gdd_streetName , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_IO_streetName },
15342 { &hf_gdd_streetNameText , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_IO_streetNameText },
15343 { &hf_gdd_distanceToDivergingPoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DistanceOrDuration },
15344 { &hf_gdd_distanceToDestinationPlace, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DistanceOrDuration },
15345 { NULL, 0, 0, NULL }
15348 static int
15349 dissect_gdd_DestinationInformationIO(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15350 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15351 ett_gdd_DestinationInformationIO, gdd_DestinationInformationIO_sequence);
15353 return offset;
15357 static const per_sequence_t gdd_SEQUENCE_SIZE_1_8__OF_DestinationInformationIO_sequence_of[1] = {
15358 { &hf_gdd_ioList_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_DestinationInformationIO },
15361 static int
15362 dissect_gdd_SEQUENCE_SIZE_1_8__OF_DestinationInformationIO(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15363 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15364 ett_gdd_SEQUENCE_SIZE_1_8__OF_DestinationInformationIO, gdd_SEQUENCE_SIZE_1_8__OF_DestinationInformationIO_sequence_of,
15365 1, 8, true);
15367 return offset;
15371 static const per_sequence_t gdd_InternationalSign_destinationInformation_sequence[] = {
15372 { &hf_gdd_junctionDirection, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DistinInfo_junctionDirection },
15373 { &hf_gdd_roundaboutCwDirection, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DistinInfo_roundaboutCwDirection },
15374 { &hf_gdd_roundaboutCcwDirection, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_DistinInfo_roundaboutCcwDirection },
15375 { &hf_gdd_ioList , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_SEQUENCE_SIZE_1_8__OF_DestinationInformationIO },
15376 { NULL, 0, 0, NULL }
15379 static int
15380 dissect_gdd_InternationalSign_destinationInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15381 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15382 ett_gdd_InternationalSign_destinationInformation, gdd_InternationalSign_destinationInformation_sequence);
15384 return offset;
15388 static const per_sequence_t gdd_InternationalSign_section_sequence[] = {
15389 { &hf_gdd_startingPointLength, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_Distance },
15390 { &hf_gdd_continuityLength, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_Distance },
15391 { NULL, 0, 0, NULL }
15394 static int
15395 dissect_gdd_InternationalSign_section(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15396 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15397 ett_gdd_InternationalSign_section, gdd_InternationalSign_section_sequence);
15399 return offset;
15404 static int
15405 dissect_gdd_InternationalSign_numberOfLane(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15406 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15407 0U, 99U, NULL, false);
15409 return offset;
15413 static const value_string gdd_GddAttributes_item_vals[] = {
15414 { 0, "dtm" },
15415 { 1, "edt" },
15416 { 2, "dfl" },
15417 { 3, "ved" },
15418 { 4, "spe" },
15419 { 5, "roi" },
15420 { 6, "dbv" },
15421 { 7, "ddd" },
15422 { 8, "set" },
15423 { 9, "nol" },
15424 { 0, NULL }
15427 static const per_choice_t gdd_GddAttributes_item_choice[] = {
15428 { 0, &hf_gdd_dtm , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_applicablePeriod },
15429 { 1, &hf_gdd_edt , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_exemptedApplicablePeriod },
15430 { 2, &hf_gdd_dfl , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_directionalFlowOfLane },
15431 { 3, &hf_gdd_ved , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_applicableVehicleDimensions },
15432 { 4, &hf_gdd_spe , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_speedLimits },
15433 { 5, &hf_gdd_roi , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_rateOfIncline },
15434 { 6, &hf_gdd_dbv , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_distanceBetweenVehicles },
15435 { 7, &hf_gdd_ddd , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_destinationInformation },
15436 { 8, &hf_gdd_set , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_section },
15437 { 9, &hf_gdd_nol , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_numberOfLane },
15438 { 0, NULL, 0, NULL }
15441 static int
15442 dissect_gdd_GddAttributes_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15443 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
15444 ett_gdd_GddAttributes_item, gdd_GddAttributes_item_choice,
15445 NULL);
15447 return offset;
15451 static const per_sequence_t gdd_GddAttributes_sequence_of[1] = {
15452 { &hf_gdd_GddAttributes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_GddAttributes_item },
15455 static int
15456 dissect_gdd_GddAttributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15457 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15458 ett_gdd_GddAttributes, gdd_GddAttributes_sequence_of,
15459 1, 8, true);
15461 return offset;
15465 static const per_sequence_t gdd_GddStructure_sequence[] = {
15466 { &hf_gdd_pictogramCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_Pictogram },
15467 { &hf_gdd_attributes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_gdd_GddAttributes },
15468 { NULL, 0, 0, NULL }
15471 static int
15472 dissect_gdd_GddStructure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15473 // GddStructure -> GddAttributes -> GddAttributes/_item -> InternationalSign-destinationInformation -> InternationalSign-destinationInformation/ioList -> DestinationInformationIO -> DestinationInformationIO/destPlace -> DestinationPlace -> GddStructure
15474 actx->pinfo->dissection_depth += 8;
15475 increment_dissection_depth(actx->pinfo);
15476 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15477 ett_gdd_GddStructure, gdd_GddStructure_sequence);
15479 actx->pinfo->dissection_depth -= 8;
15480 decrement_dissection_depth(actx->pinfo);
15481 return offset;
15485 /* --- Module IVI --- --- --- */
15488 static const per_sequence_t ivi_IviIdentificationNumbers_sequence_of[1] = {
15489 { &hf_ivi_IviIdentificationNumbers_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_IviIdentificationNumber },
15492 static int
15493 dissect_ivi_IviIdentificationNumbers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15494 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15495 ett_ivi_IviIdentificationNumbers, ivi_IviIdentificationNumbers_sequence_of,
15496 1, 8, false);
15498 return offset;
15502 static const value_string ivi_IviStatus_vals[] = {
15503 { 0, "new" },
15504 { 1, "update" },
15505 { 2, "cancellation" },
15506 { 3, "negation" },
15507 { 0, NULL }
15511 static int
15512 dissect_ivi_IviStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15513 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15514 0U, 7U, NULL, false);
15516 return offset;
15520 static const per_sequence_t ivi_ConnectedDenms_sequence_of[1] = {
15521 { &hf_ivi_ConnectedDenms_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ActionID },
15524 static int
15525 dissect_ivi_ConnectedDenms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15526 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15527 ett_ivi_ConnectedDenms, ivi_ConnectedDenms_sequence_of,
15528 1, 8, true);
15530 return offset;
15534 static const per_sequence_t ivi_IviManagementContainer_sequence[] = {
15535 { &hf_ivi_serviceProviderId, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Provider },
15536 { &hf_ivi_iviIdentificationNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_IviIdentificationNumber },
15537 { &hf_ivi_timeStamp , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_TimestampIts },
15538 { &hf_ivi_validFrom , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_TimestampIts },
15539 { &hf_ivi_validTo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_TimestampIts },
15540 { &hf_ivi_connectedIviStructures, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_IviIdentificationNumbers },
15541 { &hf_ivi_iviStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_IviStatus },
15542 { &hf_ivi_connectedDenms , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ivi_ConnectedDenms },
15543 { NULL, 0, 0, NULL }
15546 static int
15547 dissect_ivi_IviManagementContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15548 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15549 ett_ivi_IviManagementContainer, ivi_IviManagementContainer_sequence);
15551 return offset;
15556 static int
15557 dissect_ivi_Zid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15558 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15559 1U, 32U, NULL, true);
15561 return offset;
15566 static int
15567 dissect_ivi_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15568 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15569 0U, 255U, NULL, false);
15571 return offset;
15575 static const per_sequence_t ivi_DeltaPosition_sequence[] = {
15576 { &hf_ivi_deltaLatitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DeltaLatitude },
15577 { &hf_ivi_deltaLongitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DeltaLongitude },
15578 { NULL, 0, 0, NULL }
15581 static int
15582 dissect_ivi_DeltaPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15583 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15584 ett_ivi_DeltaPosition, ivi_DeltaPosition_sequence);
15586 return offset;
15590 static const per_sequence_t ivi_DeltaPositions_sequence_of[1] = {
15591 { &hf_ivi_DeltaPositions_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_DeltaPosition },
15594 static int
15595 dissect_ivi_DeltaPositions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15596 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15597 ett_ivi_DeltaPositions, ivi_DeltaPositions_sequence_of,
15598 1, 32, true);
15600 return offset;
15604 static const per_sequence_t ivi_DeltaReferencePositions_sequence_of[1] = {
15605 { &hf_ivi_DeltaReferencePositions_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DeltaReferencePosition },
15608 static int
15609 dissect_ivi_DeltaReferencePositions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15610 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15611 ett_ivi_DeltaReferencePositions, ivi_DeltaReferencePositions_sequence_of,
15612 1, 32, true);
15614 return offset;
15618 static const per_sequence_t ivi_AbsolutePosition_sequence[] = {
15619 { &hf_ivi_latitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
15620 { &hf_ivi_longitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
15621 { NULL, 0, 0, NULL }
15624 static int
15625 dissect_ivi_AbsolutePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15626 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15627 ett_ivi_AbsolutePosition, ivi_AbsolutePosition_sequence);
15629 return offset;
15633 static const per_sequence_t ivi_AbsolutePositions_sequence_of[1] = {
15634 { &hf_ivi_AbsolutePositions_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_AbsolutePosition },
15637 static int
15638 dissect_ivi_AbsolutePositions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15639 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15640 ett_ivi_AbsolutePositions, ivi_AbsolutePositions_sequence_of,
15641 1, 8, true);
15643 return offset;
15647 static const per_sequence_t ivi_AbsolutePositionWAltitude_sequence[] = {
15648 { &hf_ivi_latitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Latitude },
15649 { &hf_ivi_longitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Longitude },
15650 { &hf_ivi_altitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Altitude },
15651 { NULL, 0, 0, NULL }
15654 static int
15655 dissect_ivi_AbsolutePositionWAltitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15656 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15657 ett_ivi_AbsolutePositionWAltitude, ivi_AbsolutePositionWAltitude_sequence);
15659 return offset;
15663 static const per_sequence_t ivi_AbsolutePositionsWAltitude_sequence_of[1] = {
15664 { &hf_ivi_AbsolutePositionsWAltitude_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_AbsolutePositionWAltitude },
15667 static int
15668 dissect_ivi_AbsolutePositionsWAltitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15669 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15670 ett_ivi_AbsolutePositionsWAltitude, ivi_AbsolutePositionsWAltitude_sequence_of,
15671 1, 8, true);
15673 return offset;
15677 static const value_string ivi_PolygonalLine_vals[] = {
15678 { 0, "deltaPositions" },
15679 { 1, "deltaPositionsWithAltitude" },
15680 { 2, "absolutePositions" },
15681 { 3, "absolutePositionsWithAltitude" },
15682 { 0, NULL }
15685 static const per_choice_t ivi_PolygonalLine_choice[] = {
15686 { 0, &hf_ivi_deltaPositions , ASN1_EXTENSION_ROOT , dissect_ivi_DeltaPositions },
15687 { 1, &hf_ivi_deltaPositionsWithAltitude, ASN1_EXTENSION_ROOT , dissect_ivi_DeltaReferencePositions },
15688 { 2, &hf_ivi_absolutePositions, ASN1_EXTENSION_ROOT , dissect_ivi_AbsolutePositions },
15689 { 3, &hf_ivi_absolutePositionsWithAltitude, ASN1_EXTENSION_ROOT , dissect_ivi_AbsolutePositionsWAltitude },
15690 { 0, NULL, 0, NULL }
15693 static int
15694 dissect_ivi_PolygonalLine(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15695 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
15696 ett_ivi_PolygonalLine, ivi_PolygonalLine_choice,
15697 NULL);
15699 return offset;
15704 static int
15705 dissect_ivi_IviLaneWidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15706 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15707 0U, 1023U, NULL, false);
15709 return offset;
15713 static const per_sequence_t ivi_Segment_sequence[] = {
15714 { &hf_ivi_line , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_PolygonalLine },
15715 { &hf_ivi_laneWidth , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_IviLaneWidth },
15716 { NULL, 0, 0, NULL }
15719 static int
15720 dissect_ivi_Segment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15721 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15722 ett_ivi_Segment, ivi_Segment_sequence);
15724 return offset;
15729 static int
15730 dissect_ivi_INTEGER_M32768_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15731 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15732 -32768, 32767U, NULL, false);
15734 return offset;
15738 static const per_sequence_t ivi_ComputedSegment_sequence[] = {
15739 { &hf_ivi_zoneId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Zid },
15740 { &hf_ivi_laneNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LanePosition },
15741 { &hf_ivi_laneWidth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_IviLaneWidth },
15742 { &hf_ivi_offsetDistance , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_INTEGER_M32768_32767 },
15743 { &hf_ivi_offsetPosition , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_DeltaReferencePosition },
15744 { NULL, 0, 0, NULL }
15747 static int
15748 dissect_ivi_ComputedSegment(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15749 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15750 ett_ivi_ComputedSegment, ivi_ComputedSegment_sequence);
15752 return offset;
15756 static const value_string ivi_Zone_vals[] = {
15757 { 0, "segment" },
15758 { 1, "area" },
15759 { 2, "computedSegment" },
15760 { 0, NULL }
15763 static const per_choice_t ivi_Zone_choice[] = {
15764 { 0, &hf_ivi_segment , ASN1_EXTENSION_ROOT , dissect_ivi_Segment },
15765 { 1, &hf_ivi_area , ASN1_EXTENSION_ROOT , dissect_ivi_PolygonalLine },
15766 { 2, &hf_ivi_computedSegment , ASN1_EXTENSION_ROOT , dissect_ivi_ComputedSegment },
15767 { 0, NULL, 0, NULL }
15770 static int
15771 dissect_ivi_Zone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15772 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
15773 ett_ivi_Zone, ivi_Zone_choice,
15774 NULL);
15776 return offset;
15780 static const per_sequence_t ivi_GlcPart_sequence[] = {
15781 { &hf_ivi_zoneId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_Zid },
15782 { &hf_ivi_laneNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_LanePosition },
15783 { &hf_ivi_zoneExtension , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_0_255 },
15784 { &hf_ivi_zoneHeading , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_HeadingValue },
15785 { &hf_ivi_zone , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_Zone },
15786 { NULL, 0, 0, NULL }
15789 static int
15790 dissect_ivi_GlcPart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15791 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15792 ett_ivi_GlcPart, ivi_GlcPart_sequence);
15794 return offset;
15798 static const per_sequence_t ivi_GlcParts_sequence_of[1] = {
15799 { &hf_ivi_GlcParts_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_GlcPart },
15802 static int
15803 dissect_ivi_GlcParts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15804 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15805 ett_ivi_GlcParts, ivi_GlcParts_sequence_of,
15806 1, 16, true);
15808 return offset;
15812 static const per_sequence_t ivi_GeographicLocationContainer_sequence[] = {
15813 { &hf_ivi_referencePosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ReferencePosition },
15814 { &hf_ivi_referencePositionTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_TimestampIts },
15815 { &hf_ivi_referencePositionHeading, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Heading },
15816 { &hf_ivi_referencePositionSpeed, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Speed },
15817 { &hf_ivi_parts , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_GlcParts },
15818 { NULL, 0, 0, NULL }
15821 static int
15822 dissect_ivi_GeographicLocationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15823 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15824 ett_ivi_GeographicLocationContainer, ivi_GeographicLocationContainer_sequence);
15826 return offset;
15830 static const per_sequence_t ivi_ZoneIds_sequence_of[1] = {
15831 { &hf_ivi_ZoneIds_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Zid },
15834 static int
15835 dissect_ivi_ZoneIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15836 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15837 ett_ivi_ZoneIds, ivi_ZoneIds_sequence_of,
15838 1, 8, true);
15840 return offset;
15845 static int
15846 dissect_ivi_T_GicPartDetectionZoneIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15847 offset = dissect_ivi_ZoneIds(tvb, offset, actx, tree, hf_index);
15849 return offset;
15854 static int
15855 dissect_ivi_T_GicPartRelevanceZoneIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15856 offset = dissect_ivi_ZoneIds(tvb, offset, actx, tree, hf_index);
15858 return offset;
15862 static const value_string ivi_Direction_vals[] = {
15863 { 0, "sameDirection" },
15864 { 1, "oppositeDirection" },
15865 { 2, "bothDirections" },
15866 { 3, "valueNotUsed" },
15867 { 0, NULL }
15871 static int
15872 dissect_ivi_Direction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15873 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15874 0U, 3U, NULL, false);
15876 return offset;
15881 static int
15882 dissect_ivi_T_GicPartDriverAwarenessZoneIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15883 offset = dissect_ivi_ZoneIds(tvb, offset, actx, tree, hf_index);
15885 return offset;
15889 static const per_sequence_t ivi_LanePositions_sequence_of[1] = {
15890 { &hf_ivi_LanePositions_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LanePosition },
15893 static int
15894 dissect_ivi_LanePositions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15895 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
15896 ett_ivi_LanePositions, ivi_LanePositions_sequence_of,
15897 1, 8, true);
15899 return offset;
15903 static const value_string ivi_IviType_vals[] = {
15904 { 0, "immediateDangerWarningMessages" },
15905 { 1, "regulatoryMessages" },
15906 { 2, "trafficRelatedInformationMessages" },
15907 { 3, "pollutionMessages" },
15908 { 4, "notTrafficRelatedInformationMessages" },
15909 { 0, NULL }
15913 static int
15914 dissect_ivi_IviType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15915 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15916 0U, 7U, NULL, false);
15918 return offset;
15922 static const value_string ivi_IviPurpose_vals[] = {
15923 { 0, "safety" },
15924 { 1, "environmental" },
15925 { 2, "trafficOptimisation" },
15926 { 0, NULL }
15930 static int
15931 dissect_ivi_IviPurpose(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15932 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15933 0U, 3U, NULL, false);
15935 return offset;
15939 static const value_string ivi_LaneStatus_vals[] = {
15940 { 0, "open" },
15941 { 1, "closed" },
15942 { 2, "mergeR" },
15943 { 3, "mergeL" },
15944 { 4, "mergeLR" },
15945 { 5, "provisionallyOpen" },
15946 { 6, "diverging" },
15947 { 0, NULL }
15951 static int
15952 dissect_ivi_LaneStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15953 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15954 0U, 7U, NULL, true);
15956 return offset;
15960 static const value_string ivi_GoodsType_vals[] = {
15961 { 0, "ammunition" },
15962 { 1, "chemicals" },
15963 { 2, "empty" },
15964 { 3, "fuel" },
15965 { 4, "glass" },
15966 { 5, "dangerous" },
15967 { 6, "liquid" },
15968 { 7, "liveStock" },
15969 { 8, "dangerousForPeople" },
15970 { 9, "dangerousForTheEnvironment" },
15971 { 10, "dangerousForWater" },
15972 { 11, "perishableProducts" },
15973 { 12, "pharmaceutical" },
15974 { 13, "vehicles" },
15975 { 0, NULL }
15979 static int
15980 dissect_ivi_GoodsType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15981 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
15982 0U, 15U, NULL, true);
15984 return offset;
15988 static const per_sequence_t ivi_LoadType_sequence[] = {
15989 { &hf_ivi_goodsType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_GoodsType },
15990 { &hf_ivi_dangerousGoodsType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DangerousGoodsBasic },
15991 { &hf_ivi_specialTransportType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SpecialTransportType },
15992 { NULL, 0, 0, NULL }
15995 static int
15996 dissect_ivi_LoadType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
15997 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
15998 ett_ivi_LoadType, ivi_LoadType_sequence);
16000 return offset;
16004 static const value_string ivi_VehicleCharacteristicsFixValues_vals[] = {
16005 { 0, "simpleVehicleType" },
16006 { 1, "euVehicleCategoryCode" },
16007 { 2, "iso3833VehicleType" },
16008 { 3, "euroAndCo2value" },
16009 { 4, "engineCharacteristics" },
16010 { 5, "loadType" },
16011 { 6, "usage" },
16012 { 0, NULL }
16015 static const per_choice_t ivi_VehicleCharacteristicsFixValues_choice[] = {
16016 { 0, &hf_ivi_simpleVehicleType, ASN1_EXTENSION_ROOT , dissect_its_StationType },
16017 { 1, &hf_ivi_euVehicleCategoryCode, ASN1_EXTENSION_ROOT , dissect_its_EuVehicleCategoryCode },
16018 { 2, &hf_ivi_iso3833VehicleType, ASN1_EXTENSION_ROOT , dissect_its_Iso3833VehicleType },
16019 { 3, &hf_ivi_euroAndCo2value , ASN1_EXTENSION_ROOT , dissect_dsrc_app_EnvironmentalCharacteristics },
16020 { 4, &hf_ivi_engineCharacteristics, ASN1_EXTENSION_ROOT , dissect_dsrc_app_EngineCharacteristics },
16021 { 5, &hf_ivi_loadType , ASN1_EXTENSION_ROOT , dissect_ivi_LoadType },
16022 { 6, &hf_ivi_usage , ASN1_EXTENSION_ROOT , dissect_its_VehicleRole },
16023 { 0, NULL, 0, NULL }
16026 static int
16027 dissect_ivi_VehicleCharacteristicsFixValues(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16028 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
16029 ett_ivi_VehicleCharacteristicsFixValues, ivi_VehicleCharacteristicsFixValues_choice,
16030 NULL);
16032 return offset;
16036 static const per_sequence_t ivi_VehicleCharacteristicsFixValuesList_sequence_of[1] = {
16037 { &hf_ivi_VehicleCharacteristicsFixValuesList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_VehicleCharacteristicsFixValues },
16040 static int
16041 dissect_ivi_VehicleCharacteristicsFixValuesList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16042 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16043 ett_ivi_VehicleCharacteristicsFixValuesList, ivi_VehicleCharacteristicsFixValuesList_sequence_of,
16044 1, 4, true);
16046 return offset;
16051 static int
16052 dissect_ivi_T_TractorCharactEqualTo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16053 offset = dissect_ivi_VehicleCharacteristicsFixValuesList(tvb, offset, actx, tree, hf_index);
16055 return offset;
16060 static int
16061 dissect_ivi_T_TractorCharactNotEqualTo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16062 offset = dissect_ivi_VehicleCharacteristicsFixValuesList(tvb, offset, actx, tree, hf_index);
16064 return offset;
16068 static const value_string ivi_ComparisonOperator_vals[] = {
16069 { 0, "greaterThan" },
16070 { 1, "greaterThanOrEqualTo" },
16071 { 2, "lessThan" },
16072 { 3, "lessThanOrEqualTo" },
16073 { 0, NULL }
16077 static int
16078 dissect_ivi_ComparisonOperator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16079 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16080 0U, 3U, NULL, false);
16082 return offset;
16087 static int
16088 dissect_ivi_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16089 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16090 0U, 7U, NULL, false);
16092 return offset;
16096 static const value_string ivi_T_limits_vals[] = {
16097 { 0, "numberOfAxles" },
16098 { 1, "vehicleDimensions" },
16099 { 2, "vehicleWeightLimits" },
16100 { 3, "axleWeightLimits" },
16101 { 4, "passengerCapacity" },
16102 { 5, "exhaustEmissionValues" },
16103 { 6, "dieselEmissionValues" },
16104 { 7, "soundLevel" },
16105 { 0, NULL }
16108 static const per_choice_t ivi_T_limits_choice[] = {
16109 { 0, &hf_ivi_numberOfAxles , ASN1_EXTENSION_ROOT , dissect_ivi_INTEGER_0_7 },
16110 { 1, &hf_ivi_vehicleDimensions, ASN1_EXTENSION_ROOT , dissect_dsrc_app_VehicleDimensions },
16111 { 2, &hf_ivi_vehicleWeightLimits, ASN1_EXTENSION_ROOT , dissect_dsrc_app_VehicleWeightLimits },
16112 { 3, &hf_ivi_axleWeightLimits, ASN1_EXTENSION_ROOT , dissect_dsrc_app_AxleWeightLimits },
16113 { 4, &hf_ivi_passengerCapacity, ASN1_EXTENSION_ROOT , dissect_dsrc_app_PassengerCapacity },
16114 { 5, &hf_ivi_exhaustEmissionValues, ASN1_EXTENSION_ROOT , dissect_dsrc_app_ExhaustEmissionValues },
16115 { 6, &hf_ivi_dieselEmissionValues, ASN1_EXTENSION_ROOT , dissect_dsrc_app_DieselEmissionValues },
16116 { 7, &hf_ivi_soundLevel , ASN1_EXTENSION_ROOT , dissect_dsrc_app_SoundLevel },
16117 { 0, NULL, 0, NULL }
16120 static int
16121 dissect_ivi_T_limits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16122 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
16123 ett_ivi_T_limits, ivi_T_limits_choice,
16124 NULL);
16126 return offset;
16130 static const per_sequence_t ivi_VehicleCharacteristicsRanges_sequence[] = {
16131 { &hf_ivi_comparisonOperator, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_ComparisonOperator },
16132 { &hf_ivi_limits , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_T_limits },
16133 { NULL, 0, 0, NULL }
16136 static int
16137 dissect_ivi_VehicleCharacteristicsRanges(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16138 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16139 ett_ivi_VehicleCharacteristicsRanges, ivi_VehicleCharacteristicsRanges_sequence);
16141 return offset;
16145 static const per_sequence_t ivi_VehicleCharacteristicsRangesList_sequence_of[1] = {
16146 { &hf_ivi_VehicleCharacteristicsRangesList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_VehicleCharacteristicsRanges },
16149 static int
16150 dissect_ivi_VehicleCharacteristicsRangesList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16151 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16152 ett_ivi_VehicleCharacteristicsRangesList, ivi_VehicleCharacteristicsRangesList_sequence_of,
16153 1, 4, true);
16155 return offset;
16159 static const per_sequence_t ivi_TractorCharacteristics_sequence[] = {
16160 { &hf_ivi_toEqualTo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_T_TractorCharactEqualTo },
16161 { &hf_ivi_toNotEqualTo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_T_TractorCharactNotEqualTo },
16162 { &hf_ivi_ranges , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_VehicleCharacteristicsRangesList },
16163 { NULL, 0, 0, NULL }
16166 static int
16167 dissect_ivi_TractorCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16168 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16169 ett_ivi_TractorCharacteristics, ivi_TractorCharacteristics_sequence);
16171 return offset;
16175 static const per_sequence_t ivi_TrailerCharacteristicsFixValuesList_sequence_of[1] = {
16176 { &hf_ivi_TrailerCharacteristicsFixValuesList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_VehicleCharacteristicsFixValues },
16179 static int
16180 dissect_ivi_TrailerCharacteristicsFixValuesList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16181 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16182 ett_ivi_TrailerCharacteristicsFixValuesList, ivi_TrailerCharacteristicsFixValuesList_sequence_of,
16183 1, 4, true);
16185 return offset;
16190 static int
16191 dissect_ivi_T_TrailerCharactEqualTo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16192 offset = dissect_ivi_TrailerCharacteristicsFixValuesList(tvb, offset, actx, tree, hf_index);
16194 return offset;
16199 static int
16200 dissect_ivi_T_TrailerCharactNotEqualTo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16201 offset = dissect_ivi_TrailerCharacteristicsFixValuesList(tvb, offset, actx, tree, hf_index);
16203 return offset;
16207 static const per_sequence_t ivi_TrailerCharacteristicsRangesList_sequence_of[1] = {
16208 { &hf_ivi_TrailerCharacteristicsRangesList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_VehicleCharacteristicsRanges },
16211 static int
16212 dissect_ivi_TrailerCharacteristicsRangesList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16213 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16214 ett_ivi_TrailerCharacteristicsRangesList, ivi_TrailerCharacteristicsRangesList_sequence_of,
16215 1, 4, true);
16217 return offset;
16221 static const per_sequence_t ivi_TrailerCharacteristics_sequence[] = {
16222 { &hf_ivi_teEqualTo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_T_TrailerCharactEqualTo },
16223 { &hf_ivi_teNotEqualTo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_T_TrailerCharactNotEqualTo },
16224 { &hf_ivi_ranges_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_TrailerCharacteristicsRangesList },
16225 { NULL, 0, 0, NULL }
16228 static int
16229 dissect_ivi_TrailerCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16230 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16231 ett_ivi_TrailerCharacteristics, ivi_TrailerCharacteristics_sequence);
16233 return offset;
16237 static const per_sequence_t ivi_TrailerCharacteristicsList_sequence_of[1] = {
16238 { &hf_ivi_TrailerCharacteristicsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_TrailerCharacteristics },
16241 static int
16242 dissect_ivi_TrailerCharacteristicsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16243 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16244 ett_ivi_TrailerCharacteristicsList, ivi_TrailerCharacteristicsList_sequence_of,
16245 1, 3, false);
16247 return offset;
16252 static int
16253 dissect_ivi_TrainCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16254 offset = dissect_ivi_TractorCharacteristics(tvb, offset, actx, tree, hf_index);
16256 return offset;
16260 static const per_sequence_t ivi_CompleteVehicleCharacteristics_sequence[] = {
16261 { &hf_ivi_tractor , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_TractorCharacteristics },
16262 { &hf_ivi_trailer , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_TrailerCharacteristicsList },
16263 { &hf_ivi_train , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_TrainCharacteristics },
16264 { NULL, 0, 0, NULL }
16267 static int
16268 dissect_ivi_CompleteVehicleCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16269 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16270 ett_ivi_CompleteVehicleCharacteristics, ivi_CompleteVehicleCharacteristics_sequence);
16272 return offset;
16276 static const per_sequence_t ivi_VehicleCharacteristicsList_sequence_of[1] = {
16277 { &hf_ivi_VehicleCharacteristicsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_CompleteVehicleCharacteristics },
16280 static int
16281 dissect_ivi_VehicleCharacteristicsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16282 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16283 ett_ivi_VehicleCharacteristicsList, ivi_VehicleCharacteristicsList_sequence_of,
16284 1, 8, true);
16286 return offset;
16290 static const value_string ivi_DriverCharacteristics_vals[] = {
16291 { 0, "unexperiencedDrivers" },
16292 { 1, "experiencedDrivers" },
16293 { 2, "rfu1" },
16294 { 3, "rfu2" },
16295 { 0, NULL }
16299 static int
16300 dissect_ivi_DriverCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16301 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16302 0U, 3U, NULL, false);
16304 return offset;
16309 static int
16310 dissect_ivi_INTEGER_1_4_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16311 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16312 1U, 4U, NULL, true);
16314 return offset;
16319 static int
16320 dissect_ivi_INTEGER_1_64_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16321 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16322 1U, 64U, NULL, true);
16324 return offset;
16328 static const value_string ivi_VcClass_vals[] = {
16329 { 0, "classA" },
16330 { 1, "classB" },
16331 { 2, "classC" },
16332 { 3, "classD" },
16333 { 4, "classE" },
16334 { 5, "classF" },
16335 { 6, "classG" },
16336 { 7, "classH" },
16337 { 0, NULL }
16341 static int
16342 dissect_ivi_VcClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16343 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16344 0U, 7U, NULL, false);
16346 return offset;
16351 static int
16352 dissect_ivi_INTEGER_1_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16353 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16354 1U, 64U, NULL, false);
16356 return offset;
16360 static const value_string ivi_VcOption_vals[] = {
16361 { 0, "none" },
16362 { 1, "a" },
16363 { 2, "b" },
16364 { 3, "c" },
16365 { 4, "d" },
16366 { 5, "e" },
16367 { 6, "f" },
16368 { 7, "g" },
16369 { 0, NULL }
16373 static int
16374 dissect_ivi_VcOption(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16375 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16376 0U, 7U, NULL, false);
16378 return offset;
16382 static const per_sequence_t ivi_ValidityPeriods_sequence_of[1] = {
16383 { &hf_ivi_ValidityPeriods_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_gdd_InternationalSign_applicablePeriod },
16386 static int
16387 dissect_ivi_ValidityPeriods(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16388 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16389 ett_ivi_ValidityPeriods, ivi_ValidityPeriods_sequence_of,
16390 1, 8, true);
16392 return offset;
16397 static int
16398 dissect_ivi_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16399 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16400 0U, 65535U, NULL, false);
16402 return offset;
16406 static const value_string ivi_RSCUnit_vals[] = {
16407 { 0, "kmperh" },
16408 { 1, "milesperh" },
16409 { 2, "kilometer" },
16410 { 3, "meter" },
16411 { 4, "decimeter" },
16412 { 5, "centimeter" },
16413 { 6, "mile" },
16414 { 7, "yard" },
16415 { 8, "foot" },
16416 { 9, "minutesOfTime" },
16417 { 10, "tonnes" },
16418 { 11, "hundredkg" },
16419 { 12, "pound" },
16420 { 13, "rateOfIncline" },
16421 { 0, NULL }
16425 static int
16426 dissect_ivi_RSCUnit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16427 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16428 0U, 15U, NULL, false);
16430 return offset;
16434 static const per_sequence_t ivi_VcCode_sequence[] = {
16435 { &hf_ivi_roadSignClass , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_VcClass },
16436 { &hf_ivi_roadSignCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_1_64 },
16437 { &hf_ivi_vcOption , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_VcOption },
16438 { &hf_ivi_vcValidity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_ValidityPeriods },
16439 { &hf_ivi_vcValue , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_INTEGER_0_65535 },
16440 { &hf_ivi_unit , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_RSCUnit },
16441 { NULL, 0, 0, NULL }
16444 static int
16445 dissect_ivi_VcCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16446 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16447 ett_ivi_VcCode, ivi_VcCode_sequence);
16449 return offset;
16454 static int
16455 dissect_ivi_OCTET_STRING_SIZE_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16456 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
16457 2, 2, false, NULL);
16459 return offset;
16463 static const value_string ivi_T_trafficSignPictogram_vals[] = {
16464 { 0, "dangerWarning" },
16465 { 1, "regulatory" },
16466 { 2, "informative" },
16467 { 0, NULL }
16471 static int
16472 dissect_ivi_T_trafficSignPictogram(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16473 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
16474 3, NULL, true, 0, NULL);
16476 return offset;
16480 static const value_string ivi_T_publicFacilitiesPictogram_vals[] = {
16481 { 0, "publicFacilities" },
16482 { 0, NULL }
16486 static int
16487 dissect_ivi_T_publicFacilitiesPictogram(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16488 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
16489 1, NULL, true, 0, NULL);
16491 return offset;
16495 static const value_string ivi_T_ambientOrRoadConditionPictogram_vals[] = {
16496 { 0, "ambientCondition" },
16497 { 1, "roadCondition" },
16498 { 0, NULL }
16502 static int
16503 dissect_ivi_T_ambientOrRoadConditionPictogram(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16504 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
16505 2, NULL, true, 0, NULL);
16507 return offset;
16511 static const value_string ivi_T_serviceCategoryCode_vals[] = {
16512 { 0, "trafficSignPictogram" },
16513 { 1, "publicFacilitiesPictogram" },
16514 { 2, "ambientOrRoadConditionPictogram" },
16515 { 0, NULL }
16518 static const per_choice_t ivi_T_serviceCategoryCode_choice[] = {
16519 { 0, &hf_ivi_trafficSignPictogram, ASN1_EXTENSION_ROOT , dissect_ivi_T_trafficSignPictogram },
16520 { 1, &hf_ivi_publicFacilitiesPictogram, ASN1_EXTENSION_ROOT , dissect_ivi_T_publicFacilitiesPictogram },
16521 { 2, &hf_ivi_ambientOrRoadConditionPictogram, ASN1_EXTENSION_ROOT , dissect_ivi_T_ambientOrRoadConditionPictogram },
16522 { 0, NULL, 0, NULL }
16525 static int
16526 dissect_ivi_T_serviceCategoryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16527 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
16528 ett_ivi_T_serviceCategoryCode, ivi_T_serviceCategoryCode_choice,
16529 NULL);
16531 return offset;
16536 static int
16537 dissect_ivi_INTEGER_1_9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16538 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16539 1U, 9U, NULL, false);
16541 return offset;
16546 static int
16547 dissect_ivi_INTEGER_0_99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16548 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16549 0U, 99U, NULL, false);
16551 return offset;
16555 static const per_sequence_t ivi_T_pictogramCategoryCode_sequence[] = {
16556 { &hf_ivi_nature , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_1_9 },
16557 { &hf_ivi_serialNumber , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_0_99 },
16558 { NULL, 0, 0, NULL }
16561 static int
16562 dissect_ivi_T_pictogramCategoryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16563 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16564 ett_ivi_T_pictogramCategoryCode, ivi_T_pictogramCategoryCode_sequence);
16566 return offset;
16570 static const per_sequence_t ivi_T_icPictogramCode_sequence[] = {
16571 { &hf_ivi_countryCode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_OCTET_STRING_SIZE_2 },
16572 { &hf_ivi_serviceCategoryCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_T_serviceCategoryCode },
16573 { &hf_ivi_pictogramCategoryCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_T_pictogramCategoryCode },
16574 { NULL, 0, 0, NULL }
16577 static int
16578 dissect_ivi_T_icPictogramCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16579 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16580 ett_ivi_T_icPictogramCode, ivi_T_icPictogramCode_sequence);
16582 return offset;
16586 static const value_string ivi_ISO14823Attribute_vals[] = {
16587 { 0, "dtm" },
16588 { 1, "edt" },
16589 { 2, "dfl" },
16590 { 3, "ved" },
16591 { 4, "spe" },
16592 { 5, "roi" },
16593 { 6, "dbv" },
16594 { 7, "ddd" },
16595 { 0, NULL }
16598 static const per_choice_t ivi_ISO14823Attribute_choice[] = {
16599 { 0, &hf_ivi_dtm , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_applicablePeriod },
16600 { 1, &hf_ivi_edt , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_exemptedApplicablePeriod },
16601 { 2, &hf_ivi_dfl , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_directionalFlowOfLane },
16602 { 3, &hf_ivi_ved , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_applicableVehicleDimensions },
16603 { 4, &hf_ivi_spe , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_speedLimits },
16604 { 5, &hf_ivi_roi , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_rateOfIncline },
16605 { 6, &hf_ivi_dbv , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_distanceBetweenVehicles },
16606 { 7, &hf_ivi_ddd , ASN1_NO_EXTENSIONS , dissect_gdd_InternationalSign_destinationInformation },
16607 { 0, NULL, 0, NULL }
16610 static int
16611 dissect_ivi_ISO14823Attribute(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16612 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
16613 ett_ivi_ISO14823Attribute, ivi_ISO14823Attribute_choice,
16614 NULL);
16616 return offset;
16620 static const per_sequence_t ivi_ISO14823Attributes_sequence_of[1] = {
16621 { &hf_ivi_ISO14823Attributes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_ISO14823Attribute },
16624 static int
16625 dissect_ivi_ISO14823Attributes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16626 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16627 ett_ivi_ISO14823Attributes, ivi_ISO14823Attributes_sequence_of,
16628 1, 8, true);
16630 return offset;
16634 static const per_sequence_t ivi_ISO14823Code_sequence[] = {
16635 { &hf_ivi_icPictogramCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_T_icPictogramCode },
16636 { &hf_ivi_attributes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_ISO14823Attributes },
16637 { NULL, 0, 0, NULL }
16640 static int
16641 dissect_ivi_ISO14823Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16642 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16643 ett_ivi_ISO14823Code, ivi_ISO14823Code_sequence);
16645 return offset;
16649 static const per_sequence_t ivi_AnyCatalogue_sequence[] = {
16650 { &hf_ivi_owner , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_app_Provider },
16651 { &hf_ivi_version , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_0_255 },
16652 { &hf_ivi_acPictogramCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_0_65535 },
16653 { &hf_ivi_acValue , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_INTEGER_0_65535 },
16654 { &hf_ivi_unit , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_RSCUnit },
16655 { &hf_ivi_attributes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_ISO14823Attributes },
16656 { NULL, 0, 0, NULL }
16659 static int
16660 dissect_ivi_AnyCatalogue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16661 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16662 ett_ivi_AnyCatalogue, ivi_AnyCatalogue_sequence);
16664 return offset;
16668 static const value_string ivi_T_code_vals[] = {
16669 { 0, "viennaConvention" },
16670 { 1, "iso14823" },
16671 { 2, "itisCodes" },
16672 { 3, "anyCatalogue" },
16673 { 0, NULL }
16676 static const per_choice_t ivi_T_code_choice[] = {
16677 { 0, &hf_ivi_viennaConvention, ASN1_EXTENSION_ROOT , dissect_ivi_VcCode },
16678 { 1, &hf_ivi_iso14823 , ASN1_EXTENSION_ROOT , dissect_ivi_ISO14823Code },
16679 { 2, &hf_ivi_itisCodes , ASN1_EXTENSION_ROOT , dissect_ivi_INTEGER_0_65535 },
16680 { 3, &hf_ivi_anyCatalogue , ASN1_EXTENSION_ROOT , dissect_ivi_AnyCatalogue },
16681 { 0, NULL, 0, NULL }
16684 static int
16685 dissect_ivi_T_code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16686 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
16687 ett_ivi_T_code, ivi_T_code_choice,
16688 NULL);
16690 return offset;
16694 static const per_sequence_t ivi_RSCode_sequence[] = {
16695 { &hf_ivi_rscLayoutComponentId, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_INTEGER_1_4_ },
16696 { &hf_ivi_code , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_T_code },
16697 { NULL, 0, 0, NULL }
16700 static int
16701 dissect_ivi_RSCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16702 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16703 ett_ivi_RSCode, ivi_RSCode_sequence);
16705 return offset;
16709 static const per_sequence_t ivi_RoadSignCodes_sequence_of[1] = {
16710 { &hf_ivi_RoadSignCodes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_RSCode },
16713 static int
16714 dissect_ivi_RoadSignCodes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16715 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16716 ett_ivi_RoadSignCodes, ivi_RoadSignCodes_sequence_of,
16717 1, 4, true);
16719 return offset;
16724 static int
16725 dissect_ivi_T_language(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16726 tvbuff_t *val_tvb = NULL;
16727 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
16728 10, 10, false, NULL, 0, &val_tvb, NULL);
16730 append_country_code_fmt(actx->created_item, val_tvb);
16732 return offset;
16737 static int
16738 dissect_ivi_UTF8String(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16739 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
16740 NO_BOUND, NO_BOUND, false);
16742 return offset;
16746 static const per_sequence_t ivi_Text_sequence[] = {
16747 { &hf_ivi_tLayoutComponentId, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_INTEGER_1_4_ },
16748 { &hf_ivi_language , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_T_language },
16749 { &hf_ivi_textContent , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_UTF8String },
16750 { NULL, 0, 0, NULL }
16753 static int
16754 dissect_ivi_Text(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16755 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16756 ett_ivi_Text, ivi_Text_sequence);
16758 return offset;
16762 static const per_sequence_t ivi_ConstraintTextLines1_sequence_of[1] = {
16763 { &hf_ivi_ConstraintTextLines1_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Text },
16766 static int
16767 dissect_ivi_ConstraintTextLines1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16768 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16769 ett_ivi_ConstraintTextLines1, ivi_ConstraintTextLines1_sequence_of,
16770 1, 4, true);
16772 return offset;
16777 static int
16778 dissect_ivi_T_GicPartExtraText(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16779 offset = dissect_ivi_ConstraintTextLines1(tvb, offset, actx, tree, hf_index);
16781 return offset;
16785 static const per_sequence_t ivi_GicPart_sequence[] = {
16786 { &hf_ivi_gpDetectionZoneIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_T_GicPartDetectionZoneIds },
16787 { &hf_ivi_its_Rrid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VarLengthNumber },
16788 { &hf_ivi_gpRelevanceZoneIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_T_GicPartRelevanceZoneIds },
16789 { &hf_ivi_direction , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_Direction },
16790 { &hf_ivi_gpDriverAwarenessZoneIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_T_GicPartDriverAwarenessZoneIds },
16791 { &hf_ivi_minimumAwarenessTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_0_255 },
16792 { &hf_ivi_applicableLanes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_LanePositions },
16793 { &hf_ivi_iviType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_IviType },
16794 { &hf_ivi_iviPurpose , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_IviPurpose },
16795 { &hf_ivi_laneStatus , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_LaneStatus },
16796 { &hf_ivi_vehicleCharacteristics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_VehicleCharacteristicsList },
16797 { &hf_ivi_driverCharacteristics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_DriverCharacteristics },
16798 { &hf_ivi_layoutId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_1_4_ },
16799 { &hf_ivi_preStoredlayoutId, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_1_64_ },
16800 { &hf_ivi_roadSignCodes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_RoadSignCodes },
16801 { &hf_ivi_extraText , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_T_GicPartExtraText },
16802 { NULL, 0, 0, NULL }
16805 static int
16806 dissect_ivi_GicPart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16807 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16808 ett_ivi_GicPart, ivi_GicPart_sequence);
16810 return offset;
16814 static const per_sequence_t ivi_GeneralIviContainer_sequence_of[1] = {
16815 { &hf_ivi_GeneralIviContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_GicPart },
16818 static int
16819 dissect_ivi_GeneralIviContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16820 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
16821 ett_ivi_GeneralIviContainer, ivi_GeneralIviContainer_sequence_of,
16822 1, 16, true);
16824 return offset;
16828 static const value_string ivi_LaneType_vals[] = {
16829 { 0, "traffic" },
16830 { 1, "through" },
16831 { 2, "reversible" },
16832 { 3, "acceleration" },
16833 { 4, "deceleration" },
16834 { 5, "leftHandTurning" },
16835 { 6, "rightHandTurning" },
16836 { 7, "dedicatedVehicle" },
16837 { 8, "bus" },
16838 { 9, "taxi" },
16839 { 10, "hov" },
16840 { 11, "hot" },
16841 { 12, "pedestrian" },
16842 { 13, "bikeLane" },
16843 { 14, "median" },
16844 { 15, "striping" },
16845 { 16, "trackedVehicle" },
16846 { 17, "parking" },
16847 { 18, "emergency" },
16848 { 19, "verge" },
16849 { 20, "minimumRiskManoeuvre" },
16850 { 0, NULL }
16854 static int
16855 dissect_ivi_LaneType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16856 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16857 0U, 31U, NULL, false);
16859 return offset;
16863 static const value_string ivi_DefinitionAccuracy_vals[] = {
16864 { 0, "oneCm" },
16865 { 1, "twoCm" },
16866 { 2, "fiveCm" },
16867 { 3, "tenCm" },
16868 { 4, "twentyCm" },
16869 { 5, "fiftyCm" },
16870 { 6, "oneMeter" },
16871 { 7, "unavailable" },
16872 { 0, NULL }
16876 static int
16877 dissect_ivi_DefinitionAccuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16878 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16879 0U, 7U, NULL, true);
16881 return offset;
16886 static int
16887 dissect_ivi_LaneMarkingStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16888 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
16890 return offset;
16894 static const value_string ivi_MarkingColour_vals[] = {
16895 { 0, "white" },
16896 { 1, "yellow" },
16897 { 2, "orange" },
16898 { 3, "red" },
16899 { 4, "blue" },
16900 { 7, "unavailable" },
16901 { 0, NULL }
16905 static int
16906 dissect_ivi_MarkingColour(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16907 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16908 0U, 7U, NULL, true);
16910 return offset;
16914 static const value_string ivi_LaneDelimitation_vals[] = {
16915 { 0, "noDelimitation" },
16916 { 1, "lowLaneSeparator" },
16917 { 2, "highLaneSeparator" },
16918 { 3, "wall" },
16919 { 4, "curb" },
16920 { 5, "unpaved" },
16921 { 6, "guardrail" },
16922 { 0, NULL }
16926 static int
16927 dissect_ivi_LaneDelimitation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16928 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16929 0U, 7U, NULL, true);
16931 return offset;
16935 static const per_sequence_t ivi_LaneCharacteristics_sequence[] = {
16936 { &hf_ivi_zoneDefinitionAccuracy, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_DefinitionAccuracy },
16937 { &hf_ivi_existinglaneMarkingStatus, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_LaneMarkingStatus },
16938 { &hf_ivi_newlaneMarkingColour, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_MarkingColour },
16939 { &hf_ivi_laneDelimitationLeft, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_LaneDelimitation },
16940 { &hf_ivi_laneDelimitationRight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_LaneDelimitation },
16941 { &hf_ivi_mergingWith , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Zid },
16942 { NULL, 0, 0, NULL }
16945 static int
16946 dissect_ivi_LaneCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16947 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
16948 ett_ivi_LaneCharacteristics, ivi_LaneCharacteristics_sequence);
16950 return offset;
16955 static int
16956 dissect_ivi_FrictionCoefficient(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16957 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16958 0U, 101U, NULL, false);
16960 return offset;
16964 static const value_string ivi_MaterialType_vals[] = {
16965 { 0, "asphalt" },
16966 { 1, "concrete" },
16967 { 2, "cobblestone" },
16968 { 3, "gravel" },
16969 { 7, "unavailable" },
16970 { 0, NULL }
16974 static int
16975 dissect_ivi_MaterialType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16976 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16977 0U, 7U, NULL, true);
16979 return offset;
16983 static const value_string ivi_WearLevel_vals[] = {
16984 { 0, "new" },
16985 { 1, "good" },
16986 { 2, "bad" },
16987 { 3, "hasPotholes" },
16988 { 7, "unavailable" },
16989 { 0, NULL }
16993 static int
16994 dissect_ivi_WearLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
16995 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
16996 0U, 7U, NULL, true);
16998 return offset;
17003 static int
17004 dissect_ivi_BankingAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17005 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17006 -20, 21U, NULL, false);
17008 return offset;
17012 static const per_sequence_t ivi_RoadSurfaceStaticCharacteristics_sequence[] = {
17013 { &hf_ivi_frictionCoefficient, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_FrictionCoefficient },
17014 { &hf_ivi_material , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_MaterialType },
17015 { &hf_ivi_wear , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_WearLevel },
17016 { &hf_ivi_avBankingAngle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_BankingAngle },
17017 { NULL, 0, 0, NULL }
17020 static int
17021 dissect_ivi_RoadSurfaceStaticCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17022 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17023 ett_ivi_RoadSurfaceStaticCharacteristics, ivi_RoadSurfaceStaticCharacteristics_sequence);
17025 return offset;
17029 static const value_string ivi_Condition_vals[] = {
17030 { 0, "dry" },
17031 { 1, "moist" },
17032 { 2, "wet" },
17033 { 3, "standingWater" },
17034 { 4, "frost" },
17035 { 5, "ice" },
17036 { 6, "snow" },
17037 { 7, "slush" },
17038 { 8, "unvailable" },
17039 { 0, NULL }
17043 static int
17044 dissect_ivi_Condition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17045 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17046 0U, 15U, NULL, true);
17048 return offset;
17053 static int
17054 dissect_ivi_Temperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17055 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17056 -100, 151U, NULL, false);
17058 return offset;
17063 static int
17064 dissect_ivi_Depth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17065 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17066 0U, 255U, NULL, false);
17068 return offset;
17072 static const value_string ivi_TreatmentType_vals[] = {
17073 { 0, "no" },
17074 { 1, "antiskid" },
17075 { 2, "anti-icing" },
17076 { 3, "de-icing" },
17077 { 7, "unavailable" },
17078 { 0, NULL }
17082 static int
17083 dissect_ivi_TreatmentType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17084 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17085 0U, 7U, NULL, false);
17087 return offset;
17091 static const per_sequence_t ivi_RoadSurfaceDynamicCharacteristics_sequence[] = {
17092 { &hf_ivi_condition , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Condition },
17093 { &hf_ivi_temperature , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Temperature },
17094 { &hf_ivi_iceOrWaterDepth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Depth },
17095 { &hf_ivi_treatment , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_TreatmentType },
17096 { NULL, 0, 0, NULL }
17099 static int
17100 dissect_ivi_RoadSurfaceDynamicCharacteristics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17101 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17102 ett_ivi_RoadSurfaceDynamicCharacteristics, ivi_RoadSurfaceDynamicCharacteristics_sequence);
17104 return offset;
17108 static const per_sequence_t ivi_LaneInformation_eag_1_sequence[] = {
17109 { &hf_ivi_detectionZoneIds, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_ZoneIds },
17110 { &hf_ivi_relevanceZoneIds, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_ZoneIds },
17111 { &hf_ivi_laneCharacteristics, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_LaneCharacteristics },
17112 { &hf_ivi_laneSurfaceStaticCharacteristics, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_RoadSurfaceStaticCharacteristics },
17113 { &hf_ivi_laneSurfaceDynamicCharacteristics, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_RoadSurfaceDynamicCharacteristics },
17114 { NULL, 0, 0, NULL }
17117 static int
17118 dissect_ivi_LaneInformation_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17119 offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ivi_LaneInformation_eag_1_sequence);
17121 return offset;
17125 static const per_sequence_t ivi_LaneInformation_sequence[] = {
17126 { &hf_ivi_laneNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_LanePosition },
17127 { &hf_ivi_direction , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_Direction },
17128 { &hf_ivi_liValidity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_gdd_InternationalSign_applicablePeriod },
17129 { &hf_ivi_laneType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_LaneType },
17130 { &hf_ivi_laneTypeQualifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_CompleteVehicleCharacteristics },
17131 { &hf_ivi_laneStatus , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_LaneStatus },
17132 { &hf_ivi_laneWidth , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_IviLaneWidth },
17133 { &dummy_hf_ivi_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_ivi_LaneInformation_eag_1 },
17134 { NULL, 0, 0, NULL }
17137 static int
17138 dissect_ivi_LaneInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17139 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17140 ett_ivi_LaneInformation, ivi_LaneInformation_sequence);
17142 return offset;
17146 static const per_sequence_t ivi_LaneConfiguration_sequence_of[1] = {
17147 { &hf_ivi_LaneConfiguration_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_LaneInformation },
17150 static int
17151 dissect_ivi_LaneConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17152 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17153 ett_ivi_LaneConfiguration, ivi_LaneConfiguration_sequence_of,
17154 1, 16, true);
17156 return offset;
17160 static const per_sequence_t ivi_RccPart_sequence[] = {
17161 { &hf_ivi_relevanceZoneIds, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_ZoneIds },
17162 { &hf_ivi_roadType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_RoadType },
17163 { &hf_ivi_laneConfiguration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_LaneConfiguration },
17164 { NULL, 0, 0, NULL }
17167 static int
17168 dissect_ivi_RccPart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17169 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17170 ett_ivi_RccPart, ivi_RccPart_sequence);
17172 return offset;
17176 static const per_sequence_t ivi_RoadConfigurationContainer_sequence_of[1] = {
17177 { &hf_ivi_RoadConfigurationContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_RccPart },
17180 static int
17181 dissect_ivi_RoadConfigurationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17182 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17183 ett_ivi_RoadConfigurationContainer, ivi_RoadConfigurationContainer_sequence_of,
17184 1, 16, true);
17186 return offset;
17191 static int
17192 dissect_ivi_T_TcPartDetectionZoneIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17193 offset = dissect_ivi_ZoneIds(tvb, offset, actx, tree, hf_index);
17195 return offset;
17200 static int
17201 dissect_ivi_T_TcPartRelevanceZoneIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17202 offset = dissect_ivi_ZoneIds(tvb, offset, actx, tree, hf_index);
17204 return offset;
17209 static int
17210 dissect_ivi_T_TcPartDriverAwarenessZoneIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17211 offset = dissect_ivi_ZoneIds(tvb, offset, actx, tree, hf_index);
17213 return offset;
17217 static const per_sequence_t ivi_TextLines_sequence_of[1] = {
17218 { &hf_ivi_TextLines_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Text },
17221 static int
17222 dissect_ivi_TextLines(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17223 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17224 ett_ivi_TextLines, ivi_TextLines_sequence_of,
17225 1, 4, true);
17227 return offset;
17232 static int
17233 dissect_ivi_T_TcPartText(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17234 offset = dissect_ivi_TextLines(tvb, offset, actx, tree, hf_index);
17236 return offset;
17241 static int
17242 dissect_ivi_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17243 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
17244 NO_BOUND, NO_BOUND, false, NULL);
17246 return offset;
17250 static const per_sequence_t ivi_TcPart_eag_1_sequence[] = {
17251 { &hf_ivi_iviType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_IviType },
17252 { &hf_ivi_laneStatus , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_LaneStatus },
17253 { &hf_ivi_vehicleCharacteristics, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_VehicleCharacteristicsList },
17254 { NULL, 0, 0, NULL }
17257 static int
17258 dissect_ivi_TcPart_eag_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17259 offset = dissect_per_sequence_eag(tvb, offset, actx, tree, ivi_TcPart_eag_1_sequence);
17261 return offset;
17265 static const per_sequence_t ivi_TcPart_sequence[] = {
17266 { &hf_ivi_tpDetectionZoneIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_T_TcPartDetectionZoneIds },
17267 { &hf_ivi_tpRelevanceZoneIds, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_T_TcPartRelevanceZoneIds },
17268 { &hf_ivi_direction , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_Direction },
17269 { &hf_ivi_tpDriverAwarenessZoneIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_T_TcPartDriverAwarenessZoneIds },
17270 { &hf_ivi_minimumAwarenessTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_0_255 },
17271 { &hf_ivi_applicableLanes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_LanePositions },
17272 { &hf_ivi_layoutId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_1_4_ },
17273 { &hf_ivi_preStoredlayoutId, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_1_64_ },
17274 { &hf_ivi_text , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_T_TcPartText },
17275 { &hf_ivi_data , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_OCTET_STRING },
17276 { &dummy_hf_ivi_eag_field , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_ivi_TcPart_eag_1 },
17277 { NULL, 0, 0, NULL }
17280 static int
17281 dissect_ivi_TcPart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17282 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17283 ett_ivi_TcPart, ivi_TcPart_sequence);
17285 return offset;
17289 static const per_sequence_t ivi_TextContainer_sequence_of[1] = {
17290 { &hf_ivi_TextContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_TcPart },
17293 static int
17294 dissect_ivi_TextContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17295 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17296 ett_ivi_TextContainer, ivi_TextContainer_sequence_of,
17297 1, 16, true);
17299 return offset;
17304 static int
17305 dissect_ivi_INTEGER_10_73(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17306 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17307 10U, 73U, NULL, false);
17309 return offset;
17314 static int
17315 dissect_ivi_INTEGER_10_265(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17316 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17317 10U, 265U, NULL, false);
17319 return offset;
17324 static int
17325 dissect_ivi_INTEGER_1_8_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17326 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17327 1U, 8U, NULL, true);
17329 return offset;
17333 static const value_string ivi_T_textScripting_vals[] = {
17334 { 0, "horizontal" },
17335 { 1, "vertical" },
17336 { 0, NULL }
17340 static int
17341 dissect_ivi_T_textScripting(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17342 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17343 0U, 1U, NULL, false);
17345 return offset;
17349 static const per_sequence_t ivi_LayoutComponent_sequence[] = {
17350 { &hf_ivi_lcLayoutComponentId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_1_8_ },
17351 { &hf_ivi_height , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_10_73 },
17352 { &hf_ivi_width , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_10_265 },
17353 { &hf_ivi_x , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_10_265 },
17354 { &hf_ivi_y , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_10_73 },
17355 { &hf_ivi_textScripting , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_T_textScripting },
17356 { NULL, 0, 0, NULL }
17359 static int
17360 dissect_ivi_LayoutComponent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17361 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17362 ett_ivi_LayoutComponent, ivi_LayoutComponent_sequence);
17364 return offset;
17368 static const per_sequence_t ivi_LayoutComponents_sequence_of[1] = {
17369 { &hf_ivi_LayoutComponents_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_LayoutComponent },
17372 static int
17373 dissect_ivi_LayoutComponents(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17374 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17375 ett_ivi_LayoutComponents, ivi_LayoutComponents_sequence_of,
17376 1, 4, true);
17378 return offset;
17382 static const per_sequence_t ivi_LayoutContainer_sequence[] = {
17383 { &hf_ivi_layoutId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_INTEGER_1_4_ },
17384 { &hf_ivi_height , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_10_73 },
17385 { &hf_ivi_width , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_INTEGER_10_265 },
17386 { &hf_ivi_layoutComponents, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_LayoutComponents },
17387 { NULL, 0, 0, NULL }
17390 static int
17391 dissect_ivi_LayoutContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17392 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17393 ett_ivi_LayoutContainer, ivi_LayoutContainer_sequence);
17395 return offset;
17400 static int
17401 dissect_ivi_PriorityLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17402 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17403 0U, 2U, NULL, false);
17405 return offset;
17410 static int
17411 dissect_ivi_SaeAutomationLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17412 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17413 0U, 5U, NULL, false);
17415 return offset;
17419 static const per_sequence_t ivi_SaeAutomationLevels_sequence_of[1] = {
17420 { &hf_ivi_SaeAutomationLevels_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_SaeAutomationLevel },
17423 static int
17424 dissect_ivi_SaeAutomationLevels(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17425 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17426 ett_ivi_SaeAutomationLevels, ivi_SaeAutomationLevels_sequence_of,
17427 1, 5, false);
17429 return offset;
17434 static int
17435 dissect_ivi_GapBetweenVehicles(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17436 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17437 0U, 255U, NULL, false);
17439 return offset;
17443 static const per_sequence_t ivi_ConstraintTextLines2_sequence_of[1] = {
17444 { &hf_ivi_ConstraintTextLines2_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Text },
17447 static int
17448 dissect_ivi_ConstraintTextLines2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17449 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17450 ett_ivi_ConstraintTextLines2, ivi_ConstraintTextLines2_sequence_of,
17451 1, 4, true);
17453 return offset;
17457 static const per_sequence_t ivi_AutomatedVehicleRule_sequence[] = {
17458 { &hf_ivi_priority , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_PriorityLevel },
17459 { &hf_ivi_allowedSaeAutomationLevels, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_SaeAutomationLevels },
17460 { &hf_ivi_minGapBetweenVehicles, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_GapBetweenVehicles },
17461 { &hf_ivi_recGapBetweenVehicles, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_GapBetweenVehicles },
17462 { &hf_ivi_automatedVehicleMaxSpeedLimit, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SpeedValue },
17463 { &hf_ivi_automatedVehicleMinSpeedLimit, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SpeedValue },
17464 { &hf_ivi_automatedVehicleSpeedRecommendation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SpeedValue },
17465 { &hf_ivi_roadSignCodes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_RoadSignCodes },
17466 { &hf_ivi_extraText_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_ConstraintTextLines2 },
17467 { NULL, 0, 0, NULL }
17470 static int
17471 dissect_ivi_AutomatedVehicleRule(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17472 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17473 ett_ivi_AutomatedVehicleRule, ivi_AutomatedVehicleRule_sequence);
17475 return offset;
17479 static const per_sequence_t ivi_AutomatedVehicleRules_sequence_of[1] = {
17480 { &hf_ivi_AutomatedVehicleRules_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_AutomatedVehicleRule },
17483 static int
17484 dissect_ivi_AutomatedVehicleRules(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17485 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17486 ett_ivi_AutomatedVehicleRules, ivi_AutomatedVehicleRules_sequence_of,
17487 1, 5, false);
17489 return offset;
17494 static int
17495 dissect_ivi_MaxNoOfVehicles(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17496 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17497 2U, 64U, NULL, false);
17499 return offset;
17504 static int
17505 dissect_ivi_MaxLenghtOfPlatoon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17506 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17507 1U, 64U, NULL, false);
17509 return offset;
17513 static const per_sequence_t ivi_PlatooningRule_sequence[] = {
17514 { &hf_ivi_priority , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_PriorityLevel },
17515 { &hf_ivi_allowedSaeAutomationLevels, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_SaeAutomationLevels },
17516 { &hf_ivi_maxNoOfVehicles , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_MaxNoOfVehicles },
17517 { &hf_ivi_maxLenghtOfPlatoon, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_MaxLenghtOfPlatoon },
17518 { &hf_ivi_minGapBetweenVehicles, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_GapBetweenVehicles },
17519 { &hf_ivi_platoonMaxSpeedLimit, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SpeedValue },
17520 { &hf_ivi_platoonMinSpeedLimit, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SpeedValue },
17521 { &hf_ivi_platoonSpeedRecommendation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SpeedValue },
17522 { &hf_ivi_roadSignCodes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_RoadSignCodes },
17523 { &hf_ivi_extraText_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_ConstraintTextLines2 },
17524 { NULL, 0, 0, NULL }
17527 static int
17528 dissect_ivi_PlatooningRule(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17529 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17530 ett_ivi_PlatooningRule, ivi_PlatooningRule_sequence);
17532 return offset;
17536 static const per_sequence_t ivi_PlatooningRules_sequence_of[1] = {
17537 { &hf_ivi_PlatooningRules_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_PlatooningRule },
17540 static int
17541 dissect_ivi_PlatooningRules(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17542 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17543 ett_ivi_PlatooningRules, ivi_PlatooningRules_sequence_of,
17544 1, 5, false);
17546 return offset;
17550 static const per_sequence_t ivi_AvcPart_sequence[] = {
17551 { &hf_ivi_detectionZoneIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_ZoneIds },
17552 { &hf_ivi_relevanceZoneIds, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ivi_ZoneIds },
17553 { &hf_ivi_direction , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_Direction },
17554 { &hf_ivi_applicableLanes , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_LanePositions },
17555 { &hf_ivi_vehicleCharacteristics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_VehicleCharacteristicsList },
17556 { &hf_ivi_automatedVehicleRules, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_AutomatedVehicleRules },
17557 { &hf_ivi_platooningRules , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ivi_PlatooningRules },
17558 { NULL, 0, 0, NULL }
17561 static int
17562 dissect_ivi_AvcPart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17563 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17564 ett_ivi_AvcPart, ivi_AvcPart_sequence);
17566 return offset;
17570 static const per_sequence_t ivi_AutomatedVehicleContainer_sequence_of[1] = {
17571 { &hf_ivi_AutomatedVehicleContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_AvcPart },
17574 static int
17575 dissect_ivi_AutomatedVehicleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17576 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17577 ett_ivi_AutomatedVehicleContainer, ivi_AutomatedVehicleContainer_sequence_of,
17578 1, 16, true);
17580 return offset;
17584 static const value_string ivi_MapReference_vals[] = {
17585 { 0, "roadsegment" },
17586 { 1, "intersection" },
17587 { 0, NULL }
17590 static const per_choice_t ivi_MapReference_choice[] = {
17591 { 0, &hf_ivi_roadsegment , ASN1_NO_EXTENSIONS , dissect_dsrc_RoadSegmentReferenceID },
17592 { 1, &hf_ivi_intersection , ASN1_NO_EXTENSIONS , dissect_dsrc_IntersectionReferenceID },
17593 { 0, NULL, 0, NULL }
17596 static int
17597 dissect_ivi_MapReference(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17598 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
17599 ett_ivi_MapReference, ivi_MapReference_choice,
17600 NULL);
17602 return offset;
17606 static const per_sequence_t ivi_LaneIds_sequence_of[1] = {
17607 { &hf_ivi_LaneIds_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_LaneID },
17610 static int
17611 dissect_ivi_LaneIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17612 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17613 ett_ivi_LaneIds, ivi_LaneIds_sequence_of,
17614 1, 16, true);
17616 return offset;
17620 static const per_sequence_t ivi_MlcPart_sequence[] = {
17621 { &hf_ivi_zoneId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_Zid },
17622 { &hf_ivi_laneIds , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_LaneIds },
17623 { NULL, 0, 0, NULL }
17626 static int
17627 dissect_ivi_MlcPart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17628 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17629 ett_ivi_MlcPart, ivi_MlcPart_sequence);
17631 return offset;
17635 static const per_sequence_t ivi_MlcParts_sequence_of[1] = {
17636 { &hf_ivi_MlcParts_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_MlcPart },
17639 static int
17640 dissect_ivi_MlcParts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17641 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17642 ett_ivi_MlcParts, ivi_MlcParts_sequence_of,
17643 1, 16, true);
17645 return offset;
17649 static const per_sequence_t ivi_MapLocationContainer_sequence[] = {
17650 { &hf_ivi_reference , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_MapReference },
17651 { &hf_ivi_parts_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_MlcParts },
17652 { NULL, 0, 0, NULL }
17655 static int
17656 dissect_ivi_MapLocationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17657 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17658 ett_ivi_MapLocationContainer, ivi_MapLocationContainer_sequence);
17660 return offset;
17664 static const per_sequence_t ivi_RscPart_sequence[] = {
17665 { &hf_ivi_detectionZoneIds, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_ZoneIds },
17666 { &hf_ivi_relevanceZoneIds, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_ZoneIds },
17667 { &hf_ivi_direction , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_Direction },
17668 { &hf_ivi_roadSurfaceStaticCharacteristics, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_RoadSurfaceStaticCharacteristics },
17669 { &hf_ivi_roadSurfaceDynamicCharacteristics, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_RoadSurfaceDynamicCharacteristics },
17670 { NULL, 0, 0, NULL }
17673 static int
17674 dissect_ivi_RscPart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17675 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17676 ett_ivi_RscPart, ivi_RscPart_sequence);
17678 return offset;
17682 static const per_sequence_t ivi_RoadSurfaceContainer_sequence_of[1] = {
17683 { &hf_ivi_RoadSurfaceContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_RscPart },
17686 static int
17687 dissect_ivi_RoadSurfaceContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17688 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17689 ett_ivi_RoadSurfaceContainer, ivi_RoadSurfaceContainer_sequence_of,
17690 1, 16, true);
17692 return offset;
17696 static const value_string ivi_IviContainer_vals[] = {
17697 { 0, "glc" },
17698 { 1, "giv" },
17699 { 2, "rcc" },
17700 { 3, "tc" },
17701 { 4, "lac" },
17702 { 5, "avc" },
17703 { 6, "mlc" },
17704 { 7, "rsc" },
17705 { 0, NULL }
17708 static const per_choice_t ivi_IviContainer_choice[] = {
17709 { 0, &hf_ivi_glc , ASN1_EXTENSION_ROOT , dissect_ivi_GeographicLocationContainer },
17710 { 1, &hf_ivi_giv , ASN1_EXTENSION_ROOT , dissect_ivi_GeneralIviContainer },
17711 { 2, &hf_ivi_rcc , ASN1_EXTENSION_ROOT , dissect_ivi_RoadConfigurationContainer },
17712 { 3, &hf_ivi_tc , ASN1_EXTENSION_ROOT , dissect_ivi_TextContainer },
17713 { 4, &hf_ivi_lac , ASN1_EXTENSION_ROOT , dissect_ivi_LayoutContainer },
17714 { 5, &hf_ivi_avc , ASN1_NOT_EXTENSION_ROOT, dissect_ivi_AutomatedVehicleContainer },
17715 { 6, &hf_ivi_mlc , ASN1_NOT_EXTENSION_ROOT, dissect_ivi_MapLocationContainer },
17716 { 7, &hf_ivi_rsc , ASN1_NOT_EXTENSION_ROOT, dissect_ivi_RoadSurfaceContainer },
17717 { 0, NULL, 0, NULL }
17720 static int
17721 dissect_ivi_IviContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17722 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
17723 ett_ivi_IviContainer, ivi_IviContainer_choice,
17724 NULL);
17726 return offset;
17730 static const per_sequence_t ivi_IviContainers_sequence_of[1] = {
17731 { &hf_ivi_IviContainers_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_IviContainer },
17734 static int
17735 dissect_ivi_IviContainers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17736 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
17737 ett_ivi_IviContainers, ivi_IviContainers_sequence_of,
17738 1, 8, true);
17740 return offset;
17744 static const per_sequence_t ivi_IviStructure_sequence[] = {
17745 { &hf_ivi_mandatory , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ivi_IviManagementContainer },
17746 { &hf_ivi_optional , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ivi_IviContainers },
17747 { NULL, 0, 0, NULL }
17750 static int
17751 dissect_ivi_IviStructure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17752 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
17753 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "IVIM");
17754 col_set_str(actx->pinfo->cinfo, COL_INFO, "IVIM");
17755 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17756 ett_ivi_IviStructure, ivi_IviStructure_sequence);
17758 return offset;
17761 /*--- PDUs ---*/
17763 static int dissect_ivi_IviStructure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
17764 int offset = 0;
17765 asn1_ctx_t asn1_ctx;
17766 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
17767 offset = dissect_ivi_IviStructure(tvb, offset, &asn1_ctx, tree, hf_ivi_ivi_IviStructure_PDU);
17768 offset += 7; offset >>= 3;
17769 return offset;
17773 /* --- Module SPATEM-PDU-Descriptions --- --- --- */
17776 /* --- Module MAPEM-PDU-Descriptions --- --- --- */
17779 /* --- Module IVIM-PDU-Descriptions --- --- --- */
17782 /* --- Module SREM-PDU-Descriptions --- --- --- */
17785 /* --- Module SSEM-PDU-Descriptions --- --- --- */
17788 /* --- Module RTCMEM-PDU-Descriptions --- --- --- */
17791 /* --- Module CAMv1-PDU-Descriptions --- --- --- */
17795 static int
17796 dissect_camv1_GenerationDeltaTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17797 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
17798 0U, 65535U, NULL, false);
17800 return offset;
17804 static const per_sequence_t camv1_BasicContainer_sequence[] = {
17805 { &hf_camv1_stationType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_StationType },
17806 { &hf_camv1_referencePosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_ReferencePosition },
17807 { NULL, 0, 0, NULL }
17810 static int
17811 dissect_camv1_BasicContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17812 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17813 ett_camv1_BasicContainer, camv1_BasicContainer_sequence);
17815 return offset;
17819 static const per_sequence_t camv1_BasicVehicleContainerHighFrequency_sequence[] = {
17820 { &hf_camv1_heading , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Heading },
17821 { &hf_camv1_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Speed },
17822 { &hf_camv1_driveDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DriveDirection },
17823 { &hf_camv1_vehicleLength , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleLength },
17824 { &hf_camv1_vehicleWidth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleWidth },
17825 { &hf_camv1_longitudinalAcceleration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LongitudinalAcceleration },
17826 { &hf_camv1_curvature , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_Curvature },
17827 { &hf_camv1_curvatureCalculationMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_CurvatureCalculationMode },
17828 { &hf_camv1_yawRate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_YawRate },
17829 { &hf_camv1_accelerationControl, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_AccelerationControl },
17830 { &hf_camv1_lanePosition , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_LanePosition },
17831 { &hf_camv1_steeringWheelAngle, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_SteeringWheelAngle },
17832 { &hf_camv1_lateralAcceleration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_LateralAcceleration },
17833 { &hf_camv1_verticalAcceleration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_VerticalAcceleration },
17834 { &hf_camv1_performanceClass, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_PerformanceClass },
17835 { &hf_camv1_cenDsrcTollingZone, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CenDsrcTollingZone },
17836 { NULL, 0, 0, NULL }
17839 static int
17840 dissect_camv1_BasicVehicleContainerHighFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17841 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17842 ett_camv1_BasicVehicleContainerHighFrequency, camv1_BasicVehicleContainerHighFrequency_sequence);
17844 return offset;
17848 static const per_sequence_t camv1_RSUContainerHighFrequency_sequence[] = {
17849 { &hf_camv1_protectedCommunicationZonesRSU, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_ProtectedCommunicationZonesRSU },
17850 { NULL, 0, 0, NULL }
17853 static int
17854 dissect_camv1_RSUContainerHighFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17855 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17856 ett_camv1_RSUContainerHighFrequency, camv1_RSUContainerHighFrequency_sequence);
17858 return offset;
17862 static const value_string camv1_HighFrequencyContainer_vals[] = {
17863 { 0, "basicVehicleContainerHighFrequency" },
17864 { 1, "rsuContainerHighFrequency" },
17865 { 0, NULL }
17868 static const per_choice_t camv1_HighFrequencyContainer_choice[] = {
17869 { 0, &hf_camv1_basicVehicleContainerHighFrequency, ASN1_EXTENSION_ROOT , dissect_camv1_BasicVehicleContainerHighFrequency },
17870 { 1, &hf_camv1_rsuContainerHighFrequency, ASN1_EXTENSION_ROOT , dissect_camv1_RSUContainerHighFrequency },
17871 { 0, NULL, 0, NULL }
17874 static int
17875 dissect_camv1_HighFrequencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17876 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
17877 ett_camv1_HighFrequencyContainer, camv1_HighFrequencyContainer_choice,
17878 NULL);
17880 return offset;
17884 static const per_sequence_t camv1_BasicVehicleContainerLowFrequency_sequence[] = {
17885 { &hf_camv1_vehicleRole , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleRole },
17886 { &hf_camv1_exteriorLights, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ExteriorLights },
17887 { &hf_camv1_pathHistory , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PathHistory },
17888 { NULL, 0, 0, NULL }
17891 static int
17892 dissect_camv1_BasicVehicleContainerLowFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17893 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17894 ett_camv1_BasicVehicleContainerLowFrequency, camv1_BasicVehicleContainerLowFrequency_sequence);
17896 return offset;
17900 static const value_string camv1_LowFrequencyContainer_vals[] = {
17901 { 0, "basicVehicleContainerLowFrequency" },
17902 { 0, NULL }
17905 static const per_choice_t camv1_LowFrequencyContainer_choice[] = {
17906 { 0, &hf_camv1_basicVehicleContainerLowFrequency, ASN1_EXTENSION_ROOT , dissect_camv1_BasicVehicleContainerLowFrequency },
17907 { 0, NULL, 0, NULL }
17910 static int
17911 dissect_camv1_LowFrequencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17912 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
17913 ett_camv1_LowFrequencyContainer, camv1_LowFrequencyContainer_choice,
17914 NULL);
17916 return offset;
17920 static const per_sequence_t camv1_PublicTransportContainer_sequence[] = {
17921 { &hf_camv1_embarkationStatus, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_EmbarkationStatus },
17922 { &hf_camv1_ptActivation , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_PtActivation },
17923 { NULL, 0, 0, NULL }
17926 static int
17927 dissect_camv1_PublicTransportContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17928 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17929 ett_camv1_PublicTransportContainer, camv1_PublicTransportContainer_sequence);
17931 return offset;
17935 static const per_sequence_t camv1_SpecialTransportContainer_sequence[] = {
17936 { &hf_camv1_specialTransportType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SpecialTransportType },
17937 { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
17938 { NULL, 0, 0, NULL }
17941 static int
17942 dissect_camv1_SpecialTransportContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17943 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17944 ett_camv1_SpecialTransportContainer, camv1_SpecialTransportContainer_sequence);
17946 return offset;
17950 static const per_sequence_t camv1_DangerousGoodsContainer_sequence[] = {
17951 { &hf_camv1_dangerousGoodsBasic, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_DangerousGoodsBasic },
17952 { NULL, 0, 0, NULL }
17955 static int
17956 dissect_camv1_DangerousGoodsContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17957 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17958 ett_camv1_DangerousGoodsContainer, camv1_DangerousGoodsContainer_sequence);
17960 return offset;
17964 static const per_sequence_t camv1_RoadWorksContainerBasic_sequence[] = {
17965 { &hf_camv1_roadworksSubCauseCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_RoadworksSubCauseCode },
17966 { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
17967 { &hf_camv1_closedLanes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ClosedLanes },
17968 { NULL, 0, 0, NULL }
17971 static int
17972 dissect_camv1_RoadWorksContainerBasic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17973 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17974 ett_camv1_RoadWorksContainerBasic, camv1_RoadWorksContainerBasic_sequence);
17976 return offset;
17980 static const per_sequence_t camv1_RescueContainer_sequence[] = {
17981 { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
17982 { NULL, 0, 0, NULL }
17985 static int
17986 dissect_camv1_RescueContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
17987 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
17988 ett_camv1_RescueContainer, camv1_RescueContainer_sequence);
17990 return offset;
17994 static const per_sequence_t camv1_EmergencyContainer_sequence[] = {
17995 { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
17996 { &hf_camv1_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
17997 { &hf_camv1_emergencyPriority, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_EmergencyPriority },
17998 { NULL, 0, 0, NULL }
18001 static int
18002 dissect_camv1_EmergencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18003 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18004 ett_camv1_EmergencyContainer, camv1_EmergencyContainer_sequence);
18006 return offset;
18010 static const per_sequence_t camv1_SafetyCarContainer_sequence[] = {
18011 { &hf_camv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_LightBarSirenInUse },
18012 { &hf_camv1_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
18013 { &hf_camv1_trafficRule , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_TrafficRule },
18014 { &hf_camv1_speedLimit , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_SpeedLimit },
18015 { NULL, 0, 0, NULL }
18018 static int
18019 dissect_camv1_SafetyCarContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18020 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18021 ett_camv1_SafetyCarContainer, camv1_SafetyCarContainer_sequence);
18023 return offset;
18027 static const value_string camv1_SpecialVehicleContainer_vals[] = {
18028 { 0, "publicTransportContainer" },
18029 { 1, "specialTransportContainer" },
18030 { 2, "dangerousGoodsContainer" },
18031 { 3, "roadWorksContainerBasic" },
18032 { 4, "rescueContainer" },
18033 { 5, "emergencyContainer" },
18034 { 6, "safetyCarContainer" },
18035 { 0, NULL }
18038 static const per_choice_t camv1_SpecialVehicleContainer_choice[] = {
18039 { 0, &hf_camv1_publicTransportContainer, ASN1_EXTENSION_ROOT , dissect_camv1_PublicTransportContainer },
18040 { 1, &hf_camv1_specialTransportContainer, ASN1_EXTENSION_ROOT , dissect_camv1_SpecialTransportContainer },
18041 { 2, &hf_camv1_dangerousGoodsContainer, ASN1_EXTENSION_ROOT , dissect_camv1_DangerousGoodsContainer },
18042 { 3, &hf_camv1_roadWorksContainerBasic, ASN1_EXTENSION_ROOT , dissect_camv1_RoadWorksContainerBasic },
18043 { 4, &hf_camv1_rescueContainer, ASN1_EXTENSION_ROOT , dissect_camv1_RescueContainer },
18044 { 5, &hf_camv1_emergencyContainer, ASN1_EXTENSION_ROOT , dissect_camv1_EmergencyContainer },
18045 { 6, &hf_camv1_safetyCarContainer, ASN1_EXTENSION_ROOT , dissect_camv1_SafetyCarContainer },
18046 { 0, NULL, 0, NULL }
18049 static int
18050 dissect_camv1_SpecialVehicleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18051 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
18052 ett_camv1_SpecialVehicleContainer, camv1_SpecialVehicleContainer_choice,
18053 NULL);
18055 return offset;
18059 static const per_sequence_t camv1_CamParameters_sequence[] = {
18060 { &hf_camv1_basicContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_camv1_BasicContainer },
18061 { &hf_camv1_highFrequencyContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_camv1_HighFrequencyContainer },
18062 { &hf_camv1_lowFrequencyContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_camv1_LowFrequencyContainer },
18063 { &hf_camv1_specialVehicleContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_camv1_SpecialVehicleContainer },
18064 { NULL, 0, 0, NULL }
18067 static int
18068 dissect_camv1_CamParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18069 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18070 ett_camv1_CamParameters, camv1_CamParameters_sequence);
18072 return offset;
18076 static const per_sequence_t camv1_CoopAwarenessV1_sequence[] = {
18077 { &hf_camv1_generationDeltaTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_camv1_GenerationDeltaTime },
18078 { &hf_camv1_camParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_camv1_CamParameters },
18079 { NULL, 0, 0, NULL }
18082 static int
18083 dissect_camv1_CoopAwarenessV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18084 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
18085 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "CAMv1");
18086 col_set_str(actx->pinfo->cinfo, COL_INFO, "CAMv1");
18087 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18088 ett_camv1_CoopAwarenessV1, camv1_CoopAwarenessV1_sequence);
18090 return offset;
18093 /*--- PDUs ---*/
18095 static int dissect_camv1_CoopAwarenessV1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
18096 int offset = 0;
18097 asn1_ctx_t asn1_ctx;
18098 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
18099 offset = dissect_camv1_CoopAwarenessV1(tvb, offset, &asn1_ctx, tree, hf_camv1_camv1_CoopAwarenessV1_PDU);
18100 offset += 7; offset >>= 3;
18101 return offset;
18105 /* --- Module CAM-PDU-Descriptions --- --- --- */
18108 static const per_sequence_t cam_BasicVehicleContainerHighFrequency_sequence[] = {
18109 { &hf_cam_heading , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Heading },
18110 { &hf_cam_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Speed },
18111 { &hf_cam_driveDirection , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DriveDirection },
18112 { &hf_cam_vehicleLength , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VehicleLength },
18113 { &hf_cam_vehicleWidth , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VehicleWidth },
18114 { &hf_cam_longitudinalAcceleration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_AccelerationComponent },
18115 { &hf_cam_curvature , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Curvature },
18116 { &hf_cam_curvatureCalculationMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_CurvatureCalculationMode },
18117 { &hf_cam_yawRate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_YawRate },
18118 { &hf_cam_accelerationControl, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_AccelerationControl },
18119 { &hf_cam_lanePosition , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_LanePosition },
18120 { &hf_cam_steeringWheelAngle, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_SteeringWheelAngle },
18121 { &hf_cam_lateralAcceleration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_AccelerationComponent },
18122 { &hf_cam_verticalAcceleration, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_AccelerationComponent },
18123 { &hf_cam_performanceClass, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_PerformanceClass },
18124 { &hf_cam_cenDsrcTollingZone, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CenDsrcTollingZone },
18125 { NULL, 0, 0, NULL }
18128 static int
18129 dissect_cam_BasicVehicleContainerHighFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18130 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18131 ett_cam_BasicVehicleContainerHighFrequency, cam_BasicVehicleContainerHighFrequency_sequence);
18133 return offset;
18137 static const per_sequence_t cam_RSUContainerHighFrequency_sequence[] = {
18138 { &hf_cam_protectedCommunicationZonesRSU, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ProtectedCommunicationZonesRSU },
18139 { NULL, 0, 0, NULL }
18142 static int
18143 dissect_cam_RSUContainerHighFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18144 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18145 ett_cam_RSUContainerHighFrequency, cam_RSUContainerHighFrequency_sequence);
18147 return offset;
18151 static const value_string cam_HighFrequencyContainer_vals[] = {
18152 { 0, "basicVehicleContainerHighFrequency" },
18153 { 1, "rsuContainerHighFrequency" },
18154 { 0, NULL }
18157 static const per_choice_t cam_HighFrequencyContainer_choice[] = {
18158 { 0, &hf_cam_basicVehicleContainerHighFrequency, ASN1_EXTENSION_ROOT , dissect_cam_BasicVehicleContainerHighFrequency },
18159 { 1, &hf_cam_rsuContainerHighFrequency, ASN1_EXTENSION_ROOT , dissect_cam_RSUContainerHighFrequency },
18160 { 0, NULL, 0, NULL }
18163 static int
18164 dissect_cam_HighFrequencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18165 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
18166 ett_cam_HighFrequencyContainer, cam_HighFrequencyContainer_choice,
18167 NULL);
18169 return offset;
18173 static const per_sequence_t cam_BasicVehicleContainerLowFrequency_sequence[] = {
18174 { &hf_cam_vehicleRole , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VehicleRole },
18175 { &hf_cam_exteriorLights , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_ExteriorLights },
18176 { &hf_cam_pathHistory , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Path },
18177 { NULL, 0, 0, NULL }
18180 static int
18181 dissect_cam_BasicVehicleContainerLowFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18182 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18183 ett_cam_BasicVehicleContainerLowFrequency, cam_BasicVehicleContainerLowFrequency_sequence);
18185 return offset;
18189 static const value_string cam_LowFrequencyContainer_vals[] = {
18190 { 0, "basicVehicleContainerLowFrequency" },
18191 { 0, NULL }
18194 static const per_choice_t cam_LowFrequencyContainer_choice[] = {
18195 { 0, &hf_cam_basicVehicleContainerLowFrequency, ASN1_EXTENSION_ROOT , dissect_cam_BasicVehicleContainerLowFrequency },
18196 { 0, NULL, 0, NULL }
18199 static int
18200 dissect_cam_LowFrequencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18201 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
18202 ett_cam_LowFrequencyContainer, cam_LowFrequencyContainer_choice,
18203 NULL);
18205 return offset;
18209 static const per_sequence_t cam_PublicTransportContainer_sequence[] = {
18210 { &hf_cam_embarkationStatus, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_EmbarkationStatus },
18211 { &hf_cam_ptActivation , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_PtActivation },
18212 { NULL, 0, 0, NULL }
18215 static int
18216 dissect_cam_PublicTransportContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18217 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18218 ett_cam_PublicTransportContainer, cam_PublicTransportContainer_sequence);
18220 return offset;
18224 static const per_sequence_t cam_SpecialTransportContainer_sequence[] = {
18225 { &hf_cam_specialTransportType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_SpecialTransportType },
18226 { &hf_cam_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LightBarSirenInUse },
18227 { NULL, 0, 0, NULL }
18230 static int
18231 dissect_cam_SpecialTransportContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18232 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18233 ett_cam_SpecialTransportContainer, cam_SpecialTransportContainer_sequence);
18235 return offset;
18239 static const per_sequence_t cam_DangerousGoodsContainer_sequence[] = {
18240 { &hf_cam_dangerousGoodsBasic, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_DangerousGoodsBasic },
18241 { NULL, 0, 0, NULL }
18244 static int
18245 dissect_cam_DangerousGoodsContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18246 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18247 ett_cam_DangerousGoodsContainer, cam_DangerousGoodsContainer_sequence);
18249 return offset;
18253 static const per_sequence_t cam_RoadWorksContainerBasic_sequence[] = {
18254 { &hf_cam_roadworksSubCauseCode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_RoadworksSubCauseCode },
18255 { &hf_cam_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LightBarSirenInUse },
18256 { &hf_cam_closedLanes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_ClosedLanes },
18257 { NULL, 0, 0, NULL }
18260 static int
18261 dissect_cam_RoadWorksContainerBasic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18262 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18263 ett_cam_RoadWorksContainerBasic, cam_RoadWorksContainerBasic_sequence);
18265 return offset;
18269 static const per_sequence_t cam_RescueContainer_sequence[] = {
18270 { &hf_cam_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LightBarSirenInUse },
18271 { NULL, 0, 0, NULL }
18274 static int
18275 dissect_cam_RescueContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18276 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18277 ett_cam_RescueContainer, cam_RescueContainer_sequence);
18279 return offset;
18283 static const per_sequence_t cam_EmergencyContainer_sequence[] = {
18284 { &hf_cam_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LightBarSirenInUse },
18285 { &hf_cam_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CauseCodeV2 },
18286 { &hf_cam_emergencyPriority, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_EmergencyPriority },
18287 { NULL, 0, 0, NULL }
18290 static int
18291 dissect_cam_EmergencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18292 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18293 ett_cam_EmergencyContainer, cam_EmergencyContainer_sequence);
18295 return offset;
18299 static const per_sequence_t cam_SafetyCarContainer_sequence[] = {
18300 { &hf_cam_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_LightBarSirenInUse },
18301 { &hf_cam_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CauseCodeV2 },
18302 { &hf_cam_trafficRule , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_TrafficRule },
18303 { &hf_cam_speedLimit , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_SpeedLimit },
18304 { NULL, 0, 0, NULL }
18307 static int
18308 dissect_cam_SafetyCarContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18309 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18310 ett_cam_SafetyCarContainer, cam_SafetyCarContainer_sequence);
18312 return offset;
18316 static const value_string cam_SpecialVehicleContainer_vals[] = {
18317 { 0, "publicTransportContainer" },
18318 { 1, "specialTransportContainer" },
18319 { 2, "dangerousGoodsContainer" },
18320 { 3, "roadWorksContainerBasic" },
18321 { 4, "rescueContainer" },
18322 { 5, "emergencyContainer" },
18323 { 6, "safetyCarContainer" },
18324 { 0, NULL }
18327 static const per_choice_t cam_SpecialVehicleContainer_choice[] = {
18328 { 0, &hf_cam_publicTransportContainer, ASN1_EXTENSION_ROOT , dissect_cam_PublicTransportContainer },
18329 { 1, &hf_cam_specialTransportContainer, ASN1_EXTENSION_ROOT , dissect_cam_SpecialTransportContainer },
18330 { 2, &hf_cam_dangerousGoodsContainer, ASN1_EXTENSION_ROOT , dissect_cam_DangerousGoodsContainer },
18331 { 3, &hf_cam_roadWorksContainerBasic, ASN1_EXTENSION_ROOT , dissect_cam_RoadWorksContainerBasic },
18332 { 4, &hf_cam_rescueContainer , ASN1_EXTENSION_ROOT , dissect_cam_RescueContainer },
18333 { 5, &hf_cam_emergencyContainer, ASN1_EXTENSION_ROOT , dissect_cam_EmergencyContainer },
18334 { 6, &hf_cam_safetyCarContainer, ASN1_EXTENSION_ROOT , dissect_cam_SafetyCarContainer },
18335 { 0, NULL, 0, NULL }
18338 static int
18339 dissect_cam_SpecialVehicleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18340 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
18341 ett_cam_SpecialVehicleContainer, cam_SpecialVehicleContainer_choice,
18342 NULL);
18344 return offset;
18348 static const per_sequence_t cam_CamParameters_sequence[] = {
18349 { &hf_cam_basicContainer , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_BasicContainer },
18350 { &hf_cam_highFrequencyContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cam_HighFrequencyContainer },
18351 { &hf_cam_lowFrequencyContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cam_LowFrequencyContainer },
18352 { &hf_cam_specialVehicleContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cam_SpecialVehicleContainer },
18353 { NULL, 0, 0, NULL }
18356 static int
18357 dissect_cam_CamParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18358 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18359 ett_cam_CamParameters, cam_CamParameters_sequence);
18361 return offset;
18365 static const per_sequence_t cam_CamPayload_sequence[] = {
18366 { &hf_cam_generationDeltaTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_GenerationDeltaTime },
18367 { &hf_cam_camParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cam_CamParameters },
18368 { NULL, 0, 0, NULL }
18371 static int
18372 dissect_cam_CamPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18373 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
18374 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "CAM");
18375 col_set_str(actx->pinfo->cinfo, COL_INFO, "CAM");
18376 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18377 ett_cam_CamPayload, cam_CamPayload_sequence);
18379 return offset;
18382 /*--- PDUs ---*/
18384 static int dissect_cam_CamPayload_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
18385 int offset = 0;
18386 asn1_ctx_t asn1_ctx;
18387 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
18388 offset = dissect_cam_CamPayload(tvb, offset, &asn1_ctx, tree, hf_cam_cam_CamPayload_PDU);
18389 offset += 7; offset >>= 3;
18390 return offset;
18394 /* --- Module DENMv1-PDU-Descriptions --- --- --- */
18397 static const value_string denmv1_Termination_vals[] = {
18398 { 0, "isCancellation" },
18399 { 1, "isNegation" },
18400 { 0, NULL }
18404 static int
18405 dissect_denmv1_Termination(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18406 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
18407 2, NULL, false, 0, NULL);
18409 return offset;
18413 static const per_sequence_t denmv1_ManagementContainer_sequence[] = {
18414 { &hf_denmv1_actionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_ActionID },
18415 { &hf_denmv1_detectionTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_TimestampIts },
18416 { &hf_denmv1_referenceTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_TimestampIts },
18417 { &hf_denmv1_termination , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denmv1_Termination },
18418 { &hf_denmv1_eventPosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_ReferencePosition },
18419 { &hf_denmv1_relevanceDistance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_RelevanceDistance },
18420 { &hf_denmv1_relevanceTrafficDirection, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_RelevanceTrafficDirection },
18421 { &hf_denmv1_validityDuration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_ValidityDuration },
18422 { &hf_denmv1_transmissionInterval, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_TransmissionInterval },
18423 { &hf_denmv1_stationType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_StationType },
18424 { NULL, 0, 0, NULL }
18427 static int
18428 dissect_denmv1_ManagementContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18429 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18430 ett_denmv1_ManagementContainer, denmv1_ManagementContainer_sequence);
18432 return offset;
18436 static const per_sequence_t denmv1_SituationContainer_sequence[] = {
18437 { &hf_denmv1_informationQuality, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_InformationQuality },
18438 { &hf_denmv1_eventType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_CauseCode },
18439 { &hf_denmv1_linkedCause , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
18440 { &hf_denmv1_eventHistory , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_EventHistory },
18441 { NULL, 0, 0, NULL }
18444 static int
18445 dissect_denmv1_SituationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18446 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18447 ett_denmv1_SituationContainer, denmv1_SituationContainer_sequence);
18449 return offset;
18453 static const per_sequence_t denmv1_LocationContainer_sequence[] = {
18454 { &hf_denmv1_eventSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_Speed },
18455 { &hf_denmv1_eventPositionHeading, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_Heading },
18456 { &hf_denmv1_traces , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_Traces },
18457 { &hf_denmv1_roadType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_RoadType },
18458 { NULL, 0, 0, NULL }
18461 static int
18462 dissect_denmv1_LocationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18463 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18464 ett_denmv1_LocationContainer, denmv1_LocationContainer_sequence);
18466 return offset;
18470 static const per_sequence_t denmv1_ImpactReductionContainer_sequence[] = {
18471 { &hf_denmv1_heightLonCarrLeft, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeightLonCarr },
18472 { &hf_denmv1_heightLonCarrRight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_HeightLonCarr },
18473 { &hf_denmv1_posLonCarrLeft, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosLonCarr },
18474 { &hf_denmv1_posLonCarrRight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosLonCarr },
18475 { &hf_denmv1_positionOfPillars, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PositionOfPillars },
18476 { &hf_denmv1_posCentMass , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosCentMass },
18477 { &hf_denmv1_wheelBaseVehicle, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_WheelBaseVehicle },
18478 { &hf_denmv1_turningRadius, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_TurningRadius },
18479 { &hf_denmv1_posFrontAx , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PosFrontAx },
18480 { &hf_denmv1_positionOfOccupants, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_PositionOfOccupants },
18481 { &hf_denmv1_vehicleMass , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_VehicleMass },
18482 { &hf_denmv1_requestResponseIndication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_RequestResponseIndication },
18483 { NULL, 0, 0, NULL }
18486 static int
18487 dissect_denmv1_ImpactReductionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18488 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18489 ett_denmv1_ImpactReductionContainer, denmv1_ImpactReductionContainer_sequence);
18491 return offset;
18495 static const per_sequence_t denmv1_ReferenceDenms_sequence_of[1] = {
18496 { &hf_denmv1_ReferenceDenms_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_ActionID },
18499 static int
18500 dissect_denmv1_ReferenceDenms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18501 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
18502 ett_denmv1_ReferenceDenms, denmv1_ReferenceDenms_sequence_of,
18503 1, 8, true);
18505 return offset;
18509 static const per_sequence_t denmv1_RoadWorksContainerExtended_sequence[] = {
18510 { &hf_denmv1_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_LightBarSirenInUse },
18511 { &hf_denmv1_closedLanes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ClosedLanes },
18512 { &hf_denmv1_restriction , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_RestrictedTypes },
18513 { &hf_denmv1_speedLimit , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_SpeedLimit },
18514 { &hf_denmv1_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
18515 { &hf_denmv1_recommendedPath, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_ItineraryPath },
18516 { &hf_denmv1_startingPointSpeedLimit, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_DeltaReferencePosition },
18517 { &hf_denmv1_trafficFlowRule, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_TrafficRule },
18518 { &hf_denmv1_referenceDenms, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denmv1_ReferenceDenms },
18519 { NULL, 0, 0, NULL }
18522 static int
18523 dissect_denmv1_RoadWorksContainerExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18524 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18525 ett_denmv1_RoadWorksContainerExtended, denmv1_RoadWorksContainerExtended_sequence);
18527 return offset;
18531 static const per_sequence_t denmv1_StationaryVehicleContainer_sequence[] = {
18532 { &hf_denmv1_stationarySince, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_StationarySince },
18533 { &hf_denmv1_stationaryCause, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_CauseCode },
18534 { &hf_denmv1_carryingDangerousGoods, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_DangerousGoodsExtended },
18535 { &hf_denmv1_numberOfOccupants, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_NumberOfOccupants },
18536 { &hf_denmv1_vehicleIdentification, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_VehicleIdentification },
18537 { &hf_denmv1_energyStorageType, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_itsv1_EnergyStorageType },
18538 { NULL, 0, 0, NULL }
18541 static int
18542 dissect_denmv1_StationaryVehicleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18543 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18544 ett_denmv1_StationaryVehicleContainer, denmv1_StationaryVehicleContainer_sequence);
18546 return offset;
18550 static const per_sequence_t denmv1_AlacarteContainer_sequence[] = {
18551 { &hf_denmv1_lanePosition , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_LanePosition },
18552 { &hf_denmv1_impactReduction, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denmv1_ImpactReductionContainer },
18553 { &hf_denmv1_externalTemperature, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_Temperature },
18554 { &hf_denmv1_roadWorks , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denmv1_RoadWorksContainerExtended },
18555 { &hf_denmv1_positioningSolution, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_PositioningSolutionType },
18556 { &hf_denmv1_stationaryVehicle, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denmv1_StationaryVehicleContainer },
18557 { NULL, 0, 0, NULL }
18560 static int
18561 dissect_denmv1_AlacarteContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18562 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18563 ett_denmv1_AlacarteContainer, denmv1_AlacarteContainer_sequence);
18565 return offset;
18569 static const per_sequence_t denmv1_DecentralizedEnvironmentalNotificationMessageV1_sequence[] = {
18570 { &hf_denmv1_management , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_denmv1_ManagementContainer },
18571 { &hf_denmv1_situation , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denmv1_SituationContainer },
18572 { &hf_denmv1_location , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denmv1_LocationContainer },
18573 { &hf_denmv1_alacarte , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denmv1_AlacarteContainer },
18574 { NULL, 0, 0, NULL }
18577 static int
18578 dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18579 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
18580 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "DENMv1");
18581 col_set_str(actx->pinfo->cinfo, COL_INFO, "DENMv1");
18582 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18583 ett_denmv1_DecentralizedEnvironmentalNotificationMessageV1, denmv1_DecentralizedEnvironmentalNotificationMessageV1_sequence);
18585 return offset;
18588 /*--- PDUs ---*/
18590 static int dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
18591 int offset = 0;
18592 asn1_ctx_t asn1_ctx;
18593 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
18594 offset = dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1(tvb, offset, &asn1_ctx, tree, hf_denmv1_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU);
18595 offset += 7; offset >>= 3;
18596 return offset;
18600 /* --- Module DENM-PDU-Description --- --- --- */
18603 static const value_string denm_Termination_vals[] = {
18604 { 0, "isCancellation" },
18605 { 1, "isNegation" },
18606 { 0, NULL }
18610 static int
18611 dissect_denm_Termination(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18612 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
18613 2, NULL, false, 0, NULL);
18615 return offset;
18619 static const per_sequence_t denm_ManagementContainer_sequence[] = {
18620 { &hf_denm_actionId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ActionId },
18621 { &hf_denm_detectionTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
18622 { &hf_denm_referenceTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
18623 { &hf_denm_termination , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denm_Termination },
18624 { &hf_denm_eventPosition , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ReferencePosition },
18625 { &hf_denm_awarenessDistance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_StandardLength3b },
18626 { &hf_denm_awarenessTrafficDirection, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_TrafficDirection },
18627 { &hf_denm_validityDuration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DeltaTimeSecond },
18628 { &hf_denm_transmissionInterval, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DeltaTimeMilliSecondPositive },
18629 { &hf_denm_stationType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StationType },
18630 { NULL, 0, 0, NULL }
18633 static int
18634 dissect_denm_ManagementContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18635 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18636 ett_denm_ManagementContainer, denm_ManagementContainer_sequence);
18638 return offset;
18642 static const per_sequence_t denm_SituationContainer_sequence[] = {
18643 { &hf_denm_informationQuality, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_InformationQuality },
18644 { &hf_denm_eventType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_CauseCodeV2 },
18645 { &hf_denm_linkedCause , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_CauseCodeV2 },
18646 { &hf_denm_eventZone , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_EventZone },
18647 { NULL, 0, 0, NULL }
18650 static int
18651 dissect_denm_SituationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18652 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18653 ett_denm_SituationContainer, denm_SituationContainer_sequence);
18655 return offset;
18659 static const per_sequence_t denm_LocationContainer_sequence[] = {
18660 { &hf_denm_eventSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Speed },
18661 { &hf_denm_eventPositionHeading, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Wgs84Angle },
18662 { &hf_denm_traces , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Traces },
18663 { &hf_denm_roadType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_RoadType },
18664 { NULL, 0, 0, NULL }
18667 static int
18668 dissect_denm_LocationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18669 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18670 ett_denm_LocationContainer, denm_LocationContainer_sequence);
18672 return offset;
18676 static const per_sequence_t denm_ImpactReductionContainer_sequence[] = {
18677 { &hf_denm_heightLonCarrLeft, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_HeightLonCarr },
18678 { &hf_denm_heightLonCarrRight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_HeightLonCarr },
18679 { &hf_denm_posLonCarrLeft , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PosLonCarr },
18680 { &hf_denm_posLonCarrRight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PosLonCarr },
18681 { &hf_denm_positionOfPillars, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PositionOfPillars },
18682 { &hf_denm_posCentMass , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PosCentMass },
18683 { &hf_denm_wheelBaseVehicle, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_WheelBaseVehicle },
18684 { &hf_denm_turningRadius , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_TurningRadius },
18685 { &hf_denm_posFrontAx , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PosFrontAx },
18686 { &hf_denm_positionOfOccupants, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PositionOfOccupants },
18687 { &hf_denm_vehicleMass , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_VehicleMass },
18688 { &hf_denm_requestResponseIndication, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_RequestResponseIndication },
18689 { NULL, 0, 0, NULL }
18692 static int
18693 dissect_denm_ImpactReductionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18694 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18695 ett_denm_ImpactReductionContainer, denm_ImpactReductionContainer_sequence);
18697 return offset;
18701 static const per_sequence_t denm_RoadWorksContainerExtended_sequence[] = {
18702 { &hf_denm_lightBarSirenInUse, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_LightBarSirenInUse },
18703 { &hf_denm_closedLanes , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_ClosedLanes },
18704 { &hf_denm_restriction , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_RestrictedTypes },
18705 { &hf_denm_speedLimit , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_SpeedLimit },
18706 { &hf_denm_incidentIndication, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CauseCodeV2 },
18707 { &hf_denm_recommendedPath, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_ItineraryPath },
18708 { &hf_denm_startingPointSpeedLimit, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_DeltaReferencePosition },
18709 { &hf_denm_trafficFlowRule, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_TrafficRule },
18710 { &hf_denm_referenceDenms , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_ActionIdList },
18711 { NULL, 0, 0, NULL }
18714 static int
18715 dissect_denm_RoadWorksContainerExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18716 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18717 ett_denm_RoadWorksContainerExtended, denm_RoadWorksContainerExtended_sequence);
18719 return offset;
18723 static const per_sequence_t denm_StationaryVehicleContainer_sequence[] = {
18724 { &hf_denm_stationarySince, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_StationarySince },
18725 { &hf_denm_stationaryCause, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_CauseCodeV2 },
18726 { &hf_denm_carryingDangerousGoods, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_DangerousGoodsExtended },
18727 { &hf_denm_numberOfOccupants, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_NumberOfOccupants },
18728 { &hf_denm_vehicleIdentification, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_VehicleIdentification },
18729 { &hf_denm_energyStorageType, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_its_EnergyStorageType },
18730 { NULL, 0, 0, NULL }
18733 static int
18734 dissect_denm_StationaryVehicleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18735 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18736 ett_denm_StationaryVehicleContainer, denm_StationaryVehicleContainer_sequence);
18738 return offset;
18742 static const per_sequence_t denm_AlacarteContainer_sequence[] = {
18743 { &hf_denm_lanePosition , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_LanePosition },
18744 { &hf_denm_impactReduction, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denm_ImpactReductionContainer },
18745 { &hf_denm_externalTemperature, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Temperature },
18746 { &hf_denm_roadWorks , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denm_RoadWorksContainerExtended },
18747 { &hf_denm_positioningSolution, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_PositioningSolutionType },
18748 { &hf_denm_stationaryVehicle, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_denm_StationaryVehicleContainer },
18749 { NULL, 0, 0, NULL }
18752 static int
18753 dissect_denm_AlacarteContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18754 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18755 ett_denm_AlacarteContainer, denm_AlacarteContainer_sequence);
18757 return offset;
18761 static const per_sequence_t denm_DenmPayload_sequence[] = {
18762 { &hf_denm_management , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_denm_ManagementContainer },
18763 { &hf_denm_situation , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denm_SituationContainer },
18764 { &hf_denm_location , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denm_LocationContainer },
18765 { &hf_denm_alacarte , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_denm_AlacarteContainer },
18766 { NULL, 0, 0, NULL }
18769 static int
18770 dissect_denm_DenmPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18771 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
18772 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "DENM");
18773 col_set_str(actx->pinfo->cinfo, COL_INFO, "DENM");
18774 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18775 ett_denm_DenmPayload, denm_DenmPayload_sequence);
18777 return offset;
18780 /*--- PDUs ---*/
18782 static int dissect_denm_DenmPayload_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
18783 int offset = 0;
18784 asn1_ctx_t asn1_ctx;
18785 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
18786 offset = dissect_denm_DenmPayload(tvb, offset, &asn1_ctx, tree, hf_denm_denm_DenmPayload_PDU);
18787 offset += 7; offset >>= 3;
18788 return offset;
18792 /* --- Module TIS-TPG-Transactions-Descriptions --- --- --- */
18795 static const value_string tistpg_UNVehicleClassifcation_vals[] = {
18796 { 0, "reserved" },
18797 { 1, "categoryL1" },
18798 { 2, "categoryL2" },
18799 { 3, "categoryL3" },
18800 { 4, "categoryL4" },
18801 { 5, "categoryL5" },
18802 { 6, "categoryL6" },
18803 { 7, "categoryL7" },
18804 { 8, "categoryL8" },
18805 { 0, NULL }
18809 static int
18810 dissect_tistpg_UNVehicleClassifcation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18811 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
18812 0U, 63U, NULL, false);
18814 return offset;
18819 static int
18820 dissect_tistpg_CustomerContract(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18821 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
18822 1, 32, false,
18823 NULL);
18825 return offset;
18829 static int * const tistpg_TisProfile_bits[] = {
18830 &hf_tistpg_TisProfile_reserved,
18831 &hf_tistpg_TisProfile_profileOne,
18832 &hf_tistpg_TisProfile_profileTwo,
18833 &hf_tistpg_TisProfile_profileThree,
18834 NULL
18837 static int
18838 dissect_tistpg_TisProfile(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18839 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
18840 8, 8, false, tistpg_TisProfile_bits, 4, NULL, NULL);
18842 return offset;
18846 static const per_sequence_t tistpg_TisTpgDRM_Management_sequence[] = {
18847 { &hf_tistpg_generationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
18848 { &hf_tistpg_vehicleType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_UNVehicleClassifcation },
18849 { &hf_tistpg_costumerContract, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_CustomerContract },
18850 { &hf_tistpg_tisProfile , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisProfile },
18851 { NULL, 0, 0, NULL }
18854 static int
18855 dissect_tistpg_TisTpgDRM_Management(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18856 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18857 ett_tistpg_TisTpgDRM_Management, tistpg_TisTpgDRM_Management_sequence);
18859 return offset;
18863 static const per_sequence_t tistpg_TisTpgDRM_Situation_sequence[] = {
18864 { &hf_tistpg_causeCode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_CauseCode },
18865 { NULL, 0, 0, NULL }
18868 static int
18869 dissect_tistpg_TisTpgDRM_Situation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18870 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18871 ett_tistpg_TisTpgDRM_Situation, tistpg_TisTpgDRM_Situation_sequence);
18873 return offset;
18878 static int
18879 dissect_tistpg_SearchRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18880 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
18881 0U, 255U, NULL, false);
18883 return offset;
18887 static const value_string tistpg_SearchCondition_vals[] = {
18888 { 0, "nearest" },
18889 { 1, "quickest" },
18890 { 2, "paylessRoad" },
18891 { 0, NULL }
18895 static int
18896 dissect_tistpg_SearchCondition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18897 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
18898 0U, 7U, NULL, false);
18900 return offset;
18904 static const per_sequence_t tistpg_TisTpgDRM_Location_sequence[] = {
18905 { &hf_tistpg_vehiclePosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ReferencePosition },
18906 { &hf_tistpg_vehicleSpeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Speed },
18907 { &hf_tistpg_vehicleHeading, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Heading },
18908 { &hf_tistpg_requestedPosition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ReferencePosition },
18909 { &hf_tistpg_searchRange , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_SearchRange },
18910 { &hf_tistpg_searchCondition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_SearchCondition },
18911 { NULL, 0, 0, NULL }
18914 static int
18915 dissect_tistpg_TisTpgDRM_Location(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18916 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18917 ett_tistpg_TisTpgDRM_Location, tistpg_TisTpgDRM_Location_sequence);
18919 return offset;
18923 static const per_sequence_t tistpg_TisTpgDRM_sequence[] = {
18924 { &hf_tistpg_drmManagement, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgDRM_Management },
18925 { &hf_tistpg_drmSituation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgDRM_Situation },
18926 { &hf_tistpg_drmLocation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgDRM_Location },
18927 { NULL, 0, 0, NULL }
18930 static int
18931 dissect_tistpg_TisTpgDRM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18932 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18933 ett_tistpg_TisTpgDRM, tistpg_TisTpgDRM_sequence);
18935 return offset;
18940 static int
18941 dissect_tistpg_TotalTpgStations(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18942 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
18943 0U, 65535U, NULL, false);
18945 return offset;
18949 static const per_sequence_t tistpg_TisTpgSNM_Management_sequence[] = {
18950 { &hf_tistpg_generationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
18951 { &hf_tistpg_totalTpgStations, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TotalTpgStations },
18952 { NULL, 0, 0, NULL }
18955 static int
18956 dissect_tistpg_TisTpgSNM_Management(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18957 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
18958 ett_tistpg_TisTpgSNM_Management, tistpg_TisTpgSNM_Management_sequence);
18960 return offset;
18964 static int * const tistpg_TpgAutomation_bits[] = {
18965 &hf_tistpg_TpgAutomation_fullAutomated,
18966 &hf_tistpg_TpgAutomation_semiAutomated,
18967 &hf_tistpg_TpgAutomation_manual,
18968 &hf_tistpg_TpgAutomation_reserved,
18969 NULL
18972 static int
18973 dissect_tistpg_TpgAutomation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18974 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
18975 4, 4, false, tistpg_TpgAutomation_bits, 4, NULL, NULL);
18977 return offset;
18982 static int
18983 dissect_tistpg_TpgNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18984 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
18985 1U, 65535U, NULL, false);
18987 return offset;
18992 static int
18993 dissect_tistpg_TpgProvider(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
18994 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
18995 1, 32, false);
18997 return offset;
19002 static int
19003 dissect_tistpg_Accessibility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19004 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
19005 1, 32, false);
19007 return offset;
19012 static int
19013 dissect_tistpg_UTF8String_SIZE_1_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19014 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
19015 1, 128, false);
19017 return offset;
19022 static int
19023 dissect_tistpg_BookingInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19024 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
19025 NO_BOUND, NO_BOUND, false);
19027 return offset;
19032 static int
19033 dissect_tistpg_AvailableTpgNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19034 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19035 1U, 65535U, NULL, false);
19037 return offset;
19042 static int
19043 dissect_tistpg_CancellationCondition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19044 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
19045 1, 32, false);
19047 return offset;
19051 static const per_sequence_t tistpg_TpgStationData_sequence[] = {
19052 { &hf_tistpg_tpgStationID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StationID },
19053 { &hf_tistpg_tpgAutomationLevel, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TpgAutomation },
19054 { &hf_tistpg_tpgNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TpgNumber },
19055 { &hf_tistpg_tpgProvider , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TpgProvider },
19056 { &hf_tistpg_tpgLocation , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ReferencePosition },
19057 { &hf_tistpg_accessibility, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_Accessibility },
19058 { &hf_tistpg_address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_UTF8String_SIZE_1_128 },
19059 { &hf_tistpg_phoneNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_PhoneNumber },
19060 { &hf_tistpg_digitalMap , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DigitalMap },
19061 { &hf_tistpg_openingDaysHours, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_OpeningDaysHours },
19062 { &hf_tistpg_bookingInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_BookingInfo },
19063 { &hf_tistpg_availableTpgNumber, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_AvailableTpgNumber },
19064 { &hf_tistpg_cancellationCondition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_CancellationCondition },
19065 { NULL, 0, 0, NULL }
19068 static int
19069 dissect_tistpg_TpgStationData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19070 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19071 ett_tistpg_TpgStationData, tistpg_TpgStationData_sequence);
19073 return offset;
19077 static const per_sequence_t tistpg_TpgNotifContainer_sequence_of[1] = {
19078 { &hf_tistpg_TpgNotifContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_TpgStationData },
19081 static int
19082 dissect_tistpg_TpgNotifContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19083 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
19084 ett_tistpg_TpgNotifContainer, tistpg_TpgNotifContainer_sequence_of,
19085 1, 8, false);
19087 return offset;
19091 static const per_sequence_t tistpg_TisTpgSNM_sequence[] = {
19092 { &hf_tistpg_snmManagement, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgSNM_Management },
19093 { &hf_tistpg_tpgContainer , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_TpgNotifContainer },
19094 { NULL, 0, 0, NULL }
19097 static int
19098 dissect_tistpg_TisTpgSNM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19099 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19100 ett_tistpg_TisTpgSNM, tistpg_TisTpgSNM_sequence);
19102 return offset;
19106 static const value_string tistpg_ReservationStatus_vals[] = {
19107 { 0, "reservationOK" },
19108 { 1, "noReservationService" },
19109 { 2, "noTpmsAvailable" },
19110 { 0, NULL }
19114 static int
19115 dissect_tistpg_ReservationStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19116 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
19117 3, NULL, true, 0, NULL);
19119 return offset;
19124 static int
19125 dissect_tistpg_ReservationID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19126 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
19127 1, 32, false);
19129 return offset;
19133 static const per_sequence_t tistpg_TisTpgTRM_Management_sequence[] = {
19134 { &hf_tistpg_generationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
19135 { &hf_tistpg_vehicleType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_UNVehicleClassifcation },
19136 { &hf_tistpg_tpgStationID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StationID },
19137 { &hf_tistpg_reservationStatus, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_ReservationStatus },
19138 { &hf_tistpg_costumercontract, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_CustomerContract },
19139 { &hf_tistpg_reservationID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_ReservationID },
19140 { NULL, 0, 0, NULL }
19143 static int
19144 dissect_tistpg_TisTpgTRM_Management(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19145 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19146 ett_tistpg_TisTpgTRM_Management, tistpg_TisTpgTRM_Management_sequence);
19148 return offset;
19153 static int
19154 dissect_tistpg_PairingID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19155 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19156 0U, 9999U, NULL, false);
19158 return offset;
19162 static const per_sequence_t tistpg_TisTpgTRM_Situation_sequence[] = {
19163 { &hf_tistpg_estArrivalTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
19164 { &hf_tistpg_proposedPairingID, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_tistpg_PairingID },
19165 { NULL, 0, 0, NULL }
19168 static int
19169 dissect_tistpg_TisTpgTRM_Situation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19170 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19171 ett_tistpg_TisTpgTRM_Situation, tistpg_TisTpgTRM_Situation_sequence);
19173 return offset;
19177 static const per_sequence_t tistpg_TisTpgTRM_Location_sequence[] = {
19178 { &hf_tistpg_vehiclePosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ReferencePosition },
19179 { &hf_tistpg_vehicleSpeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Speed },
19180 { &hf_tistpg_vehicleHeading, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Heading },
19181 { NULL, 0, 0, NULL }
19184 static int
19185 dissect_tistpg_TisTpgTRM_Location(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19186 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19187 ett_tistpg_TisTpgTRM_Location, tistpg_TisTpgTRM_Location_sequence);
19189 return offset;
19193 static const per_sequence_t tistpg_TisTpgTRM_sequence[] = {
19194 { &hf_tistpg_trmManagement, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgTRM_Management },
19195 { &hf_tistpg_trmSituation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_TisTpgTRM_Situation },
19196 { &hf_tistpg_trmLocation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_TisTpgTRM_Location },
19197 { NULL, 0, 0, NULL }
19200 static int
19201 dissect_tistpg_TisTpgTRM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19202 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19203 ett_tistpg_TisTpgTRM, tistpg_TisTpgTRM_sequence);
19205 return offset;
19210 static int
19211 dissect_tistpg_INTEGER_1_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19212 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19213 1U, 65535U, NULL, false);
19215 return offset;
19219 static const per_sequence_t tistpg_TisTpgTCM_Management_sequence[] = {
19220 { &hf_tistpg_generationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
19221 { &hf_tistpg_tpgStationID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StationID },
19222 { &hf_tistpg_reservationStatus, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_ReservationStatus },
19223 { &hf_tistpg_reservedTpg , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_INTEGER_1_65535 },
19224 { &hf_tistpg_costumercontract, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_CustomerContract },
19225 { &hf_tistpg_reservationID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_ReservationID },
19226 { &hf_tistpg_tpgAutomationLevel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_TpgAutomation },
19227 { NULL, 0, 0, NULL }
19230 static int
19231 dissect_tistpg_TisTpgTCM_Management(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19232 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19233 ett_tistpg_TisTpgTCM_Management, tistpg_TisTpgTCM_Management_sequence);
19235 return offset;
19239 static const per_sequence_t tistpg_TisTpgTCM_Situation_sequence[] = {
19240 { &hf_tistpg_pairingID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_PairingID },
19241 { &hf_tistpg_reservationTimeLimit, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
19242 { &hf_tistpg_cancellationCondition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_CancellationCondition },
19243 { NULL, 0, 0, NULL }
19246 static int
19247 dissect_tistpg_TisTpgTCM_Situation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19248 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19249 ett_tistpg_TisTpgTCM_Situation, tistpg_TisTpgTCM_Situation_sequence);
19251 return offset;
19255 static const per_sequence_t tistpg_TisTpgTCM_Location_sequence[] = {
19256 { &hf_tistpg_tpgLocation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ReferencePosition },
19257 { &hf_tistpg_address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_UTF8String_SIZE_1_128 },
19258 { NULL, 0, 0, NULL }
19261 static int
19262 dissect_tistpg_TisTpgTCM_Location(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19263 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19264 ett_tistpg_TisTpgTCM_Location, tistpg_TisTpgTCM_Location_sequence);
19266 return offset;
19270 static const per_sequence_t tistpg_TisTpgTCM_sequence[] = {
19271 { &hf_tistpg_tcmManagement, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgTCM_Management },
19272 { &hf_tistpg_tcmSituation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_TisTpgTCM_Situation },
19273 { &hf_tistpg_tcmLocation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_TisTpgTCM_Location },
19274 { NULL, 0, 0, NULL }
19277 static int
19278 dissect_tistpg_TisTpgTCM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19279 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19280 ett_tistpg_TisTpgTCM, tistpg_TisTpgTCM_sequence);
19282 return offset;
19286 static const value_string tistpg_FillingStatus_vals[] = {
19287 { 0, "requestVehicleData" },
19288 { 1, "sendVehicleData" },
19289 { 2, "started" },
19290 { 3, "fillingProcessFailed" },
19291 { 4, "fillingProcessCompleted" },
19292 { 0, NULL }
19296 static int
19297 dissect_tistpg_FillingStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19298 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19299 0U, 7U, NULL, false);
19301 return offset;
19305 static const per_sequence_t tistpg_TisTpgVDRM_Management_sequence[] = {
19306 { &hf_tistpg_generationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
19307 { &hf_tistpg_fillingStatus, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_FillingStatus },
19308 { &hf_tistpg_automationLevel, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TpgAutomation },
19309 { &hf_tistpg_pairingID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_PairingID },
19310 { NULL, 0, 0, NULL }
19313 static int
19314 dissect_tistpg_TisTpgVDRM_Management(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19315 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19316 ett_tistpg_TisTpgVDRM_Management, tistpg_TisTpgVDRM_Management_sequence);
19318 return offset;
19322 static const per_sequence_t tistpg_TisTpgVDRM_sequence[] = {
19323 { &hf_tistpg_vdrmManagement, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgVDRM_Management },
19324 { NULL, 0, 0, NULL }
19327 static int
19328 dissect_tistpg_TisTpgVDRM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19329 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19330 ett_tistpg_TisTpgVDRM, tistpg_TisTpgVDRM_sequence);
19332 return offset;
19337 static int
19338 dissect_tistpg_Language(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19339 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
19340 10, 10, false, NULL, 0, NULL, NULL);
19342 return offset;
19346 static const value_string tistpg_TyreTempCondition_vals[] = {
19347 { 0, "pressure-cold" },
19348 { 1, "pressure-warm" },
19349 { 2, "unavailable" },
19350 { 0, NULL }
19354 static int
19355 dissect_tistpg_TyreTempCondition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19356 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
19357 3, NULL, true, 0, NULL);
19359 return offset;
19363 static const per_sequence_t tistpg_TisTpgVDPM_Management_sequence[] = {
19364 { &hf_tistpg_generationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
19365 { &hf_tistpg_tisProfile , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_TisProfile },
19366 { &hf_tistpg_language , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_Language },
19367 { &hf_tistpg_vehicleType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_UNVehicleClassifcation },
19368 { &hf_tistpg_tyreTempCondition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TyreTempCondition },
19369 { &hf_tistpg_fillingStatus, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_FillingStatus },
19370 { &hf_tistpg_pairingID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_PairingID },
19371 { NULL, 0, 0, NULL }
19374 static int
19375 dissect_tistpg_TisTpgVDPM_Management(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19376 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19377 ett_tistpg_TisTpgVDPM_Management, tistpg_TisTpgVDPM_Management_sequence);
19379 return offset;
19384 static int
19385 dissect_tistpg_TyreSetVariantID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19386 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19387 0U, 15U, NULL, false);
19389 return offset;
19394 static int
19395 dissect_tistpg_TyreSidewallInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19396 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
19397 60, 60, false, NULL, 0, NULL, NULL);
19399 return offset;
19404 static int
19405 dissect_tistpg_PressureConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19406 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
19407 9, 9, false, NULL, 0, NULL, NULL);
19409 return offset;
19413 static const value_string tistpg_AxlePlacardPressure_vals[] = {
19414 { 0, "zero" },
19415 { 1, "fiveKPa" },
19416 { 0, NULL }
19420 static int
19421 dissect_tistpg_AxlePlacardPressure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19422 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19423 0U, 255U, NULL, false);
19425 return offset;
19429 static const per_sequence_t tistpg_PressureVariant_sequence[] = {
19430 { &hf_tistpg_pressureConfiguration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_PressureConfiguration },
19431 { &hf_tistpg_frontAxlePressure, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_AxlePlacardPressure },
19432 { &hf_tistpg_rearAxlePressure, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_AxlePlacardPressure },
19433 { NULL, 0, 0, NULL }
19436 static int
19437 dissect_tistpg_PressureVariant(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19438 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19439 ett_tistpg_PressureVariant, tistpg_PressureVariant_sequence);
19441 return offset;
19445 static const per_sequence_t tistpg_PressureVariantsList_sequence_of[1] = {
19446 { &hf_tistpg_PressureVariantsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_PressureVariant },
19449 static int
19450 dissect_tistpg_PressureVariantsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19451 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
19452 ett_tistpg_PressureVariantsList, tistpg_PressureVariantsList_sequence_of,
19453 1, 15, false);
19455 return offset;
19459 static const per_sequence_t tistpg_TyreSetVariant_sequence[] = {
19460 { &hf_tistpg_variantID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_TyreSetVariantID },
19461 { &hf_tistpg_frontAxleDimension, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_tistpg_TyreSidewallInformation },
19462 { &hf_tistpg_rearAxleDimension, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_tistpg_TyreSidewallInformation },
19463 { &hf_tistpg_pressureVariantsList, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_PressureVariantsList },
19464 { NULL, 0, 0, NULL }
19467 static int
19468 dissect_tistpg_TyreSetVariant(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19469 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19470 ett_tistpg_TyreSetVariant, tistpg_TyreSetVariant_sequence);
19472 return offset;
19476 static const per_sequence_t tistpg_PlacardTable_sequence_of[1] = {
19477 { &hf_tistpg_PlacardTable_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_TyreSetVariant },
19480 static int
19481 dissect_tistpg_PlacardTable(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19482 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
19483 ett_tistpg_PlacardTable, tistpg_PlacardTable_sequence_of,
19484 0, 15, false);
19486 return offset;
19490 static const value_string tistpg_TyrePressure_vals[] = {
19491 { 0, "invalid" },
19492 { 1, "lessThanOneBar" },
19493 { 2, "oneBar" },
19494 { 3, "oneBarPlusTwoAndHalfKPa" },
19495 { 254, "inflation" },
19496 { 255, "overflow" },
19497 { 0, NULL }
19501 static int
19502 dissect_tistpg_TyrePressure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19503 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19504 0U, 255U, NULL, false);
19506 return offset;
19511 static int
19512 dissect_tistpg_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19513 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
19515 return offset;
19519 static const value_string tistpg_T_currentTyrePressure_vals[] = {
19520 { 0, "tyrePressureValue" },
19521 { 1, "unavailable" },
19522 { 0, NULL }
19525 static const per_choice_t tistpg_T_currentTyrePressure_choice[] = {
19526 { 0, &hf_tistpg_tyrePressureValue, ASN1_NO_EXTENSIONS , dissect_tistpg_TyrePressure },
19527 { 1, &hf_tistpg_unavailable , ASN1_NO_EXTENSIONS , dissect_tistpg_NULL },
19528 { 0, NULL, 0, NULL }
19531 static int
19532 dissect_tistpg_T_currentTyrePressure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19533 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
19534 ett_tistpg_T_currentTyrePressure, tistpg_T_currentTyrePressure_choice,
19535 NULL);
19537 return offset;
19541 static const value_string tistpg_T_tyreSidewallInformation_vals[] = {
19542 { 0, "tyreSidewallInformationValue" },
19543 { 1, "unavailable" },
19544 { 0, NULL }
19547 static const per_choice_t tistpg_T_tyreSidewallInformation_choice[] = {
19548 { 0, &hf_tistpg_tyreSidewallInformationValue, ASN1_NO_EXTENSIONS , dissect_tistpg_TyreSidewallInformation },
19549 { 1, &hf_tistpg_unavailable , ASN1_NO_EXTENSIONS , dissect_tistpg_NULL },
19550 { 0, NULL, 0, NULL }
19553 static int
19554 dissect_tistpg_T_tyreSidewallInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19555 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
19556 ett_tistpg_T_tyreSidewallInformation, tistpg_T_tyreSidewallInformation_choice,
19557 NULL);
19559 return offset;
19563 static const value_string tistpg_TyreAirTemperature_vals[] = {
19564 { 0, "invalid" },
19565 { 1, "lessThanMinus50Celsius" },
19566 { 2, "minus50Celsius" },
19567 { 3, "minus49Celsius" },
19568 { 52, "zeroCelsius" },
19569 { 240, "overflowThreshold1" },
19570 { 241, "overflowThreshold2" },
19571 { 242, "overflowThreshold3" },
19572 { 243, "overflowThreshold4" },
19573 { 244, "overflowThreshold5" },
19574 { 245, "overflowThreshold6" },
19575 { 246, "overflowThreshold7" },
19576 { 247, "overflowThreshold8" },
19577 { 248, "overflowThreshold9" },
19578 { 249, "overflowThreshold10" },
19579 { 250, "overflowThreshold11" },
19580 { 251, "overflowThreshold12" },
19581 { 252, "overflowThreshold13" },
19582 { 253, "overflowThreshold14" },
19583 { 254, "overflowThreshold15" },
19584 { 255, "overflowThreshold16" },
19585 { 0, NULL }
19589 static int
19590 dissect_tistpg_TyreAirTemperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19591 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19592 0U, 255U, NULL, false);
19594 return offset;
19598 static const value_string tistpg_T_currentInsideAirTemperature_vals[] = {
19599 { 0, "tyreAirTemperatureValue" },
19600 { 1, "unavailable" },
19601 { 0, NULL }
19604 static const per_choice_t tistpg_T_currentInsideAirTemperature_choice[] = {
19605 { 0, &hf_tistpg_tyreAirTemperatureValue, ASN1_NO_EXTENSIONS , dissect_tistpg_TyreAirTemperature },
19606 { 1, &hf_tistpg_unavailable , ASN1_NO_EXTENSIONS , dissect_tistpg_NULL },
19607 { 0, NULL, 0, NULL }
19610 static int
19611 dissect_tistpg_T_currentInsideAirTemperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19612 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
19613 ett_tistpg_T_currentInsideAirTemperature, tistpg_T_currentInsideAirTemperature_choice,
19614 NULL);
19616 return offset;
19620 static const value_string tistpg_T_recommendedTyrePressure_vals[] = {
19621 { 0, "axlePlacardPressureValue" },
19622 { 1, "unavailable" },
19623 { 0, NULL }
19626 static const per_choice_t tistpg_T_recommendedTyrePressure_choice[] = {
19627 { 0, &hf_tistpg_axlePlacardPressureValue, ASN1_NO_EXTENSIONS , dissect_tistpg_AxlePlacardPressure },
19628 { 1, &hf_tistpg_unavailable , ASN1_NO_EXTENSIONS , dissect_tistpg_NULL },
19629 { 0, NULL, 0, NULL }
19632 static int
19633 dissect_tistpg_T_recommendedTyrePressure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19634 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
19635 ett_tistpg_T_recommendedTyrePressure, tistpg_T_recommendedTyrePressure_choice,
19636 NULL);
19638 return offset;
19643 static int
19644 dissect_tistpg_TIN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19645 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
19646 64, 64, false, NULL, 0, NULL, NULL);
19648 return offset;
19652 static const value_string tistpg_T_tin_vals[] = {
19653 { 0, "tinValue" },
19654 { 1, "unavailable" },
19655 { 0, NULL }
19658 static const per_choice_t tistpg_T_tin_choice[] = {
19659 { 0, &hf_tistpg_tinValue , ASN1_NO_EXTENSIONS , dissect_tistpg_TIN },
19660 { 1, &hf_tistpg_unavailable , ASN1_NO_EXTENSIONS , dissect_tistpg_NULL },
19661 { 0, NULL, 0, NULL }
19664 static int
19665 dissect_tistpg_T_tin(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19666 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
19667 ett_tistpg_T_tin, tistpg_T_tin_choice,
19668 NULL);
19670 return offset;
19674 static const value_string tistpg_SensorState_vals[] = {
19675 { 65534, "malfunction" },
19676 { 65535, "unavailable" },
19677 { 0, NULL }
19681 static int
19682 dissect_tistpg_SensorState(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19683 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19684 0U, 65535U, NULL, false);
19686 return offset;
19690 static const value_string tistpg_T_sensorState_vals[] = {
19691 { 0, "sensorStateValue" },
19692 { 1, "unavailable" },
19693 { 0, NULL }
19696 static const per_choice_t tistpg_T_sensorState_choice[] = {
19697 { 0, &hf_tistpg_sensorStateValue, ASN1_NO_EXTENSIONS , dissect_tistpg_SensorState },
19698 { 1, &hf_tistpg_unavailable , ASN1_NO_EXTENSIONS , dissect_tistpg_NULL },
19699 { 0, NULL, 0, NULL }
19702 static int
19703 dissect_tistpg_T_sensorState(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19704 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
19705 ett_tistpg_T_sensorState, tistpg_T_sensorState_choice,
19706 NULL);
19708 return offset;
19712 static const per_sequence_t tistpg_TyreData_sequence[] = {
19713 { &hf_tistpg_currentTyrePressure, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_T_currentTyrePressure },
19714 { &hf_tistpg_tyreSidewallInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_T_tyreSidewallInformation },
19715 { &hf_tistpg_currentInsideAirTemperature, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_T_currentInsideAirTemperature },
19716 { &hf_tistpg_recommendedTyrePressure, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_T_recommendedTyrePressure },
19717 { &hf_tistpg_tin , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_T_tin },
19718 { &hf_tistpg_sensorState , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_T_sensorState },
19719 { NULL, 0, 0, NULL }
19722 static int
19723 dissect_tistpg_TyreData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19724 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19725 ett_tistpg_TyreData, tistpg_TyreData_sequence);
19727 return offset;
19731 static const per_sequence_t tistpg_VehicleSpecificData_sequence[] = {
19732 { &hf_tistpg_currentVehicleConfiguration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_PressureConfiguration },
19733 { &hf_tistpg_frontLeftTyreData, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TyreData },
19734 { &hf_tistpg_frontRightTyreData, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TyreData },
19735 { &hf_tistpg_rearLeftTyreData, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TyreData },
19736 { &hf_tistpg_rearRightTyreData, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TyreData },
19737 { &hf_tistpg_spareTyreData, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TyreData },
19738 { NULL, 0, 0, NULL }
19741 static int
19742 dissect_tistpg_VehicleSpecificData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19743 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19744 ett_tistpg_VehicleSpecificData, tistpg_VehicleSpecificData_sequence);
19746 return offset;
19750 static const per_sequence_t tistpg_TisTpgVDPM_sequence[] = {
19751 { &hf_tistpg_vdpmManagement, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgVDPM_Management },
19752 { &hf_tistpg_placardTable , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_PlacardTable },
19753 { &hf_tistpg_vehicleSpecificData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_VehicleSpecificData },
19754 { NULL, 0, 0, NULL }
19757 static int
19758 dissect_tistpg_TisTpgVDPM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19759 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19760 ett_tistpg_TisTpgVDPM, tistpg_TisTpgVDPM_sequence);
19762 return offset;
19766 static const value_string tistpg_NumberOfAppliedPressure_vals[] = {
19767 { 1, "oneAppliedPressure" },
19768 { 2, "twoAppliedPressure" },
19769 { 0, NULL }
19773 static int
19774 dissect_tistpg_NumberOfAppliedPressure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19775 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19776 1U, 5U, NULL, false);
19778 return offset;
19782 static const value_string tistpg_AppliedTyrePressure_vals[] = {
19783 { 0, "tyrePressureValue" },
19784 { 1, "unavailable" },
19785 { 0, NULL }
19788 static const per_choice_t tistpg_AppliedTyrePressure_choice[] = {
19789 { 0, &hf_tistpg_tyrePressureValue, ASN1_NO_EXTENSIONS , dissect_tistpg_TyrePressure },
19790 { 1, &hf_tistpg_unavailable , ASN1_NO_EXTENSIONS , dissect_tistpg_NULL },
19791 { 0, NULL, 0, NULL }
19794 static int
19795 dissect_tistpg_AppliedTyrePressure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19796 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
19797 ett_tistpg_AppliedTyrePressure, tistpg_AppliedTyrePressure_choice,
19798 NULL);
19800 return offset;
19804 static const per_sequence_t tistpg_AppliedTyrePressures_sequence_of[1] = {
19805 { &hf_tistpg_AppliedTyrePressures_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_tistpg_AppliedTyrePressure },
19808 static int
19809 dissect_tistpg_AppliedTyrePressures(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19810 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
19811 ett_tistpg_AppliedTyrePressures, tistpg_AppliedTyrePressures_sequence_of,
19812 1, 5, false);
19814 return offset;
19818 static const per_sequence_t tistpg_TisTpgEOFM_Management_sequence[] = {
19819 { &hf_tistpg_generationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
19820 { &hf_tistpg_fillingStatus, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_FillingStatus },
19821 { &hf_tistpg_numberOfAppliedPressure, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_NumberOfAppliedPressure },
19822 { &hf_tistpg_appliedTyrePressures, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_AppliedTyrePressures },
19823 { &hf_tistpg_pairingID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_tistpg_PairingID },
19824 { NULL, 0, 0, NULL }
19827 static int
19828 dissect_tistpg_TisTpgEOFM_Management(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19829 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19830 ett_tistpg_TisTpgEOFM_Management, tistpg_TisTpgEOFM_Management_sequence);
19832 return offset;
19836 static const per_sequence_t tistpg_TisTpgEOFM_sequence[] = {
19837 { &hf_tistpg_eofmManagement, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tistpg_TisTpgEOFM_Management },
19838 { NULL, 0, 0, NULL }
19841 static int
19842 dissect_tistpg_TisTpgEOFM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19843 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19844 ett_tistpg_TisTpgEOFM, tistpg_TisTpgEOFM_sequence);
19846 return offset;
19850 static const value_string tistpg_TisTpgTransaction_vals[] = {
19851 { 0, "drm" },
19852 { 1, "snm" },
19853 { 2, "trm" },
19854 { 3, "tcm" },
19855 { 4, "vdrm" },
19856 { 5, "vdpm" },
19857 { 6, "eofm" },
19858 { 0, NULL }
19861 static const per_choice_t tistpg_TisTpgTransaction_choice[] = {
19862 { 0, &hf_tistpg_drm , ASN1_NO_EXTENSIONS , dissect_tistpg_TisTpgDRM },
19863 { 1, &hf_tistpg_snm , ASN1_NO_EXTENSIONS , dissect_tistpg_TisTpgSNM },
19864 { 2, &hf_tistpg_trm , ASN1_NO_EXTENSIONS , dissect_tistpg_TisTpgTRM },
19865 { 3, &hf_tistpg_tcm , ASN1_NO_EXTENSIONS , dissect_tistpg_TisTpgTCM },
19866 { 4, &hf_tistpg_vdrm , ASN1_NO_EXTENSIONS , dissect_tistpg_TisTpgVDRM },
19867 { 5, &hf_tistpg_vdpm , ASN1_NO_EXTENSIONS , dissect_tistpg_TisTpgVDPM },
19868 { 6, &hf_tistpg_eofm , ASN1_NO_EXTENSIONS , dissect_tistpg_TisTpgEOFM },
19869 { 0, NULL, 0, NULL }
19872 static int
19873 dissect_tistpg_TisTpgTransaction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19874 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
19875 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "TISTPG");
19876 col_set_str(actx->pinfo->cinfo, COL_INFO, "TISTPG");
19877 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
19878 ett_tistpg_TisTpgTransaction, tistpg_TisTpgTransaction_choice,
19879 NULL);
19881 return offset;
19884 /*--- PDUs ---*/
19886 static int dissect_tistpg_TisTpgTransaction_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
19887 int offset = 0;
19888 asn1_ctx_t asn1_ctx;
19889 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
19890 offset = dissect_tistpg_TisTpgTransaction(tvb, offset, &asn1_ctx, tree, hf_tistpg_tistpg_TisTpgTransaction_PDU);
19891 offset += 7; offset >>= 3;
19892 return offset;
19896 /* --- Module EVCSN-PDU-Descriptions --- --- --- */
19900 static int
19901 dissect_evcsn_POIType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19902 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19903 0U, 65535U, NULL, false);
19905 return offset;
19910 static int
19911 dissect_evcsn_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19912 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
19914 return offset;
19918 static const per_sequence_t evcsn_ItsPOIHeader_sequence[] = {
19919 { &hf_evcsn_poiType , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_POIType },
19920 { &hf_evcsn_timeStamp , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
19921 { &hf_evcsn_relayCapable , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_BOOLEAN },
19922 { NULL, 0, 0, NULL }
19925 static int
19926 dissect_evcsn_ItsPOIHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19927 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
19928 ett_evcsn_ItsPOIHeader, evcsn_ItsPOIHeader_sequence);
19930 return offset;
19935 static int
19936 dissect_evcsn_NumberStations(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19937 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
19938 1U, 256U, NULL, false);
19940 return offset;
19945 static int
19946 dissect_evcsn_UTF8String_SIZE_1_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19947 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
19948 1, 32, false);
19950 return offset;
19955 static int
19956 dissect_evcsn_UTF8String(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19957 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
19958 NO_BOUND, NO_BOUND, false);
19960 return offset;
19965 static int
19966 dissect_evcsn_NumericString_SIZE_1_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19967 offset = dissect_per_NumericString(tvb, offset, actx, tree, hf_index,
19968 1, 16, false,
19969 NULL);
19971 return offset;
19975 static int * const evcsn_ChargingSpotType_bits[] = {
19976 &hf_evcsn_ChargingSpotType_standardChargeMode1,
19977 &hf_evcsn_ChargingSpotType_standardChargeMode2,
19978 &hf_evcsn_ChargingSpotType_standardOrFastChargeMode3,
19979 &hf_evcsn_ChargingSpotType_fastChargeWithExternalCharger,
19980 &hf_evcsn_ChargingSpotType_spare_bit4,
19981 &hf_evcsn_ChargingSpotType_spare_bit5,
19982 &hf_evcsn_ChargingSpotType_spare_bit6,
19983 &hf_evcsn_ChargingSpotType_spare_bit7,
19984 &hf_evcsn_ChargingSpotType_quickDrop,
19985 &hf_evcsn_ChargingSpotType_spare_bit9,
19986 &hf_evcsn_ChargingSpotType_spare_bit10,
19987 &hf_evcsn_ChargingSpotType_spare_bit11,
19988 &hf_evcsn_ChargingSpotType_inductiveChargeWhileStationary,
19989 &hf_evcsn_ChargingSpotType_spare_bit13,
19990 &hf_evcsn_ChargingSpotType_inductiveChargeWhileDriving,
19991 NULL
19994 static int
19995 dissect_evcsn_ChargingSpotType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
19996 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
19997 NO_BOUND, NO_BOUND, false, evcsn_ChargingSpotType_bits, 15, NULL, NULL);
19999 return offset;
20004 static int
20005 dissect_evcsn_TypeOfReceptacle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20006 tvbuff_t *parameter_tvb = NULL;
20007 int len;
20008 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
20009 NO_BOUND, NO_BOUND, false, NULL, 0, &parameter_tvb, &len);
20011 /* TODO Provide values?
20012 * See ETSI TS 101 556-1 V1.1.1 Annex B Description for data elements
20013 * Table B.2: Coding of the type of receptacle field
20015 * Code Charging Standard plug / Type of Nb of Maximum Maximum
20016 * spot type cable current phases Voltage Current
20017 * -------------------------------------------------------------------------
20018 * 0000 Socket IEC 62196-2 type 1 AC Single 240V 16A
20019 * 0001 Socket IEC 62196-2 type 1 AC Single 240V 32A
20020 * 0010 Socket IEC 62196-2 type 1 AC Single 240V 80A
20021 * 0011 Socket IEC 62196-2 type 1 AC Single 120V 12A
20022 * 0100 Socket IEC 62196-2 type 1 AC Single 120V 16A
20023 * 0101 Socket Standard Household AC Single 250V 16A
20024 * 0110 Socket Standard Household AC Single 480V 16A
20025 * 0111 Socket IEC 62196-2 type 2 AC Single 230V 16A
20026 * 1000 Socket IEC 62196-2 type 2 AC Single 250V 32A
20027 * 1001 Socket IEC 62196-2 type 2 AC Single 480V 32A
20028 * 1010 Socket IEC 62196-2 type 2 AC Single 400V 32/250A
20029 * 1011 Socket IEC 62196-2 type 3A AC Single 250V 32A
20030 * 1100 Socket IEC 62196-2 type 3B AC Single 480V 32A
20031 * 1101 Socket Reserved for Future AC Single 1000V 400A
20032 IEC 62196-3
20033 * 1110 Cable for Reserved
20034 DC charging
20035 * 1111 Cable for Reserved
20036 DC charging
20039 return offset;
20044 static int
20045 dissect_evcsn_INTEGER_0_1400(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20046 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20047 0U, 1400U, NULL, false);
20049 return offset;
20053 static const per_sequence_t evcsn_SpotAvailability_sequence[] = {
20054 { &hf_evcsn_maxWaitingTimeMinutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_INTEGER_0_1400 },
20055 { &hf_evcsn_blocking , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_BOOLEAN },
20056 { NULL, 0, 0, NULL }
20059 static int
20060 dissect_evcsn_SpotAvailability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20061 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20062 ett_evcsn_SpotAvailability, evcsn_SpotAvailability_sequence);
20064 return offset;
20068 static const per_sequence_t evcsn_ParkingPlacesData_sequence_of[1] = {
20069 { &hf_evcsn_ParkingPlacesData_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_SpotAvailability },
20072 static int
20073 dissect_evcsn_ParkingPlacesData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20074 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
20075 ett_evcsn_ParkingPlacesData, evcsn_ParkingPlacesData_sequence_of,
20076 1, 4, false);
20078 return offset;
20082 static const per_sequence_t evcsn_ItsChargingSpotDataElements_sequence[] = {
20083 { &hf_evcsn_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_ChargingSpotType },
20084 { &hf_evcsn_evEquipmentID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_evcsn_UTF8String },
20085 { &hf_evcsn_typeOfReceptacle, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_TypeOfReceptacle },
20086 { &hf_evcsn_energyAvailability, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_UTF8String },
20087 { &hf_evcsn_parkingPlacesData, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_evcsn_ParkingPlacesData },
20088 { NULL, 0, 0, NULL }
20091 static int
20092 dissect_evcsn_ItsChargingSpotDataElements(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20093 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20094 ett_evcsn_ItsChargingSpotDataElements, evcsn_ItsChargingSpotDataElements_sequence);
20096 return offset;
20100 static const per_sequence_t evcsn_ItsChargingSpots_sequence_of[1] = {
20101 { &hf_evcsn_ItsChargingSpots_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_ItsChargingSpotDataElements },
20104 static int
20105 dissect_evcsn_ItsChargingSpots(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20106 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
20107 ett_evcsn_ItsChargingSpots, evcsn_ItsChargingSpots_sequence_of,
20108 1, 16, false);
20110 return offset;
20114 static const per_sequence_t evcsn_ItsChargingStationData_sequence[] = {
20115 { &hf_evcsn_chargingStationID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_StationID },
20116 { &hf_evcsn_utilityDistributorId, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evcsn_UTF8String_SIZE_1_32 },
20117 { &hf_evcsn_providerID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evcsn_UTF8String_SIZE_1_32 },
20118 { &hf_evcsn_chargingStationLocation, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ReferencePosition },
20119 { &hf_evcsn_address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evcsn_UTF8String },
20120 { &hf_evcsn_phoneNumber , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evcsn_NumericString_SIZE_1_16 },
20121 { &hf_evcsn_accessibility , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evcsn_UTF8String_SIZE_1_32 },
20122 { &hf_evcsn_digitalMap , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DigitalMap },
20123 { &hf_evcsn_openingDaysHours, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evcsn_UTF8String },
20124 { &hf_evcsn_pricing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evcsn_UTF8String },
20125 { &hf_evcsn_bookingContactInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evcsn_UTF8String },
20126 { &hf_evcsn_payment , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evcsn_UTF8String },
20127 { &hf_evcsn_chargingSpotsAvailable, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evcsn_ItsChargingSpots },
20128 { NULL, 0, 0, NULL }
20131 static int
20132 dissect_evcsn_ItsChargingStationData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20133 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20134 ett_evcsn_ItsChargingStationData, evcsn_ItsChargingStationData_sequence);
20136 return offset;
20140 static const per_sequence_t evcsn_SEQUENCE_SIZE_1_256_OF_ItsChargingStationData_sequence_of[1] = {
20141 { &hf_evcsn_chargingStationsData_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_ItsChargingStationData },
20144 static int
20145 dissect_evcsn_SEQUENCE_SIZE_1_256_OF_ItsChargingStationData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20146 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
20147 ett_evcsn_SEQUENCE_SIZE_1_256_OF_ItsChargingStationData, evcsn_SEQUENCE_SIZE_1_256_OF_ItsChargingStationData_sequence_of,
20148 1, 256, false);
20150 return offset;
20154 static const per_sequence_t evcsn_ItsEVCSNData_sequence[] = {
20155 { &hf_evcsn_totalNumberOfStations, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_NumberStations },
20156 { &hf_evcsn_chargingStationsData, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_SEQUENCE_SIZE_1_256_OF_ItsChargingStationData },
20157 { NULL, 0, 0, NULL }
20160 static int
20161 dissect_evcsn_ItsEVCSNData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20162 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20163 ett_evcsn_ItsEVCSNData, evcsn_ItsEVCSNData_sequence);
20165 return offset;
20169 static const per_sequence_t evcsn_EVChargingSpotNotificationPOIMessage_sequence[] = {
20170 { &hf_evcsn_poiHeader , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_ItsPOIHeader },
20171 { &hf_evcsn_evcsnData , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evcsn_ItsEVCSNData },
20172 { NULL, 0, 0, NULL }
20175 static int
20176 dissect_evcsn_EVChargingSpotNotificationPOIMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20177 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
20178 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "EVCSN");
20179 col_set_str(actx->pinfo->cinfo, COL_INFO, "EVCSN");
20180 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20181 ett_evcsn_EVChargingSpotNotificationPOIMessage, evcsn_EVChargingSpotNotificationPOIMessage_sequence);
20183 return offset;
20186 /*--- PDUs ---*/
20188 static int dissect_evcsn_EVChargingSpotNotificationPOIMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
20189 int offset = 0;
20190 asn1_ctx_t asn1_ctx;
20191 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
20192 offset = dissect_evcsn_EVChargingSpotNotificationPOIMessage(tvb, offset, &asn1_ctx, tree, hf_evcsn_evcsn_EVChargingSpotNotificationPOIMessage_PDU);
20193 offset += 7; offset >>= 3;
20194 return offset;
20198 /* --- Module EV-RechargingSpotReservation-PDU-Descriptions --- --- --- */
20202 static int
20203 dissect_evrsr_EVSE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20204 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
20205 1, 32, false, NULL);
20207 return offset;
20211 static const value_string evrsr_TimestampUTC_vals[] = {
20212 { 0, "utcStartOf2013" },
20213 { 1, "oneSecondAfterUTCStartOf2013" },
20214 { 0, NULL }
20218 static int
20219 dissect_evrsr_TimestampUTC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20220 offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
20222 return offset;
20226 static const value_string evrsr_RechargingMode_vals[] = {
20227 { 0, "mode1" },
20228 { 1, "mode2" },
20229 { 2, "mode3" },
20230 { 3, "mode4" },
20231 { 8, "quickDrop" },
20232 { 12, "inductiveChargingWhileStationary" },
20233 { 14, "inductiveChargingWhileDriving" },
20234 { 0, NULL }
20238 static int
20239 dissect_evrsr_RechargingMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20240 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20241 0U, 15U, NULL, false);
20243 return offset;
20247 static const value_string evrsr_PowerSource_vals[] = {
20248 { 0, "notApplicable" },
20249 { 1, "ac1Phase" },
20250 { 2, "ac2Phase" },
20251 { 3, "ac3Phase" },
20252 { 4, "dcc" },
20253 { 5, "chaDeMo" },
20254 { 0, NULL }
20258 static int
20259 dissect_evrsr_PowerSource(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20260 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20261 0U, 7U, NULL, false);
20263 return offset;
20267 static const per_sequence_t evrsr_RechargingType_sequence[] = {
20268 { &hf_evrsr_rechargingMode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evrsr_RechargingMode },
20269 { &hf_evrsr_powerSource , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_evrsr_PowerSource },
20270 { NULL, 0, 0, NULL }
20273 static int
20274 dissect_evrsr_RechargingType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20275 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20276 ett_evrsr_RechargingType, evrsr_RechargingType_sequence);
20278 return offset;
20283 static int
20284 dissect_evrsr_BatteryType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20285 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
20286 1, 16, false);
20288 return offset;
20292 static const per_sequence_t evrsr_PreReservationRequestMessage_sequence[] = {
20293 { &hf_evrsr_evse_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_EVSE_ID },
20294 { &hf_evrsr_arrivalTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_TimestampUTC },
20295 { &hf_evrsr_departureTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_TimestampUTC },
20296 { &hf_evrsr_rechargingType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_RechargingType },
20297 { &hf_evrsr_batteryType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_BatteryType },
20298 { NULL, 0, 0, NULL }
20301 static int
20302 dissect_evrsr_PreReservationRequestMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20303 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20304 ett_evrsr_PreReservationRequestMessage, evrsr_PreReservationRequestMessage_sequence);
20306 return offset;
20311 static int
20312 dissect_evrsr_Reservation_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20313 offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index,
20314 8, 8, false,
20315 NULL);
20317 return offset;
20322 static int
20323 dissect_evrsr_PreReservation_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20324 offset = dissect_evrsr_Reservation_ID(tvb, offset, actx, tree, hf_index);
20326 return offset;
20330 static const value_string evrsr_AvailabilityStatus_vals[] = {
20331 { 0, "available" },
20332 { 1, "no-free-capacity" },
20333 { 0, NULL }
20337 static int
20338 dissect_evrsr_AvailabilityStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20339 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
20340 2, NULL, false, 0, NULL);
20342 return offset;
20346 static int * const evrsr_SupportedPaymentTypes_bits[] = {
20347 &hf_evrsr_SupportedPaymentTypes_contract,
20348 &hf_evrsr_SupportedPaymentTypes_externalIdentification,
20349 NULL
20352 static int
20353 dissect_evrsr_SupportedPaymentTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20354 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
20355 2, 2, false, evrsr_SupportedPaymentTypes_bits, 2, NULL, NULL);
20357 return offset;
20361 static const per_sequence_t evrsr_PreReservationResponseMessage_sequence[] = {
20362 { &hf_evrsr_preReservation_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_PreReservation_ID },
20363 { &hf_evrsr_availabilityStatus, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_AvailabilityStatus },
20364 { &hf_evrsr_preReservationExpirationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_TimestampUTC },
20365 { &hf_evrsr_supportedPaymentTypes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_SupportedPaymentTypes },
20366 { NULL, 0, 0, NULL }
20369 static int
20370 dissect_evrsr_PreReservationResponseMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20371 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20372 ett_evrsr_PreReservationResponseMessage, evrsr_PreReservationResponseMessage_sequence);
20374 return offset;
20378 static const value_string evrsr_EAmount_vals[] = {
20379 { 1, "oneWh" },
20380 { 0, NULL }
20384 static int
20385 dissect_evrsr_EAmount(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20386 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20387 1U, 500000U, NULL, false);
20389 return offset;
20393 static const value_string evrsr_PaymentType_vals[] = {
20394 { 0, "contract" },
20395 { 1, "externalIdentification" },
20396 { 0, NULL }
20400 static int
20401 dissect_evrsr_PaymentType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20402 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
20403 2, NULL, false, 0, NULL);
20405 return offset;
20410 static int
20411 dissect_evrsr_ContractID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20412 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
20413 1, 24, false);
20415 return offset;
20420 static int
20421 dissect_evrsr_ExternalIdentificationMeans(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20422 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
20423 1, 24, false);
20425 return offset;
20429 static const value_string evrsr_Payment_ID_vals[] = {
20430 { 0, "contractID" },
20431 { 1, "externalIdentificationMeans" },
20432 { 0, NULL }
20435 static const per_choice_t evrsr_Payment_ID_choice[] = {
20436 { 0, &hf_evrsr_contractID , ASN1_NO_EXTENSIONS , dissect_evrsr_ContractID },
20437 { 1, &hf_evrsr_externalIdentificationMeans, ASN1_NO_EXTENSIONS , dissect_evrsr_ExternalIdentificationMeans },
20438 { 0, NULL, 0, NULL }
20441 static int
20442 dissect_evrsr_Payment_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20443 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
20444 ett_evrsr_Payment_ID, evrsr_Payment_ID_choice,
20445 NULL);
20447 return offset;
20452 static int
20453 dissect_evrsr_Pairing_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20454 offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index,
20455 1, 64, false,
20456 NULL);
20458 return offset;
20462 static const per_sequence_t evrsr_ReservationRequestMessage_sequence[] = {
20463 { &hf_evrsr_currentTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_TimestampUTC },
20464 { &hf_evrsr_preReservation_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_PreReservation_ID },
20465 { &hf_evrsr_arrivalTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_TimestampUTC },
20466 { &hf_evrsr_departureTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_TimestampUTC },
20467 { &hf_evrsr_eAmount , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_EAmount },
20468 { &hf_evrsr_eAmountMin , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_EAmount },
20469 { &hf_evrsr_paymentType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_PaymentType },
20470 { &hf_evrsr_payment_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_Payment_ID },
20471 { &hf_evrsr_secondPayment_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_Payment_ID },
20472 { &hf_evrsr_pairing_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_Pairing_ID },
20473 { NULL, 0, 0, NULL }
20476 static int
20477 dissect_evrsr_ReservationRequestMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20478 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20479 ett_evrsr_ReservationRequestMessage, evrsr_ReservationRequestMessage_sequence);
20481 return offset;
20485 static const value_string evrsr_ReservationResponseCode_vals[] = {
20486 { 0, "ok" },
20487 { 1, "invalid-EVSE-ID" },
20488 { 2, "payment-type-not-supported" },
20489 { 3, "payment-error" },
20490 { 4, "authentication-error" },
20491 { 5, "insufficient-power-availability" },
20492 { 0, NULL }
20496 static int
20497 dissect_evrsr_ReservationResponseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20498 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
20499 6, NULL, false, 0, NULL);
20501 return offset;
20506 static int
20507 dissect_evrsr_Reservation_Password(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20508 offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index,
20509 8, 8, false,
20510 NULL);
20512 return offset;
20517 static int
20518 dissect_evrsr_StationDetails(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20519 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
20520 1, 32, false);
20522 return offset;
20527 static int
20528 dissect_evrsr_ChargingSpotLabel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20529 offset = dissect_per_UTF8String(tvb, offset, actx, tree, hf_index,
20530 1, 4, false);
20532 return offset;
20536 static const per_sequence_t evrsr_ReservationResponseMessage_sequence[] = {
20537 { &hf_evrsr_reservationResponseCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_ReservationResponseCode },
20538 { &hf_evrsr_reservation_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_Reservation_ID },
20539 { &hf_evrsr_reservation_Password, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_Reservation_Password },
20540 { &hf_evrsr_stationDetails, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_StationDetails },
20541 { &hf_evrsr_chargingSpotLabel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_ChargingSpotLabel },
20542 { &hf_evrsr_expirationTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_TimestampUTC },
20543 { &hf_evrsr_freeCancelTimeLimit, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_TimestampUTC },
20544 { NULL, 0, 0, NULL }
20547 static int
20548 dissect_evrsr_ReservationResponseMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20549 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20550 ett_evrsr_ReservationResponseMessage, evrsr_ReservationResponseMessage_sequence);
20552 return offset;
20556 static const per_sequence_t evrsr_CancellationRequestMessage_sequence[] = {
20557 { &hf_evrsr_reservation_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_Reservation_ID },
20558 { &hf_evrsr_reservation_Password, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_Reservation_Password },
20559 { &hf_evrsr_currentTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_TimestampUTC },
20560 { NULL, 0, 0, NULL }
20563 static int
20564 dissect_evrsr_CancellationRequestMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20565 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20566 ett_evrsr_CancellationRequestMessage, evrsr_CancellationRequestMessage_sequence);
20568 return offset;
20572 static const value_string evrsr_CancellationResponseCode_vals[] = {
20573 { 0, "ok" },
20574 { 1, "unknown-Reservation-ID" },
20575 { 2, "mismatching-Reservation-Password" },
20576 { 0, NULL }
20580 static int
20581 dissect_evrsr_CancellationResponseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20582 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
20583 3, NULL, false, 0, NULL);
20585 return offset;
20589 static const per_sequence_t evrsr_CancellationResponseMessage_sequence[] = {
20590 { &hf_evrsr_reservation_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_Reservation_ID },
20591 { &hf_evrsr_cancellationResponseCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_CancellationResponseCode },
20592 { NULL, 0, 0, NULL }
20595 static int
20596 dissect_evrsr_CancellationResponseMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20597 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20598 ett_evrsr_CancellationResponseMessage, evrsr_CancellationResponseMessage_sequence);
20600 return offset;
20604 static const per_sequence_t evrsr_UpdateRequestMessage_sequence[] = {
20605 { &hf_evrsr_reservation_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_Reservation_ID },
20606 { &hf_evrsr_reservation_Password, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_Reservation_Password },
20607 { &hf_evrsr_updatedArrivalTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_TimestampUTC },
20608 { &hf_evrsr_updatedDepartureTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_TimestampUTC },
20609 { NULL, 0, 0, NULL }
20612 static int
20613 dissect_evrsr_UpdateRequestMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20614 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20615 ett_evrsr_UpdateRequestMessage, evrsr_UpdateRequestMessage_sequence);
20617 return offset;
20621 static const value_string evrsr_UpdateResponseCode_vals[] = {
20622 { 0, "ok" },
20623 { 1, "unknown-Reservation-ID" },
20624 { 2, "mismatching-Reservation-Password" },
20625 { 3, "invalid-Arrival-Time" },
20626 { 4, "invalid-Departure-Time" },
20627 { 0, NULL }
20631 static int
20632 dissect_evrsr_UpdateResponseCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20633 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
20634 5, NULL, false, 0, NULL);
20636 return offset;
20640 static const per_sequence_t evrsr_UpdateResponseMessage_sequence[] = {
20641 { &hf_evrsr_reservation_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_Reservation_ID },
20642 { &hf_evrsr_updateResponseCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_evrsr_UpdateResponseCode },
20643 { &hf_evrsr_chargingSpotLabel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_evrsr_ChargingSpotLabel },
20644 { NULL, 0, 0, NULL }
20647 static int
20648 dissect_evrsr_UpdateResponseMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20649 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20650 ett_evrsr_UpdateResponseMessage, evrsr_UpdateResponseMessage_sequence);
20652 return offset;
20656 static const value_string evrsr_EV_RSR_MessageBody_vals[] = {
20657 { 0, "preReservationRequestMessage" },
20658 { 1, "preReservationResponseMessage" },
20659 { 2, "reservationRequestMessage" },
20660 { 3, "reservationResponseMessage" },
20661 { 4, "cancellationRequestMessage" },
20662 { 5, "cancellationResponseMessage" },
20663 { 6, "updateRequestMessage" },
20664 { 7, "updateResponseMessage" },
20665 { 0, NULL }
20668 static const per_choice_t evrsr_EV_RSR_MessageBody_choice[] = {
20669 { 0, &hf_evrsr_preReservationRequestMessage, ASN1_EXTENSION_ROOT , dissect_evrsr_PreReservationRequestMessage },
20670 { 1, &hf_evrsr_preReservationResponseMessage, ASN1_EXTENSION_ROOT , dissect_evrsr_PreReservationResponseMessage },
20671 { 2, &hf_evrsr_reservationRequestMessage, ASN1_EXTENSION_ROOT , dissect_evrsr_ReservationRequestMessage },
20672 { 3, &hf_evrsr_reservationResponseMessage, ASN1_EXTENSION_ROOT , dissect_evrsr_ReservationResponseMessage },
20673 { 4, &hf_evrsr_cancellationRequestMessage, ASN1_EXTENSION_ROOT , dissect_evrsr_CancellationRequestMessage },
20674 { 5, &hf_evrsr_cancellationResponseMessage, ASN1_EXTENSION_ROOT , dissect_evrsr_CancellationResponseMessage },
20675 { 6, &hf_evrsr_updateRequestMessage, ASN1_EXTENSION_ROOT , dissect_evrsr_UpdateRequestMessage },
20676 { 7, &hf_evrsr_updateResponseMessage, ASN1_EXTENSION_ROOT , dissect_evrsr_UpdateResponseMessage },
20677 { 0, NULL, 0, NULL }
20680 static int
20681 dissect_evrsr_EV_RSR_MessageBody(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20682 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
20683 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "EV-RSR");
20684 col_set_str(actx->pinfo->cinfo, COL_INFO, "EV-RSR");
20685 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
20686 ett_evrsr_EV_RSR_MessageBody, evrsr_EV_RSR_MessageBody_choice,
20687 NULL);
20689 return offset;
20692 /*--- PDUs ---*/
20694 static int dissect_evrsr_EV_RSR_MessageBody_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
20695 int offset = 0;
20696 asn1_ctx_t asn1_ctx;
20697 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
20698 offset = dissect_evrsr_EV_RSR_MessageBody(tvb, offset, &asn1_ctx, tree, hf_evrsr_evrsr_EV_RSR_MessageBody_PDU);
20699 offset += 7; offset >>= 3;
20700 return offset;
20704 /* --- Module CPM-OriginatingStationContainers --- --- --- */
20707 static const per_sequence_t cpm_TrailerDataSet_sequence_of[1] = {
20708 { &hf_cpm_TrailerDataSet_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_TrailerData },
20711 static int
20712 dissect_cpm_TrailerDataSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20713 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
20714 ett_cpm_TrailerDataSet, cpm_TrailerDataSet_sequence_of,
20715 1, 8, true);
20717 return offset;
20721 static const per_sequence_t cpm_OriginatingVehicleContainer_sequence[] = {
20722 { &hf_cpm_orientationAngle, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Wgs84Angle },
20723 { &hf_cpm_pitchAngle , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_CartesianAngle },
20724 { &hf_cpm_rollAngle , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_CartesianAngle },
20725 { &hf_cpm_trailerDataSet , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpm_TrailerDataSet },
20726 { NULL, 0, 0, NULL }
20729 static int
20730 dissect_cpm_OriginatingVehicleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20731 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20732 ett_cpm_OriginatingVehicleContainer, cpm_OriginatingVehicleContainer_sequence);
20734 return offset;
20738 static const per_sequence_t cpm_OriginatingRsuContainer_sequence[] = {
20739 { &hf_cpm_mapReference , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_MapReference },
20740 { NULL, 0, 0, NULL }
20743 static int
20744 dissect_cpm_OriginatingRsuContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20745 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20746 ett_cpm_OriginatingRsuContainer, cpm_OriginatingRsuContainer_sequence);
20748 return offset;
20751 /*--- PDUs ---*/
20753 static int dissect_cpm_OriginatingVehicleContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
20754 int offset = 0;
20755 asn1_ctx_t asn1_ctx;
20756 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
20757 offset = dissect_cpm_OriginatingVehicleContainer(tvb, offset, &asn1_ctx, tree, hf_cpm_cpm_OriginatingVehicleContainer_PDU);
20758 offset += 7; offset >>= 3;
20759 return offset;
20761 static int dissect_cpm_OriginatingRsuContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
20762 int offset = 0;
20763 asn1_ctx_t asn1_ctx;
20764 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
20765 offset = dissect_cpm_OriginatingRsuContainer(tvb, offset, &asn1_ctx, tree, hf_cpm_cpm_OriginatingRsuContainer_PDU);
20766 offset += 7; offset >>= 3;
20767 return offset;
20771 /* --- Module CPM-PDU-Descriptionsv1 --- --- --- */
20775 static int
20776 dissect_cpmv1_VehicleHeight(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20777 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20778 0U, 127U, NULL, false);
20780 return offset;
20785 static int
20786 dissect_cpmv1_GenerationDeltaTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20787 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20788 0U, 65535U, NULL, false);
20790 return offset;
20795 static int
20796 dissect_cpmv1_SegmentCount(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20797 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20798 1U, 127U, NULL, false);
20800 return offset;
20804 static const per_sequence_t cpmv1_PerceivedObjectContainerSegmentInfo_sequence[] = {
20805 { &hf_cpmv1_totalMsgSegments, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_SegmentCount },
20806 { &hf_cpmv1_thisSegmentNum, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_SegmentCount },
20807 { NULL, 0, 0, NULL }
20810 static int
20811 dissect_cpmv1_PerceivedObjectContainerSegmentInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20812 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20813 ett_cpmv1_PerceivedObjectContainerSegmentInfo, cpmv1_PerceivedObjectContainerSegmentInfo_sequence);
20815 return offset;
20819 static const per_sequence_t cpmv1_CpmManagementContainer_sequence[] = {
20820 { &hf_cpmv1_stationType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_StationType },
20821 { &hf_cpmv1_perceivedObjectContainerSegmentInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_PerceivedObjectContainerSegmentInfo },
20822 { &hf_cpmv1_referencePosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_ReferencePosition },
20823 { NULL, 0, 0, NULL }
20826 static int
20827 dissect_cpmv1_CpmManagementContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20828 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20829 ett_cpmv1_CpmManagementContainer, cpmv1_CpmManagementContainer_sequence);
20831 return offset;
20835 static const value_string cpmv1_WGS84AngleValue_vals[] = {
20836 { 0, "wgs84North" },
20837 { 900, "wgs84East" },
20838 { 1800, "wgs84South" },
20839 { 2700, "wgs84West" },
20840 { 3601, "unavailable" },
20841 { 0, NULL }
20845 static int
20846 dissect_cpmv1_WGS84AngleValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20847 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20848 0U, 3601U, NULL, false);
20850 return offset;
20855 static int
20856 dissect_cpmv1_AngleConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20857 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20858 1U, 127U, NULL, false);
20860 return offset;
20864 static const per_sequence_t cpmv1_WGS84Angle_sequence[] = {
20865 { &hf_cpmv1_value_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_WGS84AngleValue },
20866 { &hf_cpmv1_confidence_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_AngleConfidence },
20867 { NULL, 0, 0, NULL }
20870 static int
20871 dissect_cpmv1_WGS84Angle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20872 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20873 ett_cpmv1_WGS84Angle, cpmv1_WGS84Angle_sequence);
20875 return offset;
20880 static int
20881 dissect_cpmv1_CartesianAngleValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20882 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20883 0U, 3601U, NULL, false);
20885 return offset;
20889 static const per_sequence_t cpmv1_CartesianAngle_sequence[] = {
20890 { &hf_cpmv1_value_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_CartesianAngleValue },
20891 { &hf_cpmv1_confidence_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_AngleConfidence },
20892 { NULL, 0, 0, NULL }
20895 static int
20896 dissect_cpmv1_CartesianAngle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20897 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20898 ett_cpmv1_CartesianAngle, cpmv1_CartesianAngle_sequence);
20900 return offset;
20905 static int
20906 dissect_cpmv1_RefPointId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20907 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20908 0U, 255U, NULL, false);
20910 return offset;
20914 static const value_string cpmv1_HitchPointOffset_vals[] = {
20915 { 1, "zeroPointOneMeter" },
20916 { 10, "oneMeter" },
20917 { 0, NULL }
20921 static int
20922 dissect_cpmv1_HitchPointOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20923 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20924 0U, 100U, NULL, false);
20926 return offset;
20930 static const value_string cpmv1_FrontOverhang_vals[] = {
20931 { 1, "zeroPointOneMeter" },
20932 { 10, "oneMeter" },
20933 { 0, NULL }
20937 static int
20938 dissect_cpmv1_FrontOverhang(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20939 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20940 0U, 50U, NULL, false);
20942 return offset;
20946 static const value_string cpmv1_RearOverhang_vals[] = {
20947 { 1, "zeroPointOneMeter" },
20948 { 10, "oneMeter" },
20949 { 0, NULL }
20953 static int
20954 dissect_cpmv1_RearOverhang(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20955 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
20956 0U, 150U, NULL, false);
20958 return offset;
20962 static const per_sequence_t cpmv1_TrailerData_sequence[] = {
20963 { &hf_cpmv1_refPointId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_RefPointId },
20964 { &hf_cpmv1_hitchPointOffset, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_HitchPointOffset },
20965 { &hf_cpmv1_frontOverhang , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_FrontOverhang },
20966 { &hf_cpmv1_rearOverhang , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_RearOverhang },
20967 { &hf_cpmv1_trailerWidth , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_VehicleWidth },
20968 { &hf_cpmv1_hitchAngle , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_CartesianAngle },
20969 { NULL, 0, 0, NULL }
20972 static int
20973 dissect_cpmv1_TrailerData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20974 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
20975 ett_cpmv1_TrailerData, cpmv1_TrailerData_sequence);
20977 return offset;
20981 static const per_sequence_t cpmv1_TrailerDataContainer_sequence_of[1] = {
20982 { &hf_cpmv1_TrailerDataContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_TrailerData },
20985 static int
20986 dissect_cpmv1_TrailerDataContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
20987 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
20988 ett_cpmv1_TrailerDataContainer, cpmv1_TrailerDataContainer_sequence_of,
20989 1, 2, false);
20991 return offset;
20995 static const per_sequence_t cpmv1_OriginatingVehicleContainerV1_sequence[] = {
20996 { &hf_cpmv1_heading , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_Heading },
20997 { &hf_cpmv1_speed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_Speed },
20998 { &hf_cpmv1_vehicleOrientationAngle, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_WGS84Angle },
20999 { &hf_cpmv1_driveDirection, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_DriveDirection },
21000 { &hf_cpmv1_longitudinalAcceleration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_LongitudinalAcceleration },
21001 { &hf_cpmv1_lateralAcceleration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_LateralAcceleration },
21002 { &hf_cpmv1_verticalAcceleration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_VerticalAcceleration },
21003 { &hf_cpmv1_yawRate , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_YawRate },
21004 { &hf_cpmv1_pitchAnglev1 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_CartesianAngle },
21005 { &hf_cpmv1_rollAnglev1 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_CartesianAngle },
21006 { &hf_cpmv1_vehicleLengthv1, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_VehicleLength },
21007 { &hf_cpmv1_vehicleWidthv1, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_VehicleWidth },
21008 { &hf_cpmv1_vehicleHeightv1, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_VehicleHeight },
21009 { &hf_cpmv1_trailerDataContainerv1, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_TrailerDataContainer },
21010 { NULL, 0, 0, NULL }
21013 static int
21014 dissect_cpmv1_OriginatingVehicleContainerV1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21015 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21016 ett_cpmv1_OriginatingVehicleContainerV1, cpmv1_OriginatingVehicleContainerV1_sequence);
21018 return offset;
21022 static const value_string cpmv1_OriginatingRSUContainer_vals[] = {
21023 { 0, "intersectionReferenceId" },
21024 { 1, "roadSegmentReferenceId" },
21025 { 0, NULL }
21028 static const per_choice_t cpmv1_OriginatingRSUContainer_choice[] = {
21029 { 0, &hf_cpmv1_intersectionReferenceId, ASN1_EXTENSION_ROOT , dissect_dsrc_IntersectionReferenceID },
21030 { 1, &hf_cpmv1_roadSegmentReferenceId, ASN1_EXTENSION_ROOT , dissect_dsrc_RoadSegmentReferenceID },
21031 { 0, NULL, 0, NULL }
21034 static int
21035 dissect_cpmv1_OriginatingRSUContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21036 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
21037 ett_cpmv1_OriginatingRSUContainer, cpmv1_OriginatingRSUContainer_choice,
21038 NULL);
21040 return offset;
21044 static const value_string cpmv1_StationDataContainer_vals[] = {
21045 { 0, "originatingVehicleContainer" },
21046 { 1, "originatingRSUContainer" },
21047 { 0, NULL }
21050 static const per_choice_t cpmv1_StationDataContainer_choice[] = {
21051 { 0, &hf_cpmv1_originatingVehicleContainer, ASN1_EXTENSION_ROOT , dissect_cpmv1_OriginatingVehicleContainerV1 },
21052 { 1, &hf_cpmv1_originatingRSUContainer, ASN1_EXTENSION_ROOT , dissect_cpmv1_OriginatingRSUContainer },
21053 { 0, NULL, 0, NULL }
21056 static int
21057 dissect_cpmv1_StationDataContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21058 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
21059 ett_cpmv1_StationDataContainer, cpmv1_StationDataContainer_choice,
21060 NULL);
21062 return offset;
21067 static int
21068 dissect_cpmv1_Identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21069 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21070 0U, 255U, NULL, false);
21072 return offset;
21076 static const value_string cpmv1_SensorType_vals[] = {
21077 { 0, "undefined" },
21078 { 1, "radar" },
21079 { 2, "lidar" },
21080 { 3, "monovideo" },
21081 { 4, "stereovision" },
21082 { 5, "nightvision" },
21083 { 6, "ultrasonic" },
21084 { 7, "pmd" },
21085 { 8, "fusion" },
21086 { 9, "inductionloop" },
21087 { 10, "sphericalCamera" },
21088 { 11, "itssaggregation" },
21089 { 0, NULL }
21093 static int
21094 dissect_cpmv1_SensorType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21095 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21096 0U, 15U, NULL, false);
21098 return offset;
21102 static const value_string cpmv1_XSensorOffset_vals[] = {
21103 { -1, "negativeZeroPointZeroOneMeter" },
21104 { -100, "negativeOneMeter" },
21105 { 0, NULL }
21109 static int
21110 dissect_cpmv1_XSensorOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21111 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21112 -5000, 0U, NULL, false);
21114 return offset;
21118 static const value_string cpmv1_YSensorOffset_vals[] = {
21119 { 1, "zeroPointZeroOneMeter" },
21120 { 100, "oneMeter" },
21121 { 0, NULL }
21125 static int
21126 dissect_cpmv1_YSensorOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21127 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21128 -1000, 1000U, NULL, false);
21130 return offset;
21134 static const value_string cpmv1_ZSensorOffset_vals[] = {
21135 { 1, "zeroPointZeroOneMeter" },
21136 { 100, "oneMeter" },
21137 { 0, NULL }
21141 static int
21142 dissect_cpmv1_ZSensorOffset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21143 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21144 0U, 1000U, NULL, false);
21146 return offset;
21150 static const value_string cpmv1_Range_vals[] = {
21151 { 1, "zeroPointOneMeter" },
21152 { 10, "oneMeter" },
21153 { 0, NULL }
21157 static int
21158 dissect_cpmv1_Range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21159 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21160 0U, 10000U, NULL, false);
21162 return offset;
21166 static const per_sequence_t cpmv1_VehicleSensorProperties_sequence[] = {
21167 { &hf_cpmv1_range , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_Range },
21168 { &hf_cpmv1_horizontalOpeningAngleStart, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_CartesianAngleValue },
21169 { &hf_cpmv1_horizontalOpeningAngleEnd, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_CartesianAngleValue },
21170 { &hf_cpmv1_verticalOpeningAngleStart, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_CartesianAngleValue },
21171 { &hf_cpmv1_verticalOpeningAngleEnd, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_CartesianAngleValue },
21172 { NULL, 0, 0, NULL }
21175 static int
21176 dissect_cpmv1_VehicleSensorProperties(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21177 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21178 ett_cpmv1_VehicleSensorProperties, cpmv1_VehicleSensorProperties_sequence);
21180 return offset;
21184 static const per_sequence_t cpmv1_VehicleSensorPropertyList_sequence_of[1] = {
21185 { &hf_cpmv1_VehicleSensorPropertyList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_VehicleSensorProperties },
21188 static int
21189 dissect_cpmv1_VehicleSensorPropertyList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21190 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
21191 ett_cpmv1_VehicleSensorPropertyList, cpmv1_VehicleSensorPropertyList_sequence_of,
21192 1, 10, false);
21194 return offset;
21198 static const per_sequence_t cpmv1_VehicleSensor_sequence[] = {
21199 { &hf_cpmv1_refPointId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_RefPointId },
21200 { &hf_cpmv1_xSensorOffset , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_XSensorOffset },
21201 { &hf_cpmv1_ySensorOffset , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_YSensorOffset },
21202 { &hf_cpmv1_zSensorOffset , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ZSensorOffset },
21203 { &hf_cpmv1_vehicleSensorPropertyList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_VehicleSensorPropertyList },
21204 { NULL, 0, 0, NULL }
21207 static int
21208 dissect_cpmv1_VehicleSensor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21209 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21210 ett_cpmv1_VehicleSensor, cpmv1_VehicleSensor_sequence);
21212 return offset;
21216 static const value_string cpmv1_NodeOffsetPointZ_vals[] = {
21217 { 0, "node-Z1" },
21218 { 1, "node-Z2" },
21219 { 2, "node-Z3" },
21220 { 3, "node-Z4" },
21221 { 4, "node-Z5" },
21222 { 5, "node-Z6" },
21223 { 0, NULL }
21226 static const per_choice_t cpmv1_NodeOffsetPointZ_choice[] = {
21227 { 0, &hf_cpmv1_node_Z1 , ASN1_NO_EXTENSIONS , dissect_dsrc_Offset_B10 },
21228 { 1, &hf_cpmv1_node_Z2 , ASN1_NO_EXTENSIONS , dissect_dsrc_Offset_B11 },
21229 { 2, &hf_cpmv1_node_Z3 , ASN1_NO_EXTENSIONS , dissect_dsrc_Offset_B12 },
21230 { 3, &hf_cpmv1_node_Z4 , ASN1_NO_EXTENSIONS , dissect_dsrc_Offset_B13 },
21231 { 4, &hf_cpmv1_node_Z5 , ASN1_NO_EXTENSIONS , dissect_dsrc_Offset_B14 },
21232 { 5, &hf_cpmv1_node_Z6 , ASN1_NO_EXTENSIONS , dissect_dsrc_Offset_B16 },
21233 { 0, NULL, 0, NULL }
21236 static int
21237 dissect_cpmv1_NodeOffsetPointZ(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21238 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
21239 ett_cpmv1_NodeOffsetPointZ, cpmv1_NodeOffsetPointZ_choice,
21240 NULL);
21242 return offset;
21246 static const per_sequence_t cpmv1_OffsetPoint_sequence[] = {
21247 { &hf_cpmv1_nodeOffsetPointxy, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_dsrc_NodeOffsetPointXY },
21248 { &hf_cpmv1_nodeOffsetPointZ, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_NodeOffsetPointZ },
21249 { NULL, 0, 0, NULL }
21252 static int
21253 dissect_cpmv1_OffsetPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21254 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21255 ett_cpmv1_OffsetPoint, cpmv1_OffsetPoint_sequence);
21257 return offset;
21261 static const value_string cpmv1_SensorHeight_vals[] = {
21262 { 1, "zeroPointZeroOneMeter" },
21263 { 0, NULL }
21267 static int
21268 dissect_cpmv1_SensorHeight(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21269 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21270 -5000, 5000U, NULL, false);
21272 return offset;
21276 static const per_sequence_t cpmv1_AreaRadial_sequence[] = {
21277 { &hf_cpmv1_range , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_Range },
21278 { &hf_cpmv1_stationaryHorizontalOpeningAngleStart, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_WGS84AngleValue },
21279 { &hf_cpmv1_stationaryHorizontalOpeningAngleEnd, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_WGS84AngleValue },
21280 { &hf_cpmv1_verticalOpeningAngleStart, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_CartesianAngleValue },
21281 { &hf_cpmv1_verticalOpeningAngleEnd, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_CartesianAngleValue },
21282 { &hf_cpmv1_sensorPositionOffset, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_OffsetPoint },
21283 { &hf_cpmv1_sensorHeight , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_SensorHeight },
21284 { NULL, 0, 0, NULL }
21287 static int
21288 dissect_cpmv1_AreaRadial(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21289 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21290 ett_cpmv1_AreaRadial, cpmv1_AreaRadial_sequence);
21292 return offset;
21296 static const per_sequence_t cpmv1_PolyPointList_sequence_of[1] = {
21297 { &hf_cpmv1_PolyPointList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_OffsetPoint },
21300 static int
21301 dissect_cpmv1_PolyPointList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21302 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
21303 ett_cpmv1_PolyPointList, cpmv1_PolyPointList_sequence_of,
21304 3, 16, true);
21306 return offset;
21310 static const per_sequence_t cpmv1_AreaPolygon_sequence[] = {
21311 { &hf_cpmv1_polyPointList , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_PolyPointList },
21312 { NULL, 0, 0, NULL }
21315 static int
21316 dissect_cpmv1_AreaPolygon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21317 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21318 ett_cpmv1_AreaPolygon, cpmv1_AreaPolygon_sequence);
21320 return offset;
21324 static const value_string cpmv1_Radius_vals[] = {
21325 { 1, "zeroPointOneMeter" },
21326 { 10, "oneMeter" },
21327 { 0, NULL }
21331 static int
21332 dissect_cpmv1_Radius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21333 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21334 0U, 10000U, NULL, false);
21336 return offset;
21340 static const per_sequence_t cpmv1_AreaCircular_sequence[] = {
21341 { &hf_cpmv1_nodeCenterPoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_OffsetPoint },
21342 { &hf_cpmv1_radius , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_Radius },
21343 { NULL, 0, 0, NULL }
21346 static int
21347 dissect_cpmv1_AreaCircular(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21348 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21349 ett_cpmv1_AreaCircular, cpmv1_AreaCircular_sequence);
21351 return offset;
21355 static const value_string cpmv1_SemiRangeLength_vals[] = {
21356 { 1, "zeroPointOneMeter" },
21357 { 10, "oneMeter" },
21358 { 0, NULL }
21362 static int
21363 dissect_cpmv1_SemiRangeLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21364 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21365 0U, 10000U, NULL, false);
21367 return offset;
21371 static const per_sequence_t cpmv1_AreaEllipse_sequence[] = {
21372 { &hf_cpmv1_nodeCenterPoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_OffsetPoint },
21373 { &hf_cpmv1_semiMinorRangeLength, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_SemiRangeLength },
21374 { &hf_cpmv1_semiMajorRangeLength, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_SemiRangeLength },
21375 { &hf_cpmv1_semiMajorRangeOrientation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_WGS84AngleValue },
21376 { &hf_cpmv1_semiHeight , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_SemiRangeLength },
21377 { NULL, 0, 0, NULL }
21380 static int
21381 dissect_cpmv1_AreaEllipse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21382 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21383 ett_cpmv1_AreaEllipse, cpmv1_AreaEllipse_sequence);
21385 return offset;
21389 static const per_sequence_t cpmv1_AreaRectangle_sequence[] = {
21390 { &hf_cpmv1_nodeCenterPoint, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_OffsetPoint },
21391 { &hf_cpmv1_semiMajorRangeLength, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_SemiRangeLength },
21392 { &hf_cpmv1_semiMinorRangeLength, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_SemiRangeLength },
21393 { &hf_cpmv1_semiMajorRangeOrientation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_WGS84AngleValue },
21394 { &hf_cpmv1_semiHeight , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_SemiRangeLength },
21395 { NULL, 0, 0, NULL }
21398 static int
21399 dissect_cpmv1_AreaRectangle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21400 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21401 ett_cpmv1_AreaRectangle, cpmv1_AreaRectangle_sequence);
21403 return offset;
21407 static const value_string cpmv1_DetectionArea_vals[] = {
21408 { 0, "vehicleSensor" },
21409 { 1, "stationarySensorRadial" },
21410 { 2, "stationarySensorPolygon" },
21411 { 3, "stationarySensorCircular" },
21412 { 4, "stationarySensorEllipse" },
21413 { 5, "stationarySensorRectangle" },
21414 { 0, NULL }
21417 static const per_choice_t cpmv1_DetectionArea_choice[] = {
21418 { 0, &hf_cpmv1_vehicleSensor , ASN1_EXTENSION_ROOT , dissect_cpmv1_VehicleSensor },
21419 { 1, &hf_cpmv1_stationarySensorRadial, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaRadial },
21420 { 2, &hf_cpmv1_stationarySensorPolygon, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaPolygon },
21421 { 3, &hf_cpmv1_stationarySensorCircular, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaCircular },
21422 { 4, &hf_cpmv1_stationarySensorEllipse, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaEllipse },
21423 { 5, &hf_cpmv1_stationarySensorRectangle, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaRectangle },
21424 { 0, NULL, 0, NULL }
21427 static int
21428 dissect_cpmv1_DetectionArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21429 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
21430 ett_cpmv1_DetectionArea, cpmv1_DetectionArea_choice,
21431 NULL);
21433 return offset;
21438 static int
21439 dissect_cpmv1_FreeSpaceConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21440 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21441 0U, 101U, NULL, false);
21443 return offset;
21447 static const per_sequence_t cpmv1_SensorInformationv1_sequence[] = {
21448 { &hf_cpmv1_sensorID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_Identifier },
21449 { &hf_cpmv1_type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_SensorType },
21450 { &hf_cpmv1_detectionArea , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_DetectionArea },
21451 { &hf_cpmv1_freeSpaceConfidence, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_FreeSpaceConfidence },
21452 { NULL, 0, 0, NULL }
21455 static int
21456 dissect_cpmv1_SensorInformationv1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21457 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21458 ett_cpmv1_SensorInformationv1, cpmv1_SensorInformationv1_sequence);
21460 return offset;
21464 static const per_sequence_t cpmv1_SensorInformationContainerv1_sequence_of[1] = {
21465 { &hf_cpmv1_SensorInformationContainerv1_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_SensorInformationv1 },
21468 static int
21469 dissect_cpmv1_SensorInformationContainerv1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21470 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
21471 ett_cpmv1_SensorInformationContainerv1, cpmv1_SensorInformationContainerv1_sequence_of,
21472 1, 128, true);
21474 return offset;
21478 static const per_sequence_t cpmv1_SensorIdList_sequence_of[1] = {
21479 { &hf_cpmv1_SensorIdList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_Identifier },
21482 static int
21483 dissect_cpmv1_SensorIdList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21484 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
21485 ett_cpmv1_SensorIdList, cpmv1_SensorIdList_sequence_of,
21486 1, 128, true);
21488 return offset;
21493 static int
21494 dissect_cpmv1_TimeOfMeasurement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21495 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21496 -1500, 1500U, NULL, false);
21498 return offset;
21502 static const value_string cpmv1_ObjectAge_vals[] = {
21503 { 1, "oneMiliSec" },
21504 { 0, NULL }
21508 static int
21509 dissect_cpmv1_ObjectAge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21510 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21511 0U, 1500U, NULL, false);
21513 return offset;
21518 static int
21519 dissect_cpmv1_ObjectConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21520 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21521 0U, 101U, NULL, false);
21523 return offset;
21528 static int
21529 dissect_cpmv1_DistanceValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21530 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21531 -132768, 132767U, NULL, false);
21533 return offset;
21538 static int
21539 dissect_cpmv1_DistanceConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21540 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21541 0U, 102U, NULL, false);
21543 return offset;
21547 static const per_sequence_t cpmv1_ObjectDistanceWithConfidence_sequence[] = {
21548 { &hf_cpmv1_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_DistanceValue },
21549 { &hf_cpmv1_confidence , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_DistanceConfidence },
21550 { NULL, 0, 0, NULL }
21553 static int
21554 dissect_cpmv1_ObjectDistanceWithConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21555 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21556 ett_cpmv1_ObjectDistanceWithConfidence, cpmv1_ObjectDistanceWithConfidence_sequence);
21558 return offset;
21563 static int
21564 dissect_cpmv1_SpeedValueExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21565 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21566 -16383, 16383U, NULL, false);
21568 return offset;
21572 static const per_sequence_t cpmv1_SpeedExtended_sequence[] = {
21573 { &hf_cpmv1_value_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_SpeedValueExtended },
21574 { &hf_cpmv1_confidence_03 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_itsv1_SpeedConfidence },
21575 { NULL, 0, 0, NULL }
21578 static int
21579 dissect_cpmv1_SpeedExtended(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21580 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21581 ett_cpmv1_SpeedExtended, cpmv1_SpeedExtended_sequence);
21583 return offset;
21588 static int
21589 dissect_cpmv1_ObjectDimensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21590 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21591 0U, 1023U, NULL, false);
21593 return offset;
21598 static int
21599 dissect_cpmv1_ObjectDimensionConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21600 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21601 0U, 102U, NULL, false);
21603 return offset;
21607 static const per_sequence_t cpmv1_ObjectDimension_sequence[] = {
21608 { &hf_cpmv1_value_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_ObjectDimensionValue },
21609 { &hf_cpmv1_confidence_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_ObjectDimensionConfidence },
21610 { NULL, 0, 0, NULL }
21613 static int
21614 dissect_cpmv1_ObjectDimension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21615 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21616 ett_cpmv1_ObjectDimension, cpmv1_ObjectDimension_sequence);
21618 return offset;
21622 static const value_string cpmv1_ObjectRefPoint_vals[] = {
21623 { 0, "mid" },
21624 { 1, "bottomLeft" },
21625 { 2, "midLeft" },
21626 { 3, "topLeft" },
21627 { 4, "bottomMid" },
21628 { 5, "topMid" },
21629 { 6, "bottomRight" },
21630 { 7, "midRight" },
21631 { 8, "topRight" },
21632 { 0, NULL }
21636 static int
21637 dissect_cpmv1_ObjectRefPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21638 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21639 0U, 8U, NULL, false);
21641 return offset;
21645 static const value_string cpmv1_DynamicStatus_vals[] = {
21646 { 0, "dynamic" },
21647 { 1, "hasBeenDynamic" },
21648 { 2, "static" },
21649 { 0, NULL }
21653 static int
21654 dissect_cpmv1_DynamicStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21655 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21656 0U, 2U, NULL, false);
21658 return offset;
21663 static int
21664 dissect_cpmv1_ClassConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21665 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21666 0U, 101U, NULL, false);
21668 return offset;
21672 static const value_string cpmv1_VehicleSubclassType_vals[] = {
21673 { 0, "unknown" },
21674 { 1, "moped" },
21675 { 2, "motorcycle" },
21676 { 3, "passengerCar" },
21677 { 4, "bus" },
21678 { 5, "lightTruck" },
21679 { 6, "heavyTruck" },
21680 { 7, "trailer" },
21681 { 8, "specialVehicles" },
21682 { 9, "tram" },
21683 { 10, "emergencyVehicle" },
21684 { 11, "agricultural" },
21685 { 0, NULL }
21689 static int
21690 dissect_cpmv1_VehicleSubclassType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21691 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21692 0U, 255U, NULL, false);
21694 return offset;
21698 static const per_sequence_t cpmv1_VehicleSubclass_sequence[] = {
21699 { &hf_cpmv1_type_01 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_VehicleSubclassType },
21700 { &hf_cpmv1_confidence_04 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_ClassConfidence },
21701 { NULL, 0, 0, NULL }
21704 static int
21705 dissect_cpmv1_VehicleSubclass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21706 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21707 ett_cpmv1_VehicleSubclass, cpmv1_VehicleSubclass_sequence);
21709 return offset;
21713 static const value_string cpmv1_PersonSubclassType_vals[] = {
21714 { 0, "unknown" },
21715 { 1, "pedestrian" },
21716 { 2, "personInWheelchair" },
21717 { 3, "cyclist" },
21718 { 4, "personWithStroller" },
21719 { 5, "personOnSkates" },
21720 { 6, "personGroup" },
21721 { 0, NULL }
21725 static int
21726 dissect_cpmv1_PersonSubclassType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21727 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21728 0U, 255U, NULL, false);
21730 return offset;
21734 static const per_sequence_t cpmv1_PersonSubclass_sequence[] = {
21735 { &hf_cpmv1_type_02 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_PersonSubclassType },
21736 { &hf_cpmv1_confidence_04 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_ClassConfidence },
21737 { NULL, 0, 0, NULL }
21740 static int
21741 dissect_cpmv1_PersonSubclass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21742 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21743 ett_cpmv1_PersonSubclass, cpmv1_PersonSubclass_sequence);
21745 return offset;
21749 static const value_string cpmv1_AnimalSubclassType_vals[] = {
21750 { 0, "unknown" },
21751 { 0, NULL }
21755 static int
21756 dissect_cpmv1_AnimalSubclassType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21757 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21758 0U, 255U, NULL, false);
21760 return offset;
21764 static const per_sequence_t cpmv1_AnimalSubclass_sequence[] = {
21765 { &hf_cpmv1_type_03 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_AnimalSubclassType },
21766 { &hf_cpmv1_confidence_04 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_ClassConfidence },
21767 { NULL, 0, 0, NULL }
21770 static int
21771 dissect_cpmv1_AnimalSubclass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21772 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21773 ett_cpmv1_AnimalSubclass, cpmv1_AnimalSubclass_sequence);
21775 return offset;
21779 static const value_string cpmv1_OtherSublassType_vals[] = {
21780 { 0, "unknown" },
21781 { 1, "roadSideUnit" },
21782 { 0, NULL }
21786 static int
21787 dissect_cpmv1_OtherSublassType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21788 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21789 0U, 255U, NULL, false);
21791 return offset;
21795 static const per_sequence_t cpmv1_OtherSubclass_sequence[] = {
21796 { &hf_cpmv1_type_04 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_OtherSublassType },
21797 { &hf_cpmv1_confidence_04 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_cpmv1_ClassConfidence },
21798 { NULL, 0, 0, NULL }
21801 static int
21802 dissect_cpmv1_OtherSubclass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21803 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21804 ett_cpmv1_OtherSubclass, cpmv1_OtherSubclass_sequence);
21806 return offset;
21810 static const value_string cpmv1_T_class_vals[] = {
21811 { 0, "vehicle" },
21812 { 1, "person" },
21813 { 2, "animal" },
21814 { 3, "other" },
21815 { 0, NULL }
21818 static const per_choice_t cpmv1_T_class_choice[] = {
21819 { 0, &hf_cpmv1_vehicle , ASN1_NO_EXTENSIONS , dissect_cpmv1_VehicleSubclass },
21820 { 1, &hf_cpmv1_person , ASN1_NO_EXTENSIONS , dissect_cpmv1_PersonSubclass },
21821 { 2, &hf_cpmv1_animal , ASN1_NO_EXTENSIONS , dissect_cpmv1_AnimalSubclass },
21822 { 3, &hf_cpmv1_other , ASN1_NO_EXTENSIONS , dissect_cpmv1_OtherSubclass },
21823 { 0, NULL, 0, NULL }
21826 static int
21827 dissect_cpmv1_T_class(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21828 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
21829 ett_cpmv1_T_class, cpmv1_T_class_choice,
21830 NULL);
21832 return offset;
21836 static const per_sequence_t cpmv1_ObjectClass_sequence[] = {
21837 { &hf_cpmv1_confidence_04 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_ClassConfidence },
21838 { &hf_cpmv1_class , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_T_class },
21839 { NULL, 0, 0, NULL }
21842 static int
21843 dissect_cpmv1_ObjectClass(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21844 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21845 ett_cpmv1_ObjectClass, cpmv1_ObjectClass_sequence);
21847 return offset;
21851 static const per_sequence_t cpmv1_ObjectClassDescription_sequence_of[1] = {
21852 { &hf_cpmv1_ObjectClassDescription_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_ObjectClass },
21855 static int
21856 dissect_cpmv1_ObjectClassDescription(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21857 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
21858 ett_cpmv1_ObjectClassDescription, cpmv1_ObjectClassDescription_sequence_of,
21859 1, 8, false);
21861 return offset;
21865 static const value_string cpmv1_LongitudinalLanePositionValue_vals[] = {
21866 { 1, "zeroPointOneMeter" },
21867 { 0, NULL }
21871 static int
21872 dissect_cpmv1_LongitudinalLanePositionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21873 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21874 0U, 32767U, NULL, false);
21876 return offset;
21880 static const value_string cpmv1_LongitudinalLanePositionConfidence_vals[] = {
21881 { 1, "zeroPointZeroOneMeter" },
21882 { 100, "oneMeter" },
21883 { 101, "outOfRange" },
21884 { 102, "unavailable" },
21885 { 0, NULL }
21889 static int
21890 dissect_cpmv1_LongitudinalLanePositionConfidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21891 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
21892 0U, 102U, NULL, false);
21894 return offset;
21898 static const per_sequence_t cpmv1_LongitudinalLanePosition_sequence[] = {
21899 { &hf_cpmv1_longitudinalLanePositionValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_LongitudinalLanePositionValue },
21900 { &hf_cpmv1_longitudinalLanePositionConfidence, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_LongitudinalLanePositionConfidence },
21901 { NULL, 0, 0, NULL }
21904 static int
21905 dissect_cpmv1_LongitudinalLanePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21906 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21907 ett_cpmv1_LongitudinalLanePosition, cpmv1_LongitudinalLanePosition_sequence);
21909 return offset;
21913 static const per_sequence_t cpmv1_MatchedPosition_sequence[] = {
21914 { &hf_cpmv1_laneID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_dsrc_LaneID },
21915 { &hf_cpmv1_longitudinalLanePosition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_LongitudinalLanePosition },
21916 { NULL, 0, 0, NULL }
21919 static int
21920 dissect_cpmv1_MatchedPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21921 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21922 ett_cpmv1_MatchedPosition, cpmv1_MatchedPosition_sequence);
21924 return offset;
21928 static const per_sequence_t cpmv1_PerceivedObjectv1_sequence[] = {
21929 { &hf_cpmv1_objectID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_Identifier },
21930 { &hf_cpmv1_sensorIDList , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_SensorIdList },
21931 { &hf_cpmv1_timeOfMeasurement, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_TimeOfMeasurement },
21932 { &hf_cpmv1_objectAge , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ObjectAge },
21933 { &hf_cpmv1_objectConfidence, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ObjectConfidence },
21934 { &hf_cpmv1_xDistance , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_ObjectDistanceWithConfidence },
21935 { &hf_cpmv1_yDistance , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_ObjectDistanceWithConfidence },
21936 { &hf_cpmv1_zDistance , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ObjectDistanceWithConfidence },
21937 { &hf_cpmv1_xSpeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_SpeedExtended },
21938 { &hf_cpmv1_ySpeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_SpeedExtended },
21939 { &hf_cpmv1_zSpeed , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_SpeedExtended },
21940 { &hf_cpmv1_xAcceleration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_LongitudinalAcceleration },
21941 { &hf_cpmv1_yAcceleration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_LateralAcceleration },
21942 { &hf_cpmv1_zAcceleration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_itsv1_VerticalAcceleration },
21943 { &hf_cpmv1_yawAngle , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_CartesianAngle },
21944 { &hf_cpmv1_planarObjectDimension1, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ObjectDimension },
21945 { &hf_cpmv1_planarObjectDimension2, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ObjectDimension },
21946 { &hf_cpmv1_verticalObjectDimension, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ObjectDimension },
21947 { &hf_cpmv1_objectRefPoint, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ObjectRefPoint },
21948 { &hf_cpmv1_dynamicStatus , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_DynamicStatus },
21949 { &hf_cpmv1_classification, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ObjectClassDescription },
21950 { &hf_cpmv1_matchedPosition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_MatchedPosition },
21951 { NULL, 0, 0, NULL }
21954 static int
21955 dissect_cpmv1_PerceivedObjectv1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21956 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
21957 ett_cpmv1_PerceivedObjectv1, cpmv1_PerceivedObjectv1_sequence);
21959 return offset;
21963 static const per_sequence_t cpmv1_PerceivedObjectContainerv1_sequence_of[1] = {
21964 { &hf_cpmv1_PerceivedObjectContainerv1_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_PerceivedObjectv1 },
21967 static int
21968 dissect_cpmv1_PerceivedObjectContainerv1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21969 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
21970 ett_cpmv1_PerceivedObjectContainerv1, cpmv1_PerceivedObjectContainerv1_sequence_of,
21971 1, 128, true);
21973 return offset;
21977 static const value_string cpmv1_FreeSpaceArea_vals[] = {
21978 { 0, "freeSpacePolygon" },
21979 { 1, "freeSpaceCircular" },
21980 { 2, "freeSpaceEllipse" },
21981 { 3, "freeSpaceRectangle" },
21982 { 0, NULL }
21985 static const per_choice_t cpmv1_FreeSpaceArea_choice[] = {
21986 { 0, &hf_cpmv1_freeSpacePolygon, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaPolygon },
21987 { 1, &hf_cpmv1_freeSpaceCircular, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaCircular },
21988 { 2, &hf_cpmv1_freeSpaceEllipse, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaEllipse },
21989 { 3, &hf_cpmv1_freeSpaceRectangle, ASN1_EXTENSION_ROOT , dissect_cpmv1_AreaRectangle },
21990 { 0, NULL, 0, NULL }
21993 static int
21994 dissect_cpmv1_FreeSpaceArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
21995 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
21996 ett_cpmv1_FreeSpaceArea, cpmv1_FreeSpaceArea_choice,
21997 NULL);
21999 return offset;
22004 static int
22005 dissect_cpmv1_ShadowingApplies(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22006 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
22008 return offset;
22012 static const per_sequence_t cpmv1_FreeSpaceAddendum_sequence[] = {
22013 { &hf_cpmv1_freeSpaceConfidence, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_FreeSpaceConfidence },
22014 { &hf_cpmv1_freeSpaceArea , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_FreeSpaceArea },
22015 { &hf_cpmv1_sensorIDList , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_SensorIdList },
22016 { &hf_cpmv1_shadowingApplies, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_ShadowingApplies },
22017 { NULL, 0, 0, NULL }
22020 static int
22021 dissect_cpmv1_FreeSpaceAddendum(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22022 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22023 ett_cpmv1_FreeSpaceAddendum, cpmv1_FreeSpaceAddendum_sequence);
22025 return offset;
22029 static const per_sequence_t cpmv1_FreeSpaceAddendumContainer_sequence_of[1] = {
22030 { &hf_cpmv1_FreeSpaceAddendumContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_FreeSpaceAddendum },
22033 static int
22034 dissect_cpmv1_FreeSpaceAddendumContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22035 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
22036 ett_cpmv1_FreeSpaceAddendumContainer, cpmv1_FreeSpaceAddendumContainer_sequence_of,
22037 1, 128, true);
22039 return offset;
22044 static int
22045 dissect_cpmv1_NumberOfPerceivedObjects(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22046 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
22047 0U, 255U, NULL, false);
22049 return offset;
22053 static const per_sequence_t cpmv1_CpmParameters_sequence[] = {
22054 { &hf_cpmv1_managementContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_CpmManagementContainer },
22055 { &hf_cpmv1_stationDataContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_StationDataContainer },
22056 { &hf_cpmv1_sensorInformationContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_SensorInformationContainerv1 },
22057 { &hf_cpmv1_perceivedObjectContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_PerceivedObjectContainerv1 },
22058 { &hf_cpmv1_freeSpaceAddendumContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpmv1_FreeSpaceAddendumContainer },
22059 { &hf_cpmv1_numberOfPerceivedObjects, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpmv1_NumberOfPerceivedObjects },
22060 { NULL, 0, 0, NULL }
22063 static int
22064 dissect_cpmv1_CpmParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22065 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22066 ett_cpmv1_CpmParameters, cpmv1_CpmParameters_sequence);
22068 return offset;
22072 static const per_sequence_t cpmv1_CollectivePerceptionMessagev1_sequence[] = {
22073 { &hf_cpmv1_generationDeltaTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_GenerationDeltaTime },
22074 { &hf_cpmv1_cpmParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpmv1_CpmParameters },
22075 { NULL, 0, 0, NULL }
22078 static int
22079 dissect_cpmv1_CollectivePerceptionMessagev1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22080 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
22081 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "CPMv1");
22082 col_set_str(actx->pinfo->cinfo, COL_INFO, "CPMv1");
22083 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22084 ett_cpmv1_CollectivePerceptionMessagev1, cpmv1_CollectivePerceptionMessagev1_sequence);
22086 return offset;
22089 /*--- PDUs ---*/
22091 static int dissect_cpmv1_CollectivePerceptionMessagev1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
22092 int offset = 0;
22093 asn1_ctx_t asn1_ctx;
22094 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
22095 offset = dissect_cpmv1_CollectivePerceptionMessagev1(tvb, offset, &asn1_ctx, tree, hf_cpmv1_cpmv1_CollectivePerceptionMessagev1_PDU);
22096 offset += 7; offset >>= 3;
22097 return offset;
22101 /* --- Module CPM-PDU-Descriptions --- --- --- */
22104 static const per_sequence_t cpm_MessageRateRange_sequence[] = {
22105 { &hf_cpm_messageRateMin , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_MessageRateHz },
22106 { &hf_cpm_messageRateMax , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_MessageRateHz },
22107 { NULL, 0, 0, NULL }
22110 static int
22111 dissect_cpm_MessageRateRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22112 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22113 ett_cpm_MessageRateRange, cpm_MessageRateRange_sequence);
22115 return offset;
22119 static const per_sequence_t cpm_ManagementContainer_sequence[] = {
22120 { &hf_cpm_referenceTime , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_TimestampIts },
22121 { &hf_cpm_referencePosition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_itsv1_ReferencePosition },
22122 { &hf_cpm_segmentationInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_MessageSegmentationInfo },
22123 { &hf_cpm_messageRateRange, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpm_MessageRateRange },
22124 { NULL, 0, 0, NULL }
22127 static int
22128 dissect_cpm_ManagementContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22129 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22130 ett_cpm_ManagementContainer, cpm_ManagementContainer_sequence);
22132 return offset;
22136 static const value_string cpm_CpmContainerId_vals[] = {
22137 { 1, "originatingVehicleContainer" },
22138 { 2, "originatingRsuContainer" },
22139 { 3, "sensorInformationContainer" },
22140 { 4, "perceptionRegionContainer" },
22141 { 5, "perceivedObjectContainer" },
22142 { 0, NULL }
22146 static int
22147 dissect_cpm_CpmContainerId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22148 uint32_t CpmContainerId;
22149 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
22150 1U, 16U, &CpmContainerId, false);
22152 its_header_t *its_hdr = its_get_private_data(actx->pinfo);
22153 its_hdr->CpmContainerId = CpmContainerId;
22156 return offset;
22161 static int
22162 dissect_cpm_T_containerData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22163 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_cpmcontainers_pdu);
22165 return offset;
22169 static const per_sequence_t cpm_WrappedCpmContainer_sequence[] = {
22170 { &hf_cpm_containerId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpm_CpmContainerId },
22171 { &hf_cpm_containerData , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpm_T_containerData },
22172 { NULL, 0, 0, NULL }
22175 static int
22176 dissect_cpm_WrappedCpmContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22177 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22178 ett_cpm_WrappedCpmContainer, cpm_WrappedCpmContainer_sequence);
22180 return offset;
22184 static const per_sequence_t cpm_WrappedCpmContainers_sequence_of[1] = {
22185 { &hf_cpm_WrappedCpmContainers_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpm_WrappedCpmContainer },
22188 static int
22189 dissect_cpm_WrappedCpmContainers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22190 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
22191 ett_cpm_WrappedCpmContainers, cpm_WrappedCpmContainers_sequence_of,
22192 1, 8, true);
22194 return offset;
22199 static int
22200 dissect_cpm_ConstraintWrappedCpmContainers(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22201 offset = dissect_cpm_WrappedCpmContainers(tvb, offset, actx, tree, hf_index);
22203 return offset;
22207 static const per_sequence_t cpm_CpmPayload_sequence[] = {
22208 { &hf_cpm_managementContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpm_ManagementContainer },
22209 { &hf_cpm_cpmContainers , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpm_ConstraintWrappedCpmContainers },
22210 { NULL, 0, 0, NULL }
22213 static int
22214 dissect_cpm_CpmPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22215 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
22216 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "CPM");
22217 col_set_str(actx->pinfo->cinfo, COL_INFO, "CPM");
22218 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22219 ett_cpm_CpmPayload, cpm_CpmPayload_sequence);
22221 return offset;
22224 /*--- PDUs ---*/
22226 static int dissect_cpm_CpmPayload_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
22227 int offset = 0;
22228 asn1_ctx_t asn1_ctx;
22229 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
22230 offset = dissect_cpm_CpmPayload(tvb, offset, &asn1_ctx, tree, hf_cpm_cpm_CpmPayload_PDU);
22231 offset += 7; offset >>= 3;
22232 return offset;
22236 /* --- Module CPM-PerceivedObjectContainer --- --- --- */
22239 static const per_sequence_t cpm_PerceivedObjects_sequence_of[1] = {
22240 { &hf_cpm_PerceivedObjects_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_PerceivedObject },
22243 static int
22244 dissect_cpm_PerceivedObjects(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22245 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
22246 ett_cpm_PerceivedObjects, cpm_PerceivedObjects_sequence_of,
22247 0, 255, true);
22249 return offset;
22253 static const per_sequence_t cpm_PerceivedObjectContainer_sequence[] = {
22254 { &hf_cpm_numberOfPerceivedObjects, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_CardinalNumber1B },
22255 { &hf_cpm_perceivedObjects, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpm_PerceivedObjects },
22256 { NULL, 0, 0, NULL }
22259 static int
22260 dissect_cpm_PerceivedObjectContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22261 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22262 ett_cpm_PerceivedObjectContainer, cpm_PerceivedObjectContainer_sequence);
22264 return offset;
22267 /*--- PDUs ---*/
22269 static int dissect_cpm_PerceivedObjectContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
22270 int offset = 0;
22271 asn1_ctx_t asn1_ctx;
22272 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
22273 offset = dissect_cpm_PerceivedObjectContainer(tvb, offset, &asn1_ctx, tree, hf_cpm_cpm_PerceivedObjectContainer_PDU);
22274 offset += 7; offset >>= 3;
22275 return offset;
22279 /* --- Module CPM-PerceptionRegionContainer --- --- --- */
22283 static int
22284 dissect_cpm_T_PerceptionRegionShadowingApplies(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22285 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
22287 return offset;
22292 static int
22293 dissect_cpm_T_PerceptionRegionNumberOfPerceivedObjects(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22294 offset = dissect_its_CardinalNumber1B(tvb, offset, actx, tree, hf_index);
22296 return offset;
22300 static const per_sequence_t cpm_PerceivedObjectIds_sequence_of[1] = {
22301 { &hf_cpm_PerceivedObjectIds_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_Identifier2B },
22304 static int
22305 dissect_cpm_PerceivedObjectIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22306 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
22307 ett_cpm_PerceivedObjectIds, cpm_PerceivedObjectIds_sequence_of,
22308 0, 255, true);
22310 return offset;
22314 static const per_sequence_t cpm_PerceptionRegion_sequence[] = {
22315 { &hf_cpm_measurementDeltaTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_DeltaTimeMilliSecondSigned },
22316 { &hf_cpm_perceptionRegionPerceptionRegionConfidence, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_ConfidenceLevel },
22317 { &hf_cpm_perceptionRegionPerceptionRegionShape, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Shape },
22318 { &hf_cpm_perceptionRegionShadowingApplies, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpm_T_PerceptionRegionShadowingApplies },
22319 { &hf_cpm_sensorIdList , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SequenceOfIdentifier1B },
22320 { &hf_cpm_perceptionRegionNumberOfPerceivedObjects, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpm_T_PerceptionRegionNumberOfPerceivedObjects },
22321 { &hf_cpm_perceivedObjectIds, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cpm_PerceivedObjectIds },
22322 { NULL, 0, 0, NULL }
22325 static int
22326 dissect_cpm_PerceptionRegion(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22327 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22328 ett_cpm_PerceptionRegion, cpm_PerceptionRegion_sequence);
22330 return offset;
22334 static const per_sequence_t cpm_PerceptionRegionContainer_sequence_of[1] = {
22335 { &hf_cpm_PerceptionRegionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpm_PerceptionRegion },
22338 static int
22339 dissect_cpm_PerceptionRegionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22340 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
22341 ett_cpm_PerceptionRegionContainer, cpm_PerceptionRegionContainer_sequence_of,
22342 1, 256, true);
22344 return offset;
22347 /*--- PDUs ---*/
22349 static int dissect_cpm_PerceptionRegionContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
22350 int offset = 0;
22351 asn1_ctx_t asn1_ctx;
22352 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
22353 offset = dissect_cpm_PerceptionRegionContainer(tvb, offset, &asn1_ctx, tree, hf_cpm_cpm_PerceptionRegionContainer_PDU);
22354 offset += 7; offset >>= 3;
22355 return offset;
22359 /* --- Module CPM-SensorInformationContainer --- --- --- */
22363 static int
22364 dissect_cpm_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22365 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
22367 return offset;
22371 static const per_sequence_t cpm_SensorInformation_sequence[] = {
22372 { &hf_cpm_sensorId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Identifier1B },
22373 { &hf_cpm_sensorType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_SensorType },
22374 { &hf_cpm_perceptionRegionShape, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Shape },
22375 { &hf_cpm_perceptionRegionConfidence, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ConfidenceLevel },
22376 { &hf_cpm_shadowingApplies, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_cpm_BOOLEAN },
22377 { NULL, 0, 0, NULL }
22380 static int
22381 dissect_cpm_SensorInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22382 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22383 ett_cpm_SensorInformation, cpm_SensorInformation_sequence);
22385 return offset;
22389 static const per_sequence_t cpm_SensorInformationContainer_sequence_of[1] = {
22390 { &hf_cpm_SensorInformationContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_cpm_SensorInformation },
22393 static int
22394 dissect_cpm_SensorInformationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22395 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
22396 ett_cpm_SensorInformationContainer, cpm_SensorInformationContainer_sequence_of,
22397 1, 128, true);
22399 return offset;
22402 /*--- PDUs ---*/
22404 static int dissect_cpm_SensorInformationContainer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
22405 int offset = 0;
22406 asn1_ctx_t asn1_ctx;
22407 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
22408 offset = dissect_cpm_SensorInformationContainer(tvb, offset, &asn1_ctx, tree, hf_cpm_cpm_SensorInformationContainer_PDU);
22409 offset += 7; offset >>= 3;
22410 return offset;
22414 /* --- Module VAM-PDU-Descriptions --- --- --- */
22417 static const per_sequence_t vam_VruHighFrequencyContainer_sequence[] = {
22418 { &hf_vam_heading , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Wgs84Angle },
22419 { &hf_vam_speed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_Speed },
22420 { &hf_vam_longitudinalAcceleration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_LongitudinalAcceleration },
22421 { &hf_vam_curvature , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Curvature },
22422 { &hf_vam_curvatureCalculationMode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_CurvatureCalculationMode },
22423 { &hf_vam_yawRate , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_YawRate },
22424 { &hf_vam_lateralAcceleration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_LateralAcceleration },
22425 { &hf_vam_verticalAcceleration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VerticalAcceleration },
22426 { &hf_vam_vruLanePosition , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_GeneralizedLanePosition },
22427 { &hf_vam_environment , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VruEnvironment },
22428 { &hf_vam_movementControl , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VruMovementControl },
22429 { &hf_vam_orientation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_Wgs84Angle },
22430 { &hf_vam_rollAngle , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_CartesianAngle },
22431 { &hf_vam_deviceUsage , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VruDeviceUsage },
22432 { NULL, 0, 0, NULL }
22435 static int
22436 dissect_vam_VruHighFrequencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22437 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22438 ett_vam_VruHighFrequencyContainer, vam_VruHighFrequencyContainer_sequence);
22440 return offset;
22444 static const per_sequence_t vam_VruLowFrequencyContainer_sequence[] = {
22445 { &hf_vam_profileAndSubprofile, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_VruProfileAndSubprofile },
22446 { &hf_vam_sizeClass , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VruSizeClass },
22447 { &hf_vam_exteriorLights , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_VruExteriorLights },
22448 { NULL, 0, 0, NULL }
22451 static int
22452 dissect_vam_VruLowFrequencyContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22453 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22454 ett_vam_VruLowFrequencyContainer, vam_VruLowFrequencyContainer_sequence);
22456 return offset;
22460 static const per_sequence_t vam_VruClusterInformationContainer_sequence[] = {
22461 { &hf_vam_vruClusterInformation, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_VruClusterInformation },
22462 { NULL, 0, 0, NULL }
22465 static int
22466 dissect_vam_VruClusterInformationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22467 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22468 ett_vam_VruClusterInformationContainer, vam_VruClusterInformationContainer_sequence);
22470 return offset;
22474 static const per_sequence_t vam_VruClusterOperationContainer_sequence[] = {
22475 { &hf_vam_clusterJoinInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ClusterJoinInfo },
22476 { &hf_vam_clusterLeaveInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ClusterLeaveInfo },
22477 { &hf_vam_clusterBreakupInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_ClusterBreakupInfo },
22478 { &hf_vam_clusterIdChangeTimeInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_DeltaTimeQuarterSecond },
22479 { NULL, 0, 0, NULL }
22482 static int
22483 dissect_vam_VruClusterOperationContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22484 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22485 ett_vam_VruClusterOperationContainer, vam_VruClusterOperationContainer_sequence);
22487 return offset;
22491 static const per_sequence_t vam_VruMotionPredictionContainer_sequence[] = {
22492 { &hf_vam_pathHistory , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_PathHistory },
22493 { &hf_vam_pathPrediction , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_PathPredicted },
22494 { &hf_vam_safeDistance , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SequenceOfSafeDistanceIndication },
22495 { &hf_vam_trajectoryInterceptionIndication, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_SequenceOfTrajectoryInterceptionIndication },
22496 { &hf_vam_accelerationChangeIndication, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_AccelerationChangeIndication },
22497 { &hf_vam_headingChangeIndication, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_HeadingChangeIndication },
22498 { &hf_vam_stabilityChangeIndication, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_its_StabilityChangeIndication },
22499 { NULL, 0, 0, NULL }
22502 static int
22503 dissect_vam_VruMotionPredictionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22504 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22505 ett_vam_VruMotionPredictionContainer, vam_VruMotionPredictionContainer_sequence);
22507 return offset;
22511 static const per_sequence_t vam_VamParameters_sequence[] = {
22512 { &hf_vam_basicContainer , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_BasicContainer },
22513 { &hf_vam_vruHighFrequencyContainer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_vam_VruHighFrequencyContainer },
22514 { &hf_vam_vruLowFrequencyContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_vam_VruLowFrequencyContainer },
22515 { &hf_vam_vruClusterInformationContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_vam_VruClusterInformationContainer },
22516 { &hf_vam_vruClusterOperationContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_vam_VruClusterOperationContainer },
22517 { &hf_vam_vruMotionPredictionContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_vam_VruMotionPredictionContainer },
22518 { NULL, 0, 0, NULL }
22521 static int
22522 dissect_vam_VamParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22523 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22524 ett_vam_VamParameters, vam_VamParameters_sequence);
22526 return offset;
22530 static const per_sequence_t vam_VruAwareness_sequence[] = {
22531 { &hf_vam_generationDeltaTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_GenerationDeltaTime },
22532 { &hf_vam_vamParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_vam_VamParameters },
22533 { NULL, 0, 0, NULL }
22536 static int
22537 dissect_vam_VruAwareness(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22538 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
22539 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "VAM");
22540 col_set_str(actx->pinfo->cinfo, COL_INFO, "VAM");
22541 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22542 ett_vam_VruAwareness, vam_VruAwareness_sequence);
22544 return offset;
22547 /*--- PDUs ---*/
22549 static int dissect_vam_VruAwareness_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
22550 int offset = 0;
22551 asn1_ctx_t asn1_ctx;
22552 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
22553 offset = dissect_vam_VruAwareness(tvb, offset, &asn1_ctx, tree, hf_vam_vam_VruAwareness_PDU);
22554 offset += 7; offset >>= 3;
22555 return offset;
22559 /* --- Module IMZM-PDU-Descriptions --- --- --- */
22562 static const per_sequence_t imzm_ImzmContainer_sequence[] = {
22563 { &hf_imzm_interferenceManagementZones, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_InterferenceManagementZones },
22564 { NULL, 0, 0, NULL }
22567 static int
22568 dissect_imzm_ImzmContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22569 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22570 ett_imzm_ImzmContainer, imzm_ImzmContainer_sequence);
22572 return offset;
22576 static const per_sequence_t imzm_ImzmParameters_sequence[] = {
22577 { &hf_imzm_basicContainer , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_its_BasicContainer },
22578 { &hf_imzm_imzmContainer , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_imzm_ImzmContainer },
22579 { NULL, 0, 0, NULL }
22582 static int
22583 dissect_imzm_ImzmParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22584 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22585 ett_imzm_ImzmParameters, imzm_ImzmParameters_sequence);
22587 return offset;
22591 static const per_sequence_t imzm_InterferenceManagementZoneMessage_sequence[] = {
22592 { &hf_imzm_generationDeltaTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_GenerationDeltaTime },
22593 { &hf_imzm_imzmParameters , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_imzm_ImzmParameters },
22594 { NULL, 0, 0, NULL }
22597 static int
22598 dissect_imzm_InterferenceManagementZoneMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
22599 actx->private_data = (void*)wmem_new0(actx->pinfo->pool, its_private_data_t);
22600 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, "IMZM");
22601 col_set_str(actx->pinfo->cinfo, COL_INFO, "IMZM");
22602 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
22603 ett_imzm_InterferenceManagementZoneMessage, imzm_InterferenceManagementZoneMessage_sequence);
22605 return offset;
22608 /*--- PDUs ---*/
22610 static int dissect_imzm_InterferenceManagementZoneMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
22611 int offset = 0;
22612 asn1_ctx_t asn1_ctx;
22613 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
22614 offset = dissect_imzm_InterferenceManagementZoneMessage(tvb, offset, &asn1_ctx, tree, hf_imzm_imzm_InterferenceManagementZoneMessage_PDU);
22615 offset += 7; offset >>= 3;
22616 return offset;
22620 static void
22621 its_latitude_fmt(char *s, uint32_t v)
22623 int32_t lat = (int32_t)v;
22624 if (lat == 900000001) {
22625 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", lat);
22626 } else {
22627 snprintf(s, ITEM_LABEL_LENGTH, "%u°%u'%.3f\"%c (%d)",
22628 abs(lat) / 10000000,
22629 abs(lat) % 10000000 * 6 / 1000000,
22630 abs(lat) % 10000000 * 6 % 1000000 * 6.0 / 100000.0,
22631 (lat >= 0) ? 'N' : 'S',
22632 lat);
22636 static void
22637 its_longitude_fmt(char *s, uint32_t v)
22639 int32_t lng = (int32_t)v;
22640 if (lng == 1800000001) {
22641 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", lng);
22642 } else {
22643 snprintf(s, ITEM_LABEL_LENGTH, "%u°%u'%.3f\"%c (%d)",
22644 abs(lng) / 10000000,
22645 abs(lng) % 10000000 * 6 / 1000000,
22646 abs(lng) % 10000000 * 6 % 1000000 * 6.0 / 100000.0,
22647 (lng >= 0) ? 'E' : 'W',
22648 lng);
22652 static void
22653 its_altitude_fmt(char *s, uint32_t v)
22655 int32_t alt = (int32_t)v;
22656 if (alt == 800001) {
22657 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", alt);
22658 } else {
22659 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm (%d)", alt * 0.01, alt);
22663 static void
22664 its_delta_latitude_fmt(char *s, uint32_t v)
22666 int32_t lat = (int32_t)v;
22667 if (lat == 131072) {
22668 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", lat);
22669 } else {
22670 snprintf(s, ITEM_LABEL_LENGTH, "%u°%u'%.3f\"%c (%d)",
22671 abs(lat) / 10000000,
22672 abs(lat) % 10000000 * 6 / 1000000,
22673 abs(lat) % 10000000 * 6 % 1000000 * 6.0 / 100000.0,
22674 (lat >= 0) ? 'N' : 'S',
22675 lat);
22679 static void
22680 its_delta_longitude_fmt(char *s, uint32_t v)
22682 int32_t lng = (int32_t)v;
22683 if (lng == 131072) {
22684 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", lng);
22685 } else {
22686 snprintf(s, ITEM_LABEL_LENGTH, "%u°%u'%.3f\"%c (%d)",
22687 abs(lng) / 10000000,
22688 abs(lng) % 10000000 * 6 / 1000000,
22689 abs(lng) % 10000000 * 6 % 1000000 * 6.0 / 100000.0,
22690 (lng >= 0) ? 'E' : 'W',
22691 lng);
22695 static void
22696 its_delta_altitude_fmt(char *s, uint32_t v)
22698 int32_t alt = (int32_t)v;
22699 if (alt == 12800) {
22700 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", alt);
22701 } else {
22702 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm (%d)", alt * 0.01, alt);
22706 static void
22707 its_path_delta_time_fmt(char *s, uint32_t v)
22709 int32_t dt = (int32_t)v;
22710 snprintf(s, ITEM_LABEL_LENGTH, "%.2fs (%d)", dt * 0.01, dt);
22714 static void
22715 its_sax_length_fmt(char *s, uint32_t v)
22717 if (v == 4095) {
22718 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22719 } else if (v == 4094) {
22720 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
22721 } else {
22722 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm (%d)", v * 0.01, v);
22726 static void
22727 its_heading_value_fmt(char *s, uint32_t v)
22729 const char *p = try_val_to_str(v, VALS(its_HeadingValue_vals));
22730 if (p) {
22731 snprintf(s, ITEM_LABEL_LENGTH, "%s (%d)", p, v);
22732 } else {
22733 snprintf(s, ITEM_LABEL_LENGTH, "%.1f° (%d)", v * 0.1, v);
22737 static void
22738 its_heading_confidence_fmt(char *s, uint32_t v)
22740 if (v == 127) {
22741 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22742 } else if (v == 126) {
22743 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
22744 } else {
22745 snprintf(s, ITEM_LABEL_LENGTH, "%.1f° (%d)", v * 0.1, v);
22749 static void
22750 its_speed_value_fmt(char *s, uint32_t v)
22752 if (v == 0) {
22753 snprintf(s, ITEM_LABEL_LENGTH, "standstill (%d)", v);
22754 } else if (v == 16383) {
22755 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22756 } else {
22757 double vms = v * 0.01;
22758 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm/s = %.1fkm/h (%d)",
22759 vms, vms * 3.6, v);
22763 static void
22764 its_speed_confidence_fmt(char *s, uint32_t v)
22766 if (v == 127) {
22767 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22768 } else if (v == 126) {
22769 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
22770 } else {
22771 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm/s (%d)", v * 0.01, v);
22775 static void
22776 its_speed_limit_fmt(char *s, uint32_t v)
22778 snprintf(s, ITEM_LABEL_LENGTH, "%dkm/h (%d)", v, v);
22781 static void
22782 its_vehicle_length_value_fmt(char *s, uint32_t v)
22784 if (v == 1023) {
22785 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22786 } else if (v == 1022) {
22787 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
22788 } else {
22789 snprintf(s, ITEM_LABEL_LENGTH, "%.1fm (%d)", v * 0.1, v);
22793 static void
22794 its_vehicle_width_fmt(char *s, uint32_t v)
22796 if (v == 62) {
22797 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22798 } else if (v == 61) {
22799 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
22800 } else {
22801 snprintf(s, ITEM_LABEL_LENGTH, "%.1fm (%d)", v * 0.1, v);
22805 static void
22806 its_acceleration_value_fmt(char *s, uint32_t v)
22808 int32_t acc = (int32_t)v;
22809 if (acc == 161) {
22810 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22811 } else {
22812 snprintf(s, ITEM_LABEL_LENGTH, "%.1fm/s² (%d)", acc * 0.1, acc);
22816 static void
22817 its_acceleration_confidence_fmt(char *s, uint32_t v)
22819 if (v == 102) {
22820 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22821 } else if (v == 101) {
22822 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
22823 } else {
22824 snprintf(s, ITEM_LABEL_LENGTH, "%.1fm/s² (%d)", v * 0.1, v);
22828 static void
22829 its_curvature_value_fmt(char *s, uint32_t v)
22831 int32_t curv = (int32_t)v;
22832 if (curv == 0) {
22833 snprintf(s, ITEM_LABEL_LENGTH, "straight (%d)", v);
22834 } else if (curv == 30001) {
22835 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22836 } else {
22837 snprintf(s, ITEM_LABEL_LENGTH, "%.3fm %s (%d)",
22838 30000.0 / curv,
22839 (curv > 0) ? "left" : "right",
22840 curv);
22844 static void
22845 its_yaw_rate_value_fmt(char *s, uint32_t v)
22847 int32_t yaw = (int32_t)v;
22848 if (yaw == 0) {
22849 snprintf(s, ITEM_LABEL_LENGTH, "straight (%d)", v);
22850 } else if (yaw == 32767) {
22851 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22852 } else {
22853 snprintf(s, ITEM_LABEL_LENGTH, "%.2f°/s %s (%d)",
22854 yaw * 0.01,
22855 (yaw > 0) ? "left" : "right",
22856 yaw);
22860 static void
22861 its_swa_value_fmt(char *s, uint32_t v)
22863 int32_t swa = (int32_t)v;
22864 if (swa == 0) {
22865 snprintf(s, ITEM_LABEL_LENGTH, "straight (%d)", v);
22866 } else if (swa == 512) {
22867 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22868 } else {
22869 snprintf(s, ITEM_LABEL_LENGTH, "%.1f° %s (%d)",
22870 swa * 1.5,
22871 (swa > 0) ? "left" : "right",
22872 swa);
22876 static void
22877 its_swa_confidence_fmt(char *s, uint32_t v)
22879 if (v == 127) {
22880 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22881 } else if (v == 126) {
22882 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
22883 } else {
22884 snprintf(s, ITEM_LABEL_LENGTH, "%.1f° (%d)", v * 1.5, v);
22888 static void
22889 dsrc_moi_fmt(char *s, uint32_t v)
22891 if (v == 527040) {
22892 snprintf(s, ITEM_LABEL_LENGTH, "invalid (%d)", v);
22893 } else {
22894 snprintf(s, ITEM_LABEL_LENGTH, "%ud %02u:%02u (%d)",
22895 v / 1440, v % 1440 / 60, v % 60, v);
22899 static void
22900 dsrc_dsecond_fmt(char *s, uint32_t v)
22902 if (v == 65535) {
22903 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22904 } else if ((61000 <= v) && (v <= 65534)) {
22905 snprintf(s, ITEM_LABEL_LENGTH, "reserved (%d)", v);
22906 } else {
22907 snprintf(s, ITEM_LABEL_LENGTH, "%02u.%03u (%d)",
22908 v / 1000, v % 1000, v);
22912 static void
22913 dsrc_time_mark_fmt(char *s, uint32_t v)
22915 if (v == 36001) {
22916 snprintf(s, ITEM_LABEL_LENGTH, "unknown (%d)", v);
22917 } else if (v == 36000) {
22918 snprintf(s, ITEM_LABEL_LENGTH, "moreThanHour (%d)", v);
22919 } else {
22920 snprintf(s, ITEM_LABEL_LENGTH, "%02u:%02u.%u (%d)",
22921 v / 600, v % 600 / 10, v % 10, v);
22925 static void
22926 its_timestamp_fmt(char *s, uint64_t v)
22928 time_t secs = v / 1000 + 1072915200 - 5;
22929 struct tm *tm = gmtime(&secs);
22930 snprintf(s, ITEM_LABEL_LENGTH, "%u-%02u-%02u %02u:%02u:%02u.%03u (%" PRIu64 ")",
22931 tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (uint32_t)(v % 1000), v
22935 static void
22936 its_validity_duration_fmt(char *s, uint32_t v)
22938 snprintf(s, ITEM_LABEL_LENGTH, "%02u:%02u:%02u (%d)",
22939 v / 3600, v % 3600 / 60, v % 60, v);
22942 static const value_string dsrc_TimeIntervalConfidence_vals[] = {
22943 { 0, "21% probability" },
22944 { 1, "36% probability" },
22945 { 2, "47% probability" },
22946 { 3, "56% probability" },
22947 { 4, "62% probability" },
22948 { 5, "68% probability" },
22949 { 6, "73% probability" },
22950 { 7, "77% probability" },
22951 { 8, "81% probability" },
22952 { 9, "85% probability" },
22953 { 10, "88% probability" },
22954 { 11, "91% probability" },
22955 { 12, "94% probability" },
22956 { 13, "96% probability" },
22957 { 14, "98% probability" },
22958 { 15, "10% probability" },
22959 { 0, NULL }
22962 static void
22963 dsrc_velocity_fmt(char *s, uint32_t v)
22965 if (v == 8191) {
22966 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
22967 } else {
22968 double vms = v * 0.02;
22969 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm/s = %ukm/h (%d)",
22970 vms, (int)lround(vms * 3.6), v);
22974 static void
22975 dsrc_angle_fmt(char *s, uint32_t v)
22977 snprintf(s, ITEM_LABEL_LENGTH, "%.2f° (%d)", v * 0.0125, v);
22980 static void
22981 dsrc_delta_time_fmt(char *s, uint32_t v)
22983 int32_t dt = (int32_t)v;
22984 if (dt == -122) {
22985 snprintf(s, ITEM_LABEL_LENGTH, "unknown (%d)", dt);
22986 } else if (dt == -121) {
22987 snprintf(s, ITEM_LABEL_LENGTH, "moreThanMinus20Minutes (%d)", dt);
22988 } else if (dt == 121) {
22989 snprintf(s, ITEM_LABEL_LENGTH, "moreThanPlus20Minutes (%d)", dt);
22990 } else {
22991 snprintf(s, ITEM_LABEL_LENGTH, "%s%d:%02u (%d)",
22992 (dt < 0) ? "-" : "", abs(dt) / 6, abs(dt) % 6 * 10, dt);
22996 static void
22997 cpm_general_confidence_fmt(gchar* s, guint32 v)
22999 if (v == 0) {
23000 snprintf(s, ITEM_LABEL_LENGTH, "unknown (%u)", v);
23002 else if (v == 101) {
23003 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%u)", v);
23005 else {
23006 snprintf(s, ITEM_LABEL_LENGTH, "%u%% (%u)", v, v);
23010 static void
23011 cpm_distance_value_fmt(gchar* s, guint32 v)
23013 gint32 sv = (gint32)v;
23014 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm (%d)", sv * 0.01, sv);
23017 static void
23018 cpm_distance_confidence_fmt(gchar* s, guint32 v)
23020 if (v == 102) {
23021 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
23023 else if (v == 101) {
23024 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
23026 else {
23027 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm (%d)", v * 0.01, v);
23031 static void
23032 cpm_speed_value_ext_fmt(gchar* s, guint32 v)
23034 gint32 sv = (gint32)v;
23035 if (sv == 0) {
23036 snprintf(s, ITEM_LABEL_LENGTH, "standstill (%d)", sv);
23038 else if (sv == 16383) {
23039 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", sv);
23041 else {
23042 double vms = sv * 0.01;
23043 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm/s = %.1fkm/h (%d)",
23044 vms, vms * 3.6, sv);
23048 static void
23049 cpm_cartesian_angle_value_fmt(gchar* s, guint32 v)
23051 if (v == 3601) {
23052 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
23054 else {
23055 snprintf(s, ITEM_LABEL_LENGTH, "%.1f° (%d)", v * 0.1, v);
23059 static void
23060 cpm_angle_confidence_fmt(gchar* s, guint32 v)
23062 if (v == 127) {
23063 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
23065 else if (v == 126) {
23066 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
23068 else {
23069 snprintf(s, ITEM_LABEL_LENGTH, "%.1f° (%d)", v * 0.1, v);
23073 static void
23074 cpm_object_dimension_value_fmt(char *s, uint32_t v)
23076 snprintf(s, ITEM_LABEL_LENGTH, "%.1fm (%d)", v * 0.1, v);
23079 static void
23080 cpm_object_dimension_confidence_fmt(char *s, uint32_t v)
23082 if (v == 32) {
23083 snprintf(s, ITEM_LABEL_LENGTH, "unavailable (%d)", v);
23084 } else if (v == 31) {
23085 snprintf(s, ITEM_LABEL_LENGTH, "outOfRange (%d)", v);
23086 } else {
23087 snprintf(s, ITEM_LABEL_LENGTH, "%.2fm (%d)", v * 0.01, v);
23091 static int
23092 dissect_its_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
23094 proto_item *its_item;
23095 proto_tree *its_tree;
23097 col_set_str(pinfo->cinfo, COL_PROTOCOL, "ITS");
23098 col_clear(pinfo->cinfo, COL_INFO);
23100 its_item = proto_tree_add_item(tree, proto_its, tvb, 0, -1, ENC_NA);
23101 its_tree = proto_item_add_subtree(its_item, ett_its);
23103 return dissect_its_ItsPduHeader_PDU(tvb, pinfo, its_tree, data);
23106 // Decode As...
23107 static void
23108 its_msgid_prompt(packet_info *pinfo, char *result)
23110 uint32_t msgid = GPOINTER_TO_UINT(p_get_proto_data(pinfo->pool, pinfo, hf_its_messageId, pinfo->curr_layer_num));
23112 snprintf(result, MAX_DECODE_AS_PROMPT_LEN, "MsgId (%s%u)", UTF8_RIGHTWARDS_ARROW, msgid);
23115 static void *
23116 its_msgid_value(packet_info *pinfo)
23118 return p_get_proto_data(pinfo->pool, pinfo, hf_its_messageId, pinfo->curr_layer_num);
23121 // Registration of protocols
23122 void proto_register_its(void)
23124 static hf_register_info hf_its[] = {
23126 /* --- Module ETSI-ITS-CDD --- --- --- */
23128 { &hf_its_its_ItsPduHeader_PDU,
23129 { "ItsPduHeader", "its.ItsPduHeader_element",
23130 FT_NONE, BASE_NONE, NULL, 0,
23131 NULL, HFILL }},
23132 { &hf_its_polarAcceleration,
23133 { "polarAcceleration", "its.polarAcceleration_element",
23134 FT_NONE, BASE_NONE, NULL, 0,
23135 "AccelerationPolarWithZ", HFILL }},
23136 { &hf_its_cartesianAcceleration,
23137 { "cartesianAcceleration", "its.cartesianAcceleration_element",
23138 FT_NONE, BASE_NONE, NULL, 0,
23139 "AccelerationCartesian", HFILL }},
23140 { &hf_its_accelerationMagnitude,
23141 { "accelerationMagnitude", "its.accelerationMagnitude_element",
23142 FT_NONE, BASE_NONE, NULL, 0,
23143 NULL, HFILL }},
23144 { &hf_its_accelerationDirection,
23145 { "accelerationDirection", "its.accelerationDirection_element",
23146 FT_NONE, BASE_NONE, NULL, 0,
23147 "CartesianAngle", HFILL }},
23148 { &hf_its_zAcceleration,
23149 { "zAcceleration", "its.zAcceleration_element",
23150 FT_NONE, BASE_NONE, NULL, 0,
23151 "AccelerationComponent", HFILL }},
23152 { &hf_its_xAcceleration,
23153 { "xAcceleration", "its.xAcceleration_element",
23154 FT_NONE, BASE_NONE, NULL, 0,
23155 "AccelerationComponent", HFILL }},
23156 { &hf_its_yAcceleration,
23157 { "yAcceleration", "its.yAcceleration_element",
23158 FT_NONE, BASE_NONE, NULL, 0,
23159 "AccelerationComponent", HFILL }},
23160 { &hf_its_value,
23161 { "value", "its.value",
23162 FT_INT32, BASE_DEC, VALS(its_AccelerationValue_vals), 0,
23163 "AccelerationValue", HFILL }},
23164 { &hf_its_confidence,
23165 { "confidence", "its.confidence",
23166 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_acceleration_confidence_fmt), 0,
23167 "AccelerationConfidence", HFILL }},
23168 { &hf_its_accelOrDecel,
23169 { "accelOrDecel", "its.accelOrDecel",
23170 FT_UINT32, BASE_DEC, VALS(its_AccelerationChange_vals), 0,
23171 "AccelerationChange", HFILL }},
23172 { &hf_its_actionDeltaTime,
23173 { "actionDeltaTime", "its.actionDeltaTime",
23174 FT_UINT32, BASE_DEC, VALS(its_DeltaTimeTenthOfSecond_vals), 0,
23175 "DeltaTimeTenthOfSecond", HFILL }},
23176 { &hf_its_accelerationMagnitudeValue,
23177 { "accelerationMagnitudeValue", "its.accelerationMagnitudeValue",
23178 FT_UINT32, BASE_DEC, VALS(its_AccelerationMagnitudeValue_vals), 0,
23179 NULL, HFILL }},
23180 { &hf_its_accelerationConfidence,
23181 { "accelerationConfidence", "its.accelerationConfidence",
23182 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_acceleration_confidence_fmt), 0,
23183 NULL, HFILL }},
23184 { &hf_its_originatingStationId,
23185 { "originatingStationId", "its.originatingStationId",
23186 FT_UINT32, BASE_DEC, NULL, 0,
23187 "StationId", HFILL }},
23188 { &hf_its_sequenceNumber,
23189 { "sequenceNumber", "its.sequenceNumber",
23190 FT_UINT32, BASE_DEC, NULL, 0,
23191 NULL, HFILL }},
23192 { &hf_its_originatingStationId_01,
23193 { "originatingStationId", "its.originatingStationId",
23194 FT_UINT32, BASE_DEC, NULL, 0,
23195 "StationID", HFILL }},
23196 { &hf_its_ActionIdList_item,
23197 { "ActionId", "its.ActionId_element",
23198 FT_NONE, BASE_NONE, NULL, 0,
23199 NULL, HFILL }},
23200 { &hf_its_altitudeValue,
23201 { "altitudeValue", "its.altitudeValue",
23202 FT_INT32, BASE_CUSTOM, CF_FUNC(its_altitude_fmt), 0,
23203 NULL, HFILL }},
23204 { &hf_its_altitudeConfidence,
23205 { "altitudeConfidence", "its.altitudeConfidence",
23206 FT_UINT32, BASE_DEC, VALS(its_AltitudeConfidence_vals), 0,
23207 NULL, HFILL }},
23208 { &hf_its_stationType,
23209 { "stationType", "its.stationType",
23210 FT_UINT32, BASE_DEC, VALS(its_TrafficParticipantType_vals), 0,
23211 "TrafficParticipantType", HFILL }},
23212 { &hf_its_referencePosition,
23213 { "referencePosition", "its.referencePosition_element",
23214 FT_NONE, BASE_NONE, NULL, 0,
23215 "ReferencePositionWithConfidence", HFILL }},
23216 { &hf_its_value_01,
23217 { "value", "its.value",
23218 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
23219 "CartesianAngleValue", HFILL }},
23220 { &hf_its_confidence_01,
23221 { "confidence", "its.confidence",
23222 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_angle_confidence_fmt), 0,
23223 "AngleConfidence", HFILL }},
23224 { &hf_its_value_02,
23225 { "value", "its.value",
23226 FT_INT32, BASE_DEC, VALS(its_CartesianAngularVelocityComponentValue_vals), 0,
23227 "CartesianAngularVelocityComponentValue", HFILL }},
23228 { &hf_its_confidence_02,
23229 { "confidence", "its.confidence",
23230 FT_UINT32, BASE_DEC, VALS(its_AngularSpeedConfidence_vals), 0,
23231 "AngularSpeedConfidence", HFILL }},
23232 { &hf_its_value_03,
23233 { "value", "its.value",
23234 FT_INT32, BASE_DEC, VALS(its_CartesianCoordinateLarge_vals), 0,
23235 "CartesianCoordinateLarge", HFILL }},
23236 { &hf_its_confidence_03,
23237 { "confidence", "its.confidence",
23238 FT_UINT32, BASE_DEC, VALS(its_CoordinateConfidence_vals), 0,
23239 "CoordinateConfidence", HFILL }},
23240 { &hf_its_xCoordinate,
23241 { "xCoordinate", "its.xCoordinate",
23242 FT_INT32, BASE_DEC, VALS(its_CartesianCoordinate_vals), 0,
23243 "CartesianCoordinate", HFILL }},
23244 { &hf_its_yCoordinate,
23245 { "yCoordinate", "its.yCoordinate",
23246 FT_INT32, BASE_DEC, VALS(its_CartesianCoordinate_vals), 0,
23247 "CartesianCoordinate", HFILL }},
23248 { &hf_its_zCoordinate,
23249 { "zCoordinate", "its.zCoordinate",
23250 FT_INT32, BASE_DEC, VALS(its_CartesianCoordinate_vals), 0,
23251 "CartesianCoordinate", HFILL }},
23252 { &hf_its_xCoordinate_01,
23253 { "xCoordinate", "its.xCoordinate_element",
23254 FT_NONE, BASE_NONE, NULL, 0,
23255 "CartesianCoordinateWithConfidence", HFILL }},
23256 { &hf_its_yCoordinate_01,
23257 { "yCoordinate", "its.yCoordinate_element",
23258 FT_NONE, BASE_NONE, NULL, 0,
23259 "CartesianCoordinateWithConfidence", HFILL }},
23260 { &hf_its_zCoordinate_01,
23261 { "zCoordinate", "its.zCoordinate_element",
23262 FT_NONE, BASE_NONE, NULL, 0,
23263 "CartesianCoordinateWithConfidence", HFILL }},
23264 { &hf_its_causeCode,
23265 { "causeCode", "its.causeCode",
23266 FT_UINT32, BASE_DEC, VALS(its_CauseCodeType_vals), 0,
23267 "CauseCodeType", HFILL }},
23268 { &hf_its_subCauseCode,
23269 { "subCauseCode", "its.subCauseCode",
23270 FT_UINT32, BASE_DEC, NULL, 0,
23271 "SubCauseCodeType", HFILL }},
23272 { &hf_its_reserved0,
23273 { "reserved0", "its.reserved0",
23274 FT_UINT32, BASE_DEC, NULL, 0,
23275 "SubCauseCodeType", HFILL }},
23276 { &hf_its_trafficCondition1,
23277 { "trafficCondition1", "its.trafficCondition1",
23278 FT_UINT32, BASE_DEC, VALS(its_TrafficConditionSubCauseCode_vals), 0,
23279 "TrafficConditionSubCauseCode", HFILL }},
23280 { &hf_its_accident2,
23281 { "accident2", "its.accident2",
23282 FT_UINT32, BASE_DEC, VALS(its_AccidentSubCauseCode_vals), 0,
23283 "AccidentSubCauseCode", HFILL }},
23284 { &hf_its_roadworks3,
23285 { "roadworks3", "its.roadworks3",
23286 FT_UINT32, BASE_DEC, VALS(its_RoadworksSubCauseCode_vals), 0,
23287 "RoadworksSubCauseCode", HFILL }},
23288 { &hf_its_reserved4,
23289 { "reserved4", "its.reserved4",
23290 FT_UINT32, BASE_DEC, NULL, 0,
23291 "SubCauseCodeType", HFILL }},
23292 { &hf_its_impassability5,
23293 { "impassability5", "its.impassability5",
23294 FT_UINT32, BASE_DEC, VALS(its_ImpassabilitySubCauseCode_vals), 0,
23295 "ImpassabilitySubCauseCode", HFILL }},
23296 { &hf_its_adverseWeatherCondition_Adhesion6,
23297 { "adverseWeatherCondition-Adhesion6", "its.adverseWeatherCondition_Adhesion6",
23298 FT_UINT32, BASE_DEC, VALS(its_AdverseWeatherCondition_AdhesionSubCauseCode_vals), 0,
23299 "AdverseWeatherCondition_AdhesionSubCauseCode", HFILL }},
23300 { &hf_its_aquaplaning7,
23301 { "aquaplaning7", "its.aquaplaning7",
23302 FT_UINT32, BASE_DEC, NULL, 0,
23303 "SubCauseCodeType", HFILL }},
23304 { &hf_its_reserved8,
23305 { "reserved8", "its.reserved8",
23306 FT_UINT32, BASE_DEC, NULL, 0,
23307 "SubCauseCodeType", HFILL }},
23308 { &hf_its_hazardousLocation_SurfaceCondition9,
23309 { "hazardousLocation-SurfaceCondition9", "its.hazardousLocation_SurfaceCondition9",
23310 FT_UINT32, BASE_DEC, VALS(its_HazardousLocation_SurfaceConditionSubCauseCode_vals), 0,
23311 "HazardousLocation_SurfaceConditionSubCauseCode", HFILL }},
23312 { &hf_its_hazardousLocation_ObstacleOnTheRoad10,
23313 { "hazardousLocation-ObstacleOnTheRoad10", "its.hazardousLocation_ObstacleOnTheRoad10",
23314 FT_UINT32, BASE_DEC, VALS(its_HazardousLocation_ObstacleOnTheRoadSubCauseCode_vals), 0,
23315 "HazardousLocation_ObstacleOnTheRoadSubCauseCode", HFILL }},
23316 { &hf_its_hazardousLocation_AnimalOnTheRoad11,
23317 { "hazardousLocation-AnimalOnTheRoad11", "its.hazardousLocation_AnimalOnTheRoad11",
23318 FT_UINT32, BASE_DEC, VALS(its_HazardousLocation_AnimalOnTheRoadSubCauseCode_vals), 0,
23319 "HazardousLocation_AnimalOnTheRoadSubCauseCode", HFILL }},
23320 { &hf_its_humanPresenceOnTheRoad12,
23321 { "humanPresenceOnTheRoad12", "its.humanPresenceOnTheRoad12",
23322 FT_UINT32, BASE_DEC, VALS(its_HumanPresenceOnTheRoadSubCauseCode_vals), 0,
23323 "HumanPresenceOnTheRoadSubCauseCode", HFILL }},
23324 { &hf_its_reserved13,
23325 { "reserved13", "its.reserved13",
23326 FT_UINT32, BASE_DEC, NULL, 0,
23327 "SubCauseCodeType", HFILL }},
23328 { &hf_its_wrongWayDriving14,
23329 { "wrongWayDriving14", "its.wrongWayDriving14",
23330 FT_UINT32, BASE_DEC, VALS(its_WrongWayDrivingSubCauseCode_vals), 0,
23331 "WrongWayDrivingSubCauseCode", HFILL }},
23332 { &hf_its_rescueAndRecoveryWorkInProgress15,
23333 { "rescueAndRecoveryWorkInProgress15", "its.rescueAndRecoveryWorkInProgress15",
23334 FT_UINT32, BASE_DEC, VALS(its_RescueAndRecoveryWorkInProgressSubCauseCode_vals), 0,
23335 "RescueAndRecoveryWorkInProgressSubCauseCode", HFILL }},
23336 { &hf_its_reserved16,
23337 { "reserved16", "its.reserved16",
23338 FT_UINT32, BASE_DEC, NULL, 0,
23339 "SubCauseCodeType", HFILL }},
23340 { &hf_its_adverseWeatherCondition_ExtremeWeatherCondition17,
23341 { "adverseWeatherCondition-ExtremeWeatherCondition17", "its.adverseWeatherCondition_ExtremeWeatherCondition17",
23342 FT_UINT32, BASE_DEC, VALS(its_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_vals), 0,
23343 "AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode", HFILL }},
23344 { &hf_its_adverseWeatherCondition_Visibility18,
23345 { "adverseWeatherCondition-Visibility18", "its.adverseWeatherCondition_Visibility18",
23346 FT_UINT32, BASE_DEC, VALS(its_AdverseWeatherCondition_VisibilitySubCauseCode_vals), 0,
23347 "AdverseWeatherCondition_VisibilitySubCauseCode", HFILL }},
23348 { &hf_its_adverseWeatherCondition_Precipitation19,
23349 { "adverseWeatherCondition-Precipitation19", "its.adverseWeatherCondition_Precipitation19",
23350 FT_UINT32, BASE_DEC, VALS(its_AdverseWeatherCondition_PrecipitationSubCauseCode_vals), 0,
23351 "AdverseWeatherCondition_PrecipitationSubCauseCode", HFILL }},
23352 { &hf_its_violence20,
23353 { "violence20", "its.violence20",
23354 FT_UINT32, BASE_DEC, NULL, 0,
23355 "SubCauseCodeType", HFILL }},
23356 { &hf_its_reserved21,
23357 { "reserved21", "its.reserved21",
23358 FT_UINT32, BASE_DEC, NULL, 0,
23359 "SubCauseCodeType", HFILL }},
23360 { &hf_its_reserved22,
23361 { "reserved22", "its.reserved22",
23362 FT_UINT32, BASE_DEC, NULL, 0,
23363 "SubCauseCodeType", HFILL }},
23364 { &hf_its_reserved23,
23365 { "reserved23", "its.reserved23",
23366 FT_UINT32, BASE_DEC, NULL, 0,
23367 "SubCauseCodeType", HFILL }},
23368 { &hf_its_reserved24,
23369 { "reserved24", "its.reserved24",
23370 FT_UINT32, BASE_DEC, NULL, 0,
23371 "SubCauseCodeType", HFILL }},
23372 { &hf_its_reserved25,
23373 { "reserved25", "its.reserved25",
23374 FT_UINT32, BASE_DEC, NULL, 0,
23375 "SubCauseCodeType", HFILL }},
23376 { &hf_its_slowVehicle26,
23377 { "slowVehicle26", "its.slowVehicle26",
23378 FT_UINT32, BASE_DEC, VALS(its_SlowVehicleSubCauseCode_vals), 0,
23379 "SlowVehicleSubCauseCode", HFILL }},
23380 { &hf_its_dangerousEndOfQueue27,
23381 { "dangerousEndOfQueue27", "its.dangerousEndOfQueue27",
23382 FT_UINT32, BASE_DEC, VALS(its_DangerousEndOfQueueSubCauseCode_vals), 0,
23383 "DangerousEndOfQueueSubCauseCode", HFILL }},
23384 { &hf_its_publicTransportVehicleApproaching28,
23385 { "publicTransportVehicleApproaching28", "its.publicTransportVehicleApproaching28",
23386 FT_UINT32, BASE_DEC, NULL, 0,
23387 "SubCauseCodeType", HFILL }},
23388 { &hf_its_reserved29,
23389 { "reserved29", "its.reserved29",
23390 FT_UINT32, BASE_DEC, NULL, 0,
23391 "SubCauseCodeType", HFILL }},
23392 { &hf_its_reserved30,
23393 { "reserved30", "its.reserved30",
23394 FT_UINT32, BASE_DEC, NULL, 0,
23395 "SubCauseCodeType", HFILL }},
23396 { &hf_its_reserved31,
23397 { "reserved31", "its.reserved31",
23398 FT_UINT32, BASE_DEC, NULL, 0,
23399 "SubCauseCodeType", HFILL }},
23400 { &hf_its_reserved32,
23401 { "reserved32", "its.reserved32",
23402 FT_UINT32, BASE_DEC, NULL, 0,
23403 "SubCauseCodeType", HFILL }},
23404 { &hf_its_reserved33,
23405 { "reserved33", "its.reserved33",
23406 FT_UINT32, BASE_DEC, NULL, 0,
23407 "SubCauseCodeType", HFILL }},
23408 { &hf_its_reserved34,
23409 { "reserved34", "its.reserved34",
23410 FT_UINT32, BASE_DEC, NULL, 0,
23411 "SubCauseCodeType", HFILL }},
23412 { &hf_its_reserved35,
23413 { "reserved35", "its.reserved35",
23414 FT_UINT32, BASE_DEC, NULL, 0,
23415 "SubCauseCodeType", HFILL }},
23416 { &hf_its_reserved36,
23417 { "reserved36", "its.reserved36",
23418 FT_UINT32, BASE_DEC, NULL, 0,
23419 "SubCauseCodeType", HFILL }},
23420 { &hf_its_reserved37,
23421 { "reserved37", "its.reserved37",
23422 FT_UINT32, BASE_DEC, NULL, 0,
23423 "SubCauseCodeType", HFILL }},
23424 { &hf_its_reserved38,
23425 { "reserved38", "its.reserved38",
23426 FT_UINT32, BASE_DEC, NULL, 0,
23427 "SubCauseCodeType", HFILL }},
23428 { &hf_its_reserved39,
23429 { "reserved39", "its.reserved39",
23430 FT_UINT32, BASE_DEC, NULL, 0,
23431 "SubCauseCodeType", HFILL }},
23432 { &hf_its_reserved40,
23433 { "reserved40", "its.reserved40",
23434 FT_UINT32, BASE_DEC, NULL, 0,
23435 "SubCauseCodeType", HFILL }},
23436 { &hf_its_reserved41,
23437 { "reserved41", "its.reserved41",
23438 FT_UINT32, BASE_DEC, NULL, 0,
23439 "SubCauseCodeType", HFILL }},
23440 { &hf_its_reserved42,
23441 { "reserved42", "its.reserved42",
23442 FT_UINT32, BASE_DEC, NULL, 0,
23443 "SubCauseCodeType", HFILL }},
23444 { &hf_its_reserved43,
23445 { "reserved43", "its.reserved43",
23446 FT_UINT32, BASE_DEC, NULL, 0,
23447 "SubCauseCodeType", HFILL }},
23448 { &hf_its_reserved44,
23449 { "reserved44", "its.reserved44",
23450 FT_UINT32, BASE_DEC, NULL, 0,
23451 "SubCauseCodeType", HFILL }},
23452 { &hf_its_reserved45,
23453 { "reserved45", "its.reserved45",
23454 FT_UINT32, BASE_DEC, NULL, 0,
23455 "SubCauseCodeType", HFILL }},
23456 { &hf_its_reserved46,
23457 { "reserved46", "its.reserved46",
23458 FT_UINT32, BASE_DEC, NULL, 0,
23459 "SubCauseCodeType", HFILL }},
23460 { &hf_its_reserved47,
23461 { "reserved47", "its.reserved47",
23462 FT_UINT32, BASE_DEC, NULL, 0,
23463 "SubCauseCodeType", HFILL }},
23464 { &hf_its_reserved48,
23465 { "reserved48", "its.reserved48",
23466 FT_UINT32, BASE_DEC, NULL, 0,
23467 "SubCauseCodeType", HFILL }},
23468 { &hf_its_reserved49,
23469 { "reserved49", "its.reserved49",
23470 FT_UINT32, BASE_DEC, NULL, 0,
23471 "SubCauseCodeType", HFILL }},
23472 { &hf_its_reserved50,
23473 { "reserved50", "its.reserved50",
23474 FT_UINT32, BASE_DEC, NULL, 0,
23475 "SubCauseCodeType", HFILL }},
23476 { &hf_its_reserved51,
23477 { "reserved51", "its.reserved51",
23478 FT_UINT32, BASE_DEC, NULL, 0,
23479 "SubCauseCodeType", HFILL }},
23480 { &hf_its_reserved52,
23481 { "reserved52", "its.reserved52",
23482 FT_UINT32, BASE_DEC, NULL, 0,
23483 "SubCauseCodeType", HFILL }},
23484 { &hf_its_reserved53,
23485 { "reserved53", "its.reserved53",
23486 FT_UINT32, BASE_DEC, NULL, 0,
23487 "SubCauseCodeType", HFILL }},
23488 { &hf_its_reserved54,
23489 { "reserved54", "its.reserved54",
23490 FT_UINT32, BASE_DEC, NULL, 0,
23491 "SubCauseCodeType", HFILL }},
23492 { &hf_its_reserved55,
23493 { "reserved55", "its.reserved55",
23494 FT_UINT32, BASE_DEC, NULL, 0,
23495 "SubCauseCodeType", HFILL }},
23496 { &hf_its_reserved56,
23497 { "reserved56", "its.reserved56",
23498 FT_UINT32, BASE_DEC, NULL, 0,
23499 "SubCauseCodeType", HFILL }},
23500 { &hf_its_reserved57,
23501 { "reserved57", "its.reserved57",
23502 FT_UINT32, BASE_DEC, NULL, 0,
23503 "SubCauseCodeType", HFILL }},
23504 { &hf_its_reserved58,
23505 { "reserved58", "its.reserved58",
23506 FT_UINT32, BASE_DEC, NULL, 0,
23507 "SubCauseCodeType", HFILL }},
23508 { &hf_its_reserved59,
23509 { "reserved59", "its.reserved59",
23510 FT_UINT32, BASE_DEC, NULL, 0,
23511 "SubCauseCodeType", HFILL }},
23512 { &hf_its_reserved60,
23513 { "reserved60", "its.reserved60",
23514 FT_UINT32, BASE_DEC, NULL, 0,
23515 "SubCauseCodeType", HFILL }},
23516 { &hf_its_reserved61,
23517 { "reserved61", "its.reserved61",
23518 FT_UINT32, BASE_DEC, NULL, 0,
23519 "SubCauseCodeType", HFILL }},
23520 { &hf_its_reserved62,
23521 { "reserved62", "its.reserved62",
23522 FT_UINT32, BASE_DEC, NULL, 0,
23523 "SubCauseCodeType", HFILL }},
23524 { &hf_its_reserved63,
23525 { "reserved63", "its.reserved63",
23526 FT_UINT32, BASE_DEC, NULL, 0,
23527 "SubCauseCodeType", HFILL }},
23528 { &hf_its_reserved64,
23529 { "reserved64", "its.reserved64",
23530 FT_UINT32, BASE_DEC, NULL, 0,
23531 "SubCauseCodeType", HFILL }},
23532 { &hf_its_reserved65,
23533 { "reserved65", "its.reserved65",
23534 FT_UINT32, BASE_DEC, NULL, 0,
23535 "SubCauseCodeType", HFILL }},
23536 { &hf_its_reserved66,
23537 { "reserved66", "its.reserved66",
23538 FT_UINT32, BASE_DEC, NULL, 0,
23539 "SubCauseCodeType", HFILL }},
23540 { &hf_its_reserved67,
23541 { "reserved67", "its.reserved67",
23542 FT_UINT32, BASE_DEC, NULL, 0,
23543 "SubCauseCodeType", HFILL }},
23544 { &hf_its_reserved68,
23545 { "reserved68", "its.reserved68",
23546 FT_UINT32, BASE_DEC, NULL, 0,
23547 "SubCauseCodeType", HFILL }},
23548 { &hf_its_reserved69,
23549 { "reserved69", "its.reserved69",
23550 FT_UINT32, BASE_DEC, NULL, 0,
23551 "SubCauseCodeType", HFILL }},
23552 { &hf_its_reserved70,
23553 { "reserved70", "its.reserved70",
23554 FT_UINT32, BASE_DEC, NULL, 0,
23555 "SubCauseCodeType", HFILL }},
23556 { &hf_its_reserved71,
23557 { "reserved71", "its.reserved71",
23558 FT_UINT32, BASE_DEC, NULL, 0,
23559 "SubCauseCodeType", HFILL }},
23560 { &hf_its_reserved72,
23561 { "reserved72", "its.reserved72",
23562 FT_UINT32, BASE_DEC, NULL, 0,
23563 "SubCauseCodeType", HFILL }},
23564 { &hf_its_reserved73,
23565 { "reserved73", "its.reserved73",
23566 FT_UINT32, BASE_DEC, NULL, 0,
23567 "SubCauseCodeType", HFILL }},
23568 { &hf_its_reserved74,
23569 { "reserved74", "its.reserved74",
23570 FT_UINT32, BASE_DEC, NULL, 0,
23571 "SubCauseCodeType", HFILL }},
23572 { &hf_its_reserved75,
23573 { "reserved75", "its.reserved75",
23574 FT_UINT32, BASE_DEC, NULL, 0,
23575 "SubCauseCodeType", HFILL }},
23576 { &hf_its_reserved76,
23577 { "reserved76", "its.reserved76",
23578 FT_UINT32, BASE_DEC, NULL, 0,
23579 "SubCauseCodeType", HFILL }},
23580 { &hf_its_reserved77,
23581 { "reserved77", "its.reserved77",
23582 FT_UINT32, BASE_DEC, NULL, 0,
23583 "SubCauseCodeType", HFILL }},
23584 { &hf_its_reserved78,
23585 { "reserved78", "its.reserved78",
23586 FT_UINT32, BASE_DEC, NULL, 0,
23587 "SubCauseCodeType", HFILL }},
23588 { &hf_its_reserved79,
23589 { "reserved79", "its.reserved79",
23590 FT_UINT32, BASE_DEC, NULL, 0,
23591 "SubCauseCodeType", HFILL }},
23592 { &hf_its_reserved80,
23593 { "reserved80", "its.reserved80",
23594 FT_UINT32, BASE_DEC, NULL, 0,
23595 "SubCauseCodeType", HFILL }},
23596 { &hf_its_reserved81,
23597 { "reserved81", "its.reserved81",
23598 FT_UINT32, BASE_DEC, NULL, 0,
23599 "SubCauseCodeType", HFILL }},
23600 { &hf_its_reserved82,
23601 { "reserved82", "its.reserved82",
23602 FT_UINT32, BASE_DEC, NULL, 0,
23603 "SubCauseCodeType", HFILL }},
23604 { &hf_its_reserved83,
23605 { "reserved83", "its.reserved83",
23606 FT_UINT32, BASE_DEC, NULL, 0,
23607 "SubCauseCodeType", HFILL }},
23608 { &hf_its_reserved84,
23609 { "reserved84", "its.reserved84",
23610 FT_UINT32, BASE_DEC, NULL, 0,
23611 "SubCauseCodeType", HFILL }},
23612 { &hf_its_reserved85,
23613 { "reserved85", "its.reserved85",
23614 FT_UINT32, BASE_DEC, NULL, 0,
23615 "SubCauseCodeType", HFILL }},
23616 { &hf_its_reserved86,
23617 { "reserved86", "its.reserved86",
23618 FT_UINT32, BASE_DEC, NULL, 0,
23619 "SubCauseCodeType", HFILL }},
23620 { &hf_its_reserved87,
23621 { "reserved87", "its.reserved87",
23622 FT_UINT32, BASE_DEC, NULL, 0,
23623 "SubCauseCodeType", HFILL }},
23624 { &hf_its_reserved88,
23625 { "reserved88", "its.reserved88",
23626 FT_UINT32, BASE_DEC, NULL, 0,
23627 "SubCauseCodeType", HFILL }},
23628 { &hf_its_reserved89,
23629 { "reserved89", "its.reserved89",
23630 FT_UINT32, BASE_DEC, NULL, 0,
23631 "SubCauseCodeType", HFILL }},
23632 { &hf_its_reserved90,
23633 { "reserved90", "its.reserved90",
23634 FT_UINT32, BASE_DEC, NULL, 0,
23635 "SubCauseCodeType", HFILL }},
23636 { &hf_its_vehicleBreakdown91,
23637 { "vehicleBreakdown91", "its.vehicleBreakdown91",
23638 FT_UINT32, BASE_DEC, VALS(its_VehicleBreakdownSubCauseCode_vals), 0,
23639 "VehicleBreakdownSubCauseCode", HFILL }},
23640 { &hf_its_postCrash92,
23641 { "postCrash92", "its.postCrash92",
23642 FT_UINT32, BASE_DEC, VALS(its_PostCrashSubCauseCode_vals), 0,
23643 "PostCrashSubCauseCode", HFILL }},
23644 { &hf_its_humanProblem93,
23645 { "humanProblem93", "its.humanProblem93",
23646 FT_UINT32, BASE_DEC, VALS(its_HumanProblemSubCauseCode_vals), 0,
23647 "HumanProblemSubCauseCode", HFILL }},
23648 { &hf_its_stationaryVehicle94,
23649 { "stationaryVehicle94", "its.stationaryVehicle94",
23650 FT_UINT32, BASE_DEC, VALS(its_StationaryVehicleSubCauseCode_vals), 0,
23651 "StationaryVehicleSubCauseCode", HFILL }},
23652 { &hf_its_emergencyVehicleApproaching95,
23653 { "emergencyVehicleApproaching95", "its.emergencyVehicleApproaching95",
23654 FT_UINT32, BASE_DEC, VALS(its_EmergencyVehicleApproachingSubCauseCode_vals), 0,
23655 "EmergencyVehicleApproachingSubCauseCode", HFILL }},
23656 { &hf_its_hazardousLocation_DangerousCurve96,
23657 { "hazardousLocation-DangerousCurve96", "its.hazardousLocation_DangerousCurve96",
23658 FT_UINT32, BASE_DEC, VALS(its_HazardousLocation_DangerousCurveSubCauseCode_vals), 0,
23659 "HazardousLocation_DangerousCurveSubCauseCode", HFILL }},
23660 { &hf_its_collisionRisk97,
23661 { "collisionRisk97", "its.collisionRisk97",
23662 FT_UINT32, BASE_DEC, VALS(its_CollisionRiskSubCauseCode_vals), 0,
23663 "CollisionRiskSubCauseCode", HFILL }},
23664 { &hf_its_signalViolation98,
23665 { "signalViolation98", "its.signalViolation98",
23666 FT_UINT32, BASE_DEC, VALS(its_SignalViolationSubCauseCode_vals), 0,
23667 "SignalViolationSubCauseCode", HFILL }},
23668 { &hf_its_dangerousSituation99,
23669 { "dangerousSituation99", "its.dangerousSituation99",
23670 FT_UINT32, BASE_DEC, VALS(its_DangerousSituationSubCauseCode_vals), 0,
23671 "DangerousSituationSubCauseCode", HFILL }},
23672 { &hf_its_railwayLevelCrossing100,
23673 { "railwayLevelCrossing100", "its.railwayLevelCrossing100",
23674 FT_UINT32, BASE_DEC, VALS(its_RailwayLevelCrossingSubCauseCode_vals), 0,
23675 "RailwayLevelCrossingSubCauseCode", HFILL }},
23676 { &hf_its_reserved101,
23677 { "reserved101", "its.reserved101",
23678 FT_UINT32, BASE_DEC, NULL, 0,
23679 "SubCauseCodeType", HFILL }},
23680 { &hf_its_reserved102,
23681 { "reserved102", "its.reserved102",
23682 FT_UINT32, BASE_DEC, NULL, 0,
23683 "SubCauseCodeType", HFILL }},
23684 { &hf_its_reserved103,
23685 { "reserved103", "its.reserved103",
23686 FT_UINT32, BASE_DEC, NULL, 0,
23687 "SubCauseCodeType", HFILL }},
23688 { &hf_its_reserved104,
23689 { "reserved104", "its.reserved104",
23690 FT_UINT32, BASE_DEC, NULL, 0,
23691 "SubCauseCodeType", HFILL }},
23692 { &hf_its_reserved105,
23693 { "reserved105", "its.reserved105",
23694 FT_UINT32, BASE_DEC, NULL, 0,
23695 "SubCauseCodeType", HFILL }},
23696 { &hf_its_reserved106,
23697 { "reserved106", "its.reserved106",
23698 FT_UINT32, BASE_DEC, NULL, 0,
23699 "SubCauseCodeType", HFILL }},
23700 { &hf_its_reserved107,
23701 { "reserved107", "its.reserved107",
23702 FT_UINT32, BASE_DEC, NULL, 0,
23703 "SubCauseCodeType", HFILL }},
23704 { &hf_its_reserved108,
23705 { "reserved108", "its.reserved108",
23706 FT_UINT32, BASE_DEC, NULL, 0,
23707 "SubCauseCodeType", HFILL }},
23708 { &hf_its_reserved109,
23709 { "reserved109", "its.reserved109",
23710 FT_UINT32, BASE_DEC, NULL, 0,
23711 "SubCauseCodeType", HFILL }},
23712 { &hf_its_reserved110,
23713 { "reserved110", "its.reserved110",
23714 FT_UINT32, BASE_DEC, NULL, 0,
23715 "SubCauseCodeType", HFILL }},
23716 { &hf_its_reserved111,
23717 { "reserved111", "its.reserved111",
23718 FT_UINT32, BASE_DEC, NULL, 0,
23719 "SubCauseCodeType", HFILL }},
23720 { &hf_its_reserved112,
23721 { "reserved112", "its.reserved112",
23722 FT_UINT32, BASE_DEC, NULL, 0,
23723 "SubCauseCodeType", HFILL }},
23724 { &hf_its_reserved113,
23725 { "reserved113", "its.reserved113",
23726 FT_UINT32, BASE_DEC, NULL, 0,
23727 "SubCauseCodeType", HFILL }},
23728 { &hf_its_reserved114,
23729 { "reserved114", "its.reserved114",
23730 FT_UINT32, BASE_DEC, NULL, 0,
23731 "SubCauseCodeType", HFILL }},
23732 { &hf_its_reserved115,
23733 { "reserved115", "its.reserved115",
23734 FT_UINT32, BASE_DEC, NULL, 0,
23735 "SubCauseCodeType", HFILL }},
23736 { &hf_its_reserved116,
23737 { "reserved116", "its.reserved116",
23738 FT_UINT32, BASE_DEC, NULL, 0,
23739 "SubCauseCodeType", HFILL }},
23740 { &hf_its_reserved117,
23741 { "reserved117", "its.reserved117",
23742 FT_UINT32, BASE_DEC, NULL, 0,
23743 "SubCauseCodeType", HFILL }},
23744 { &hf_its_reserved118,
23745 { "reserved118", "its.reserved118",
23746 FT_UINT32, BASE_DEC, NULL, 0,
23747 "SubCauseCodeType", HFILL }},
23748 { &hf_its_reserved119,
23749 { "reserved119", "its.reserved119",
23750 FT_UINT32, BASE_DEC, NULL, 0,
23751 "SubCauseCodeType", HFILL }},
23752 { &hf_its_reserved120,
23753 { "reserved120", "its.reserved120",
23754 FT_UINT32, BASE_DEC, NULL, 0,
23755 "SubCauseCodeType", HFILL }},
23756 { &hf_its_reserved121,
23757 { "reserved121", "its.reserved121",
23758 FT_UINT32, BASE_DEC, NULL, 0,
23759 "SubCauseCodeType", HFILL }},
23760 { &hf_its_reserved122,
23761 { "reserved122", "its.reserved122",
23762 FT_UINT32, BASE_DEC, NULL, 0,
23763 "SubCauseCodeType", HFILL }},
23764 { &hf_its_reserved123,
23765 { "reserved123", "its.reserved123",
23766 FT_UINT32, BASE_DEC, NULL, 0,
23767 "SubCauseCodeType", HFILL }},
23768 { &hf_its_reserved124,
23769 { "reserved124", "its.reserved124",
23770 FT_UINT32, BASE_DEC, NULL, 0,
23771 "SubCauseCodeType", HFILL }},
23772 { &hf_its_reserved125,
23773 { "reserved125", "its.reserved125",
23774 FT_UINT32, BASE_DEC, NULL, 0,
23775 "SubCauseCodeType", HFILL }},
23776 { &hf_its_reserved126,
23777 { "reserved126", "its.reserved126",
23778 FT_UINT32, BASE_DEC, NULL, 0,
23779 "SubCauseCodeType", HFILL }},
23780 { &hf_its_reserved127,
23781 { "reserved127", "its.reserved127",
23782 FT_UINT32, BASE_DEC, NULL, 0,
23783 "SubCauseCodeType", HFILL }},
23784 { &hf_its_reserved128,
23785 { "reserved128", "its.reserved128",
23786 FT_UINT32, BASE_DEC, NULL, 0,
23787 "SubCauseCodeType", HFILL }},
23788 { &hf_its_ccAndScc,
23789 { "ccAndScc", "its.ccAndScc",
23790 FT_UINT32, BASE_DEC, VALS(its_CauseCodeChoice_vals), 0,
23791 "CauseCodeChoice", HFILL }},
23792 { &hf_its_protectedZoneLatitude,
23793 { "protectedZoneLatitude", "its.protectedZoneLatitude",
23794 FT_INT32, BASE_CUSTOM, CF_FUNC(its_latitude_fmt), 0,
23795 "Latitude", HFILL }},
23796 { &hf_its_protectedZoneLongitude,
23797 { "protectedZoneLongitude", "its.protectedZoneLongitude",
23798 FT_INT32, BASE_CUSTOM, CF_FUNC(its_longitude_fmt), 0,
23799 "Longitude", HFILL }},
23800 { &hf_its_cenDsrcTollingZoneId,
23801 { "cenDsrcTollingZoneId", "its.cenDsrcTollingZoneId",
23802 FT_UINT32, BASE_DEC, NULL, 0,
23803 "ProtectedZoneId", HFILL }},
23804 { &hf_its_shapeReferencePoint,
23805 { "shapeReferencePoint", "its.shapeReferencePoint_element",
23806 FT_NONE, BASE_NONE, NULL, 0,
23807 "CartesianPosition3d", HFILL }},
23808 { &hf_its_radius,
23809 { "radius", "its.radius",
23810 FT_UINT32, BASE_DEC, NULL, 0,
23811 "StandardLength12b", HFILL }},
23812 { &hf_its_height,
23813 { "height", "its.height",
23814 FT_UINT32, BASE_DEC, NULL, 0,
23815 "StandardLength12b", HFILL }},
23816 { &hf_its_innerhardShoulderStatus,
23817 { "innerhardShoulderStatus", "its.innerhardShoulderStatus",
23818 FT_UINT32, BASE_DEC, VALS(its_HardShoulderStatus_vals), 0,
23819 "HardShoulderStatus", HFILL }},
23820 { &hf_its_outerhardShoulderStatus,
23821 { "outerhardShoulderStatus", "its.outerhardShoulderStatus",
23822 FT_UINT32, BASE_DEC, VALS(its_HardShoulderStatus_vals), 0,
23823 "HardShoulderStatus", HFILL }},
23824 { &hf_its_drivingLaneStatus,
23825 { "drivingLaneStatus", "its.drivingLaneStatus",
23826 FT_BYTES, BASE_NONE, NULL, 0,
23827 NULL, HFILL }},
23828 { &hf_its_clusterBreakupReason,
23829 { "clusterBreakupReason", "its.clusterBreakupReason",
23830 FT_UINT32, BASE_DEC, VALS(its_ClusterBreakupReason_vals), 0,
23831 NULL, HFILL }},
23832 { &hf_its_breakupTime,
23833 { "breakupTime", "its.breakupTime",
23834 FT_UINT32, BASE_DEC, VALS(its_DeltaTimeQuarterSecond_vals), 0,
23835 "DeltaTimeQuarterSecond", HFILL }},
23836 { &hf_its_clusterId,
23837 { "clusterId", "its.clusterId",
23838 FT_UINT32, BASE_DEC, NULL, 0,
23839 "Identifier1B", HFILL }},
23840 { &hf_its_joinTime,
23841 { "joinTime", "its.joinTime",
23842 FT_UINT32, BASE_DEC, VALS(its_DeltaTimeQuarterSecond_vals), 0,
23843 "DeltaTimeQuarterSecond", HFILL }},
23844 { &hf_its_clusterLeaveReason,
23845 { "clusterLeaveReason", "its.clusterLeaveReason",
23846 FT_UINT32, BASE_DEC, VALS(its_ClusterLeaveReason_vals), 0,
23847 NULL, HFILL }},
23848 { &hf_its_CorrelationColumn_item,
23849 { "CorrelationCellValue", "its.CorrelationCellValue",
23850 FT_INT32, BASE_DEC, VALS(its_CorrelationCellValue_vals), 0,
23851 NULL, HFILL }},
23852 { &hf_its_curvatureValue,
23853 { "curvatureValue", "its.curvatureValue",
23854 FT_INT32, BASE_CUSTOM, CF_FUNC(its_curvature_value_fmt), 0,
23855 NULL, HFILL }},
23856 { &hf_its_curvatureConfidence,
23857 { "curvatureConfidence", "its.curvatureConfidence",
23858 FT_UINT32, BASE_DEC, VALS(its_CurvatureConfidence_vals), 0,
23859 NULL, HFILL }},
23860 { &hf_its_dangerousGoodsType,
23861 { "dangerousGoodsType", "its.dangerousGoodsType",
23862 FT_UINT32, BASE_DEC, VALS(its_DangerousGoodsBasic_vals), 0,
23863 "DangerousGoodsBasic", HFILL }},
23864 { &hf_its_unNumber,
23865 { "unNumber", "its.unNumber",
23866 FT_UINT32, BASE_DEC, NULL, 0,
23867 "INTEGER_0_9999", HFILL }},
23868 { &hf_its_elevatedTemperature,
23869 { "elevatedTemperature", "its.elevatedTemperature",
23870 FT_BOOLEAN, BASE_NONE, NULL, 0,
23871 "BOOLEAN", HFILL }},
23872 { &hf_its_tunnelsRestricted,
23873 { "tunnelsRestricted", "its.tunnelsRestricted",
23874 FT_BOOLEAN, BASE_NONE, NULL, 0,
23875 "BOOLEAN", HFILL }},
23876 { &hf_its_limitedQuantity,
23877 { "limitedQuantity", "its.limitedQuantity",
23878 FT_BOOLEAN, BASE_NONE, NULL, 0,
23879 "BOOLEAN", HFILL }},
23880 { &hf_its_emergencyActionCode,
23881 { "emergencyActionCode", "its.emergencyActionCode",
23882 FT_STRING, BASE_NONE, NULL, 0,
23883 "IA5String_SIZE_1_24", HFILL }},
23884 { &hf_its_phoneNumber,
23885 { "phoneNumber", "its.phoneNumber",
23886 FT_STRING, BASE_NONE, NULL, 0,
23887 NULL, HFILL }},
23888 { &hf_its_companyName,
23889 { "companyName", "its.companyName",
23890 FT_STRING, BASE_NONE, NULL, 0,
23891 "UTF8String_SIZE_1_24", HFILL }},
23892 { &hf_its_deltaLatitude,
23893 { "deltaLatitude", "its.deltaLatitude",
23894 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_latitude_fmt), 0,
23895 NULL, HFILL }},
23896 { &hf_its_deltaLongitude,
23897 { "deltaLongitude", "its.deltaLongitude",
23898 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_longitude_fmt), 0,
23899 NULL, HFILL }},
23900 { &hf_its_deltaAltitude,
23901 { "deltaAltitude", "its.deltaAltitude",
23902 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_altitude_fmt), 0,
23903 NULL, HFILL }},
23904 { &hf_its_DigitalMap_item,
23905 { "ReferencePosition", "its.ReferencePosition_element",
23906 FT_NONE, BASE_NONE, NULL, 0,
23907 NULL, HFILL }},
23908 { &hf_its_semiMajorAxisLength,
23909 { "semiMajorAxisLength", "its.semiMajorAxisLength",
23910 FT_UINT32, BASE_DEC, NULL, 0,
23911 "StandardLength12b", HFILL }},
23912 { &hf_its_semiMinorAxisLength,
23913 { "semiMinorAxisLength", "its.semiMinorAxisLength",
23914 FT_UINT32, BASE_DEC, NULL, 0,
23915 "StandardLength12b", HFILL }},
23916 { &hf_its_orientation,
23917 { "orientation", "its.orientation",
23918 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
23919 "CartesianAngleValue", HFILL }},
23920 { &hf_its_zAngle,
23921 { "zAngle", "its.zAngle_element",
23922 FT_NONE, BASE_NONE, NULL, 0,
23923 "CartesianAngle", HFILL }},
23924 { &hf_its_yAngle,
23925 { "yAngle", "its.yAngle_element",
23926 FT_NONE, BASE_NONE, NULL, 0,
23927 "CartesianAngle", HFILL }},
23928 { &hf_its_xAngle,
23929 { "xAngle", "its.xAngle_element",
23930 FT_NONE, BASE_NONE, NULL, 0,
23931 "CartesianAngle", HFILL }},
23932 { &hf_its_euVehicleCategoryL,
23933 { "euVehicleCategoryL", "its.euVehicleCategoryL",
23934 FT_UINT32, BASE_DEC, VALS(its_EuVehicleCategoryL_vals), 0,
23935 NULL, HFILL }},
23936 { &hf_its_euVehicleCategoryM,
23937 { "euVehicleCategoryM", "its.euVehicleCategoryM",
23938 FT_UINT32, BASE_DEC, VALS(its_EuVehicleCategoryM_vals), 0,
23939 NULL, HFILL }},
23940 { &hf_its_euVehicleCategoryN,
23941 { "euVehicleCategoryN", "its.euVehicleCategoryN",
23942 FT_UINT32, BASE_DEC, VALS(its_EuVehicleCategoryN_vals), 0,
23943 NULL, HFILL }},
23944 { &hf_its_euVehicleCategoryO,
23945 { "euVehicleCategoryO", "its.euVehicleCategoryO",
23946 FT_UINT32, BASE_DEC, VALS(its_EuVehicleCategoryO_vals), 0,
23947 NULL, HFILL }},
23948 { &hf_its_euVehicleCategoryT,
23949 { "euVehicleCategoryT", "its.euVehicleCategoryT_element",
23950 FT_NONE, BASE_NONE, NULL, 0,
23951 NULL, HFILL }},
23952 { &hf_its_euVehicleCategoryG,
23953 { "euVehicleCategoryG", "its.euVehicleCategoryG_element",
23954 FT_NONE, BASE_NONE, NULL, 0,
23955 NULL, HFILL }},
23956 { &hf_its_EventHistory_item,
23957 { "EventPoint", "its.EventPoint_element",
23958 FT_NONE, BASE_NONE, NULL, 0,
23959 NULL, HFILL }},
23960 { &hf_its_eventPosition,
23961 { "eventPosition", "its.eventPosition_element",
23962 FT_NONE, BASE_NONE, NULL, 0,
23963 "DeltaReferencePosition", HFILL }},
23964 { &hf_its_eventDeltaTime,
23965 { "eventDeltaTime", "its.eventDeltaTime",
23966 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_path_delta_time_fmt), 0,
23967 "PathDeltaTime", HFILL }},
23968 { &hf_its_informationQuality,
23969 { "informationQuality", "its.informationQuality",
23970 FT_UINT32, BASE_DEC, NULL, 0,
23971 NULL, HFILL }},
23972 { &hf_its_lanePositionBased,
23973 { "lanePositionBased", "its.lanePositionBased",
23974 FT_UINT32, BASE_DEC, VALS(its_LanePositionOptions_vals), 0,
23975 "LanePositionOptions", HFILL }},
23976 { &hf_its_mapBased,
23977 { "mapBased", "its.mapBased_element",
23978 FT_NONE, BASE_NONE, NULL, 0,
23979 "MapPosition", HFILL }},
23980 { &hf_its_confidence_04,
23981 { "confidence", "its.confidence_element",
23982 FT_NONE, BASE_NONE, NULL, 0,
23983 "MetaInformation", HFILL }},
23984 { &hf_its_headingValue,
23985 { "headingValue", "its.headingValue",
23986 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_heading_value_fmt), 0,
23987 NULL, HFILL }},
23988 { &hf_its_headingConfidence,
23989 { "headingConfidence", "its.headingConfidence",
23990 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_heading_confidence_fmt), 0,
23991 NULL, HFILL }},
23992 { &hf_its_direction,
23993 { "direction", "its.direction",
23994 FT_UINT32, BASE_DEC, VALS(its_TurningDirection_vals), 0,
23995 "TurningDirection", HFILL }},
23996 { &hf_its_centreFrequency,
23997 { "centreFrequency", "its.centreFrequency",
23998 FT_UINT32, BASE_DEC, NULL, 0,
23999 "INTEGER_1_99999", HFILL }},
24000 { &hf_its_channelWidth,
24001 { "channelWidth", "its.channelWidth",
24002 FT_UINT32, BASE_DEC, NULL, 0,
24003 "INTEGER_0_9999", HFILL }},
24004 { &hf_its_exponent,
24005 { "exponent", "its.exponent",
24006 FT_UINT32, BASE_DEC, NULL, 0,
24007 "INTEGER_0_15", HFILL }},
24008 { &hf_its_zoneDefinition,
24009 { "zoneDefinition", "its.zoneDefinition_element",
24010 FT_NONE, BASE_NONE, NULL, 0,
24011 "InterferenceManagementZoneDefinition", HFILL }},
24012 { &hf_its_managementInfo,
24013 { "managementInfo", "its.managementInfo",
24014 FT_UINT32, BASE_DEC, NULL, 0,
24015 "InterferenceManagementInfo", HFILL }},
24016 { &hf_its_interferenceManagementZoneLatitude,
24017 { "interferenceManagementZoneLatitude", "its.interferenceManagementZoneLatitude",
24018 FT_INT32, BASE_CUSTOM, CF_FUNC(its_latitude_fmt), 0,
24019 "Latitude", HFILL }},
24020 { &hf_its_interferenceManagementZoneLongitude,
24021 { "interferenceManagementZoneLongitude", "its.interferenceManagementZoneLongitude",
24022 FT_INT32, BASE_CUSTOM, CF_FUNC(its_longitude_fmt), 0,
24023 "Longitude", HFILL }},
24024 { &hf_its_interferenceManagementZoneId,
24025 { "interferenceManagementZoneId", "its.interferenceManagementZoneId",
24026 FT_UINT32, BASE_DEC, NULL, 0,
24027 "ProtectedZoneId", HFILL }},
24028 { &hf_its_interferenceManagementZoneShape,
24029 { "interferenceManagementZoneShape", "its.interferenceManagementZoneShape",
24030 FT_UINT32, BASE_DEC, VALS(its_Shape_vals), 0,
24031 "Shape", HFILL }},
24032 { &hf_its_InterferenceManagementInfo_item,
24033 { "InterferenceManagementInfoPerChannel", "its.InterferenceManagementInfoPerChannel_element",
24034 FT_NONE, BASE_NONE, NULL, 0,
24035 NULL, HFILL }},
24036 { &hf_its_interferenceManagementChannel,
24037 { "interferenceManagementChannel", "its.interferenceManagementChannel_element",
24038 FT_NONE, BASE_NONE, NULL, 0,
24039 NULL, HFILL }},
24040 { &hf_its_interferenceManagementZoneType,
24041 { "interferenceManagementZoneType", "its.interferenceManagementZoneType",
24042 FT_UINT32, BASE_DEC, VALS(its_InterferenceManagementZoneType_vals), 0,
24043 NULL, HFILL }},
24044 { &hf_its_interferenceManagementMitigationType,
24045 { "interferenceManagementMitigationType", "its.interferenceManagementMitigationType",
24046 FT_UINT32, BASE_DEC, NULL, 0,
24047 "MitigationForTechnologies", HFILL }},
24048 { &hf_its_expiryTime,
24049 { "expiryTime", "its.expiryTime",
24050 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
24051 "TimestampIts", HFILL }},
24052 { &hf_its_InterferenceManagementZones_item,
24053 { "InterferenceManagementZone", "its.InterferenceManagementZone_element",
24054 FT_NONE, BASE_NONE, NULL, 0,
24055 NULL, HFILL }},
24056 { &hf_its_region,
24057 { "region", "its.region",
24058 FT_UINT32, BASE_DEC, NULL, 0,
24059 "Identifier2B", HFILL }},
24060 { &hf_its_id,
24061 { "id", "its.id",
24062 FT_UINT32, BASE_DEC, NULL, 0,
24063 "Identifier2B", HFILL }},
24064 { &hf_its_ItineraryPath_item,
24065 { "ReferencePosition", "its.ReferencePosition_element",
24066 FT_NONE, BASE_NONE, NULL, 0,
24067 NULL, HFILL }},
24068 { &hf_its_protocolVersion,
24069 { "protocolVersion", "its.protocolVersion",
24070 FT_UINT32, BASE_DEC, NULL, 0,
24071 NULL, HFILL }},
24072 { &hf_its_messageId,
24073 { "messageId", "its.messageId",
24074 FT_UINT32, BASE_DEC, VALS(its_MessageId_vals), 0,
24075 NULL, HFILL }},
24076 { &hf_its_stationId,
24077 { "stationId", "its.stationId",
24078 FT_UINT32, BASE_DEC, NULL, 0,
24079 NULL, HFILL }},
24080 { &hf_its_transversalPosition,
24081 { "transversalPosition", "its.transversalPosition",
24082 FT_INT32, BASE_DEC, VALS(its_LanePosition_vals), 0,
24083 "LanePosition", HFILL }},
24084 { &hf_its_laneType,
24085 { "laneType", "its.laneType",
24086 FT_UINT32, BASE_DEC, VALS(its_LaneType_vals), 0,
24087 NULL, HFILL }},
24088 { &hf_its_direction_01,
24089 { "direction", "its.direction",
24090 FT_UINT32, BASE_DEC, VALS(its_Direction_vals), 0,
24091 NULL, HFILL }},
24092 { &hf_its_simplelanePosition,
24093 { "simplelanePosition", "its.simplelanePosition",
24094 FT_INT32, BASE_DEC, VALS(its_LanePosition_vals), 0,
24095 "LanePosition", HFILL }},
24096 { &hf_its_simpleLaneType,
24097 { "simpleLaneType", "its.simpleLaneType",
24098 FT_UINT32, BASE_DEC, VALS(its_LaneType_vals), 0,
24099 "LaneType", HFILL }},
24100 { &hf_its_detailedlanePosition,
24101 { "detailedlanePosition", "its.detailedlanePosition_element",
24102 FT_NONE, BASE_NONE, NULL, 0,
24103 "LanePositionAndType", HFILL }},
24104 { &hf_its_lanePositionWithLateralDetails,
24105 { "lanePositionWithLateralDetails", "its.lanePositionWithLateralDetails_element",
24106 FT_NONE, BASE_NONE, NULL, 0,
24107 NULL, HFILL }},
24108 { &hf_its_trafficIslandPosition,
24109 { "trafficIslandPosition", "its.trafficIslandPosition_element",
24110 FT_NONE, BASE_NONE, NULL, 0,
24111 NULL, HFILL }},
24112 { &hf_its_lateralAccelerationValue,
24113 { "lateralAccelerationValue", "its.lateralAccelerationValue",
24114 FT_INT32, BASE_CUSTOM, CF_FUNC(its_acceleration_value_fmt), 0,
24115 NULL, HFILL }},
24116 { &hf_its_lateralAccelerationConfidence,
24117 { "lateralAccelerationConfidence", "its.lateralAccelerationConfidence",
24118 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_acceleration_confidence_fmt), 0,
24119 "AccelerationConfidence", HFILL }},
24120 { &hf_its_longitudinalAccelerationValue,
24121 { "longitudinalAccelerationValue", "its.longitudinalAccelerationValue",
24122 FT_INT32, BASE_CUSTOM, CF_FUNC(its_acceleration_value_fmt), 0,
24123 NULL, HFILL }},
24124 { &hf_its_longitudinalAccelerationConfidence,
24125 { "longitudinalAccelerationConfidence", "its.longitudinalAccelerationConfidence",
24126 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_acceleration_confidence_fmt), 0,
24127 "AccelerationConfidence", HFILL }},
24128 { &hf_its_longitudinalLanePositionValue,
24129 { "longitudinalLanePositionValue", "its.longitudinalLanePositionValue",
24130 FT_UINT32, BASE_DEC, VALS(its_LongitudinalLanePositionValue_vals), 0,
24131 NULL, HFILL }},
24132 { &hf_its_longitudinalLanePositionConfidence,
24133 { "longitudinalLanePositionConfidence", "its.longitudinalLanePositionConfidence",
24134 FT_UINT32, BASE_DEC, VALS(its_LongitudinalLanePositionConfidence_vals), 0,
24135 NULL, HFILL }},
24136 { &hf_its_LowerTriangularPositiveSemidefiniteMatrices_item,
24137 { "LowerTriangularPositiveSemidefiniteMatrix", "its.LowerTriangularPositiveSemidefiniteMatrix_element",
24138 FT_NONE, BASE_NONE, NULL, 0,
24139 NULL, HFILL }},
24140 { &hf_its_componentsIncludedIntheMatrix,
24141 { "componentsIncludedIntheMatrix", "its.componentsIncludedIntheMatrix",
24142 FT_BYTES, BASE_NONE, NULL, 0,
24143 "MatrixIncludedComponents", HFILL }},
24144 { &hf_its_matrix,
24145 { "matrix", "its.matrix",
24146 FT_UINT32, BASE_DEC, NULL, 0,
24147 "LowerTriangularPositiveSemidefiniteMatrixColumns", HFILL }},
24148 { &hf_its_LowerTriangularPositiveSemidefiniteMatrixColumns_item,
24149 { "CorrelationColumn", "its.CorrelationColumn",
24150 FT_UINT32, BASE_DEC, NULL, 0,
24151 NULL, HFILL }},
24152 { &hf_its_mapReference,
24153 { "mapReference", "its.mapReference",
24154 FT_UINT32, BASE_DEC, VALS(its_MapReference_vals), 0,
24155 NULL, HFILL }},
24156 { &hf_its_laneId,
24157 { "laneId", "its.laneId",
24158 FT_UINT32, BASE_DEC, NULL, 0,
24159 "Identifier1B", HFILL }},
24160 { &hf_its_connectionId,
24161 { "connectionId", "its.connectionId",
24162 FT_UINT32, BASE_DEC, NULL, 0,
24163 "Identifier1B", HFILL }},
24164 { &hf_its_longitudinalLanePosition,
24165 { "longitudinalLanePosition", "its.longitudinalLanePosition_element",
24166 FT_NONE, BASE_NONE, NULL, 0,
24167 NULL, HFILL }},
24168 { &hf_its_roadsegment,
24169 { "roadsegment", "its.roadsegment_element",
24170 FT_NONE, BASE_NONE, NULL, 0,
24171 "RoadSegmentReferenceId", HFILL }},
24172 { &hf_its_intersection,
24173 { "intersection", "its.intersection_element",
24174 FT_NONE, BASE_NONE, NULL, 0,
24175 "IntersectionReferenceId", HFILL }},
24176 { &hf_its_mantissa,
24177 { "mantissa", "its.mantissa",
24178 FT_UINT32, BASE_DEC, NULL, 0,
24179 "INTEGER_1_100", HFILL }},
24180 { &hf_its_exponent_01,
24181 { "exponent", "its.exponent",
24182 FT_INT32, BASE_DEC, NULL, 0,
24183 "INTEGER_M5_2", HFILL }},
24184 { &hf_its_totalMsgNo,
24185 { "totalMsgNo", "its.totalMsgNo",
24186 FT_UINT32, BASE_DEC, NULL, 0,
24187 "CardinalNumber3b", HFILL }},
24188 { &hf_its_thisMsgNo,
24189 { "thisMsgNo", "its.thisMsgNo",
24190 FT_UINT32, BASE_DEC, NULL, 0,
24191 "OrdinalNumber3b", HFILL }},
24192 { &hf_its_usedDetectionInformation,
24193 { "usedDetectionInformation", "its.usedDetectionInformation",
24194 FT_BYTES, BASE_NONE, NULL, 0,
24195 "SensorTypes", HFILL }},
24196 { &hf_its_usedStoredInformation,
24197 { "usedStoredInformation", "its.usedStoredInformation",
24198 FT_BYTES, BASE_NONE, NULL, 0,
24199 "StoredInformationType", HFILL }},
24200 { &hf_its_confidenceValue,
24201 { "confidenceValue", "its.confidenceValue",
24202 FT_UINT32, BASE_DEC, VALS(its_ConfidenceLevel_vals), 0,
24203 "ConfidenceLevel", HFILL }},
24204 { &hf_its_MitigationForTechnologies_item,
24205 { "MitigationPerTechnologyClass", "its.MitigationPerTechnologyClass_element",
24206 FT_NONE, BASE_NONE, NULL, 0,
24207 NULL, HFILL }},
24208 { &hf_its_accessTechnologyClass,
24209 { "accessTechnologyClass", "its.accessTechnologyClass",
24210 FT_UINT32, BASE_DEC, VALS(its_AccessTechnologyClass_vals), 0,
24211 NULL, HFILL }},
24212 { &hf_its_lowDutyCycle,
24213 { "lowDutyCycle", "its.lowDutyCycle",
24214 FT_UINT32, BASE_DEC, NULL, 0,
24215 "INTEGER_0_10000", HFILL }},
24216 { &hf_its_powerReduction,
24217 { "powerReduction", "its.powerReduction",
24218 FT_UINT32, BASE_DEC, NULL, 0,
24219 "INTEGER_0_30", HFILL }},
24220 { &hf_its_dmcToffLimit,
24221 { "dmcToffLimit", "its.dmcToffLimit",
24222 FT_UINT32, BASE_DEC, NULL, 0,
24223 "INTEGER_0_1200", HFILL }},
24224 { &hf_its_dmcTonLimit,
24225 { "dmcTonLimit", "its.dmcTonLimit",
24226 FT_UINT32, BASE_DEC, NULL, 0,
24227 "INTEGER_0_20", HFILL }},
24228 { &hf_its_vehicleSubClass,
24229 { "vehicleSubClass", "its.vehicleSubClass",
24230 FT_UINT32, BASE_DEC, VALS(its_TrafficParticipantType_vals), 0,
24231 "TrafficParticipantType_CONSTR001", HFILL }},
24232 { &hf_its_vruSubClass,
24233 { "vruSubClass", "its.vruSubClass",
24234 FT_UINT32, BASE_DEC, VALS(its_VruProfileAndSubprofile_vals), 0,
24235 "VruProfileAndSubprofile", HFILL }},
24236 { &hf_its_groupSubClass,
24237 { "groupSubClass", "its.groupSubClass_element",
24238 FT_NONE, BASE_NONE, NULL, 0,
24239 "VruClusterInformation", HFILL }},
24240 { &hf_its_otherSubClass,
24241 { "otherSubClass", "its.otherSubClass",
24242 FT_UINT32, BASE_DEC, VALS(its_OtherSubClass_vals), 0,
24243 NULL, HFILL }},
24244 { &hf_its_ObjectClassDescription_item,
24245 { "ObjectClassWithConfidence", "its.ObjectClassWithConfidence_element",
24246 FT_NONE, BASE_NONE, NULL, 0,
24247 NULL, HFILL }},
24248 { &hf_its_objectClass,
24249 { "objectClass", "its.objectClass",
24250 FT_UINT32, BASE_DEC, VALS(its_ObjectClass_vals), 0,
24251 NULL, HFILL }},
24252 { &hf_its_confidence_05,
24253 { "confidence", "its.confidence",
24254 FT_UINT32, BASE_DEC, VALS(its_ConfidenceLevel_vals), 0,
24255 "ConfidenceLevel", HFILL }},
24256 { &hf_its_value_04,
24257 { "value", "its.value",
24258 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_object_dimension_value_fmt), 0,
24259 "ObjectDimensionValue", HFILL }},
24260 { &hf_its_confidence_06,
24261 { "confidence", "its.confidence",
24262 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_object_dimension_confidence_fmt), 0,
24263 "ObjectDimensionConfidence", HFILL }},
24264 { &hf_its_Path_item,
24265 { "PathPoint", "its.PathPoint_element",
24266 FT_NONE, BASE_NONE, NULL, 0,
24267 NULL, HFILL }},
24268 { &hf_its_deltaTimeHighPrecision,
24269 { "deltaTimeHighPrecision", "its.deltaTimeHighPrecision",
24270 FT_UINT32, BASE_DEC, VALS(its_DeltaTimeTenthOfSecond_vals), 0,
24271 "DeltaTimeTenthOfSecond", HFILL }},
24272 { &hf_its_deltaTimeBigRange,
24273 { "deltaTimeBigRange", "its.deltaTimeBigRange",
24274 FT_UINT32, BASE_DEC, NULL, 0,
24275 "DeltaTimeTenSeconds", HFILL }},
24276 { &hf_its_PathHistory_item,
24277 { "PathPoint", "its.PathPoint_element",
24278 FT_NONE, BASE_NONE, NULL, 0,
24279 NULL, HFILL }},
24280 { &hf_its_PathPredicted_item,
24281 { "PathPointPredicted", "its.PathPointPredicted_element",
24282 FT_NONE, BASE_NONE, NULL, 0,
24283 NULL, HFILL }},
24284 { &hf_its_pathPosition,
24285 { "pathPosition", "its.pathPosition_element",
24286 FT_NONE, BASE_NONE, NULL, 0,
24287 "DeltaReferencePosition", HFILL }},
24288 { &hf_its_pathDeltaTime,
24289 { "pathDeltaTime", "its.pathDeltaTime",
24290 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_path_delta_time_fmt), 0,
24291 NULL, HFILL }},
24292 { &hf_its_horizontalPositionConfidence,
24293 { "horizontalPositionConfidence", "its.horizontalPositionConfidence_element",
24294 FT_NONE, BASE_NONE, NULL, 0,
24295 "PosConfidenceEllipse", HFILL }},
24296 { &hf_its_pathDeltaTime_01,
24297 { "pathDeltaTime", "its.pathDeltaTime",
24298 FT_UINT32, BASE_DEC, VALS(its_PathDeltaTimeChoice_vals), 0,
24299 "PathDeltaTimeChoice", HFILL }},
24300 { &hf_its_symmetricAreaOffset,
24301 { "symmetricAreaOffset", "its.symmetricAreaOffset",
24302 FT_UINT32, BASE_DEC, NULL, 0,
24303 "StandardLength9b", HFILL }},
24304 { &hf_its_asymmetricAreaOffset,
24305 { "asymmetricAreaOffset", "its.asymmetricAreaOffset",
24306 FT_UINT32, BASE_DEC, NULL, 0,
24307 "StandardLength9b", HFILL }},
24308 { &hf_its_objectId,
24309 { "objectId", "its.objectId",
24310 FT_UINT32, BASE_DEC, NULL, 0,
24311 "Identifier2B", HFILL }},
24312 { &hf_its_measurementDeltaTime,
24313 { "measurementDeltaTime", "its.measurementDeltaTime",
24314 FT_INT32, BASE_DEC, NULL, 0,
24315 "DeltaTimeMilliSecondSigned", HFILL }},
24316 { &hf_its_position,
24317 { "position", "its.position_element",
24318 FT_NONE, BASE_NONE, NULL, 0,
24319 "CartesianPosition3dWithConfidence", HFILL }},
24320 { &hf_its_velocity,
24321 { "velocity", "its.velocity",
24322 FT_UINT32, BASE_DEC, VALS(its_Velocity3dWithConfidence_vals), 0,
24323 "Velocity3dWithConfidence", HFILL }},
24324 { &hf_its_acceleration,
24325 { "acceleration", "its.acceleration",
24326 FT_UINT32, BASE_DEC, VALS(its_Acceleration3dWithConfidence_vals), 0,
24327 "Acceleration3dWithConfidence", HFILL }},
24328 { &hf_its_angles,
24329 { "angles", "its.angles_element",
24330 FT_NONE, BASE_NONE, NULL, 0,
24331 "EulerAnglesWithConfidence", HFILL }},
24332 { &hf_its_zAngularVelocity,
24333 { "zAngularVelocity", "its.zAngularVelocity_element",
24334 FT_NONE, BASE_NONE, NULL, 0,
24335 "CartesianAngularVelocityComponent", HFILL }},
24336 { &hf_its_lowerTriangularCorrelationMatrices,
24337 { "lowerTriangularCorrelationMatrices", "its.lowerTriangularCorrelationMatrices",
24338 FT_UINT32, BASE_DEC, NULL, 0,
24339 "LowerTriangularPositiveSemidefiniteMatrices", HFILL }},
24340 { &hf_its_objectDimensionZ,
24341 { "objectDimensionZ", "its.objectDimensionZ_element",
24342 FT_NONE, BASE_NONE, NULL, 0,
24343 "ObjectDimension", HFILL }},
24344 { &hf_its_objectDimensionY,
24345 { "objectDimensionY", "its.objectDimensionY_element",
24346 FT_NONE, BASE_NONE, NULL, 0,
24347 "ObjectDimension", HFILL }},
24348 { &hf_its_objectDimensionX,
24349 { "objectDimensionX", "its.objectDimensionX_element",
24350 FT_NONE, BASE_NONE, NULL, 0,
24351 "ObjectDimension", HFILL }},
24352 { &hf_its_objectAge,
24353 { "objectAge", "its.objectAge",
24354 FT_INT32, BASE_DEC, NULL, 0,
24355 "DeltaTimeMilliSecondSigned_0_2047", HFILL }},
24356 { &hf_its_objectPerceptionQuality,
24357 { "objectPerceptionQuality", "its.objectPerceptionQuality",
24358 FT_UINT32, BASE_DEC, VALS(its_ObjectPerceptionQuality_vals), 0,
24359 NULL, HFILL }},
24360 { &hf_its_sensorIdList,
24361 { "sensorIdList", "its.sensorIdList",
24362 FT_UINT32, BASE_DEC, NULL, 0,
24363 "SequenceOfIdentifier1B", HFILL }},
24364 { &hf_its_classification,
24365 { "classification", "its.classification",
24366 FT_UINT32, BASE_DEC, NULL, 0,
24367 "ObjectClassDescription", HFILL }},
24368 { &hf_its_mapPosition,
24369 { "mapPosition", "its.mapPosition_element",
24370 FT_NONE, BASE_NONE, NULL, 0,
24371 NULL, HFILL }},
24372 { &hf_its_polygon,
24373 { "polygon", "its.polygon",
24374 FT_UINT32, BASE_DEC, NULL, 0,
24375 "SequenceOfCartesianPosition3d_SIZE_3_16_", HFILL }},
24376 { &hf_its_semiMajorConfidence,
24377 { "semiMajorConfidence", "its.semiMajorConfidence",
24378 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_sax_length_fmt), 0,
24379 "SemiAxisLength", HFILL }},
24380 { &hf_its_semiMinorConfidence,
24381 { "semiMinorConfidence", "its.semiMinorConfidence",
24382 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_sax_length_fmt), 0,
24383 "SemiAxisLength", HFILL }},
24384 { &hf_its_semiMajorOrientation,
24385 { "semiMajorOrientation", "its.semiMajorOrientation",
24386 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_heading_value_fmt), 0,
24387 "HeadingValue", HFILL }},
24388 { &hf_its_semiMajorAxisLength_01,
24389 { "semiMajorAxisLength", "its.semiMajorAxisLength",
24390 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_sax_length_fmt), 0,
24391 "SemiAxisLength", HFILL }},
24392 { &hf_its_semiMinorAxisLength_01,
24393 { "semiMinorAxisLength", "its.semiMinorAxisLength",
24394 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_sax_length_fmt), 0,
24395 "SemiAxisLength", HFILL }},
24396 { &hf_its_semiMajorAxisOrientation,
24397 { "semiMajorAxisOrientation", "its.semiMajorAxisOrientation",
24398 FT_UINT32, BASE_DEC, VALS(its_Wgs84AngleValue_vals), 0,
24399 "Wgs84AngleValue", HFILL }},
24400 { &hf_its_PositionOfPillars_item,
24401 { "PosPillar", "its.PosPillar",
24402 FT_UINT32, BASE_DEC, VALS(its_PosPillar_vals), 0,
24403 NULL, HFILL }},
24404 { &hf_its_protectedZoneType,
24405 { "protectedZoneType", "its.protectedZoneType",
24406 FT_UINT32, BASE_DEC, VALS(its_ProtectedZoneType_vals), 0,
24407 NULL, HFILL }},
24408 { &hf_its_protectedZoneRadius,
24409 { "protectedZoneRadius", "its.protectedZoneRadius",
24410 FT_UINT32, BASE_DEC, NULL, 0,
24411 NULL, HFILL }},
24412 { &hf_its_protectedZoneId,
24413 { "protectedZoneId", "its.protectedZoneId",
24414 FT_UINT32, BASE_DEC, NULL, 0,
24415 NULL, HFILL }},
24416 { &hf_its_ProtectedCommunicationZonesRSU_item,
24417 { "ProtectedCommunicationZone", "its.ProtectedCommunicationZone_element",
24418 FT_NONE, BASE_NONE, NULL, 0,
24419 NULL, HFILL }},
24420 { &hf_its_ptActivationType,
24421 { "ptActivationType", "its.ptActivationType",
24422 FT_UINT32, BASE_DEC, VALS(its_PtActivationType_vals), 0,
24423 NULL, HFILL }},
24424 { &hf_its_ptActivationData,
24425 { "ptActivationData", "its.ptActivationData",
24426 FT_BYTES, BASE_NONE, NULL, 0,
24427 NULL, HFILL }},
24428 { &hf_its_range,
24429 { "range", "its.range",
24430 FT_UINT32, BASE_DEC, NULL, 0,
24431 "StandardLength12b", HFILL }},
24432 { &hf_its_horizontalOpeningAngleStart,
24433 { "horizontalOpeningAngleStart", "its.horizontalOpeningAngleStart",
24434 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
24435 "CartesianAngleValue", HFILL }},
24436 { &hf_its_horizontalOpeningAngleEnd,
24437 { "horizontalOpeningAngleEnd", "its.horizontalOpeningAngleEnd",
24438 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
24439 "CartesianAngleValue", HFILL }},
24440 { &hf_its_verticalOpeningAngleStart,
24441 { "verticalOpeningAngleStart", "its.verticalOpeningAngleStart",
24442 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
24443 "CartesianAngleValue", HFILL }},
24444 { &hf_its_verticalOpeningAngleEnd,
24445 { "verticalOpeningAngleEnd", "its.verticalOpeningAngleEnd",
24446 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
24447 "CartesianAngleValue", HFILL }},
24448 { &hf_its_refPointId,
24449 { "refPointId", "its.refPointId",
24450 FT_UINT32, BASE_DEC, NULL, 0,
24451 "Identifier1B", HFILL }},
24452 { &hf_its_xCoordinate_02,
24453 { "xCoordinate", "its.xCoordinate",
24454 FT_INT32, BASE_DEC, VALS(its_CartesianCoordinateSmall_vals), 0,
24455 "CartesianCoordinateSmall", HFILL }},
24456 { &hf_its_yCoordinate_02,
24457 { "yCoordinate", "its.yCoordinate",
24458 FT_INT32, BASE_DEC, VALS(its_CartesianCoordinateSmall_vals), 0,
24459 "CartesianCoordinateSmall", HFILL }},
24460 { &hf_its_zCoordinate_02,
24461 { "zCoordinate", "its.zCoordinate",
24462 FT_INT32, BASE_DEC, VALS(its_CartesianCoordinateSmall_vals), 0,
24463 "CartesianCoordinateSmall", HFILL }},
24464 { &hf_its_radialShapesList,
24465 { "radialShapesList", "its.radialShapesList",
24466 FT_UINT32, BASE_DEC, NULL, 0,
24467 NULL, HFILL }},
24468 { &hf_its_RadialShapesList_item,
24469 { "RadialShapeDetails", "its.RadialShapeDetails_element",
24470 FT_NONE, BASE_NONE, NULL, 0,
24471 NULL, HFILL }},
24472 { &hf_its_semiLength,
24473 { "semiLength", "its.semiLength",
24474 FT_UINT32, BASE_DEC, NULL, 0,
24475 "StandardLength12b", HFILL }},
24476 { &hf_its_semiBreadth,
24477 { "semiBreadth", "its.semiBreadth",
24478 FT_UINT32, BASE_DEC, NULL, 0,
24479 "StandardLength12b", HFILL }},
24480 { &hf_its_latitude,
24481 { "latitude", "its.latitude",
24482 FT_INT32, BASE_CUSTOM, CF_FUNC(its_latitude_fmt), 0,
24483 NULL, HFILL }},
24484 { &hf_its_longitude,
24485 { "longitude", "its.longitude",
24486 FT_INT32, BASE_CUSTOM, CF_FUNC(its_longitude_fmt), 0,
24487 NULL, HFILL }},
24488 { &hf_its_positionConfidenceEllipse,
24489 { "positionConfidenceEllipse", "its.positionConfidenceEllipse_element",
24490 FT_NONE, BASE_NONE, NULL, 0,
24491 "PosConfidenceEllipse", HFILL }},
24492 { &hf_its_altitude,
24493 { "altitude", "its.altitude_element",
24494 FT_NONE, BASE_NONE, NULL, 0,
24495 NULL, HFILL }},
24496 { &hf_its_positionConfidenceEllipse_01,
24497 { "positionConfidenceEllipse", "its.positionConfidenceEllipse_element",
24498 FT_NONE, BASE_NONE, NULL, 0,
24499 NULL, HFILL }},
24500 { &hf_its_RestrictedTypes_item,
24501 { "StationType", "its.StationType",
24502 FT_UINT32, BASE_DEC, VALS(its_StationType_vals), 0,
24503 NULL, HFILL }},
24504 { &hf_its_subjectStation,
24505 { "subjectStation", "its.subjectStation",
24506 FT_UINT32, BASE_DEC, NULL, 0,
24507 "StationId", HFILL }},
24508 { &hf_its_safeDistanceIndicator,
24509 { "safeDistanceIndicator", "its.safeDistanceIndicator",
24510 FT_BOOLEAN, BASE_NONE, NULL, 0,
24511 NULL, HFILL }},
24512 { &hf_its_timeToCollision,
24513 { "timeToCollision", "its.timeToCollision",
24514 FT_UINT32, BASE_DEC, VALS(its_DeltaTimeTenthOfSecond_vals), 0,
24515 "DeltaTimeTenthOfSecond", HFILL }},
24516 { &hf_its_SequenceOfCartesianPosition3d_item,
24517 { "CartesianPosition3d", "its.CartesianPosition3d_element",
24518 FT_NONE, BASE_NONE, NULL, 0,
24519 NULL, HFILL }},
24520 { &hf_its_SequenceOfIdentifier1B_item,
24521 { "Identifier1B", "its.Identifier1B",
24522 FT_UINT32, BASE_DEC, NULL, 0,
24523 NULL, HFILL }},
24524 { &hf_its_SequenceOfSafeDistanceIndication_item,
24525 { "SafeDistanceIndication", "its.SafeDistanceIndication_element",
24526 FT_NONE, BASE_NONE, NULL, 0,
24527 NULL, HFILL }},
24528 { &hf_its_SequenceOfTrajectoryInterceptionIndication_item,
24529 { "TrajectoryInterceptionIndication", "its.TrajectoryInterceptionIndication_element",
24530 FT_NONE, BASE_NONE, NULL, 0,
24531 NULL, HFILL }},
24532 { &hf_its_rectangular,
24533 { "rectangular", "its.rectangular_element",
24534 FT_NONE, BASE_NONE, NULL, 0,
24535 "RectangularShape", HFILL }},
24536 { &hf_its_circular,
24537 { "circular", "its.circular_element",
24538 FT_NONE, BASE_NONE, NULL, 0,
24539 "CircularShape", HFILL }},
24540 { &hf_its_polygonal,
24541 { "polygonal", "its.polygonal_element",
24542 FT_NONE, BASE_NONE, NULL, 0,
24543 "PolygonalShape", HFILL }},
24544 { &hf_its_elliptical,
24545 { "elliptical", "its.elliptical_element",
24546 FT_NONE, BASE_NONE, NULL, 0,
24547 "EllipticalShape", HFILL }},
24548 { &hf_its_radial,
24549 { "radial", "its.radial_element",
24550 FT_NONE, BASE_NONE, NULL, 0,
24551 "RadialShape", HFILL }},
24552 { &hf_its_radialShapes,
24553 { "radialShapes", "its.radialShapes_element",
24554 FT_NONE, BASE_NONE, NULL, 0,
24555 NULL, HFILL }},
24556 { &hf_its_speedValue,
24557 { "speedValue", "its.speedValue",
24558 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_value_fmt), 0,
24559 NULL, HFILL }},
24560 { &hf_its_speedConfidence,
24561 { "speedConfidence", "its.speedConfidence",
24562 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_confidence_fmt), 0,
24563 NULL, HFILL }},
24564 { &hf_its_lossProbability,
24565 { "lossProbability", "its.lossProbability",
24566 FT_UINT32, BASE_DEC, VALS(its_StabilityLossProbability_vals), 0,
24567 "StabilityLossProbability", HFILL }},
24568 { &hf_its_steeringWheelAngleValue,
24569 { "steeringWheelAngleValue", "its.steeringWheelAngleValue",
24570 FT_INT32, BASE_CUSTOM, CF_FUNC(its_swa_value_fmt), 0,
24571 NULL, HFILL }},
24572 { &hf_its_steeringWheelAngleConfidence,
24573 { "steeringWheelAngleConfidence", "its.steeringWheelAngleConfidence",
24574 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_swa_confidence_fmt), 0,
24575 NULL, HFILL }},
24576 { &hf_its_Traces_item,
24577 { "Path", "its.Path",
24578 FT_UINT32, BASE_DEC, NULL, 0,
24579 NULL, HFILL }},
24580 { &hf_its_oneSide,
24581 { "oneSide", "its.oneSide_element",
24582 FT_NONE, BASE_NONE, NULL, 0,
24583 "LanePositionAndType", HFILL }},
24584 { &hf_its_otherSide,
24585 { "otherSide", "its.otherSide_element",
24586 FT_NONE, BASE_NONE, NULL, 0,
24587 "LanePositionAndType", HFILL }},
24588 { &hf_its_hitchPointOffset,
24589 { "hitchPointOffset", "its.hitchPointOffset",
24590 FT_UINT32, BASE_DEC, NULL, 0,
24591 "StandardLength1B", HFILL }},
24592 { &hf_its_frontOverhang,
24593 { "frontOverhang", "its.frontOverhang",
24594 FT_UINT32, BASE_DEC, NULL, 0,
24595 "StandardLength1B", HFILL }},
24596 { &hf_its_rearOverhang,
24597 { "rearOverhang", "its.rearOverhang",
24598 FT_UINT32, BASE_DEC, NULL, 0,
24599 "StandardLength1B", HFILL }},
24600 { &hf_its_trailerWidth,
24601 { "trailerWidth", "its.trailerWidth",
24602 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_vehicle_width_fmt), 0,
24603 "VehicleWidth", HFILL }},
24604 { &hf_its_hitchAngle,
24605 { "hitchAngle", "its.hitchAngle_element",
24606 FT_NONE, BASE_NONE, NULL, 0,
24607 "CartesianAngle", HFILL }},
24608 { &hf_its_trajectoryInterceptionProbability,
24609 { "trajectoryInterceptionProbability", "its.trajectoryInterceptionProbability",
24610 FT_UINT32, BASE_DEC, VALS(its_TrajectoryInterceptionProbability_vals), 0,
24611 NULL, HFILL }},
24612 { &hf_its_trajectoryInterceptionConfidence,
24613 { "trajectoryInterceptionConfidence", "its.trajectoryInterceptionConfidence",
24614 FT_UINT32, BASE_DEC, VALS(its_TrajectoryInterceptionConfidence_vals), 0,
24615 NULL, HFILL }},
24616 { &hf_its_vlnContent,
24617 { "content", "its.content",
24618 FT_UINT32, BASE_DEC, NULL, 0,
24619 "INTEGER_0_127", HFILL }},
24620 { &hf_its_vlnExtension,
24621 { "extension", "its.extension",
24622 FT_UINT32, BASE_DEC, VALS(its_Ext1_vals), 0,
24623 "Ext1", HFILL }},
24624 { &hf_its_e1Content,
24625 { "content", "its.content",
24626 FT_UINT32, BASE_DEC, NULL, 0,
24627 "INTEGER_128_16511", HFILL }},
24628 { &hf_its_e2Extension,
24629 { "extension", "its.extension",
24630 FT_UINT32, BASE_DEC, VALS(its_Ext2_vals), 0,
24631 "Ext2", HFILL }},
24632 { &hf_its_e2Content,
24633 { "content", "its.content",
24634 FT_UINT32, BASE_DEC, NULL, 0,
24635 "INTEGER_16512_2113663", HFILL }},
24636 { &hf_its_e1Extension,
24637 { "extension", "its.extension",
24638 FT_UINT32, BASE_DEC, NULL, 0,
24639 "Ext3", HFILL }},
24640 { &hf_its_verticalAccelerationValue,
24641 { "verticalAccelerationValue", "its.verticalAccelerationValue",
24642 FT_INT32, BASE_CUSTOM, CF_FUNC(its_acceleration_value_fmt), 0,
24643 NULL, HFILL }},
24644 { &hf_its_verticalAccelerationConfidence,
24645 { "verticalAccelerationConfidence", "its.verticalAccelerationConfidence",
24646 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_acceleration_confidence_fmt), 0,
24647 "AccelerationConfidence", HFILL }},
24648 { &hf_its_wMInumber,
24649 { "wMInumber", "its.wMInumber",
24650 FT_STRING, BASE_NONE, NULL, 0,
24651 NULL, HFILL }},
24652 { &hf_its_vDS,
24653 { "vDS", "its.vDS",
24654 FT_STRING, BASE_NONE, NULL, 0,
24655 NULL, HFILL }},
24656 { &hf_its_vehicleLengthValue,
24657 { "vehicleLengthValue", "its.vehicleLengthValue",
24658 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_vehicle_length_value_fmt), 0,
24659 NULL, HFILL }},
24660 { &hf_its_vehicleLengthConfidenceIndication,
24661 { "vehicleLengthConfidenceIndication", "its.vehicleLengthConfidenceIndication",
24662 FT_UINT32, BASE_DEC, VALS(its_VehicleLengthConfidenceIndication_vals), 0,
24663 NULL, HFILL }},
24664 { &hf_its_polarVelocity,
24665 { "polarVelocity", "its.polarVelocity_element",
24666 FT_NONE, BASE_NONE, NULL, 0,
24667 "VelocityPolarWithZ", HFILL }},
24668 { &hf_its_cartesianVelocity,
24669 { "cartesianVelocity", "its.cartesianVelocity_element",
24670 FT_NONE, BASE_NONE, NULL, 0,
24671 "VelocityCartesian", HFILL }},
24672 { &hf_its_xVelocity,
24673 { "xVelocity", "its.xVelocity_element",
24674 FT_NONE, BASE_NONE, NULL, 0,
24675 "VelocityComponent", HFILL }},
24676 { &hf_its_yVelocity,
24677 { "yVelocity", "its.yVelocity_element",
24678 FT_NONE, BASE_NONE, NULL, 0,
24679 "VelocityComponent", HFILL }},
24680 { &hf_its_zVelocity,
24681 { "zVelocity", "its.zVelocity_element",
24682 FT_NONE, BASE_NONE, NULL, 0,
24683 "VelocityComponent", HFILL }},
24684 { &hf_its_value_05,
24685 { "value", "its.value",
24686 FT_INT32, BASE_DEC, VALS(its_VelocityComponentValue_vals), 0,
24687 "VelocityComponentValue", HFILL }},
24688 { &hf_its_confidence_07,
24689 { "confidence", "its.confidence",
24690 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_confidence_fmt), 0,
24691 "SpeedConfidence", HFILL }},
24692 { &hf_its_velocityMagnitude,
24693 { "velocityMagnitude", "its.velocityMagnitude_element",
24694 FT_NONE, BASE_NONE, NULL, 0,
24695 "Speed", HFILL }},
24696 { &hf_its_velocityDirection,
24697 { "velocityDirection", "its.velocityDirection_element",
24698 FT_NONE, BASE_NONE, NULL, 0,
24699 "CartesianAngle", HFILL }},
24700 { &hf_its_clusterBoundingBoxShape,
24701 { "clusterBoundingBoxShape", "its.clusterBoundingBoxShape",
24702 FT_UINT32, BASE_DEC, VALS(its_Shape_vals), 0,
24703 "Shape", HFILL }},
24704 { &hf_its_clusterCardinalitySize,
24705 { "clusterCardinalitySize", "its.clusterCardinalitySize",
24706 FT_UINT32, BASE_DEC, NULL, 0,
24707 "CardinalNumber1B", HFILL }},
24708 { &hf_its_clusterProfiles,
24709 { "clusterProfiles", "its.clusterProfiles",
24710 FT_BYTES, BASE_NONE, NULL, 0,
24711 "VruClusterProfiles", HFILL }},
24712 { &hf_its_vehicular,
24713 { "vehicular", "its.vehicular",
24714 FT_BYTES, BASE_NONE, NULL, 0,
24715 "ExteriorLights", HFILL }},
24716 { &hf_its_vruSpecific,
24717 { "vruSpecific", "its.vruSpecific",
24718 FT_BYTES, BASE_NONE, NULL, 0,
24719 "VruSpecificExteriorLights", HFILL }},
24720 { &hf_its_pedestrian,
24721 { "pedestrian", "its.pedestrian",
24722 FT_UINT32, BASE_DEC, VALS(its_VruSubProfilePedestrian_vals), 0,
24723 "VruSubProfilePedestrian", HFILL }},
24724 { &hf_its_bicyclistAndLightVruVehicle,
24725 { "bicyclistAndLightVruVehicle", "its.bicyclistAndLightVruVehicle",
24726 FT_UINT32, BASE_DEC, VALS(its_VruSubProfileBicyclist_vals), 0,
24727 "VruSubProfileBicyclist", HFILL }},
24728 { &hf_its_motorcyclist,
24729 { "motorcyclist", "its.motorcyclist",
24730 FT_UINT32, BASE_DEC, VALS(its_VruSubProfileMotorcyclist_vals), 0,
24731 "VruSubProfileMotorcyclist", HFILL }},
24732 { &hf_its_animal,
24733 { "animal", "its.animal",
24734 FT_UINT32, BASE_DEC, VALS(its_VruSubProfileAnimal_vals), 0,
24735 "VruSubProfileAnimal", HFILL }},
24736 { &hf_its_value_06,
24737 { "value", "its.value",
24738 FT_UINT32, BASE_DEC, VALS(its_Wgs84AngleValue_vals), 0,
24739 "Wgs84AngleValue", HFILL }},
24740 { &hf_its_confidence_08,
24741 { "confidence", "its.confidence",
24742 FT_UINT32, BASE_DEC, VALS(its_Wgs84AngleConfidence_vals), 0,
24743 "Wgs84AngleConfidence", HFILL }},
24744 { &hf_its_yawRateValue,
24745 { "yawRateValue", "its.yawRateValue",
24746 FT_INT32, BASE_CUSTOM, CF_FUNC(its_yaw_rate_value_fmt), 0,
24747 NULL, HFILL }},
24748 { &hf_its_yawRateConfidence,
24749 { "yawRateConfidence", "its.yawRateConfidence",
24750 FT_UINT32, BASE_DEC, VALS(its_YawRateConfidence_vals), 0,
24751 NULL, HFILL }},
24752 { &hf_its_distanceToLeftBorder,
24753 { "distanceToLeftBorder", "its.distanceToLeftBorder",
24754 FT_UINT32, BASE_DEC, NULL, 0,
24755 "StandardLength9b", HFILL }},
24756 { &hf_its_distanceToRightBorder,
24757 { "distanceToRightBorder", "its.distanceToRightBorder",
24758 FT_UINT32, BASE_DEC, NULL, 0,
24759 "StandardLength9b", HFILL }},
24760 { &hf_its_AccelerationControl_brakePedalEngaged,
24761 { "brakePedalEngaged", "its.AccelerationControl.brakePedalEngaged",
24762 FT_BOOLEAN, 8, NULL, 0x80,
24763 NULL, HFILL }},
24764 { &hf_its_AccelerationControl_gasPedalEngaged,
24765 { "gasPedalEngaged", "its.AccelerationControl.gasPedalEngaged",
24766 FT_BOOLEAN, 8, NULL, 0x40,
24767 NULL, HFILL }},
24768 { &hf_its_AccelerationControl_emergencyBrakeEngaged,
24769 { "emergencyBrakeEngaged", "its.AccelerationControl.emergencyBrakeEngaged",
24770 FT_BOOLEAN, 8, NULL, 0x20,
24771 NULL, HFILL }},
24772 { &hf_its_AccelerationControl_collisionWarningEngaged,
24773 { "collisionWarningEngaged", "its.AccelerationControl.collisionWarningEngaged",
24774 FT_BOOLEAN, 8, NULL, 0x10,
24775 NULL, HFILL }},
24776 { &hf_its_AccelerationControl_accEngaged,
24777 { "accEngaged", "its.AccelerationControl.accEngaged",
24778 FT_BOOLEAN, 8, NULL, 0x08,
24779 NULL, HFILL }},
24780 { &hf_its_AccelerationControl_cruiseControlEngaged,
24781 { "cruiseControlEngaged", "its.AccelerationControl.cruiseControlEngaged",
24782 FT_BOOLEAN, 8, NULL, 0x04,
24783 NULL, HFILL }},
24784 { &hf_its_AccelerationControl_speedLimiterEngaged,
24785 { "speedLimiterEngaged", "its.AccelerationControl.speedLimiterEngaged",
24786 FT_BOOLEAN, 8, NULL, 0x02,
24787 NULL, HFILL }},
24788 { &hf_its_EmergencyPriority_requestForRightOfWay,
24789 { "requestForRightOfWay", "its.EmergencyPriority.requestForRightOfWay",
24790 FT_BOOLEAN, 8, NULL, 0x80,
24791 NULL, HFILL }},
24792 { &hf_its_EmergencyPriority_requestForFreeCrossingAtATrafficLight,
24793 { "requestForFreeCrossingAtATrafficLight", "its.EmergencyPriority.requestForFreeCrossingAtATrafficLight",
24794 FT_BOOLEAN, 8, NULL, 0x40,
24795 NULL, HFILL }},
24796 { &hf_its_EnergyStorageType_hydrogenStorage,
24797 { "hydrogenStorage", "its.EnergyStorageType.hydrogenStorage",
24798 FT_BOOLEAN, 8, NULL, 0x80,
24799 NULL, HFILL }},
24800 { &hf_its_EnergyStorageType_electricEnergyStorage,
24801 { "electricEnergyStorage", "its.EnergyStorageType.electricEnergyStorage",
24802 FT_BOOLEAN, 8, NULL, 0x40,
24803 NULL, HFILL }},
24804 { &hf_its_EnergyStorageType_liquidPropaneGas,
24805 { "liquidPropaneGas", "its.EnergyStorageType.liquidPropaneGas",
24806 FT_BOOLEAN, 8, NULL, 0x20,
24807 NULL, HFILL }},
24808 { &hf_its_EnergyStorageType_compressedNaturalGas,
24809 { "compressedNaturalGas", "its.EnergyStorageType.compressedNaturalGas",
24810 FT_BOOLEAN, 8, NULL, 0x10,
24811 NULL, HFILL }},
24812 { &hf_its_EnergyStorageType_diesel,
24813 { "diesel", "its.EnergyStorageType.diesel",
24814 FT_BOOLEAN, 8, NULL, 0x08,
24815 NULL, HFILL }},
24816 { &hf_its_EnergyStorageType_gasoline,
24817 { "gasoline", "its.EnergyStorageType.gasoline",
24818 FT_BOOLEAN, 8, NULL, 0x04,
24819 NULL, HFILL }},
24820 { &hf_its_EnergyStorageType_ammonia,
24821 { "ammonia", "its.EnergyStorageType.ammonia",
24822 FT_BOOLEAN, 8, NULL, 0x02,
24823 NULL, HFILL }},
24824 { &hf_its_ExteriorLights_lowBeamHeadlightsOn,
24825 { "lowBeamHeadlightsOn", "its.ExteriorLights.lowBeamHeadlightsOn",
24826 FT_BOOLEAN, 8, NULL, 0x80,
24827 NULL, HFILL }},
24828 { &hf_its_ExteriorLights_highBeamHeadlightsOn,
24829 { "highBeamHeadlightsOn", "its.ExteriorLights.highBeamHeadlightsOn",
24830 FT_BOOLEAN, 8, NULL, 0x40,
24831 NULL, HFILL }},
24832 { &hf_its_ExteriorLights_leftTurnSignalOn,
24833 { "leftTurnSignalOn", "its.ExteriorLights.leftTurnSignalOn",
24834 FT_BOOLEAN, 8, NULL, 0x20,
24835 NULL, HFILL }},
24836 { &hf_its_ExteriorLights_rightTurnSignalOn,
24837 { "rightTurnSignalOn", "its.ExteriorLights.rightTurnSignalOn",
24838 FT_BOOLEAN, 8, NULL, 0x10,
24839 NULL, HFILL }},
24840 { &hf_its_ExteriorLights_daytimeRunningLightsOn,
24841 { "daytimeRunningLightsOn", "its.ExteriorLights.daytimeRunningLightsOn",
24842 FT_BOOLEAN, 8, NULL, 0x08,
24843 NULL, HFILL }},
24844 { &hf_its_ExteriorLights_reverseLightOn,
24845 { "reverseLightOn", "its.ExteriorLights.reverseLightOn",
24846 FT_BOOLEAN, 8, NULL, 0x04,
24847 NULL, HFILL }},
24848 { &hf_its_ExteriorLights_fogLightOn,
24849 { "fogLightOn", "its.ExteriorLights.fogLightOn",
24850 FT_BOOLEAN, 8, NULL, 0x02,
24851 NULL, HFILL }},
24852 { &hf_its_ExteriorLights_parkingLightsOn,
24853 { "parkingLightsOn", "its.ExteriorLights.parkingLightsOn",
24854 FT_BOOLEAN, 8, NULL, 0x01,
24855 NULL, HFILL }},
24856 { &hf_its_LightBarSirenInUse_lightBarActivated,
24857 { "lightBarActivated", "its.LightBarSirenInUse.lightBarActivated",
24858 FT_BOOLEAN, 8, NULL, 0x80,
24859 NULL, HFILL }},
24860 { &hf_its_LightBarSirenInUse_sirenActivated,
24861 { "sirenActivated", "its.LightBarSirenInUse.sirenActivated",
24862 FT_BOOLEAN, 8, NULL, 0x40,
24863 NULL, HFILL }},
24864 { &hf_its_MatrixIncludedComponents_xPosition,
24865 { "xPosition", "its.MatrixIncludedComponents.xPosition",
24866 FT_BOOLEAN, 8, NULL, 0x80,
24867 NULL, HFILL }},
24868 { &hf_its_MatrixIncludedComponents_yPosition,
24869 { "yPosition", "its.MatrixIncludedComponents.yPosition",
24870 FT_BOOLEAN, 8, NULL, 0x40,
24871 NULL, HFILL }},
24872 { &hf_its_MatrixIncludedComponents_zPosition,
24873 { "zPosition", "its.MatrixIncludedComponents.zPosition",
24874 FT_BOOLEAN, 8, NULL, 0x20,
24875 NULL, HFILL }},
24876 { &hf_its_MatrixIncludedComponents_xVelocityOrVelocityMagnitude,
24877 { "xVelocityOrVelocityMagnitude", "its.MatrixIncludedComponents.xVelocityOrVelocityMagnitude",
24878 FT_BOOLEAN, 8, NULL, 0x10,
24879 NULL, HFILL }},
24880 { &hf_its_MatrixIncludedComponents_yVelocityOrVelocityDirection,
24881 { "yVelocityOrVelocityDirection", "its.MatrixIncludedComponents.yVelocityOrVelocityDirection",
24882 FT_BOOLEAN, 8, NULL, 0x08,
24883 NULL, HFILL }},
24884 { &hf_its_MatrixIncludedComponents_zSpeed,
24885 { "zSpeed", "its.MatrixIncludedComponents.zSpeed",
24886 FT_BOOLEAN, 8, NULL, 0x04,
24887 NULL, HFILL }},
24888 { &hf_its_MatrixIncludedComponents_xAccelOrAccelMagnitude,
24889 { "xAccelOrAccelMagnitude", "its.MatrixIncludedComponents.xAccelOrAccelMagnitude",
24890 FT_BOOLEAN, 8, NULL, 0x02,
24891 NULL, HFILL }},
24892 { &hf_its_MatrixIncludedComponents_yAccelOrAccelDirection,
24893 { "yAccelOrAccelDirection", "its.MatrixIncludedComponents.yAccelOrAccelDirection",
24894 FT_BOOLEAN, 8, NULL, 0x01,
24895 NULL, HFILL }},
24896 { &hf_its_MatrixIncludedComponents_zAcceleration,
24897 { "zAcceleration", "its.MatrixIncludedComponents.zAcceleration",
24898 FT_BOOLEAN, 8, NULL, 0x80,
24899 NULL, HFILL }},
24900 { &hf_its_MatrixIncludedComponents_zAngle,
24901 { "zAngle", "its.MatrixIncludedComponents.zAngle",
24902 FT_BOOLEAN, 8, NULL, 0x40,
24903 NULL, HFILL }},
24904 { &hf_its_MatrixIncludedComponents_yAngle,
24905 { "yAngle", "its.MatrixIncludedComponents.yAngle",
24906 FT_BOOLEAN, 8, NULL, 0x20,
24907 NULL, HFILL }},
24908 { &hf_its_MatrixIncludedComponents_xAngle,
24909 { "xAngle", "its.MatrixIncludedComponents.xAngle",
24910 FT_BOOLEAN, 8, NULL, 0x10,
24911 NULL, HFILL }},
24912 { &hf_its_MatrixIncludedComponents_zAngularVelocity,
24913 { "zAngularVelocity", "its.MatrixIncludedComponents.zAngularVelocity",
24914 FT_BOOLEAN, 8, NULL, 0x08,
24915 NULL, HFILL }},
24916 { &hf_its_PositionOfOccupants_row1LeftOccupied,
24917 { "row1LeftOccupied", "its.PositionOfOccupants.row1LeftOccupied",
24918 FT_BOOLEAN, 8, NULL, 0x80,
24919 NULL, HFILL }},
24920 { &hf_its_PositionOfOccupants_row1RightOccupied,
24921 { "row1RightOccupied", "its.PositionOfOccupants.row1RightOccupied",
24922 FT_BOOLEAN, 8, NULL, 0x40,
24923 NULL, HFILL }},
24924 { &hf_its_PositionOfOccupants_row1MidOccupied,
24925 { "row1MidOccupied", "its.PositionOfOccupants.row1MidOccupied",
24926 FT_BOOLEAN, 8, NULL, 0x20,
24927 NULL, HFILL }},
24928 { &hf_its_PositionOfOccupants_row1NotDetectable,
24929 { "row1NotDetectable", "its.PositionOfOccupants.row1NotDetectable",
24930 FT_BOOLEAN, 8, NULL, 0x10,
24931 NULL, HFILL }},
24932 { &hf_its_PositionOfOccupants_row1NotPresent,
24933 { "row1NotPresent", "its.PositionOfOccupants.row1NotPresent",
24934 FT_BOOLEAN, 8, NULL, 0x08,
24935 NULL, HFILL }},
24936 { &hf_its_PositionOfOccupants_row2LeftOccupied,
24937 { "row2LeftOccupied", "its.PositionOfOccupants.row2LeftOccupied",
24938 FT_BOOLEAN, 8, NULL, 0x04,
24939 NULL, HFILL }},
24940 { &hf_its_PositionOfOccupants_row2RightOccupied,
24941 { "row2RightOccupied", "its.PositionOfOccupants.row2RightOccupied",
24942 FT_BOOLEAN, 8, NULL, 0x02,
24943 NULL, HFILL }},
24944 { &hf_its_PositionOfOccupants_row2MidOccupied,
24945 { "row2MidOccupied", "its.PositionOfOccupants.row2MidOccupied",
24946 FT_BOOLEAN, 8, NULL, 0x01,
24947 NULL, HFILL }},
24948 { &hf_its_PositionOfOccupants_row2NotDetectable,
24949 { "row2NotDetectable", "its.PositionOfOccupants.row2NotDetectable",
24950 FT_BOOLEAN, 8, NULL, 0x80,
24951 NULL, HFILL }},
24952 { &hf_its_PositionOfOccupants_row2NotPresent,
24953 { "row2NotPresent", "its.PositionOfOccupants.row2NotPresent",
24954 FT_BOOLEAN, 8, NULL, 0x40,
24955 NULL, HFILL }},
24956 { &hf_its_PositionOfOccupants_row3LeftOccupied,
24957 { "row3LeftOccupied", "its.PositionOfOccupants.row3LeftOccupied",
24958 FT_BOOLEAN, 8, NULL, 0x20,
24959 NULL, HFILL }},
24960 { &hf_its_PositionOfOccupants_row3RightOccupied,
24961 { "row3RightOccupied", "its.PositionOfOccupants.row3RightOccupied",
24962 FT_BOOLEAN, 8, NULL, 0x10,
24963 NULL, HFILL }},
24964 { &hf_its_PositionOfOccupants_row3MidOccupied,
24965 { "row3MidOccupied", "its.PositionOfOccupants.row3MidOccupied",
24966 FT_BOOLEAN, 8, NULL, 0x08,
24967 NULL, HFILL }},
24968 { &hf_its_PositionOfOccupants_row3NotDetectable,
24969 { "row3NotDetectable", "its.PositionOfOccupants.row3NotDetectable",
24970 FT_BOOLEAN, 8, NULL, 0x04,
24971 NULL, HFILL }},
24972 { &hf_its_PositionOfOccupants_row3NotPresent,
24973 { "row3NotPresent", "its.PositionOfOccupants.row3NotPresent",
24974 FT_BOOLEAN, 8, NULL, 0x02,
24975 NULL, HFILL }},
24976 { &hf_its_PositionOfOccupants_row4LeftOccupied,
24977 { "row4LeftOccupied", "its.PositionOfOccupants.row4LeftOccupied",
24978 FT_BOOLEAN, 8, NULL, 0x01,
24979 NULL, HFILL }},
24980 { &hf_its_PositionOfOccupants_row4RightOccupied,
24981 { "row4RightOccupied", "its.PositionOfOccupants.row4RightOccupied",
24982 FT_BOOLEAN, 8, NULL, 0x80,
24983 NULL, HFILL }},
24984 { &hf_its_PositionOfOccupants_row4MidOccupied,
24985 { "row4MidOccupied", "its.PositionOfOccupants.row4MidOccupied",
24986 FT_BOOLEAN, 8, NULL, 0x40,
24987 NULL, HFILL }},
24988 { &hf_its_PositionOfOccupants_row4NotDetectable,
24989 { "row4NotDetectable", "its.PositionOfOccupants.row4NotDetectable",
24990 FT_BOOLEAN, 8, NULL, 0x20,
24991 NULL, HFILL }},
24992 { &hf_its_PositionOfOccupants_row4NotPresent,
24993 { "row4NotPresent", "its.PositionOfOccupants.row4NotPresent",
24994 FT_BOOLEAN, 8, NULL, 0x10,
24995 NULL, HFILL }},
24996 { &hf_its_SensorTypes_undefined,
24997 { "undefined", "its.SensorTypes.undefined",
24998 FT_BOOLEAN, 8, NULL, 0x80,
24999 NULL, HFILL }},
25000 { &hf_its_SensorTypes_radar,
25001 { "radar", "its.SensorTypes.radar",
25002 FT_BOOLEAN, 8, NULL, 0x40,
25003 NULL, HFILL }},
25004 { &hf_its_SensorTypes_lidar,
25005 { "lidar", "its.SensorTypes.lidar",
25006 FT_BOOLEAN, 8, NULL, 0x20,
25007 NULL, HFILL }},
25008 { &hf_its_SensorTypes_monovideo,
25009 { "monovideo", "its.SensorTypes.monovideo",
25010 FT_BOOLEAN, 8, NULL, 0x10,
25011 NULL, HFILL }},
25012 { &hf_its_SensorTypes_stereovision,
25013 { "stereovision", "its.SensorTypes.stereovision",
25014 FT_BOOLEAN, 8, NULL, 0x08,
25015 NULL, HFILL }},
25016 { &hf_its_SensorTypes_nightvision,
25017 { "nightvision", "its.SensorTypes.nightvision",
25018 FT_BOOLEAN, 8, NULL, 0x04,
25019 NULL, HFILL }},
25020 { &hf_its_SensorTypes_ultrasonic,
25021 { "ultrasonic", "its.SensorTypes.ultrasonic",
25022 FT_BOOLEAN, 8, NULL, 0x02,
25023 NULL, HFILL }},
25024 { &hf_its_SensorTypes_pmd,
25025 { "pmd", "its.SensorTypes.pmd",
25026 FT_BOOLEAN, 8, NULL, 0x01,
25027 NULL, HFILL }},
25028 { &hf_its_SensorTypes_inductionLoop,
25029 { "inductionLoop", "its.SensorTypes.inductionLoop",
25030 FT_BOOLEAN, 8, NULL, 0x80,
25031 NULL, HFILL }},
25032 { &hf_its_SensorTypes_sphericalCamera,
25033 { "sphericalCamera", "its.SensorTypes.sphericalCamera",
25034 FT_BOOLEAN, 8, NULL, 0x40,
25035 NULL, HFILL }},
25036 { &hf_its_SensorTypes_uwb,
25037 { "uwb", "its.SensorTypes.uwb",
25038 FT_BOOLEAN, 8, NULL, 0x20,
25039 NULL, HFILL }},
25040 { &hf_its_SensorTypes_acoustic,
25041 { "acoustic", "its.SensorTypes.acoustic",
25042 FT_BOOLEAN, 8, NULL, 0x10,
25043 NULL, HFILL }},
25044 { &hf_its_SensorTypes_localAggregation,
25045 { "localAggregation", "its.SensorTypes.localAggregation",
25046 FT_BOOLEAN, 8, NULL, 0x08,
25047 NULL, HFILL }},
25048 { &hf_its_SensorTypes_itsAggregation,
25049 { "itsAggregation", "its.SensorTypes.itsAggregation",
25050 FT_BOOLEAN, 8, NULL, 0x04,
25051 NULL, HFILL }},
25052 { &hf_its_SpecialTransportType_heavyLoad,
25053 { "heavyLoad", "its.SpecialTransportType.heavyLoad",
25054 FT_BOOLEAN, 8, NULL, 0x80,
25055 NULL, HFILL }},
25056 { &hf_its_SpecialTransportType_excessWidth,
25057 { "excessWidth", "its.SpecialTransportType.excessWidth",
25058 FT_BOOLEAN, 8, NULL, 0x40,
25059 NULL, HFILL }},
25060 { &hf_its_SpecialTransportType_excessLength,
25061 { "excessLength", "its.SpecialTransportType.excessLength",
25062 FT_BOOLEAN, 8, NULL, 0x20,
25063 NULL, HFILL }},
25064 { &hf_its_SpecialTransportType_excessHeight,
25065 { "excessHeight", "its.SpecialTransportType.excessHeight",
25066 FT_BOOLEAN, 8, NULL, 0x10,
25067 NULL, HFILL }},
25068 { &hf_its_StoredInformationType_undefined,
25069 { "undefined", "its.StoredInformationType.undefined",
25070 FT_BOOLEAN, 8, NULL, 0x80,
25071 NULL, HFILL }},
25072 { &hf_its_StoredInformationType_staticDb,
25073 { "staticDb", "its.StoredInformationType.staticDb",
25074 FT_BOOLEAN, 8, NULL, 0x40,
25075 NULL, HFILL }},
25076 { &hf_its_StoredInformationType_dynamicDb,
25077 { "dynamicDb", "its.StoredInformationType.dynamicDb",
25078 FT_BOOLEAN, 8, NULL, 0x20,
25079 NULL, HFILL }},
25080 { &hf_its_StoredInformationType_realTimeDb,
25081 { "realTimeDb", "its.StoredInformationType.realTimeDb",
25082 FT_BOOLEAN, 8, NULL, 0x10,
25083 NULL, HFILL }},
25084 { &hf_its_StoredInformationType_map,
25085 { "map", "its.StoredInformationType.map",
25086 FT_BOOLEAN, 8, NULL, 0x08,
25087 NULL, HFILL }},
25088 { &hf_its_VruClusterProfiles_pedestrian,
25089 { "pedestrian", "its.VruClusterProfiles.pedestrian",
25090 FT_BOOLEAN, 8, NULL, 0x80,
25091 NULL, HFILL }},
25092 { &hf_its_VruClusterProfiles_bicyclist,
25093 { "bicyclist", "its.VruClusterProfiles.bicyclist",
25094 FT_BOOLEAN, 8, NULL, 0x40,
25095 NULL, HFILL }},
25096 { &hf_its_VruClusterProfiles_motorcyclist,
25097 { "motorcyclist", "its.VruClusterProfiles.motorcyclist",
25098 FT_BOOLEAN, 8, NULL, 0x20,
25099 NULL, HFILL }},
25100 { &hf_its_VruClusterProfiles_animal,
25101 { "animal", "its.VruClusterProfiles.animal",
25102 FT_BOOLEAN, 8, NULL, 0x10,
25103 NULL, HFILL }},
25104 { &hf_its_VruSpecificExteriorLights_unavailable,
25105 { "unavailable", "its.VruSpecificExteriorLights.unavailable",
25106 FT_BOOLEAN, 8, NULL, 0x80,
25107 NULL, HFILL }},
25108 { &hf_its_VruSpecificExteriorLights_backFlashLight,
25109 { "backFlashLight", "its.VruSpecificExteriorLights.backFlashLight",
25110 FT_BOOLEAN, 8, NULL, 0x40,
25111 NULL, HFILL }},
25112 { &hf_its_VruSpecificExteriorLights_helmetLight,
25113 { "helmetLight", "its.VruSpecificExteriorLights.helmetLight",
25114 FT_BOOLEAN, 8, NULL, 0x20,
25115 NULL, HFILL }},
25116 { &hf_its_VruSpecificExteriorLights_armLight,
25117 { "armLight", "its.VruSpecificExteriorLights.armLight",
25118 FT_BOOLEAN, 8, NULL, 0x10,
25119 NULL, HFILL }},
25120 { &hf_its_VruSpecificExteriorLights_legLight,
25121 { "legLight", "its.VruSpecificExteriorLights.legLight",
25122 FT_BOOLEAN, 8, NULL, 0x08,
25123 NULL, HFILL }},
25124 { &hf_its_VruSpecificExteriorLights_wheelLight,
25125 { "wheelLight", "its.VruSpecificExteriorLights.wheelLight",
25126 FT_BOOLEAN, 8, NULL, 0x04,
25127 NULL, HFILL }},
25129 /* --- Module ITS-ContainerV1 --- --- --- */
25131 { &hf_itsv1_latitude,
25132 { "latitude", "itsv1.latitude",
25133 FT_INT32, BASE_CUSTOM, CF_FUNC(its_latitude_fmt), 0,
25134 NULL, HFILL }},
25135 { &hf_itsv1_longitude,
25136 { "longitude", "itsv1.longitude",
25137 FT_INT32, BASE_CUSTOM, CF_FUNC(its_longitude_fmt), 0,
25138 NULL, HFILL }},
25139 { &hf_itsv1_positionConfidenceEllipse,
25140 { "positionConfidenceEllipse", "itsv1.positionConfidenceEllipse_element",
25141 FT_NONE, BASE_NONE, NULL, 0,
25142 "PosConfidenceEllipse", HFILL }},
25143 { &hf_itsv1_altitude,
25144 { "altitude", "itsv1.altitude_element",
25145 FT_NONE, BASE_NONE, NULL, 0,
25146 NULL, HFILL }},
25147 { &hf_itsv1_deltaLatitude,
25148 { "deltaLatitude", "itsv1.deltaLatitude",
25149 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_latitude_fmt), 0,
25150 NULL, HFILL }},
25151 { &hf_itsv1_deltaLongitude,
25152 { "deltaLongitude", "itsv1.deltaLongitude",
25153 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_longitude_fmt), 0,
25154 NULL, HFILL }},
25155 { &hf_itsv1_deltaAltitude,
25156 { "deltaAltitude", "itsv1.deltaAltitude",
25157 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_altitude_fmt), 0,
25158 NULL, HFILL }},
25159 { &hf_itsv1_altitudeValue,
25160 { "altitudeValue", "itsv1.altitudeValue",
25161 FT_INT32, BASE_CUSTOM, CF_FUNC(its_altitude_fmt), 0,
25162 NULL, HFILL }},
25163 { &hf_itsv1_altitudeConfidence,
25164 { "altitudeConfidence", "itsv1.altitudeConfidence",
25165 FT_UINT32, BASE_DEC, VALS(itsv1_AltitudeConfidence_vals), 0,
25166 NULL, HFILL }},
25167 { &hf_itsv1_semiMajorConfidence,
25168 { "semiMajorConfidence", "itsv1.semiMajorConfidence",
25169 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_sax_length_fmt), 0,
25170 "SemiAxisLength", HFILL }},
25171 { &hf_itsv1_semiMinorConfidence,
25172 { "semiMinorConfidence", "itsv1.semiMinorConfidence",
25173 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_sax_length_fmt), 0,
25174 "SemiAxisLength", HFILL }},
25175 { &hf_itsv1_semiMajorOrientation,
25176 { "semiMajorOrientation", "itsv1.semiMajorOrientation",
25177 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_heading_value_fmt), 0,
25178 "HeadingValue", HFILL }},
25179 { &hf_itsv1_pathPosition,
25180 { "pathPosition", "itsv1.pathPosition_element",
25181 FT_NONE, BASE_NONE, NULL, 0,
25182 "DeltaReferencePosition", HFILL }},
25183 { &hf_itsv1_pathDeltaTime,
25184 { "pathDeltaTime", "itsv1.pathDeltaTime",
25185 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_path_delta_time_fmt), 0,
25186 NULL, HFILL }},
25187 { &hf_itsv1_ptActivationType,
25188 { "ptActivationType", "itsv1.ptActivationType",
25189 FT_UINT32, BASE_DEC, VALS(itsv1_PtActivationType_vals), 0,
25190 NULL, HFILL }},
25191 { &hf_itsv1_ptActivationData,
25192 { "ptActivationData", "itsv1.ptActivationData",
25193 FT_BYTES, BASE_NONE, NULL, 0,
25194 NULL, HFILL }},
25195 { &hf_itsv1_causeCode,
25196 { "causeCode", "itsv1.causeCode",
25197 FT_UINT32, BASE_DEC, VALS(itsv1_CauseCodeTypeV1_vals), 0,
25198 "CauseCodeTypeV1", HFILL }},
25199 { &hf_itsv1_subCauseCode,
25200 { "subCauseCode", "itsv1.subCauseCode",
25201 FT_UINT32, BASE_DEC, NULL, 0,
25202 "SubCauseCodeTypeV1", HFILL }},
25203 { &hf_itsv1_curvatureValue,
25204 { "curvatureValue", "itsv1.curvatureValue",
25205 FT_INT32, BASE_CUSTOM, CF_FUNC(its_curvature_value_fmt), 0,
25206 NULL, HFILL }},
25207 { &hf_itsv1_curvatureConfidence,
25208 { "curvatureConfidence", "itsv1.curvatureConfidence",
25209 FT_UINT32, BASE_DEC, VALS(itsv1_CurvatureConfidence_vals), 0,
25210 NULL, HFILL }},
25211 { &hf_itsv1_headingValue,
25212 { "headingValue", "itsv1.headingValue",
25213 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_heading_value_fmt), 0,
25214 NULL, HFILL }},
25215 { &hf_itsv1_headingConfidence,
25216 { "headingConfidence", "itsv1.headingConfidence",
25217 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_heading_confidence_fmt), 0,
25218 NULL, HFILL }},
25219 { &hf_itsv1_hardShoulderStatus,
25220 { "hardShoulderStatus", "itsv1.hardShoulderStatus",
25221 FT_UINT32, BASE_DEC, VALS(itsv1_HardShoulderStatus_vals), 0,
25222 NULL, HFILL }},
25223 { &hf_itsv1_drivingLaneStatus,
25224 { "drivingLaneStatus", "itsv1.drivingLaneStatus",
25225 FT_BYTES, BASE_NONE, NULL, 0,
25226 NULL, HFILL }},
25227 { &hf_itsv1_speedValue,
25228 { "speedValue", "itsv1.speedValue",
25229 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_value_fmt), 0,
25230 NULL, HFILL }},
25231 { &hf_itsv1_speedConfidence,
25232 { "speedConfidence", "itsv1.speedConfidence",
25233 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_confidence_fmt), 0,
25234 NULL, HFILL }},
25235 { &hf_itsv1_longitudinalAccelerationValue,
25236 { "longitudinalAccelerationValue", "itsv1.longitudinalAccelerationValue",
25237 FT_INT32, BASE_CUSTOM, CF_FUNC(its_acceleration_value_fmt), 0,
25238 NULL, HFILL }},
25239 { &hf_itsv1_longitudinalAccelerationConfidence,
25240 { "longitudinalAccelerationConfidence", "itsv1.longitudinalAccelerationConfidence",
25241 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_acceleration_confidence_fmt), 0,
25242 "AccelerationConfidence", HFILL }},
25243 { &hf_itsv1_lateralAccelerationValue,
25244 { "lateralAccelerationValue", "itsv1.lateralAccelerationValue",
25245 FT_INT32, BASE_CUSTOM, CF_FUNC(its_acceleration_value_fmt), 0,
25246 NULL, HFILL }},
25247 { &hf_itsv1_lateralAccelerationConfidence,
25248 { "lateralAccelerationConfidence", "itsv1.lateralAccelerationConfidence",
25249 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_acceleration_confidence_fmt), 0,
25250 "AccelerationConfidence", HFILL }},
25251 { &hf_itsv1_verticalAccelerationValue,
25252 { "verticalAccelerationValue", "itsv1.verticalAccelerationValue",
25253 FT_INT32, BASE_CUSTOM, CF_FUNC(its_acceleration_value_fmt), 0,
25254 NULL, HFILL }},
25255 { &hf_itsv1_verticalAccelerationConfidence,
25256 { "verticalAccelerationConfidence", "itsv1.verticalAccelerationConfidence",
25257 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_acceleration_confidence_fmt), 0,
25258 "AccelerationConfidence", HFILL }},
25259 { &hf_itsv1_dangerousGoodsType,
25260 { "dangerousGoodsType", "itsv1.dangerousGoodsType",
25261 FT_UINT32, BASE_DEC, VALS(itsv1_DangerousGoodsBasic_vals), 0,
25262 "DangerousGoodsBasic", HFILL }},
25263 { &hf_itsv1_unNumber,
25264 { "unNumber", "itsv1.unNumber",
25265 FT_UINT32, BASE_DEC, NULL, 0,
25266 "INTEGER_0_9999", HFILL }},
25267 { &hf_itsv1_elevatedTemperature,
25268 { "elevatedTemperature", "itsv1.elevatedTemperature",
25269 FT_BOOLEAN, BASE_NONE, NULL, 0,
25270 "BOOLEAN", HFILL }},
25271 { &hf_itsv1_tunnelsRestricted,
25272 { "tunnelsRestricted", "itsv1.tunnelsRestricted",
25273 FT_BOOLEAN, BASE_NONE, NULL, 0,
25274 "BOOLEAN", HFILL }},
25275 { &hf_itsv1_limitedQuantity,
25276 { "limitedQuantity", "itsv1.limitedQuantity",
25277 FT_BOOLEAN, BASE_NONE, NULL, 0,
25278 "BOOLEAN", HFILL }},
25279 { &hf_itsv1_emergencyActionCode,
25280 { "emergencyActionCode", "itsv1.emergencyActionCode",
25281 FT_STRING, BASE_NONE, NULL, 0,
25282 "IA5String_SIZE_1_24", HFILL }},
25283 { &hf_itsv1_phoneNumber,
25284 { "phoneNumber", "itsv1.phoneNumber",
25285 FT_STRING, BASE_NONE, NULL, 0,
25286 "IA5String_SIZE_1_24", HFILL }},
25287 { &hf_itsv1_companyName,
25288 { "companyName", "itsv1.companyName",
25289 FT_STRING, BASE_NONE, NULL, 0,
25290 "UTF8String_SIZE_1_24", HFILL }},
25291 { &hf_itsv1_wMInumber,
25292 { "wMInumber", "itsv1.wMInumber",
25293 FT_STRING, BASE_NONE, NULL, 0,
25294 NULL, HFILL }},
25295 { &hf_itsv1_vDS,
25296 { "vDS", "itsv1.vDS",
25297 FT_STRING, BASE_NONE, NULL, 0,
25298 NULL, HFILL }},
25299 { &hf_itsv1_vehicleLengthValue,
25300 { "vehicleLengthValue", "itsv1.vehicleLengthValue",
25301 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_vehicle_length_value_fmt), 0,
25302 NULL, HFILL }},
25303 { &hf_itsv1_vehicleLengthConfidenceIndication,
25304 { "vehicleLengthConfidenceIndication", "itsv1.vehicleLengthConfidenceIndication",
25305 FT_UINT32, BASE_DEC, VALS(itsv1_VehicleLengthConfidenceIndication_vals), 0,
25306 NULL, HFILL }},
25307 { &hf_itsv1_PathHistory_item,
25308 { "PathPoint", "itsv1.PathPoint_element",
25309 FT_NONE, BASE_NONE, NULL, 0,
25310 NULL, HFILL }},
25311 { &hf_itsv1_steeringWheelAngleValue,
25312 { "steeringWheelAngleValue", "itsv1.steeringWheelAngleValue",
25313 FT_INT32, BASE_CUSTOM, CF_FUNC(its_swa_value_fmt), 0,
25314 NULL, HFILL }},
25315 { &hf_itsv1_steeringWheelAngleConfidence,
25316 { "steeringWheelAngleConfidence", "itsv1.steeringWheelAngleConfidence",
25317 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_swa_confidence_fmt), 0,
25318 NULL, HFILL }},
25319 { &hf_itsv1_yawRateValue,
25320 { "yawRateValue", "itsv1.yawRateValue",
25321 FT_INT32, BASE_CUSTOM, CF_FUNC(its_yaw_rate_value_fmt), 0,
25322 NULL, HFILL }},
25323 { &hf_itsv1_yawRateConfidence,
25324 { "yawRateConfidence", "itsv1.yawRateConfidence",
25325 FT_UINT32, BASE_DEC, VALS(itsv1_YawRateConfidence_vals), 0,
25326 NULL, HFILL }},
25327 { &hf_itsv1_originatingStationID,
25328 { "originatingStationID", "itsv1.originatingStationID",
25329 FT_UINT32, BASE_DEC, NULL, 0,
25330 "StationID", HFILL }},
25331 { &hf_itsv1_sequenceNumber,
25332 { "sequenceNumber", "itsv1.sequenceNumber",
25333 FT_UINT32, BASE_DEC, NULL, 0,
25334 NULL, HFILL }},
25335 { &hf_itsv1_ItineraryPath_item,
25336 { "ReferencePosition", "itsv1.ReferencePosition_element",
25337 FT_NONE, BASE_NONE, NULL, 0,
25338 NULL, HFILL }},
25339 { &hf_itsv1_protectedZoneType,
25340 { "protectedZoneType", "itsv1.protectedZoneType",
25341 FT_UINT32, BASE_DEC, VALS(itsv1_ProtectedZoneType_vals), 0,
25342 NULL, HFILL }},
25343 { &hf_itsv1_expiryTime,
25344 { "expiryTime", "itsv1.expiryTime",
25345 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
25346 "TimestampIts", HFILL }},
25347 { &hf_itsv1_protectedZoneLatitude,
25348 { "protectedZoneLatitude", "itsv1.protectedZoneLatitude",
25349 FT_INT32, BASE_CUSTOM, CF_FUNC(its_latitude_fmt), 0,
25350 "Latitude", HFILL }},
25351 { &hf_itsv1_protectedZoneLongitude,
25352 { "protectedZoneLongitude", "itsv1.protectedZoneLongitude",
25353 FT_INT32, BASE_CUSTOM, CF_FUNC(its_longitude_fmt), 0,
25354 "Longitude", HFILL }},
25355 { &hf_itsv1_protectedZoneRadius,
25356 { "protectedZoneRadius", "itsv1.protectedZoneRadius",
25357 FT_UINT32, BASE_DEC, VALS(itsv1_ProtectedZoneRadius_vals), 0,
25358 NULL, HFILL }},
25359 { &hf_itsv1_protectedZoneID,
25360 { "protectedZoneID", "itsv1.protectedZoneID",
25361 FT_UINT32, BASE_DEC, NULL, 0,
25362 NULL, HFILL }},
25363 { &hf_itsv1_Traces_item,
25364 { "PathHistory", "itsv1.PathHistory",
25365 FT_UINT32, BASE_DEC, NULL, 0,
25366 NULL, HFILL }},
25367 { &hf_itsv1_PositionOfPillars_item,
25368 { "PosPillar", "itsv1.PosPillar",
25369 FT_UINT32, BASE_DEC, VALS(itsv1_PosPillar_vals), 0,
25370 NULL, HFILL }},
25371 { &hf_itsv1_RestrictedTypes_item,
25372 { "StationType", "itsv1.StationType",
25373 FT_UINT32, BASE_DEC, VALS(itsv1_StationType_vals), 0,
25374 NULL, HFILL }},
25375 { &hf_itsv1_EventHistory_item,
25376 { "EventPoint", "itsv1.EventPoint_element",
25377 FT_NONE, BASE_NONE, NULL, 0,
25378 NULL, HFILL }},
25379 { &hf_itsv1_eventPosition,
25380 { "eventPosition", "itsv1.eventPosition_element",
25381 FT_NONE, BASE_NONE, NULL, 0,
25382 "DeltaReferencePosition", HFILL }},
25383 { &hf_itsv1_eventDeltaTime,
25384 { "eventDeltaTime", "itsv1.eventDeltaTime",
25385 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_path_delta_time_fmt), 0,
25386 "PathDeltaTime", HFILL }},
25387 { &hf_itsv1_informationQuality,
25388 { "informationQuality", "itsv1.informationQuality",
25389 FT_UINT32, BASE_DEC, VALS(itsv1_InformationQuality_vals), 0,
25390 NULL, HFILL }},
25391 { &hf_itsv1_ProtectedCommunicationZonesRSU_item,
25392 { "ProtectedCommunicationZone", "itsv1.ProtectedCommunicationZone_element",
25393 FT_NONE, BASE_NONE, NULL, 0,
25394 NULL, HFILL }},
25395 { &hf_itsv1_cenDsrcTollingZoneID,
25396 { "cenDsrcTollingZoneID", "itsv1.cenDsrcTollingZoneID",
25397 FT_UINT32, BASE_DEC, NULL, 0,
25398 NULL, HFILL }},
25399 { &hf_itsv1_AccelerationControl_brakePedalEngaged,
25400 { "brakePedalEngaged", "itsv1.AccelerationControl.brakePedalEngaged",
25401 FT_BOOLEAN, 8, NULL, 0x80,
25402 NULL, HFILL }},
25403 { &hf_itsv1_AccelerationControl_gasPedalEngaged,
25404 { "gasPedalEngaged", "itsv1.AccelerationControl.gasPedalEngaged",
25405 FT_BOOLEAN, 8, NULL, 0x40,
25406 NULL, HFILL }},
25407 { &hf_itsv1_AccelerationControl_emergencyBrakeEngaged,
25408 { "emergencyBrakeEngaged", "itsv1.AccelerationControl.emergencyBrakeEngaged",
25409 FT_BOOLEAN, 8, NULL, 0x20,
25410 NULL, HFILL }},
25411 { &hf_itsv1_AccelerationControl_collisionWarningEngaged,
25412 { "collisionWarningEngaged", "itsv1.AccelerationControl.collisionWarningEngaged",
25413 FT_BOOLEAN, 8, NULL, 0x10,
25414 NULL, HFILL }},
25415 { &hf_itsv1_AccelerationControl_accEngaged,
25416 { "accEngaged", "itsv1.AccelerationControl.accEngaged",
25417 FT_BOOLEAN, 8, NULL, 0x08,
25418 NULL, HFILL }},
25419 { &hf_itsv1_AccelerationControl_cruiseControlEngaged,
25420 { "cruiseControlEngaged", "itsv1.AccelerationControl.cruiseControlEngaged",
25421 FT_BOOLEAN, 8, NULL, 0x04,
25422 NULL, HFILL }},
25423 { &hf_itsv1_AccelerationControl_speedLimiterEngaged,
25424 { "speedLimiterEngaged", "itsv1.AccelerationControl.speedLimiterEngaged",
25425 FT_BOOLEAN, 8, NULL, 0x02,
25426 NULL, HFILL }},
25427 { &hf_itsv1_DrivingLaneStatus_spare_bit0,
25428 { "spare_bit0", "itsv1.DrivingLaneStatus.spare.bit0",
25429 FT_BOOLEAN, 8, NULL, 0x80,
25430 NULL, HFILL }},
25431 { &hf_itsv1_DrivingLaneStatus_outermostLaneClosed,
25432 { "outermostLaneClosed", "itsv1.DrivingLaneStatus.outermostLaneClosed",
25433 FT_BOOLEAN, 8, NULL, 0x40,
25434 NULL, HFILL }},
25435 { &hf_itsv1_DrivingLaneStatus_secondLaneFromOutsideClosed,
25436 { "secondLaneFromOutsideClosed", "itsv1.DrivingLaneStatus.secondLaneFromOutsideClosed",
25437 FT_BOOLEAN, 8, NULL, 0x20,
25438 NULL, HFILL }},
25439 { &hf_itsv1_ExteriorLights_lowBeamHeadlightsOn,
25440 { "lowBeamHeadlightsOn", "itsv1.ExteriorLights.lowBeamHeadlightsOn",
25441 FT_BOOLEAN, 8, NULL, 0x80,
25442 NULL, HFILL }},
25443 { &hf_itsv1_ExteriorLights_highBeamHeadlightsOn,
25444 { "highBeamHeadlightsOn", "itsv1.ExteriorLights.highBeamHeadlightsOn",
25445 FT_BOOLEAN, 8, NULL, 0x40,
25446 NULL, HFILL }},
25447 { &hf_itsv1_ExteriorLights_leftTurnSignalOn,
25448 { "leftTurnSignalOn", "itsv1.ExteriorLights.leftTurnSignalOn",
25449 FT_BOOLEAN, 8, NULL, 0x20,
25450 NULL, HFILL }},
25451 { &hf_itsv1_ExteriorLights_rightTurnSignalOn,
25452 { "rightTurnSignalOn", "itsv1.ExteriorLights.rightTurnSignalOn",
25453 FT_BOOLEAN, 8, NULL, 0x10,
25454 NULL, HFILL }},
25455 { &hf_itsv1_ExteriorLights_daytimeRunningLightsOn,
25456 { "daytimeRunningLightsOn", "itsv1.ExteriorLights.daytimeRunningLightsOn",
25457 FT_BOOLEAN, 8, NULL, 0x08,
25458 NULL, HFILL }},
25459 { &hf_itsv1_ExteriorLights_reverseLightOn,
25460 { "reverseLightOn", "itsv1.ExteriorLights.reverseLightOn",
25461 FT_BOOLEAN, 8, NULL, 0x04,
25462 NULL, HFILL }},
25463 { &hf_itsv1_ExteriorLights_fogLightOn,
25464 { "fogLightOn", "itsv1.ExteriorLights.fogLightOn",
25465 FT_BOOLEAN, 8, NULL, 0x02,
25466 NULL, HFILL }},
25467 { &hf_itsv1_ExteriorLights_parkingLightsOn,
25468 { "parkingLightsOn", "itsv1.ExteriorLights.parkingLightsOn",
25469 FT_BOOLEAN, 8, NULL, 0x01,
25470 NULL, HFILL }},
25471 { &hf_itsv1_SpecialTransportType_heavyLoad,
25472 { "heavyLoad", "itsv1.SpecialTransportType.heavyLoad",
25473 FT_BOOLEAN, 8, NULL, 0x80,
25474 NULL, HFILL }},
25475 { &hf_itsv1_SpecialTransportType_excessWidth,
25476 { "excessWidth", "itsv1.SpecialTransportType.excessWidth",
25477 FT_BOOLEAN, 8, NULL, 0x40,
25478 NULL, HFILL }},
25479 { &hf_itsv1_SpecialTransportType_excessLength,
25480 { "excessLength", "itsv1.SpecialTransportType.excessLength",
25481 FT_BOOLEAN, 8, NULL, 0x20,
25482 NULL, HFILL }},
25483 { &hf_itsv1_SpecialTransportType_excessHeight,
25484 { "excessHeight", "itsv1.SpecialTransportType.excessHeight",
25485 FT_BOOLEAN, 8, NULL, 0x10,
25486 NULL, HFILL }},
25487 { &hf_itsv1_LightBarSirenInUse_lightBarActivated,
25488 { "lightBarActivated", "itsv1.LightBarSirenInUse.lightBarActivated",
25489 FT_BOOLEAN, 8, NULL, 0x80,
25490 NULL, HFILL }},
25491 { &hf_itsv1_LightBarSirenInUse_sirenActivated,
25492 { "sirenActivated", "itsv1.LightBarSirenInUse.sirenActivated",
25493 FT_BOOLEAN, 8, NULL, 0x40,
25494 NULL, HFILL }},
25495 { &hf_itsv1_PositionOfOccupants_row1LeftOccupied,
25496 { "row1LeftOccupied", "itsv1.PositionOfOccupants.row1LeftOccupied",
25497 FT_BOOLEAN, 8, NULL, 0x80,
25498 NULL, HFILL }},
25499 { &hf_itsv1_PositionOfOccupants_row1RightOccupied,
25500 { "row1RightOccupied", "itsv1.PositionOfOccupants.row1RightOccupied",
25501 FT_BOOLEAN, 8, NULL, 0x40,
25502 NULL, HFILL }},
25503 { &hf_itsv1_PositionOfOccupants_row1MidOccupied,
25504 { "row1MidOccupied", "itsv1.PositionOfOccupants.row1MidOccupied",
25505 FT_BOOLEAN, 8, NULL, 0x20,
25506 NULL, HFILL }},
25507 { &hf_itsv1_PositionOfOccupants_row1NotDetectable,
25508 { "row1NotDetectable", "itsv1.PositionOfOccupants.row1NotDetectable",
25509 FT_BOOLEAN, 8, NULL, 0x10,
25510 NULL, HFILL }},
25511 { &hf_itsv1_PositionOfOccupants_row1NotPresent,
25512 { "row1NotPresent", "itsv1.PositionOfOccupants.row1NotPresent",
25513 FT_BOOLEAN, 8, NULL, 0x08,
25514 NULL, HFILL }},
25515 { &hf_itsv1_PositionOfOccupants_row2LeftOccupied,
25516 { "row2LeftOccupied", "itsv1.PositionOfOccupants.row2LeftOccupied",
25517 FT_BOOLEAN, 8, NULL, 0x04,
25518 NULL, HFILL }},
25519 { &hf_itsv1_PositionOfOccupants_row2RightOccupied,
25520 { "row2RightOccupied", "itsv1.PositionOfOccupants.row2RightOccupied",
25521 FT_BOOLEAN, 8, NULL, 0x02,
25522 NULL, HFILL }},
25523 { &hf_itsv1_PositionOfOccupants_row2MidOccupied,
25524 { "row2MidOccupied", "itsv1.PositionOfOccupants.row2MidOccupied",
25525 FT_BOOLEAN, 8, NULL, 0x01,
25526 NULL, HFILL }},
25527 { &hf_itsv1_PositionOfOccupants_row2NotDetectable,
25528 { "row2NotDetectable", "itsv1.PositionOfOccupants.row2NotDetectable",
25529 FT_BOOLEAN, 8, NULL, 0x80,
25530 NULL, HFILL }},
25531 { &hf_itsv1_PositionOfOccupants_row2NotPresent,
25532 { "row2NotPresent", "itsv1.PositionOfOccupants.row2NotPresent",
25533 FT_BOOLEAN, 8, NULL, 0x40,
25534 NULL, HFILL }},
25535 { &hf_itsv1_PositionOfOccupants_row3LeftOccupied,
25536 { "row3LeftOccupied", "itsv1.PositionOfOccupants.row3LeftOccupied",
25537 FT_BOOLEAN, 8, NULL, 0x20,
25538 NULL, HFILL }},
25539 { &hf_itsv1_PositionOfOccupants_row3RightOccupied,
25540 { "row3RightOccupied", "itsv1.PositionOfOccupants.row3RightOccupied",
25541 FT_BOOLEAN, 8, NULL, 0x10,
25542 NULL, HFILL }},
25543 { &hf_itsv1_PositionOfOccupants_row3MidOccupied,
25544 { "row3MidOccupied", "itsv1.PositionOfOccupants.row3MidOccupied",
25545 FT_BOOLEAN, 8, NULL, 0x08,
25546 NULL, HFILL }},
25547 { &hf_itsv1_PositionOfOccupants_row3NotDetectable,
25548 { "row3NotDetectable", "itsv1.PositionOfOccupants.row3NotDetectable",
25549 FT_BOOLEAN, 8, NULL, 0x04,
25550 NULL, HFILL }},
25551 { &hf_itsv1_PositionOfOccupants_row3NotPresent,
25552 { "row3NotPresent", "itsv1.PositionOfOccupants.row3NotPresent",
25553 FT_BOOLEAN, 8, NULL, 0x02,
25554 NULL, HFILL }},
25555 { &hf_itsv1_PositionOfOccupants_row4LeftOccupied,
25556 { "row4LeftOccupied", "itsv1.PositionOfOccupants.row4LeftOccupied",
25557 FT_BOOLEAN, 8, NULL, 0x01,
25558 NULL, HFILL }},
25559 { &hf_itsv1_PositionOfOccupants_row4RightOccupied,
25560 { "row4RightOccupied", "itsv1.PositionOfOccupants.row4RightOccupied",
25561 FT_BOOLEAN, 8, NULL, 0x80,
25562 NULL, HFILL }},
25563 { &hf_itsv1_PositionOfOccupants_row4MidOccupied,
25564 { "row4MidOccupied", "itsv1.PositionOfOccupants.row4MidOccupied",
25565 FT_BOOLEAN, 8, NULL, 0x40,
25566 NULL, HFILL }},
25567 { &hf_itsv1_PositionOfOccupants_row4NotDetectable,
25568 { "row4NotDetectable", "itsv1.PositionOfOccupants.row4NotDetectable",
25569 FT_BOOLEAN, 8, NULL, 0x20,
25570 NULL, HFILL }},
25571 { &hf_itsv1_PositionOfOccupants_row4NotPresent,
25572 { "row4NotPresent", "itsv1.PositionOfOccupants.row4NotPresent",
25573 FT_BOOLEAN, 8, NULL, 0x10,
25574 NULL, HFILL }},
25575 { &hf_itsv1_EnergyStorageType_hydrogenStorage,
25576 { "hydrogenStorage", "itsv1.EnergyStorageType.hydrogenStorage",
25577 FT_BOOLEAN, 8, NULL, 0x80,
25578 NULL, HFILL }},
25579 { &hf_itsv1_EnergyStorageType_electricEnergyStorage,
25580 { "electricEnergyStorage", "itsv1.EnergyStorageType.electricEnergyStorage",
25581 FT_BOOLEAN, 8, NULL, 0x40,
25582 NULL, HFILL }},
25583 { &hf_itsv1_EnergyStorageType_liquidPropaneGas,
25584 { "liquidPropaneGas", "itsv1.EnergyStorageType.liquidPropaneGas",
25585 FT_BOOLEAN, 8, NULL, 0x20,
25586 NULL, HFILL }},
25587 { &hf_itsv1_EnergyStorageType_compressedNaturalGas,
25588 { "compressedNaturalGas", "itsv1.EnergyStorageType.compressedNaturalGas",
25589 FT_BOOLEAN, 8, NULL, 0x10,
25590 NULL, HFILL }},
25591 { &hf_itsv1_EnergyStorageType_diesel,
25592 { "diesel", "itsv1.EnergyStorageType.diesel",
25593 FT_BOOLEAN, 8, NULL, 0x08,
25594 NULL, HFILL }},
25595 { &hf_itsv1_EnergyStorageType_gasoline,
25596 { "gasoline", "itsv1.EnergyStorageType.gasoline",
25597 FT_BOOLEAN, 8, NULL, 0x04,
25598 NULL, HFILL }},
25599 { &hf_itsv1_EnergyStorageType_ammonia,
25600 { "ammonia", "itsv1.EnergyStorageType.ammonia",
25601 FT_BOOLEAN, 8, NULL, 0x02,
25602 NULL, HFILL }},
25603 { &hf_itsv1_EmergencyPriority_requestForRightOfWay,
25604 { "requestForRightOfWay", "itsv1.EmergencyPriority.requestForRightOfWay",
25605 FT_BOOLEAN, 8, NULL, 0x80,
25606 NULL, HFILL }},
25607 { &hf_itsv1_EmergencyPriority_requestForFreeCrossingAtATrafficLight,
25608 { "requestForFreeCrossingAtATrafficLight", "itsv1.EmergencyPriority.requestForFreeCrossingAtATrafficLight",
25609 FT_BOOLEAN, 8, NULL, 0x40,
25610 NULL, HFILL }},
25612 /* --- Module EfcDsrcApplication --- --- --- */
25614 { &hf_dsrc_app_maxLadenweightOnAxle1,
25615 { "maxLadenweightOnAxle1", "dsrc_app.maxLadenweightOnAxle1",
25616 FT_UINT32, BASE_DEC, NULL, 0,
25617 "Int2", HFILL }},
25618 { &hf_dsrc_app_maxLadenweightOnAxle2,
25619 { "maxLadenweightOnAxle2", "dsrc_app.maxLadenweightOnAxle2",
25620 FT_UINT32, BASE_DEC, NULL, 0,
25621 "Int2", HFILL }},
25622 { &hf_dsrc_app_maxLadenweightOnAxle3,
25623 { "maxLadenweightOnAxle3", "dsrc_app.maxLadenweightOnAxle3",
25624 FT_UINT32, BASE_DEC, NULL, 0,
25625 "Int2", HFILL }},
25626 { &hf_dsrc_app_maxLadenweightOnAxle4,
25627 { "maxLadenweightOnAxle4", "dsrc_app.maxLadenweightOnAxle4",
25628 FT_UINT32, BASE_DEC, NULL, 0,
25629 "Int2", HFILL }},
25630 { &hf_dsrc_app_maxLadenweightOnAxle5,
25631 { "maxLadenweightOnAxle5", "dsrc_app.maxLadenweightOnAxle5",
25632 FT_UINT32, BASE_DEC, NULL, 0,
25633 "Int2", HFILL }},
25634 { &hf_dsrc_app_particulate,
25635 { "particulate", "dsrc_app.particulate_element",
25636 FT_NONE, BASE_NONE, NULL, 0,
25637 NULL, HFILL }},
25638 { &hf_dsrc_app_unitType,
25639 { "unitType", "dsrc_app.unitType",
25640 FT_UINT32, BASE_DEC, VALS(dsrc_app_UnitType_vals), 0,
25641 NULL, HFILL }},
25642 { &hf_dsrc_app_value,
25643 { "value", "dsrc_app.value",
25644 FT_UINT32, BASE_DEC, NULL, 0,
25645 "INTEGER_0_32767", HFILL }},
25646 { &hf_dsrc_app_absorptionCoeff,
25647 { "absorptionCoeff", "dsrc_app.absorptionCoeff",
25648 FT_UINT32, BASE_DEC, NULL, 0,
25649 "Int2", HFILL }},
25650 { &hf_dsrc_app_euroValue,
25651 { "euroValue", "dsrc_app.euroValue",
25652 FT_UINT32, BASE_DEC, VALS(dsrc_app_EuroValue_vals), 0,
25653 NULL, HFILL }},
25654 { &hf_dsrc_app_copValue,
25655 { "copValue", "dsrc_app.copValue",
25656 FT_UINT32, BASE_DEC, VALS(dsrc_app_CopValue_vals), 0,
25657 NULL, HFILL }},
25658 { &hf_dsrc_app_emissionCO,
25659 { "emissionCO", "dsrc_app.emissionCO",
25660 FT_UINT32, BASE_DEC, NULL, 0,
25661 "INTEGER_0_32767", HFILL }},
25662 { &hf_dsrc_app_emissionHC,
25663 { "emissionHC", "dsrc_app.emissionHC",
25664 FT_UINT32, BASE_DEC, NULL, 0,
25665 "Int2", HFILL }},
25666 { &hf_dsrc_app_emissionNOX,
25667 { "emissionNOX", "dsrc_app.emissionNOX",
25668 FT_UINT32, BASE_DEC, NULL, 0,
25669 "Int2", HFILL }},
25670 { &hf_dsrc_app_emissionHCNOX,
25671 { "emissionHCNOX", "dsrc_app.emissionHCNOX",
25672 FT_UINT32, BASE_DEC, NULL, 0,
25673 "Int2", HFILL }},
25674 { &hf_dsrc_app_numberOfSeats,
25675 { "numberOfSeats", "dsrc_app.numberOfSeats",
25676 FT_UINT32, BASE_DEC, NULL, 0,
25677 "Int1", HFILL }},
25678 { &hf_dsrc_app_numberOfStandingPlaces,
25679 { "numberOfStandingPlaces", "dsrc_app.numberOfStandingPlaces",
25680 FT_UINT32, BASE_DEC, NULL, 0,
25681 "Int1", HFILL }},
25682 { &hf_dsrc_app_countryCode,
25683 { "countryCode", "dsrc_app.countryCode",
25684 FT_BYTES, BASE_NONE, NULL, 0,
25685 NULL, HFILL }},
25686 { &hf_dsrc_app_providerIdentifier,
25687 { "providerIdentifier", "dsrc_app.providerIdentifier",
25688 FT_UINT32, BASE_DEC, NULL, 0,
25689 "AVIAEIIssuerIdentifier", HFILL }},
25690 { &hf_dsrc_app_soundstationary,
25691 { "soundstationary", "dsrc_app.soundstationary",
25692 FT_UINT32, BASE_DEC, NULL, 0,
25693 "Int1", HFILL }},
25694 { &hf_dsrc_app_sounddriveby,
25695 { "sounddriveby", "dsrc_app.sounddriveby",
25696 FT_UINT32, BASE_DEC, NULL, 0,
25697 "Int1", HFILL }},
25698 { &hf_dsrc_app_vehicleLengthOverall,
25699 { "vehicleLengthOverall", "dsrc_app.vehicleLengthOverall",
25700 FT_UINT32, BASE_DEC, NULL, 0,
25701 "Int1", HFILL }},
25702 { &hf_dsrc_app_vehicleHeigthOverall,
25703 { "vehicleHeigthOverall", "dsrc_app.vehicleHeigthOverall",
25704 FT_UINT32, BASE_DEC, NULL, 0,
25705 "Int1", HFILL }},
25706 { &hf_dsrc_app_vehicleWidthOverall,
25707 { "vehicleWidthOverall", "dsrc_app.vehicleWidthOverall",
25708 FT_UINT32, BASE_DEC, NULL, 0,
25709 "Int1", HFILL }},
25710 { &hf_dsrc_app_vehicleMaxLadenWeight,
25711 { "vehicleMaxLadenWeight", "dsrc_app.vehicleMaxLadenWeight",
25712 FT_UINT32, BASE_DEC, NULL, 0,
25713 "Int2", HFILL }},
25714 { &hf_dsrc_app_vehicleTrainMaximumWeight,
25715 { "vehicleTrainMaximumWeight", "dsrc_app.vehicleTrainMaximumWeight",
25716 FT_UINT32, BASE_DEC, NULL, 0,
25717 "Int2", HFILL }},
25718 { &hf_dsrc_app_vehicleWeightUnladen,
25719 { "vehicleWeightUnladen", "dsrc_app.vehicleWeightUnladen",
25720 FT_UINT32, BASE_DEC, NULL, 0,
25721 "Int2", HFILL }},
25723 /* --- Module DSRC --- --- --- */
25725 { &hf_dsrc_dsrc_MapData_PDU,
25726 { "MapData", "dsrc.MapData_element",
25727 FT_NONE, BASE_NONE, NULL, 0,
25728 NULL, HFILL }},
25729 { &hf_dsrc_dsrc_RTCMcorrections_PDU,
25730 { "RTCMcorrections", "dsrc.RTCMcorrections_element",
25731 FT_NONE, BASE_NONE, NULL, 0,
25732 NULL, HFILL }},
25733 { &hf_dsrc_dsrc_SPAT_PDU,
25734 { "SPAT", "dsrc.SPAT_element",
25735 FT_NONE, BASE_NONE, NULL, 0,
25736 NULL, HFILL }},
25737 { &hf_dsrc_dsrc_SignalRequestMessage_PDU,
25738 { "SignalRequestMessage", "dsrc.SignalRequestMessage_element",
25739 FT_NONE, BASE_NONE, NULL, 0,
25740 NULL, HFILL }},
25741 { &hf_dsrc_dsrc_SignalStatusMessage_PDU,
25742 { "SignalStatusMessage", "dsrc.SignalStatusMessage_element",
25743 FT_NONE, BASE_NONE, NULL, 0,
25744 NULL, HFILL }},
25745 { &hf_dsrc_regionId,
25746 { "regionId", "dsrc.regionId",
25747 FT_UINT32, BASE_DEC, VALS(dsrc_RegionId_vals), 0,
25748 NULL, HFILL }},
25749 { &hf_dsrc_regExtValue,
25750 { "regExtValue", "dsrc.regExtValue_element",
25751 FT_NONE, BASE_NONE, NULL, 0,
25752 NULL, HFILL }},
25753 { &hf_dsrc_mdTimeStamp,
25754 { "timeStamp", "dsrc.timeStamp",
25755 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_moi_fmt), 0,
25756 "MinuteOfTheYear", HFILL }},
25757 { &hf_dsrc_msgIssueRevision,
25758 { "msgIssueRevision", "dsrc.msgIssueRevision",
25759 FT_UINT32, BASE_DEC, NULL, 0,
25760 "MsgCount", HFILL }},
25761 { &hf_dsrc_layerType,
25762 { "layerType", "dsrc.layerType",
25763 FT_UINT32, BASE_DEC, VALS(dsrc_LayerType_vals), 0,
25764 NULL, HFILL }},
25765 { &hf_dsrc_layerID,
25766 { "layerID", "dsrc.layerID",
25767 FT_UINT32, BASE_DEC, NULL, 0,
25768 NULL, HFILL }},
25769 { &hf_dsrc_mdIntersections,
25770 { "intersections", "dsrc.intersections",
25771 FT_UINT32, BASE_DEC, NULL, 0,
25772 "IntersectionGeometryList", HFILL }},
25773 { &hf_dsrc_roadSegments,
25774 { "roadSegments", "dsrc.roadSegments",
25775 FT_UINT32, BASE_DEC, NULL, 0,
25776 "RoadSegmentList", HFILL }},
25777 { &hf_dsrc_dataParameters,
25778 { "dataParameters", "dsrc.dataParameters_element",
25779 FT_NONE, BASE_NONE, NULL, 0,
25780 NULL, HFILL }},
25781 { &hf_dsrc_restrictionList,
25782 { "restrictionList", "dsrc.restrictionList",
25783 FT_UINT32, BASE_DEC, NULL, 0,
25784 "RestrictionClassList", HFILL }},
25785 { &hf_dsrc_mapRegional,
25786 { "regional", "dsrc.regional",
25787 FT_UINT32, BASE_DEC, NULL, 0,
25788 "T_MAPRegional", HFILL }},
25789 { &hf_dsrc_mapRegional_item,
25790 { "RegionalExtension", "dsrc.RegionalExtension_element",
25791 FT_NONE, BASE_NONE, NULL, 0,
25792 NULL, HFILL }},
25793 { &hf_dsrc_msgCnt,
25794 { "msgCnt", "dsrc.msgCnt",
25795 FT_UINT32, BASE_DEC, NULL, 0,
25796 "MsgCount", HFILL }},
25797 { &hf_dsrc_rev,
25798 { "rev", "dsrc.rev",
25799 FT_UINT32, BASE_DEC, VALS(dsrc_RTCM_Revision_vals), 0,
25800 "RTCM_Revision", HFILL }},
25801 { &hf_dsrc_timeStamp,
25802 { "timeStamp", "dsrc.timeStamp",
25803 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_moi_fmt), 0,
25804 "MinuteOfTheYear", HFILL }},
25805 { &hf_dsrc_anchorPoint,
25806 { "anchorPoint", "dsrc.anchorPoint_element",
25807 FT_NONE, BASE_NONE, NULL, 0,
25808 "FullPositionVector", HFILL }},
25809 { &hf_dsrc_rtcmHeader,
25810 { "rtcmHeader", "dsrc.rtcmHeader_element",
25811 FT_NONE, BASE_NONE, NULL, 0,
25812 NULL, HFILL }},
25813 { &hf_dsrc_msgs,
25814 { "msgs", "dsrc.msgs",
25815 FT_UINT32, BASE_DEC, NULL, 0,
25816 "RTCMmessageList", HFILL }},
25817 { &hf_dsrc_regional,
25818 { "regional", "dsrc.regional",
25819 FT_UINT32, BASE_DEC, NULL, 0,
25820 "SEQUENCE_SIZE_1_4_OF_RegionalExtension", HFILL }},
25821 { &hf_dsrc_regional_item,
25822 { "RegionalExtension", "dsrc.RegionalExtension_element",
25823 FT_NONE, BASE_NONE, NULL, 0,
25824 NULL, HFILL }},
25825 { &hf_dsrc_spatTimeStamp,
25826 { "timeStamp", "dsrc.timeStamp",
25827 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_moi_fmt), 0,
25828 "MinuteOfTheYear", HFILL }},
25829 { &hf_dsrc_name,
25830 { "name", "dsrc.name",
25831 FT_STRING, BASE_NONE, NULL, 0,
25832 "DescriptiveName", HFILL }},
25833 { &hf_dsrc_spatIntersections,
25834 { "intersections", "dsrc.intersections",
25835 FT_UINT32, BASE_DEC, NULL, 0,
25836 "IntersectionStateList", HFILL }},
25837 { &hf_dsrc_spatRegional,
25838 { "regional", "dsrc.regional",
25839 FT_UINT32, BASE_DEC, NULL, 0,
25840 "T_SPATRegional", HFILL }},
25841 { &hf_dsrc_spatRegional_item,
25842 { "RegionalExtension", "dsrc.RegionalExtension_element",
25843 FT_NONE, BASE_NONE, NULL, 0,
25844 NULL, HFILL }},
25845 { &hf_dsrc_srmTimeStamp,
25846 { "timeStamp", "dsrc.timeStamp",
25847 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_moi_fmt), 0,
25848 "MinuteOfTheYear", HFILL }},
25849 { &hf_dsrc_second,
25850 { "second", "dsrc.second",
25851 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_dsecond_fmt), 0,
25852 "DSecond", HFILL }},
25853 { &hf_dsrc_sequenceNumber,
25854 { "sequenceNumber", "dsrc.sequenceNumber",
25855 FT_UINT32, BASE_DEC, NULL, 0,
25856 "MsgCount", HFILL }},
25857 { &hf_dsrc_requests,
25858 { "requests", "dsrc.requests",
25859 FT_UINT32, BASE_DEC, NULL, 0,
25860 "SignalRequestList", HFILL }},
25861 { &hf_dsrc_requestor,
25862 { "requestor", "dsrc.requestor_element",
25863 FT_NONE, BASE_NONE, NULL, 0,
25864 "RequestorDescription", HFILL }},
25865 { &hf_dsrc_srmRegional,
25866 { "regional", "dsrc.regional",
25867 FT_UINT32, BASE_DEC, NULL, 0,
25868 "T_SRMRegional", HFILL }},
25869 { &hf_dsrc_srmRegional_item,
25870 { "RegionalExtension", "dsrc.RegionalExtension_element",
25871 FT_NONE, BASE_NONE, NULL, 0,
25872 NULL, HFILL }},
25873 { &hf_dsrc_ssmTimeStamp,
25874 { "timeStamp", "dsrc.timeStamp",
25875 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_moi_fmt), 0,
25876 "MinuteOfTheYear", HFILL }},
25877 { &hf_dsrc_ssmStatus,
25878 { "status", "dsrc.signalStatusMessage.status",
25879 FT_UINT32, BASE_DEC, NULL, 0,
25880 "SignalStatusList", HFILL }},
25881 { &hf_dsrc_ssmRegional,
25882 { "regional", "dsrc.regional",
25883 FT_UINT32, BASE_DEC, NULL, 0,
25884 "T_SSMRegional", HFILL }},
25885 { &hf_dsrc_ssmRegional_item,
25886 { "RegionalExtension", "dsrc.RegionalExtension_element",
25887 FT_NONE, BASE_NONE, NULL, 0,
25888 NULL, HFILL }},
25889 { &hf_dsrc_asType,
25890 { "type", "dsrc.type",
25891 FT_UINT32, BASE_DEC, VALS(dsrc_AdvisorySpeedType_vals), 0,
25892 "AdvisorySpeedType", HFILL }},
25893 { &hf_dsrc_asSpeed,
25894 { "speed", "dsrc.speed",
25895 FT_UINT32, BASE_DEC, NULL, 0,
25896 "SpeedAdvice", HFILL }},
25897 { &hf_dsrc_asConfidence,
25898 { "confidence", "dsrc.confidence",
25899 FT_UINT32, BASE_DEC, VALS(dsrc_SpeedConfidenceDSRC_vals), 0,
25900 "SpeedConfidenceDSRC", HFILL }},
25901 { &hf_dsrc_distance,
25902 { "distance", "dsrc.distance",
25903 FT_UINT32, BASE_DEC, NULL, 0,
25904 "ZoneLength", HFILL }},
25905 { &hf_dsrc_class,
25906 { "class", "dsrc.class",
25907 FT_UINT32, BASE_DEC, NULL, 0,
25908 "RestrictionClassID", HFILL }},
25909 { &hf_dsrc_asRegional,
25910 { "regional", "dsrc.regional",
25911 FT_UINT32, BASE_DEC, NULL, 0,
25912 "T_AdvisorySpeedRegional", HFILL }},
25913 { &hf_dsrc_asRegional_item,
25914 { "RegionalExtension", "dsrc.RegionalExtension_element",
25915 FT_NONE, BASE_NONE, NULL, 0,
25916 NULL, HFILL }},
25917 { &hf_dsrc_AdvisorySpeedList_item,
25918 { "AdvisorySpeed", "dsrc.AdvisorySpeed_element",
25919 FT_NONE, BASE_NONE, NULL, 0,
25920 NULL, HFILL }},
25921 { &hf_dsrc_antOffsetX,
25922 { "antOffsetX", "dsrc.antOffsetX",
25923 FT_INT32, BASE_DEC, NULL, 0,
25924 "Offset_B12", HFILL }},
25925 { &hf_dsrc_antOffsetY,
25926 { "antOffsetY", "dsrc.antOffsetY",
25927 FT_INT32, BASE_DEC, NULL, 0,
25928 "Offset_B09", HFILL }},
25929 { &hf_dsrc_antOffsetZ,
25930 { "antOffsetZ", "dsrc.antOffsetZ",
25931 FT_INT32, BASE_DEC, NULL, 0,
25932 "Offset_B10", HFILL }},
25933 { &hf_dsrc_referenceLaneId,
25934 { "referenceLaneId", "dsrc.referenceLaneId",
25935 FT_UINT32, BASE_DEC, NULL, 0,
25936 "LaneID", HFILL }},
25937 { &hf_dsrc_offsetXaxis,
25938 { "offsetXaxis", "dsrc.offsetXaxis",
25939 FT_UINT32, BASE_DEC, VALS(dsrc_T_offsetXaxis_vals), 0,
25940 NULL, HFILL }},
25941 { &hf_dsrc_small,
25942 { "small", "dsrc.small",
25943 FT_INT32, BASE_DEC, NULL, 0,
25944 "DrivenLineOffsetSm", HFILL }},
25945 { &hf_dsrc_large,
25946 { "large", "dsrc.large",
25947 FT_INT32, BASE_DEC, NULL, 0,
25948 "DrivenLineOffsetLg", HFILL }},
25949 { &hf_dsrc_offsetYaxis,
25950 { "offsetYaxis", "dsrc.offsetYaxis",
25951 FT_UINT32, BASE_DEC, VALS(dsrc_T_offsetYaxis_vals), 0,
25952 NULL, HFILL }},
25953 { &hf_dsrc_rotateXY,
25954 { "rotateXY", "dsrc.rotateXY",
25955 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_angle_fmt), 0,
25956 "Angle", HFILL }},
25957 { &hf_dsrc_scaleXaxis,
25958 { "scaleXaxis", "dsrc.scaleXaxis",
25959 FT_INT32, BASE_DEC, NULL, 0,
25960 "Scale_B12", HFILL }},
25961 { &hf_dsrc_scaleYaxis,
25962 { "scaleYaxis", "dsrc.scaleYaxis",
25963 FT_INT32, BASE_DEC, NULL, 0,
25964 "Scale_B12", HFILL }},
25965 { &hf_dsrc_clRegional,
25966 { "regional", "dsrc.regional",
25967 FT_UINT32, BASE_DEC, NULL, 0,
25968 "T_ComputedLaneRegional", HFILL }},
25969 { &hf_dsrc_clRegional_item,
25970 { "RegionalExtension", "dsrc.RegionalExtension_element",
25971 FT_NONE, BASE_NONE, NULL, 0,
25972 NULL, HFILL }},
25973 { &hf_dsrc_ConnectsToList_item,
25974 { "Connection", "dsrc.Connection_element",
25975 FT_NONE, BASE_NONE, NULL, 0,
25976 NULL, HFILL }},
25977 { &hf_dsrc_lane,
25978 { "lane", "dsrc.lane",
25979 FT_UINT32, BASE_DEC, NULL, 0,
25980 "LaneID", HFILL }},
25981 { &hf_dsrc_maneuver,
25982 { "maneuver", "dsrc.maneuver",
25983 FT_BYTES, BASE_NONE, NULL, 0,
25984 "AllowedManeuvers", HFILL }},
25985 { &hf_dsrc_connectingLane,
25986 { "connectingLane", "dsrc.connectingLane_element",
25987 FT_NONE, BASE_NONE, NULL, 0,
25988 NULL, HFILL }},
25989 { &hf_dsrc_remoteIntersection,
25990 { "remoteIntersection", "dsrc.remoteIntersection_element",
25991 FT_NONE, BASE_NONE, NULL, 0,
25992 "IntersectionReferenceID", HFILL }},
25993 { &hf_dsrc_signalGroup,
25994 { "signalGroup", "dsrc.signalGroup",
25995 FT_UINT32, BASE_DEC, NULL, 0,
25996 "SignalGroupID", HFILL }},
25997 { &hf_dsrc_userClass,
25998 { "userClass", "dsrc.userClass",
25999 FT_UINT32, BASE_DEC, NULL, 0,
26000 "RestrictionClassID", HFILL }},
26001 { &hf_dsrc_connectionID,
26002 { "connectionID", "dsrc.connectionID",
26003 FT_UINT32, BASE_DEC, NULL, 0,
26004 "LaneConnectionID", HFILL }},
26005 { &hf_dsrc_queueLength,
26006 { "queueLength", "dsrc.queueLength",
26007 FT_UINT32, BASE_DEC, NULL, 0,
26008 "ZoneLength", HFILL }},
26009 { &hf_dsrc_availableStorageLength,
26010 { "availableStorageLength", "dsrc.availableStorageLength",
26011 FT_UINT32, BASE_DEC, NULL, 0,
26012 "ZoneLength", HFILL }},
26013 { &hf_dsrc_waitOnStop,
26014 { "waitOnStop", "dsrc.waitOnStop",
26015 FT_BOOLEAN, BASE_NONE, NULL, 0,
26016 "WaitOnStopline", HFILL }},
26017 { &hf_dsrc_pedBicycleDetect,
26018 { "pedBicycleDetect", "dsrc.pedBicycleDetect",
26019 FT_BOOLEAN, BASE_NONE, NULL, 0,
26020 "PedestrianBicycleDetect", HFILL }},
26021 { &hf_dsrc_cmaRegional,
26022 { "regional", "dsrc.regional",
26023 FT_UINT32, BASE_DEC, NULL, 0,
26024 "T_ConnectionManeuverAssistRegional", HFILL }},
26025 { &hf_dsrc_cmaRegional_item,
26026 { "RegionalExtension", "dsrc.RegionalExtension_element",
26027 FT_NONE, BASE_NONE, NULL, 0,
26028 NULL, HFILL }},
26029 { &hf_dsrc_processMethod,
26030 { "processMethod", "dsrc.processMethod",
26031 FT_STRING, BASE_NONE, NULL, 0,
26032 "IA5String_SIZE_1_255", HFILL }},
26033 { &hf_dsrc_processAgency,
26034 { "processAgency", "dsrc.processAgency",
26035 FT_STRING, BASE_NONE, NULL, 0,
26036 "IA5String_SIZE_1_255", HFILL }},
26037 { &hf_dsrc_lastCheckedDate,
26038 { "lastCheckedDate", "dsrc.lastCheckedDate",
26039 FT_STRING, BASE_NONE, NULL, 0,
26040 "IA5String_SIZE_1_255", HFILL }},
26041 { &hf_dsrc_geoidUsed,
26042 { "geoidUsed", "dsrc.geoidUsed",
26043 FT_STRING, BASE_NONE, NULL, 0,
26044 "IA5String_SIZE_1_255", HFILL }},
26045 { &hf_dsrc_year,
26046 { "year", "dsrc.year",
26047 FT_UINT32, BASE_DEC, NULL, 0,
26048 "DYear", HFILL }},
26049 { &hf_dsrc_month,
26050 { "month", "dsrc.month",
26051 FT_UINT32, BASE_DEC, NULL, 0,
26052 "DMonth", HFILL }},
26053 { &hf_dsrc_day,
26054 { "day", "dsrc.day",
26055 FT_UINT32, BASE_DEC, NULL, 0,
26056 "DDay", HFILL }},
26057 { &hf_dsrc_hour,
26058 { "hour", "dsrc.hour",
26059 FT_UINT32, BASE_DEC, NULL, 0,
26060 "DHour", HFILL }},
26061 { &hf_dsrc_minute,
26062 { "minute", "dsrc.minute",
26063 FT_UINT32, BASE_DEC, NULL, 0,
26064 "DMinute", HFILL }},
26065 { &hf_dsrc_offset,
26066 { "offset", "dsrc.offset",
26067 FT_INT32, BASE_DEC, NULL, 0,
26068 "DOffset", HFILL }},
26069 { &hf_dsrc_EnabledLaneList_item,
26070 { "LaneID", "dsrc.LaneID",
26071 FT_UINT32, BASE_DEC, NULL, 0,
26072 NULL, HFILL }},
26073 { &hf_dsrc_utcTime,
26074 { "utcTime", "dsrc.utcTime_element",
26075 FT_NONE, BASE_NONE, NULL, 0,
26076 "DDateTime", HFILL }},
26077 { &hf_dsrc_long,
26078 { "long", "dsrc.long",
26079 FT_INT32, BASE_CUSTOM, CF_FUNC(its_longitude_fmt), 0,
26080 "Longitude", HFILL }},
26081 { &hf_dsrc_lat,
26082 { "lat", "dsrc.lat",
26083 FT_INT32, BASE_CUSTOM, CF_FUNC(its_latitude_fmt), 0,
26084 "Latitude", HFILL }},
26085 { &hf_dsrc_fpvElevation,
26086 { "elevation", "dsrc.fullPositionVector.elevation",
26087 FT_INT32, BASE_DEC, NULL, 0,
26088 NULL, HFILL }},
26089 { &hf_dsrc_fpvHeading,
26090 { "heading", "dsrc.heading",
26091 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_angle_fmt), 0,
26092 "HeadingDSRC", HFILL }},
26093 { &hf_dsrc_fpvSpeed,
26094 { "speed", "dsrc.speed_element",
26095 FT_NONE, BASE_NONE, NULL, 0,
26096 "TransmissionAndSpeed", HFILL }},
26097 { &hf_dsrc_posAccuracy,
26098 { "posAccuracy", "dsrc.posAccuracy_element",
26099 FT_NONE, BASE_NONE, NULL, 0,
26100 "PositionalAccuracy", HFILL }},
26101 { &hf_dsrc_timeConfidence,
26102 { "timeConfidence", "dsrc.timeConfidence",
26103 FT_UINT32, BASE_DEC, VALS(dsrc_TimeConfidence_vals), 0,
26104 NULL, HFILL }},
26105 { &hf_dsrc_posConfidence,
26106 { "posConfidence", "dsrc.posConfidence_element",
26107 FT_NONE, BASE_NONE, NULL, 0,
26108 "PositionConfidenceSet", HFILL }},
26109 { &hf_dsrc_speedConfidence,
26110 { "speedConfidence", "dsrc.speedConfidence_element",
26111 FT_NONE, BASE_NONE, NULL, 0,
26112 "SpeedandHeadingandThrottleConfidence", HFILL }},
26113 { &hf_dsrc_laneID,
26114 { "laneID", "dsrc.laneID",
26115 FT_UINT32, BASE_DEC, NULL, 0,
26116 NULL, HFILL }},
26117 { &hf_dsrc_ingressApproach,
26118 { "ingressApproach", "dsrc.ingressApproach",
26119 FT_UINT32, BASE_DEC, NULL, 0,
26120 "ApproachID", HFILL }},
26121 { &hf_dsrc_egressApproach,
26122 { "egressApproach", "dsrc.egressApproach",
26123 FT_UINT32, BASE_DEC, NULL, 0,
26124 "ApproachID", HFILL }},
26125 { &hf_dsrc_laneAttributes,
26126 { "laneAttributes", "dsrc.laneAttributes_element",
26127 FT_NONE, BASE_NONE, NULL, 0,
26128 NULL, HFILL }},
26129 { &hf_dsrc_maneuvers,
26130 { "maneuvers", "dsrc.maneuvers",
26131 FT_BYTES, BASE_NONE, NULL, 0,
26132 "AllowedManeuvers", HFILL }},
26133 { &hf_dsrc_nodeList,
26134 { "nodeList", "dsrc.nodeList",
26135 FT_UINT32, BASE_DEC, VALS(dsrc_NodeListXY_vals), 0,
26136 "NodeListXY", HFILL }},
26137 { &hf_dsrc_connectsTo,
26138 { "connectsTo", "dsrc.connectsTo",
26139 FT_UINT32, BASE_DEC, NULL, 0,
26140 "ConnectsToList", HFILL }},
26141 { &hf_dsrc_overlays,
26142 { "overlays", "dsrc.overlays",
26143 FT_UINT32, BASE_DEC, NULL, 0,
26144 "OverlayLaneList", HFILL }},
26145 { &hf_dsrc_glRegional,
26146 { "regional", "dsrc.regional",
26147 FT_UINT32, BASE_DEC, NULL, 0,
26148 "T_GenericLaneRegional", HFILL }},
26149 { &hf_dsrc_glRegional_item,
26150 { "RegionalExtension", "dsrc.RegionalExtension_element",
26151 FT_NONE, BASE_NONE, NULL, 0,
26152 NULL, HFILL }},
26153 { &hf_dsrc_approach,
26154 { "approach", "dsrc.approach",
26155 FT_UINT32, BASE_DEC, NULL, 0,
26156 "ApproachID", HFILL }},
26157 { &hf_dsrc_connection,
26158 { "connection", "dsrc.connection",
26159 FT_UINT32, BASE_DEC, NULL, 0,
26160 "LaneConnectionID", HFILL }},
26161 { &hf_dsrc_igId,
26162 { "id", "dsrc.id_element",
26163 FT_NONE, BASE_NONE, NULL, 0,
26164 "IntersectionReferenceID", HFILL }},
26165 { &hf_dsrc_revision,
26166 { "revision", "dsrc.revision",
26167 FT_UINT32, BASE_DEC, NULL, 0,
26168 "MsgCount", HFILL }},
26169 { &hf_dsrc_refPoint,
26170 { "refPoint", "dsrc.refPoint_element",
26171 FT_NONE, BASE_NONE, NULL, 0,
26172 "Position3D", HFILL }},
26173 { &hf_dsrc_laneWidth,
26174 { "laneWidth", "dsrc.laneWidth",
26175 FT_UINT32, BASE_DEC, NULL, 0,
26176 NULL, HFILL }},
26177 { &hf_dsrc_speedLimits,
26178 { "speedLimits", "dsrc.speedLimits",
26179 FT_UINT32, BASE_DEC, NULL, 0,
26180 "SpeedLimitList", HFILL }},
26181 { &hf_dsrc_laneSet,
26182 { "laneSet", "dsrc.laneSet",
26183 FT_UINT32, BASE_DEC, NULL, 0,
26184 "LaneList", HFILL }},
26185 { &hf_dsrc_preemptPriorityData,
26186 { "preemptPriorityData", "dsrc.preemptPriorityData",
26187 FT_UINT32, BASE_DEC, NULL, 0,
26188 "PreemptPriorityList", HFILL }},
26189 { &hf_dsrc_igRegional,
26190 { "regional", "dsrc.regional",
26191 FT_UINT32, BASE_DEC, NULL, 0,
26192 "T_IntersectionGeometryRegional", HFILL }},
26193 { &hf_dsrc_igRegional_item,
26194 { "RegionalExtension", "dsrc.RegionalExtension_element",
26195 FT_NONE, BASE_NONE, NULL, 0,
26196 NULL, HFILL }},
26197 { &hf_dsrc_IntersectionGeometryList_item,
26198 { "IntersectionGeometry", "dsrc.IntersectionGeometry_element",
26199 FT_NONE, BASE_NONE, NULL, 0,
26200 NULL, HFILL }},
26201 { &hf_dsrc_region,
26202 { "region", "dsrc.region",
26203 FT_UINT32, BASE_DEC, NULL, 0,
26204 "RoadRegulatorID", HFILL }},
26205 { &hf_dsrc_irId,
26206 { "id", "dsrc.id",
26207 FT_UINT32, BASE_DEC, NULL, 0,
26208 "IntersectionID", HFILL }},
26209 { &hf_dsrc_isId,
26210 { "id", "dsrc.id_element",
26211 FT_NONE, BASE_NONE, NULL, 0,
26212 "IntersectionReferenceID", HFILL }},
26213 { &hf_dsrc_isStatus,
26214 { "status", "dsrc.intersectionState.status",
26215 FT_BYTES, BASE_NONE, NULL, 0,
26216 "IntersectionStatusObject", HFILL }},
26217 { &hf_dsrc_moy,
26218 { "moy", "dsrc.moy",
26219 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_moi_fmt), 0,
26220 "MinuteOfTheYear", HFILL }},
26221 { &hf_dsrc_isTimeStamp,
26222 { "timeStamp", "dsrc.timeStamp",
26223 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_dsecond_fmt), 0,
26224 "DSecond", HFILL }},
26225 { &hf_dsrc_enabledLanes,
26226 { "enabledLanes", "dsrc.enabledLanes",
26227 FT_UINT32, BASE_DEC, NULL, 0,
26228 "EnabledLaneList", HFILL }},
26229 { &hf_dsrc_states,
26230 { "states", "dsrc.states",
26231 FT_UINT32, BASE_DEC, NULL, 0,
26232 "MovementList", HFILL }},
26233 { &hf_dsrc_maneuverAssistList,
26234 { "maneuverAssistList", "dsrc.maneuverAssistList",
26235 FT_UINT32, BASE_DEC, NULL, 0,
26236 NULL, HFILL }},
26237 { &hf_dsrc_isRegional,
26238 { "regional", "dsrc.regional",
26239 FT_UINT32, BASE_DEC, NULL, 0,
26240 "T_IntersectionStateRegional", HFILL }},
26241 { &hf_dsrc_isRegional_item,
26242 { "RegionalExtension", "dsrc.RegionalExtension_element",
26243 FT_NONE, BASE_NONE, NULL, 0,
26244 NULL, HFILL }},
26245 { &hf_dsrc_IntersectionStateList_item,
26246 { "IntersectionState", "dsrc.IntersectionState_element",
26247 FT_NONE, BASE_NONE, NULL, 0,
26248 NULL, HFILL }},
26249 { &hf_dsrc_directionalUse,
26250 { "directionalUse", "dsrc.directionalUse",
26251 FT_BYTES, BASE_NONE, NULL, 0,
26252 "LaneDirection", HFILL }},
26253 { &hf_dsrc_sharedWith,
26254 { "sharedWith", "dsrc.sharedWith",
26255 FT_BYTES, BASE_NONE, NULL, 0,
26256 "LaneSharing", HFILL }},
26257 { &hf_dsrc_laneType,
26258 { "laneType", "dsrc.laneType",
26259 FT_UINT32, BASE_DEC, VALS(dsrc_LaneTypeAttributes_vals), 0,
26260 "LaneTypeAttributes", HFILL }},
26261 { &hf_dsrc_laRegional,
26262 { "regional", "dsrc.regional_element",
26263 FT_NONE, BASE_NONE, NULL, 0,
26264 "RegionalExtension", HFILL }},
26265 { &hf_dsrc_pathEndPointAngle,
26266 { "pathEndPointAngle", "dsrc.pathEndPointAngle",
26267 FT_INT32, BASE_DEC, NULL, 0,
26268 "DeltaAngle", HFILL }},
26269 { &hf_dsrc_laneCrownPointCenter,
26270 { "laneCrownPointCenter", "dsrc.laneCrownPointCenter",
26271 FT_INT32, BASE_DEC, NULL, 0,
26272 "RoadwayCrownAngle", HFILL }},
26273 { &hf_dsrc_laneCrownPointLeft,
26274 { "laneCrownPointLeft", "dsrc.laneCrownPointLeft",
26275 FT_INT32, BASE_DEC, NULL, 0,
26276 "RoadwayCrownAngle", HFILL }},
26277 { &hf_dsrc_laneCrownPointRight,
26278 { "laneCrownPointRight", "dsrc.laneCrownPointRight",
26279 FT_INT32, BASE_DEC, NULL, 0,
26280 "RoadwayCrownAngle", HFILL }},
26281 { &hf_dsrc_laneAngle,
26282 { "laneAngle", "dsrc.laneAngle",
26283 FT_INT32, BASE_DEC, NULL, 0,
26284 "MergeDivergeNodeAngle", HFILL }},
26285 { &hf_dsrc_ldaRegional,
26286 { "regional", "dsrc.regional",
26287 FT_UINT32, BASE_DEC, NULL, 0,
26288 "T_LaneDataAttributeRegional", HFILL }},
26289 { &hf_dsrc_ldaRegional_item,
26290 { "RegionalExtension", "dsrc.RegionalExtension_element",
26291 FT_NONE, BASE_NONE, NULL, 0,
26292 NULL, HFILL }},
26293 { &hf_dsrc_LaneDataAttributeList_item,
26294 { "LaneDataAttribute", "dsrc.LaneDataAttribute",
26295 FT_UINT32, BASE_DEC, VALS(dsrc_LaneDataAttribute_vals), 0,
26296 NULL, HFILL }},
26297 { &hf_dsrc_LaneList_item,
26298 { "GenericLane", "dsrc.GenericLane_element",
26299 FT_NONE, BASE_NONE, NULL, 0,
26300 NULL, HFILL }},
26301 { &hf_dsrc_vehicle,
26302 { "vehicle", "dsrc.vehicle",
26303 FT_BYTES, BASE_NONE, NULL, 0,
26304 "LaneAttributes_Vehicle", HFILL }},
26305 { &hf_dsrc_crosswalk,
26306 { "crosswalk", "dsrc.crosswalk",
26307 FT_BYTES, BASE_NONE, NULL, 0,
26308 "LaneAttributes_Crosswalk", HFILL }},
26309 { &hf_dsrc_bikeLane,
26310 { "bikeLane", "dsrc.bikeLane",
26311 FT_BYTES, BASE_NONE, NULL, 0,
26312 "LaneAttributes_Bike", HFILL }},
26313 { &hf_dsrc_sidewalk,
26314 { "sidewalk", "dsrc.sidewalk",
26315 FT_BYTES, BASE_NONE, NULL, 0,
26316 "LaneAttributes_Sidewalk", HFILL }},
26317 { &hf_dsrc_median,
26318 { "median", "dsrc.median",
26319 FT_BYTES, BASE_NONE, NULL, 0,
26320 "LaneAttributes_Barrier", HFILL }},
26321 { &hf_dsrc_striping,
26322 { "striping", "dsrc.striping",
26323 FT_BYTES, BASE_NONE, NULL, 0,
26324 "LaneAttributes_Striping", HFILL }},
26325 { &hf_dsrc_trackedVehicle,
26326 { "trackedVehicle", "dsrc.trackedVehicle",
26327 FT_BYTES, BASE_NONE, NULL, 0,
26328 "LaneAttributes_TrackedVehicle", HFILL }},
26329 { &hf_dsrc_parking,
26330 { "parking", "dsrc.parking",
26331 FT_BYTES, BASE_NONE, NULL, 0,
26332 "LaneAttributes_Parking", HFILL }},
26333 { &hf_dsrc_ManeuverAssistList_item,
26334 { "ConnectionManeuverAssist", "dsrc.ConnectionManeuverAssist_element",
26335 FT_NONE, BASE_NONE, NULL, 0,
26336 NULL, HFILL }},
26337 { &hf_dsrc_eventState,
26338 { "eventState", "dsrc.eventState",
26339 FT_UINT32, BASE_DEC, VALS(dsrc_MovementPhaseState_vals), 0,
26340 "MovementPhaseState", HFILL }},
26341 { &hf_dsrc_timing,
26342 { "timing", "dsrc.timing_element",
26343 FT_NONE, BASE_NONE, NULL, 0,
26344 "TimeChangeDetails", HFILL }},
26345 { &hf_dsrc_speeds,
26346 { "speeds", "dsrc.speeds",
26347 FT_UINT32, BASE_DEC, NULL, 0,
26348 "AdvisorySpeedList", HFILL }},
26349 { &hf_dsrc_meRegional,
26350 { "regional", "dsrc.regional",
26351 FT_UINT32, BASE_DEC, NULL, 0,
26352 "T_MovementEventRegional", HFILL }},
26353 { &hf_dsrc_meRegional_item,
26354 { "RegionalExtension", "dsrc.RegionalExtension_element",
26355 FT_NONE, BASE_NONE, NULL, 0,
26356 NULL, HFILL }},
26357 { &hf_dsrc_MovementEventList_item,
26358 { "MovementEvent", "dsrc.MovementEvent_element",
26359 FT_NONE, BASE_NONE, NULL, 0,
26360 NULL, HFILL }},
26361 { &hf_dsrc_MovementList_item,
26362 { "MovementState", "dsrc.MovementState_element",
26363 FT_NONE, BASE_NONE, NULL, 0,
26364 NULL, HFILL }},
26365 { &hf_dsrc_movementName,
26366 { "movementName", "dsrc.movementName",
26367 FT_STRING, BASE_NONE, NULL, 0,
26368 "DescriptiveName", HFILL }},
26369 { &hf_dsrc_state_time_speed,
26370 { "state-time-speed", "dsrc.state_time_speed",
26371 FT_UINT32, BASE_DEC, NULL, 0,
26372 "MovementEventList", HFILL }},
26373 { &hf_dsrc_msRegional,
26374 { "regional", "dsrc.regional",
26375 FT_UINT32, BASE_DEC, NULL, 0,
26376 "T_MovementStateRegional", HFILL }},
26377 { &hf_dsrc_msRegional_item,
26378 { "RegionalExtension", "dsrc.RegionalExtension_element",
26379 FT_NONE, BASE_NONE, NULL, 0,
26380 NULL, HFILL }},
26381 { &hf_dsrc_localNode,
26382 { "localNode", "dsrc.localNode",
26383 FT_UINT32, BASE_DEC, NULL, 0,
26384 "NodeAttributeXYList", HFILL }},
26385 { &hf_dsrc_disabled,
26386 { "disabled", "dsrc.disabled",
26387 FT_UINT32, BASE_DEC, NULL, 0,
26388 "SegmentAttributeXYList", HFILL }},
26389 { &hf_dsrc_enabled,
26390 { "enabled", "dsrc.enabled",
26391 FT_UINT32, BASE_DEC, NULL, 0,
26392 "SegmentAttributeXYList", HFILL }},
26393 { &hf_dsrc_data,
26394 { "data", "dsrc.data",
26395 FT_UINT32, BASE_DEC, NULL, 0,
26396 "LaneDataAttributeList", HFILL }},
26397 { &hf_dsrc_dWidth,
26398 { "dWidth", "dsrc.dWidth",
26399 FT_INT32, BASE_DEC, NULL, 0,
26400 "Offset_B10", HFILL }},
26401 { &hf_dsrc_dElevation,
26402 { "dElevation", "dsrc.dElevation",
26403 FT_INT32, BASE_DEC, NULL, 0,
26404 "Offset_B10", HFILL }},
26405 { &hf_dsrc_nasxyRegional,
26406 { "regional", "dsrc.regional",
26407 FT_UINT32, BASE_DEC, NULL, 0,
26408 "T_NodeAttributeSetXYRegional", HFILL }},
26409 { &hf_dsrc_nasxyRegional_item,
26410 { "RegionalExtension", "dsrc.RegionalExtension_element",
26411 FT_NONE, BASE_NONE, NULL, 0,
26412 NULL, HFILL }},
26413 { &hf_dsrc_NodeAttributeXYList_item,
26414 { "NodeAttributeXY", "dsrc.NodeAttributeXY",
26415 FT_UINT32, BASE_DEC, VALS(dsrc_NodeAttributeXY_vals), 0,
26416 NULL, HFILL }},
26417 { &hf_dsrc_lon,
26418 { "lon", "dsrc.lon",
26419 FT_INT32, BASE_CUSTOM, CF_FUNC(its_longitude_fmt), 0,
26420 "Longitude", HFILL }},
26421 { &hf_dsrc_n20bX,
26422 { "x", "dsrc.x",
26423 FT_INT32, BASE_DEC, NULL, 0,
26424 "Offset_B10", HFILL }},
26425 { &hf_dsrc_n20bY,
26426 { "y", "dsrc.y",
26427 FT_INT32, BASE_DEC, NULL, 0,
26428 "Offset_B10", HFILL }},
26429 { &hf_dsrc_n22bX,
26430 { "x", "dsrc.x",
26431 FT_INT32, BASE_DEC, NULL, 0,
26432 "Offset_B11", HFILL }},
26433 { &hf_dsrc_n22bY,
26434 { "y", "dsrc.y",
26435 FT_INT32, BASE_DEC, NULL, 0,
26436 "Offset_B11", HFILL }},
26437 { &hf_dsrc_n24bX,
26438 { "x", "dsrc.x",
26439 FT_INT32, BASE_DEC, NULL, 0,
26440 "Offset_B12", HFILL }},
26441 { &hf_dsrc_n24bY,
26442 { "y", "dsrc.y",
26443 FT_INT32, BASE_DEC, NULL, 0,
26444 "Offset_B12", HFILL }},
26445 { &hf_dsrc_n26bX,
26446 { "x", "dsrc.x",
26447 FT_INT32, BASE_DEC, NULL, 0,
26448 "Offset_B13", HFILL }},
26449 { &hf_dsrc_n26bY,
26450 { "y", "dsrc.y",
26451 FT_INT32, BASE_DEC, NULL, 0,
26452 "Offset_B13", HFILL }},
26453 { &hf_dsrc_n28bX,
26454 { "x", "dsrc.x",
26455 FT_INT32, BASE_DEC, NULL, 0,
26456 "Offset_B14", HFILL }},
26457 { &hf_dsrc_n28bY,
26458 { "y", "dsrc.y",
26459 FT_INT32, BASE_DEC, NULL, 0,
26460 "Offset_B14", HFILL }},
26461 { &hf_dsrc_n32bX,
26462 { "x", "dsrc.x",
26463 FT_INT32, BASE_DEC, NULL, 0,
26464 "Offset_B16", HFILL }},
26465 { &hf_dsrc_n32bY,
26466 { "y", "dsrc.y",
26467 FT_INT32, BASE_DEC, NULL, 0,
26468 "Offset_B16", HFILL }},
26469 { &hf_dsrc_nodes,
26470 { "nodes", "dsrc.nodes",
26471 FT_UINT32, BASE_DEC, NULL, 0,
26472 "NodeSetXY", HFILL }},
26473 { &hf_dsrc_computed,
26474 { "computed", "dsrc.computed_element",
26475 FT_NONE, BASE_NONE, NULL, 0,
26476 "ComputedLane", HFILL }},
26477 { &hf_dsrc_node_XY1,
26478 { "node-XY1", "dsrc.node_XY1_element",
26479 FT_NONE, BASE_NONE, NULL, 0,
26480 "Node_XY_20b", HFILL }},
26481 { &hf_dsrc_node_XY2,
26482 { "node-XY2", "dsrc.node_XY2_element",
26483 FT_NONE, BASE_NONE, NULL, 0,
26484 "Node_XY_22b", HFILL }},
26485 { &hf_dsrc_node_XY3,
26486 { "node-XY3", "dsrc.node_XY3_element",
26487 FT_NONE, BASE_NONE, NULL, 0,
26488 "Node_XY_24b", HFILL }},
26489 { &hf_dsrc_node_XY4,
26490 { "node-XY4", "dsrc.node_XY4_element",
26491 FT_NONE, BASE_NONE, NULL, 0,
26492 "Node_XY_26b", HFILL }},
26493 { &hf_dsrc_node_XY5,
26494 { "node-XY5", "dsrc.node_XY5_element",
26495 FT_NONE, BASE_NONE, NULL, 0,
26496 "Node_XY_28b", HFILL }},
26497 { &hf_dsrc_node_XY6,
26498 { "node-XY6", "dsrc.node_XY6_element",
26499 FT_NONE, BASE_NONE, NULL, 0,
26500 "Node_XY_32b", HFILL }},
26501 { &hf_dsrc_node_LatLon,
26502 { "node-LatLon", "dsrc.node_LatLon_element",
26503 FT_NONE, BASE_NONE, NULL, 0,
26504 "Node_LLmD_64b", HFILL }},
26505 { &hf_dsrc_nopxyRegional,
26506 { "regional", "dsrc.regional_element",
26507 FT_NONE, BASE_NONE, NULL, 0,
26508 "RegionalExtension", HFILL }},
26509 { &hf_dsrc_delta,
26510 { "delta", "dsrc.delta",
26511 FT_UINT32, BASE_DEC, VALS(dsrc_NodeOffsetPointXY_vals), 0,
26512 "NodeOffsetPointXY", HFILL }},
26513 { &hf_dsrc_attributes,
26514 { "attributes", "dsrc.attributes_element",
26515 FT_NONE, BASE_NONE, NULL, 0,
26516 "NodeAttributeSetXY", HFILL }},
26517 { &hf_dsrc_NodeSetXY_item,
26518 { "NodeXY", "dsrc.NodeXY_element",
26519 FT_NONE, BASE_NONE, NULL, 0,
26520 NULL, HFILL }},
26521 { &hf_dsrc_OverlayLaneList_item,
26522 { "LaneID", "dsrc.LaneID",
26523 FT_UINT32, BASE_DEC, NULL, 0,
26524 NULL, HFILL }},
26525 { &hf_dsrc_semiMajor,
26526 { "semiMajor", "dsrc.semiMajor",
26527 FT_UINT32, BASE_DEC, NULL, 0,
26528 "SemiMajorAxisAccuracy", HFILL }},
26529 { &hf_dsrc_semiMinor,
26530 { "semiMinor", "dsrc.semiMinor",
26531 FT_UINT32, BASE_DEC, NULL, 0,
26532 "SemiMinorAxisAccuracy", HFILL }},
26533 { &hf_dsrc_orientation,
26534 { "orientation", "dsrc.orientation",
26535 FT_UINT32, BASE_DEC, NULL, 0,
26536 "SemiMajorAxisOrientation", HFILL }},
26537 { &hf_dsrc_pos,
26538 { "pos", "dsrc.pos",
26539 FT_UINT32, BASE_DEC, VALS(dsrc_PositionConfidence_vals), 0,
26540 "PositionConfidence", HFILL }},
26541 { &hf_dsrc_pcsElevation,
26542 { "elevation", "dsrc.positionConfidenceSet.elevation",
26543 FT_UINT32, BASE_DEC, VALS(dsrc_ElevationConfidence_vals), 0,
26544 "ElevationConfidence", HFILL }},
26545 { &hf_dsrc_p3dElevation,
26546 { "elevation", "dsrc.position3D.elevation",
26547 FT_INT32, BASE_DEC, NULL, 0,
26548 NULL, HFILL }},
26549 { &hf_dsrc_p3dRegional,
26550 { "regional", "dsrc.regional",
26551 FT_UINT32, BASE_DEC, NULL, 0,
26552 "T_Position3DRegional", HFILL }},
26553 { &hf_dsrc_p3dRegional_item,
26554 { "RegionalExtension", "dsrc.RegionalExtension_element",
26555 FT_NONE, BASE_NONE, NULL, 0,
26556 NULL, HFILL }},
26557 { &hf_dsrc_PreemptPriorityList_item,
26558 { "SignalControlZone", "dsrc.SignalControlZone_element",
26559 FT_NONE, BASE_NONE, NULL, 0,
26560 NULL, HFILL }},
26561 { &hf_dsrc_rslType,
26562 { "type", "dsrc.type",
26563 FT_UINT32, BASE_DEC, VALS(dsrc_SpeedLimitType_vals), 0,
26564 "SpeedLimitType", HFILL }},
26565 { &hf_dsrc_rslSpeed,
26566 { "speed", "dsrc.speed",
26567 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_velocity_fmt), 0,
26568 "Velocity", HFILL }},
26569 { &hf_dsrc_rdId,
26570 { "id", "dsrc.id",
26571 FT_UINT32, BASE_DEC, VALS(dsrc_VehicleID_vals), 0,
26572 "VehicleID", HFILL }},
26573 { &hf_dsrc_rdType,
26574 { "type", "dsrc.type_element",
26575 FT_NONE, BASE_NONE, NULL, 0,
26576 "RequestorType", HFILL }},
26577 { &hf_dsrc_rdPosition,
26578 { "position", "dsrc.position_element",
26579 FT_NONE, BASE_NONE, NULL, 0,
26580 "RequestorPositionVector", HFILL }},
26581 { &hf_dsrc_routeName,
26582 { "routeName", "dsrc.routeName",
26583 FT_STRING, BASE_NONE, NULL, 0,
26584 "DescriptiveName", HFILL }},
26585 { &hf_dsrc_transitStatus,
26586 { "transitStatus", "dsrc.transitStatus",
26587 FT_BYTES, BASE_NONE, NULL, 0,
26588 "TransitVehicleStatus", HFILL }},
26589 { &hf_dsrc_transitOccupancy,
26590 { "transitOccupancy", "dsrc.transitOccupancy",
26591 FT_UINT32, BASE_DEC, VALS(dsrc_TransitVehicleOccupancy_vals), 0,
26592 "TransitVehicleOccupancy", HFILL }},
26593 { &hf_dsrc_transitSchedule,
26594 { "transitSchedule", "dsrc.transitSchedule",
26595 FT_INT32, BASE_CUSTOM, CF_FUNC(dsrc_delta_time_fmt), 0,
26596 "DeltaTime", HFILL }},
26597 { &hf_dsrc_rdRegional,
26598 { "regional", "dsrc.regional",
26599 FT_UINT32, BASE_DEC, NULL, 0,
26600 "T_RequestorDescriptionRegional", HFILL }},
26601 { &hf_dsrc_rdRegional_item,
26602 { "RegionalExtension", "dsrc.RegionalExtension_element",
26603 FT_NONE, BASE_NONE, NULL, 0,
26604 NULL, HFILL }},
26605 { &hf_dsrc_rpvPosition,
26606 { "position", "dsrc.position_element",
26607 FT_NONE, BASE_NONE, NULL, 0,
26608 "Position3D", HFILL }},
26609 { &hf_dsrc_rpvHeading,
26610 { "heading", "dsrc.heading",
26611 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_angle_fmt), 0,
26612 "Angle", HFILL }},
26613 { &hf_dsrc_rpvSpeed,
26614 { "speed", "dsrc.speed_element",
26615 FT_NONE, BASE_NONE, NULL, 0,
26616 "TransmissionAndSpeed", HFILL }},
26617 { &hf_dsrc_role,
26618 { "role", "dsrc.role",
26619 FT_UINT32, BASE_DEC, VALS(dsrc_BasicVehicleRole_vals), 0,
26620 "BasicVehicleRole", HFILL }},
26621 { &hf_dsrc_subrole,
26622 { "subrole", "dsrc.subrole",
26623 FT_UINT32, BASE_DEC, VALS(dsrc_RequestSubRole_vals), 0,
26624 "RequestSubRole", HFILL }},
26625 { &hf_dsrc_rtRequest,
26626 { "request", "dsrc.request",
26627 FT_UINT32, BASE_DEC, VALS(dsrc_RequestImportanceLevel_vals), 0,
26628 "RequestImportanceLevel", HFILL }},
26629 { &hf_dsrc_iso3883,
26630 { "iso3883", "dsrc.iso3883",
26631 FT_UINT32, BASE_DEC, VALS(its_Iso3833VehicleType_vals), 0,
26632 "Iso3833VehicleType", HFILL }},
26633 { &hf_dsrc_hpmsType,
26634 { "hpmsType", "dsrc.hpmsType",
26635 FT_UINT32, BASE_DEC, VALS(dsrc_VehicleType_vals), 0,
26636 "VehicleType", HFILL }},
26637 { &hf_dsrc_rtRegional,
26638 { "regional", "dsrc.regional_element",
26639 FT_NONE, BASE_NONE, NULL, 0,
26640 "RegionalExtension", HFILL }},
26641 { &hf_dsrc_scaId,
26642 { "id", "dsrc.id",
26643 FT_UINT32, BASE_DEC, NULL, 0,
26644 "RestrictionClassID", HFILL }},
26645 { &hf_dsrc_users,
26646 { "users", "dsrc.users",
26647 FT_UINT32, BASE_DEC, NULL, 0,
26648 "RestrictionUserTypeList", HFILL }},
26649 { &hf_dsrc_RestrictionClassList_item,
26650 { "RestrictionClassAssignment", "dsrc.RestrictionClassAssignment_element",
26651 FT_NONE, BASE_NONE, NULL, 0,
26652 NULL, HFILL }},
26653 { &hf_dsrc_basicType,
26654 { "basicType", "dsrc.basicType",
26655 FT_UINT32, BASE_DEC, VALS(dsrc_RestrictionAppliesTo_vals), 0,
26656 "RestrictionAppliesTo", HFILL }},
26657 { &hf_dsrc_rutRegional,
26658 { "regional", "dsrc.regional",
26659 FT_UINT32, BASE_DEC, NULL, 0,
26660 "T_RestrictionUserTypeRegional", HFILL }},
26661 { &hf_dsrc_rutRegional_item,
26662 { "RegionalExtension", "dsrc.RegionalExtension_element",
26663 FT_NONE, BASE_NONE, NULL, 0,
26664 NULL, HFILL }},
26665 { &hf_dsrc_RestrictionUserTypeList_item,
26666 { "RestrictionUserType", "dsrc.RestrictionUserType",
26667 FT_UINT32, BASE_DEC, VALS(dsrc_RestrictionUserType_vals), 0,
26668 NULL, HFILL }},
26669 { &hf_dsrc_RoadLaneSetList_item,
26670 { "GenericLane", "dsrc.GenericLane_element",
26671 FT_NONE, BASE_NONE, NULL, 0,
26672 NULL, HFILL }},
26673 { &hf_dsrc_rsrId,
26674 { "id", "dsrc.id",
26675 FT_UINT32, BASE_DEC, NULL, 0,
26676 "RoadSegmentID", HFILL }},
26677 { &hf_dsrc_rsId,
26678 { "id", "dsrc.id_element",
26679 FT_NONE, BASE_NONE, NULL, 0,
26680 "RoadSegmentReferenceID", HFILL }},
26681 { &hf_dsrc_roadLaneSet,
26682 { "roadLaneSet", "dsrc.roadLaneSet",
26683 FT_UINT32, BASE_DEC, NULL, 0,
26684 "RoadLaneSetList", HFILL }},
26685 { &hf_dsrc_rsRegional,
26686 { "regional", "dsrc.regional",
26687 FT_UINT32, BASE_DEC, NULL, 0,
26688 "T_RoadSegmentRegional", HFILL }},
26689 { &hf_dsrc_rsRegional_item,
26690 { "RegionalExtension", "dsrc.RegionalExtension_element",
26691 FT_NONE, BASE_NONE, NULL, 0,
26692 NULL, HFILL }},
26693 { &hf_dsrc_RoadSegmentList_item,
26694 { "RoadSegment", "dsrc.RoadSegment_element",
26695 FT_NONE, BASE_NONE, NULL, 0,
26696 NULL, HFILL }},
26697 { &hf_dsrc_status,
26698 { "status", "dsrc.status",
26699 FT_BYTES, BASE_NONE, NULL, 0,
26700 "GNSSstatus", HFILL }},
26701 { &hf_dsrc_offsetSet,
26702 { "offsetSet", "dsrc.offsetSet_element",
26703 FT_NONE, BASE_NONE, NULL, 0,
26704 "AntennaOffsetSet", HFILL }},
26705 { &hf_dsrc_RTCMmessageList_item,
26706 { "RTCMmessage", "dsrc.RTCMmessage",
26707 FT_BYTES, BASE_NONE, NULL, 0,
26708 NULL, HFILL }},
26709 { &hf_dsrc_SegmentAttributeXYList_item,
26710 { "SegmentAttributeXY", "dsrc.SegmentAttributeXY",
26711 FT_UINT32, BASE_DEC, VALS(dsrc_SegmentAttributeXY_vals), 0,
26712 NULL, HFILL }},
26713 { &hf_dsrc_zone,
26714 { "zone", "dsrc.zone_element",
26715 FT_NONE, BASE_NONE, NULL, 0,
26716 "RegionalExtension", HFILL }},
26717 { &hf_dsrc_sriId,
26718 { "id", "dsrc.id",
26719 FT_UINT32, BASE_DEC, VALS(dsrc_VehicleID_vals), 0,
26720 "VehicleID", HFILL }},
26721 { &hf_dsrc_sriRequest,
26722 { "request", "dsrc.request",
26723 FT_UINT32, BASE_DEC, NULL, 0,
26724 "RequestID", HFILL }},
26725 { &hf_dsrc_typeData,
26726 { "typeData", "dsrc.typeData_element",
26727 FT_NONE, BASE_NONE, NULL, 0,
26728 "RequestorType", HFILL }},
26729 { &hf_dsrc_srId,
26730 { "id", "dsrc.id_element",
26731 FT_NONE, BASE_NONE, NULL, 0,
26732 "IntersectionReferenceID", HFILL }},
26733 { &hf_dsrc_requestID,
26734 { "requestID", "dsrc.requestID",
26735 FT_UINT32, BASE_DEC, NULL, 0,
26736 NULL, HFILL }},
26737 { &hf_dsrc_requestType,
26738 { "requestType", "dsrc.requestType",
26739 FT_UINT32, BASE_DEC, VALS(dsrc_PriorityRequestType_vals), 0,
26740 "PriorityRequestType", HFILL }},
26741 { &hf_dsrc_inBoundLane,
26742 { "inBoundLane", "dsrc.inBoundLane",
26743 FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0,
26744 "IntersectionAccessPoint", HFILL }},
26745 { &hf_dsrc_outBoundLane,
26746 { "outBoundLane", "dsrc.outBoundLane",
26747 FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0,
26748 "IntersectionAccessPoint", HFILL }},
26749 { &hf_dsrc_srRegional,
26750 { "regional", "dsrc.regional",
26751 FT_UINT32, BASE_DEC, NULL, 0,
26752 "T_SignalRequestRegional", HFILL }},
26753 { &hf_dsrc_srRegional_item,
26754 { "RegionalExtension", "dsrc.RegionalExtension_element",
26755 FT_NONE, BASE_NONE, NULL, 0,
26756 NULL, HFILL }},
26757 { &hf_dsrc_SignalRequestList_item,
26758 { "SignalRequestPackage", "dsrc.SignalRequestPackage_element",
26759 FT_NONE, BASE_NONE, NULL, 0,
26760 NULL, HFILL }},
26761 { &hf_dsrc_srpRequest,
26762 { "request", "dsrc.request_element",
26763 FT_NONE, BASE_NONE, NULL, 0,
26764 "SignalRequest", HFILL }},
26765 { &hf_dsrc_srpMinute,
26766 { "minute", "dsrc.minute",
26767 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_moi_fmt), 0,
26768 "MinuteOfTheYear", HFILL }},
26769 { &hf_dsrc_duration,
26770 { "duration", "dsrc.duration",
26771 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_dsecond_fmt), 0,
26772 "DSecond", HFILL }},
26773 { &hf_dsrc_srpRegional,
26774 { "regional", "dsrc.regional",
26775 FT_UINT32, BASE_DEC, NULL, 0,
26776 "T_SignalRequestPackageRegional", HFILL }},
26777 { &hf_dsrc_srpRegional_item,
26778 { "RegionalExtension", "dsrc.RegionalExtension_element",
26779 FT_NONE, BASE_NONE, NULL, 0,
26780 NULL, HFILL }},
26781 { &hf_dsrc_ssId,
26782 { "id", "dsrc.id_element",
26783 FT_NONE, BASE_NONE, NULL, 0,
26784 "IntersectionReferenceID", HFILL }},
26785 { &hf_dsrc_sigStatus,
26786 { "sigStatus", "dsrc.sigStatus",
26787 FT_UINT32, BASE_DEC, NULL, 0,
26788 "SignalStatusPackageList", HFILL }},
26789 { &hf_dsrc_ssRegional,
26790 { "regional", "dsrc.regional",
26791 FT_UINT32, BASE_DEC, NULL, 0,
26792 "T_SignalStatusRegional", HFILL }},
26793 { &hf_dsrc_ssRegional_item,
26794 { "RegionalExtension", "dsrc.RegionalExtension_element",
26795 FT_NONE, BASE_NONE, NULL, 0,
26796 NULL, HFILL }},
26797 { &hf_dsrc_SignalStatusList_item,
26798 { "SignalStatus", "dsrc.SignalStatus_element",
26799 FT_NONE, BASE_NONE, NULL, 0,
26800 NULL, HFILL }},
26801 { &hf_dsrc_SignalStatusPackageList_item,
26802 { "SignalStatusPackage", "dsrc.SignalStatusPackage_element",
26803 FT_NONE, BASE_NONE, NULL, 0,
26804 NULL, HFILL }},
26805 { &hf_dsrc_requester,
26806 { "requester", "dsrc.requester_element",
26807 FT_NONE, BASE_NONE, NULL, 0,
26808 "SignalRequesterInfo", HFILL }},
26809 { &hf_dsrc_inboundOn,
26810 { "inboundOn", "dsrc.inboundOn",
26811 FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0,
26812 "IntersectionAccessPoint", HFILL }},
26813 { &hf_dsrc_outboundOn,
26814 { "outboundOn", "dsrc.outboundOn",
26815 FT_UINT32, BASE_DEC, VALS(dsrc_IntersectionAccessPoint_vals), 0,
26816 "IntersectionAccessPoint", HFILL }},
26817 { &hf_dsrc_sspMinute,
26818 { "minute", "dsrc.minute",
26819 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_moi_fmt), 0,
26820 "MinuteOfTheYear", HFILL }},
26821 { &hf_dsrc_sspStatus,
26822 { "status", "dsrc.signalStatusPackage.status",
26823 FT_UINT32, BASE_DEC, VALS(dsrc_PrioritizationResponseStatus_vals), 0,
26824 "PrioritizationResponseStatus", HFILL }},
26825 { &hf_dsrc_sspRegional,
26826 { "regional", "dsrc.regional",
26827 FT_UINT32, BASE_DEC, NULL, 0,
26828 "T_SignalStatusPackageRegional", HFILL }},
26829 { &hf_dsrc_sspRegional_item,
26830 { "RegionalExtension", "dsrc.RegionalExtension_element",
26831 FT_NONE, BASE_NONE, NULL, 0,
26832 NULL, HFILL }},
26833 { &hf_dsrc_shtcheading,
26834 { "heading", "dsrc.heading",
26835 FT_UINT32, BASE_DEC, VALS(dsrc_HeadingConfidenceDSRC_vals), 0,
26836 "HeadingConfidenceDSRC", HFILL }},
26837 { &hf_dsrc_shtcSpeed,
26838 { "speed", "dsrc.speed",
26839 FT_UINT32, BASE_DEC, VALS(dsrc_SpeedConfidenceDSRC_vals), 0,
26840 "SpeedConfidenceDSRC", HFILL }},
26841 { &hf_dsrc_throttle,
26842 { "throttle", "dsrc.throttle",
26843 FT_UINT32, BASE_DEC, VALS(dsrc_ThrottleConfidence_vals), 0,
26844 "ThrottleConfidence", HFILL }},
26845 { &hf_dsrc_SpeedLimitList_item,
26846 { "RegulatorySpeedLimit", "dsrc.RegulatorySpeedLimit_element",
26847 FT_NONE, BASE_NONE, NULL, 0,
26848 NULL, HFILL }},
26849 { &hf_dsrc_startTime,
26850 { "startTime", "dsrc.startTime",
26851 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_time_mark_fmt), 0,
26852 "TimeMark", HFILL }},
26853 { &hf_dsrc_minEndTime,
26854 { "minEndTime", "dsrc.minEndTime",
26855 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_time_mark_fmt), 0,
26856 "TimeMark", HFILL }},
26857 { &hf_dsrc_maxEndTime,
26858 { "maxEndTime", "dsrc.maxEndTime",
26859 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_time_mark_fmt), 0,
26860 "TimeMark", HFILL }},
26861 { &hf_dsrc_likelyTime,
26862 { "likelyTime", "dsrc.likelyTime",
26863 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_time_mark_fmt), 0,
26864 "TimeMark", HFILL }},
26865 { &hf_dsrc_tcdConfidence,
26866 { "confidence", "dsrc.confidence",
26867 FT_UINT32, BASE_DEC, VALS(dsrc_TimeIntervalConfidence_vals), 0,
26868 "TimeIntervalConfidence", HFILL }},
26869 { &hf_dsrc_nextTime,
26870 { "nextTime", "dsrc.nextTime",
26871 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_time_mark_fmt), 0,
26872 "TimeMark", HFILL }},
26873 { &hf_dsrc_transmisson,
26874 { "transmisson", "dsrc.transmisson",
26875 FT_UINT32, BASE_DEC, VALS(dsrc_TransmissionState_vals), 0,
26876 "TransmissionState", HFILL }},
26877 { &hf_dsrc_tasSpeed,
26878 { "speed", "dsrc.speed",
26879 FT_UINT32, BASE_CUSTOM, CF_FUNC(dsrc_velocity_fmt), 0,
26880 "Velocity", HFILL }},
26881 { &hf_dsrc_entityID,
26882 { "entityID", "dsrc.entityID",
26883 FT_BYTES, BASE_NONE, NULL, 0,
26884 "TemporaryID", HFILL }},
26885 { &hf_dsrc_stationID,
26886 { "stationID", "dsrc.stationID",
26887 FT_UINT32, BASE_DEC, NULL, 0,
26888 NULL, HFILL }},
26889 { &hf_dsrc_LaneSharing_overlappingLaneDescriptionProvided,
26890 { "overlappingLaneDescriptionProvided", "dsrc.LaneSharing.overlappingLaneDescriptionProvided",
26891 FT_BOOLEAN, 8, NULL, 0x80,
26892 NULL, HFILL }},
26893 { &hf_dsrc_LaneSharing_multipleLanesTreatedAsOneLane,
26894 { "multipleLanesTreatedAsOneLane", "dsrc.LaneSharing.multipleLanesTreatedAsOneLane",
26895 FT_BOOLEAN, 8, NULL, 0x40,
26896 NULL, HFILL }},
26897 { &hf_dsrc_LaneSharing_otherNonMotorizedTrafficTypes,
26898 { "otherNonMotorizedTrafficTypes", "dsrc.LaneSharing.otherNonMotorizedTrafficTypes",
26899 FT_BOOLEAN, 8, NULL, 0x20,
26900 NULL, HFILL }},
26901 { &hf_dsrc_LaneSharing_individualMotorizedVehicleTraffic,
26902 { "individualMotorizedVehicleTraffic", "dsrc.LaneSharing.individualMotorizedVehicleTraffic",
26903 FT_BOOLEAN, 8, NULL, 0x10,
26904 NULL, HFILL }},
26905 { &hf_dsrc_LaneSharing_busVehicleTraffic,
26906 { "busVehicleTraffic", "dsrc.LaneSharing.busVehicleTraffic",
26907 FT_BOOLEAN, 8, NULL, 0x08,
26908 NULL, HFILL }},
26909 { &hf_dsrc_LaneSharing_taxiVehicleTraffic,
26910 { "taxiVehicleTraffic", "dsrc.LaneSharing.taxiVehicleTraffic",
26911 FT_BOOLEAN, 8, NULL, 0x04,
26912 NULL, HFILL }},
26913 { &hf_dsrc_LaneSharing_pedestriansTraffic,
26914 { "pedestriansTraffic", "dsrc.LaneSharing.pedestriansTraffic",
26915 FT_BOOLEAN, 8, NULL, 0x02,
26916 NULL, HFILL }},
26917 { &hf_dsrc_LaneSharing_cyclistVehicleTraffic,
26918 { "cyclistVehicleTraffic", "dsrc.LaneSharing.cyclistVehicleTraffic",
26919 FT_BOOLEAN, 8, NULL, 0x01,
26920 NULL, HFILL }},
26921 { &hf_dsrc_LaneSharing_trackedVehicleTraffic,
26922 { "trackedVehicleTraffic", "dsrc.LaneSharing.trackedVehicleTraffic",
26923 FT_BOOLEAN, 8, NULL, 0x80,
26924 NULL, HFILL }},
26925 { &hf_dsrc_LaneSharing_pedestrianTraffic,
26926 { "pedestrianTraffic", "dsrc.LaneSharing.pedestrianTraffic",
26927 FT_BOOLEAN, 8, NULL, 0x40,
26928 NULL, HFILL }},
26929 { &hf_dsrc_AllowedManeuvers_maneuverStraightAllowed,
26930 { "maneuverStraightAllowed", "dsrc.AllowedManeuvers.maneuverStraightAllowed",
26931 FT_BOOLEAN, 8, NULL, 0x80,
26932 NULL, HFILL }},
26933 { &hf_dsrc_AllowedManeuvers_maneuverLeftAllowed,
26934 { "maneuverLeftAllowed", "dsrc.AllowedManeuvers.maneuverLeftAllowed",
26935 FT_BOOLEAN, 8, NULL, 0x40,
26936 NULL, HFILL }},
26937 { &hf_dsrc_AllowedManeuvers_maneuverRightAllowed,
26938 { "maneuverRightAllowed", "dsrc.AllowedManeuvers.maneuverRightAllowed",
26939 FT_BOOLEAN, 8, NULL, 0x20,
26940 NULL, HFILL }},
26941 { &hf_dsrc_AllowedManeuvers_maneuverUTurnAllowed,
26942 { "maneuverUTurnAllowed", "dsrc.AllowedManeuvers.maneuverUTurnAllowed",
26943 FT_BOOLEAN, 8, NULL, 0x10,
26944 NULL, HFILL }},
26945 { &hf_dsrc_AllowedManeuvers_maneuverLeftTurnOnRedAllowed,
26946 { "maneuverLeftTurnOnRedAllowed", "dsrc.AllowedManeuvers.maneuverLeftTurnOnRedAllowed",
26947 FT_BOOLEAN, 8, NULL, 0x08,
26948 NULL, HFILL }},
26949 { &hf_dsrc_AllowedManeuvers_maneuverRightTurnOnRedAllowed,
26950 { "maneuverRightTurnOnRedAllowed", "dsrc.AllowedManeuvers.maneuverRightTurnOnRedAllowed",
26951 FT_BOOLEAN, 8, NULL, 0x04,
26952 NULL, HFILL }},
26953 { &hf_dsrc_AllowedManeuvers_maneuverLaneChangeAllowed,
26954 { "maneuverLaneChangeAllowed", "dsrc.AllowedManeuvers.maneuverLaneChangeAllowed",
26955 FT_BOOLEAN, 8, NULL, 0x02,
26956 NULL, HFILL }},
26957 { &hf_dsrc_AllowedManeuvers_maneuverNoStoppingAllowed,
26958 { "maneuverNoStoppingAllowed", "dsrc.AllowedManeuvers.maneuverNoStoppingAllowed",
26959 FT_BOOLEAN, 8, NULL, 0x01,
26960 NULL, HFILL }},
26961 { &hf_dsrc_AllowedManeuvers_yieldAllwaysRequired,
26962 { "yieldAllwaysRequired", "dsrc.AllowedManeuvers.yieldAllwaysRequired",
26963 FT_BOOLEAN, 8, NULL, 0x80,
26964 NULL, HFILL }},
26965 { &hf_dsrc_AllowedManeuvers_goWithHalt,
26966 { "goWithHalt", "dsrc.AllowedManeuvers.goWithHalt",
26967 FT_BOOLEAN, 8, NULL, 0x40,
26968 NULL, HFILL }},
26969 { &hf_dsrc_AllowedManeuvers_caution,
26970 { "caution", "dsrc.AllowedManeuvers.caution",
26971 FT_BOOLEAN, 8, NULL, 0x20,
26972 NULL, HFILL }},
26973 { &hf_dsrc_AllowedManeuvers_reserved1,
26974 { "reserved1", "dsrc.AllowedManeuvers.reserved1",
26975 FT_BOOLEAN, 8, NULL, 0x10,
26976 NULL, HFILL }},
26977 { &hf_dsrc_GNSSstatus_unavailable,
26978 { "unavailable", "dsrc.GNSSstatus.unavailable",
26979 FT_BOOLEAN, 8, NULL, 0x80,
26980 NULL, HFILL }},
26981 { &hf_dsrc_GNSSstatus_isHealthy,
26982 { "isHealthy", "dsrc.GNSSstatus.isHealthy",
26983 FT_BOOLEAN, 8, NULL, 0x40,
26984 NULL, HFILL }},
26985 { &hf_dsrc_GNSSstatus_isMonitored,
26986 { "isMonitored", "dsrc.GNSSstatus.isMonitored",
26987 FT_BOOLEAN, 8, NULL, 0x20,
26988 NULL, HFILL }},
26989 { &hf_dsrc_GNSSstatus_baseStationType,
26990 { "baseStationType", "dsrc.GNSSstatus.baseStationType",
26991 FT_BOOLEAN, 8, NULL, 0x10,
26992 NULL, HFILL }},
26993 { &hf_dsrc_GNSSstatus_aPDOPofUnder5,
26994 { "aPDOPofUnder5", "dsrc.GNSSstatus.aPDOPofUnder5",
26995 FT_BOOLEAN, 8, NULL, 0x08,
26996 NULL, HFILL }},
26997 { &hf_dsrc_GNSSstatus_inViewOfUnder5,
26998 { "inViewOfUnder5", "dsrc.GNSSstatus.inViewOfUnder5",
26999 FT_BOOLEAN, 8, NULL, 0x04,
27000 NULL, HFILL }},
27001 { &hf_dsrc_GNSSstatus_localCorrectionsPresent,
27002 { "localCorrectionsPresent", "dsrc.GNSSstatus.localCorrectionsPresent",
27003 FT_BOOLEAN, 8, NULL, 0x02,
27004 NULL, HFILL }},
27005 { &hf_dsrc_GNSSstatus_networkCorrectionsPresent,
27006 { "networkCorrectionsPresent", "dsrc.GNSSstatus.networkCorrectionsPresent",
27007 FT_BOOLEAN, 8, NULL, 0x01,
27008 NULL, HFILL }},
27009 { &hf_dsrc_IntersectionStatusObject_manualControlIsEnabled,
27010 { "manualControlIsEnabled", "dsrc.IntersectionStatusObject.manualControlIsEnabled",
27011 FT_BOOLEAN, 8, NULL, 0x80,
27012 NULL, HFILL }},
27013 { &hf_dsrc_IntersectionStatusObject_stopTimeIsActivated,
27014 { "stopTimeIsActivated", "dsrc.IntersectionStatusObject.stopTimeIsActivated",
27015 FT_BOOLEAN, 8, NULL, 0x40,
27016 NULL, HFILL }},
27017 { &hf_dsrc_IntersectionStatusObject_failureFlash,
27018 { "failureFlash", "dsrc.IntersectionStatusObject.failureFlash",
27019 FT_BOOLEAN, 8, NULL, 0x20,
27020 NULL, HFILL }},
27021 { &hf_dsrc_IntersectionStatusObject_preemptIsActive,
27022 { "preemptIsActive", "dsrc.IntersectionStatusObject.preemptIsActive",
27023 FT_BOOLEAN, 8, NULL, 0x10,
27024 NULL, HFILL }},
27025 { &hf_dsrc_IntersectionStatusObject_signalPriorityIsActive,
27026 { "signalPriorityIsActive", "dsrc.IntersectionStatusObject.signalPriorityIsActive",
27027 FT_BOOLEAN, 8, NULL, 0x08,
27028 NULL, HFILL }},
27029 { &hf_dsrc_IntersectionStatusObject_fixedTimeOperation,
27030 { "fixedTimeOperation", "dsrc.IntersectionStatusObject.fixedTimeOperation",
27031 FT_BOOLEAN, 8, NULL, 0x04,
27032 NULL, HFILL }},
27033 { &hf_dsrc_IntersectionStatusObject_trafficDependentOperation,
27034 { "trafficDependentOperation", "dsrc.IntersectionStatusObject.trafficDependentOperation",
27035 FT_BOOLEAN, 8, NULL, 0x02,
27036 NULL, HFILL }},
27037 { &hf_dsrc_IntersectionStatusObject_standbyOperation,
27038 { "standbyOperation", "dsrc.IntersectionStatusObject.standbyOperation",
27039 FT_BOOLEAN, 8, NULL, 0x01,
27040 NULL, HFILL }},
27041 { &hf_dsrc_IntersectionStatusObject_failureMode,
27042 { "failureMode", "dsrc.IntersectionStatusObject.failureMode",
27043 FT_BOOLEAN, 8, NULL, 0x80,
27044 NULL, HFILL }},
27045 { &hf_dsrc_IntersectionStatusObject_off,
27046 { "off", "dsrc.IntersectionStatusObject.off",
27047 FT_BOOLEAN, 8, NULL, 0x40,
27048 NULL, HFILL }},
27049 { &hf_dsrc_IntersectionStatusObject_recentMAPmessageUpdate,
27050 { "recentMAPmessageUpdate", "dsrc.IntersectionStatusObject.recentMAPmessageUpdate",
27051 FT_BOOLEAN, 8, NULL, 0x20,
27052 NULL, HFILL }},
27053 { &hf_dsrc_IntersectionStatusObject_recentChangeInMAPassignedLanesIDsUsed,
27054 { "recentChangeInMAPassignedLanesIDsUsed", "dsrc.IntersectionStatusObject.recentChangeInMAPassignedLanesIDsUsed",
27055 FT_BOOLEAN, 8, NULL, 0x10,
27056 NULL, HFILL }},
27057 { &hf_dsrc_IntersectionStatusObject_noValidMAPisAvailableAtThisTime,
27058 { "noValidMAPisAvailableAtThisTime", "dsrc.IntersectionStatusObject.noValidMAPisAvailableAtThisTime",
27059 FT_BOOLEAN, 8, NULL, 0x08,
27060 NULL, HFILL }},
27061 { &hf_dsrc_IntersectionStatusObject_noValidSPATisAvailableAtThisTime,
27062 { "noValidSPATisAvailableAtThisTime", "dsrc.IntersectionStatusObject.noValidSPATisAvailableAtThisTime",
27063 FT_BOOLEAN, 8, NULL, 0x04,
27064 NULL, HFILL }},
27065 { &hf_dsrc_LaneAttributes_Barrier_median_RevocableLane,
27066 { "median-RevocableLane", "dsrc.LaneAttributes.Barrier.median.RevocableLane",
27067 FT_BOOLEAN, 8, NULL, 0x80,
27068 NULL, HFILL }},
27069 { &hf_dsrc_LaneAttributes_Barrier_median,
27070 { "median", "dsrc.LaneAttributes.Barrier.median",
27071 FT_BOOLEAN, 8, NULL, 0x40,
27072 NULL, HFILL }},
27073 { &hf_dsrc_LaneAttributes_Barrier_whiteLineHashing,
27074 { "whiteLineHashing", "dsrc.LaneAttributes.Barrier.whiteLineHashing",
27075 FT_BOOLEAN, 8, NULL, 0x20,
27076 NULL, HFILL }},
27077 { &hf_dsrc_LaneAttributes_Barrier_stripedLines,
27078 { "stripedLines", "dsrc.LaneAttributes.Barrier.stripedLines",
27079 FT_BOOLEAN, 8, NULL, 0x10,
27080 NULL, HFILL }},
27081 { &hf_dsrc_LaneAttributes_Barrier_doubleStripedLines,
27082 { "doubleStripedLines", "dsrc.LaneAttributes.Barrier.doubleStripedLines",
27083 FT_BOOLEAN, 8, NULL, 0x08,
27084 NULL, HFILL }},
27085 { &hf_dsrc_LaneAttributes_Barrier_trafficCones,
27086 { "trafficCones", "dsrc.LaneAttributes.Barrier.trafficCones",
27087 FT_BOOLEAN, 8, NULL, 0x04,
27088 NULL, HFILL }},
27089 { &hf_dsrc_LaneAttributes_Barrier_constructionBarrier,
27090 { "constructionBarrier", "dsrc.LaneAttributes.Barrier.constructionBarrier",
27091 FT_BOOLEAN, 8, NULL, 0x02,
27092 NULL, HFILL }},
27093 { &hf_dsrc_LaneAttributes_Barrier_trafficChannels,
27094 { "trafficChannels", "dsrc.LaneAttributes.Barrier.trafficChannels",
27095 FT_BOOLEAN, 8, NULL, 0x01,
27096 NULL, HFILL }},
27097 { &hf_dsrc_LaneAttributes_Barrier_lowCurbs,
27098 { "lowCurbs", "dsrc.LaneAttributes.Barrier.lowCurbs",
27099 FT_BOOLEAN, 8, NULL, 0x80,
27100 NULL, HFILL }},
27101 { &hf_dsrc_LaneAttributes_Barrier_highCurbs,
27102 { "highCurbs", "dsrc.LaneAttributes.Barrier.highCurbs",
27103 FT_BOOLEAN, 8, NULL, 0x40,
27104 NULL, HFILL }},
27105 { &hf_dsrc_LaneAttributes_Bike_bikeRevocableLane,
27106 { "bikeRevocableLane", "dsrc.LaneAttributes.Bike.bikeRevocableLane",
27107 FT_BOOLEAN, 8, NULL, 0x80,
27108 NULL, HFILL }},
27109 { &hf_dsrc_LaneAttributes_Bike_pedestrianUseAllowed,
27110 { "pedestrianUseAllowed", "dsrc.LaneAttributes.Bike.pedestrianUseAllowed",
27111 FT_BOOLEAN, 8, NULL, 0x40,
27112 NULL, HFILL }},
27113 { &hf_dsrc_LaneAttributes_Bike_isBikeFlyOverLane,
27114 { "isBikeFlyOverLane", "dsrc.LaneAttributes.Bike.isBikeFlyOverLane",
27115 FT_BOOLEAN, 8, NULL, 0x20,
27116 NULL, HFILL }},
27117 { &hf_dsrc_LaneAttributes_Bike_fixedCycleTime,
27118 { "fixedCycleTime", "dsrc.LaneAttributes.Bike.fixedCycleTime",
27119 FT_BOOLEAN, 8, NULL, 0x10,
27120 NULL, HFILL }},
27121 { &hf_dsrc_LaneAttributes_Bike_biDirectionalCycleTimes,
27122 { "biDirectionalCycleTimes", "dsrc.LaneAttributes.Bike.biDirectionalCycleTimes",
27123 FT_BOOLEAN, 8, NULL, 0x08,
27124 NULL, HFILL }},
27125 { &hf_dsrc_LaneAttributes_Bike_isolatedByBarrier,
27126 { "isolatedByBarrier", "dsrc.LaneAttributes.Bike.isolatedByBarrier",
27127 FT_BOOLEAN, 8, NULL, 0x04,
27128 NULL, HFILL }},
27129 { &hf_dsrc_LaneAttributes_Bike_unsignalizedSegmentsPresent,
27130 { "unsignalizedSegmentsPresent", "dsrc.LaneAttributes.Bike.unsignalizedSegmentsPresent",
27131 FT_BOOLEAN, 8, NULL, 0x02,
27132 NULL, HFILL }},
27133 { &hf_dsrc_LaneAttributes_Crosswalk_crosswalkRevocableLane,
27134 { "crosswalkRevocableLane", "dsrc.LaneAttributes.Crosswalk.crosswalkRevocableLane",
27135 FT_BOOLEAN, 8, NULL, 0x80,
27136 NULL, HFILL }},
27137 { &hf_dsrc_LaneAttributes_Crosswalk_bicyleUseAllowed,
27138 { "bicyleUseAllowed", "dsrc.LaneAttributes.Crosswalk.bicyleUseAllowed",
27139 FT_BOOLEAN, 8, NULL, 0x40,
27140 NULL, HFILL }},
27141 { &hf_dsrc_LaneAttributes_Crosswalk_isXwalkFlyOverLane,
27142 { "isXwalkFlyOverLane", "dsrc.LaneAttributes.Crosswalk.isXwalkFlyOverLane",
27143 FT_BOOLEAN, 8, NULL, 0x20,
27144 NULL, HFILL }},
27145 { &hf_dsrc_LaneAttributes_Crosswalk_fixedCycleTime,
27146 { "fixedCycleTime", "dsrc.LaneAttributes.Crosswalk.fixedCycleTime",
27147 FT_BOOLEAN, 8, NULL, 0x10,
27148 NULL, HFILL }},
27149 { &hf_dsrc_LaneAttributes_Crosswalk_biDirectionalCycleTimes,
27150 { "biDirectionalCycleTimes", "dsrc.LaneAttributes.Crosswalk.biDirectionalCycleTimes",
27151 FT_BOOLEAN, 8, NULL, 0x08,
27152 NULL, HFILL }},
27153 { &hf_dsrc_LaneAttributes_Crosswalk_hasPushToWalkButton,
27154 { "hasPushToWalkButton", "dsrc.LaneAttributes.Crosswalk.hasPushToWalkButton",
27155 FT_BOOLEAN, 8, NULL, 0x04,
27156 NULL, HFILL }},
27157 { &hf_dsrc_LaneAttributes_Crosswalk_audioSupport,
27158 { "audioSupport", "dsrc.LaneAttributes.Crosswalk.audioSupport",
27159 FT_BOOLEAN, 8, NULL, 0x02,
27160 NULL, HFILL }},
27161 { &hf_dsrc_LaneAttributes_Crosswalk_rfSignalRequestPresent,
27162 { "rfSignalRequestPresent", "dsrc.LaneAttributes.Crosswalk.rfSignalRequestPresent",
27163 FT_BOOLEAN, 8, NULL, 0x01,
27164 NULL, HFILL }},
27165 { &hf_dsrc_LaneAttributes_Crosswalk_unsignalizedSegmentsPresent,
27166 { "unsignalizedSegmentsPresent", "dsrc.LaneAttributes.Crosswalk.unsignalizedSegmentsPresent",
27167 FT_BOOLEAN, 8, NULL, 0x80,
27168 NULL, HFILL }},
27169 { &hf_dsrc_LaneAttributes_Parking_parkingRevocableLane,
27170 { "parkingRevocableLane", "dsrc.LaneAttributes.Parking.parkingRevocableLane",
27171 FT_BOOLEAN, 8, NULL, 0x80,
27172 NULL, HFILL }},
27173 { &hf_dsrc_LaneAttributes_Parking_parallelParkingInUse,
27174 { "parallelParkingInUse", "dsrc.LaneAttributes.Parking.parallelParkingInUse",
27175 FT_BOOLEAN, 8, NULL, 0x40,
27176 NULL, HFILL }},
27177 { &hf_dsrc_LaneAttributes_Parking_headInParkingInUse,
27178 { "headInParkingInUse", "dsrc.LaneAttributes.Parking.headInParkingInUse",
27179 FT_BOOLEAN, 8, NULL, 0x20,
27180 NULL, HFILL }},
27181 { &hf_dsrc_LaneAttributes_Parking_doNotParkZone,
27182 { "doNotParkZone", "dsrc.LaneAttributes.Parking.doNotParkZone",
27183 FT_BOOLEAN, 8, NULL, 0x10,
27184 NULL, HFILL }},
27185 { &hf_dsrc_LaneAttributes_Parking_parkingForBusUse,
27186 { "parkingForBusUse", "dsrc.LaneAttributes.Parking.parkingForBusUse",
27187 FT_BOOLEAN, 8, NULL, 0x08,
27188 NULL, HFILL }},
27189 { &hf_dsrc_LaneAttributes_Parking_parkingForTaxiUse,
27190 { "parkingForTaxiUse", "dsrc.LaneAttributes.Parking.parkingForTaxiUse",
27191 FT_BOOLEAN, 8, NULL, 0x04,
27192 NULL, HFILL }},
27193 { &hf_dsrc_LaneAttributes_Parking_noPublicParkingUse,
27194 { "noPublicParkingUse", "dsrc.LaneAttributes.Parking.noPublicParkingUse",
27195 FT_BOOLEAN, 8, NULL, 0x02,
27196 NULL, HFILL }},
27197 { &hf_dsrc_LaneAttributes_Sidewalk_sidewalk_RevocableLane,
27198 { "sidewalk-RevocableLane", "dsrc.LaneAttributes.Sidewalk.sidewalk.RevocableLane",
27199 FT_BOOLEAN, 8, NULL, 0x80,
27200 NULL, HFILL }},
27201 { &hf_dsrc_LaneAttributes_Sidewalk_bicyleUseAllowed,
27202 { "bicyleUseAllowed", "dsrc.LaneAttributes.Sidewalk.bicyleUseAllowed",
27203 FT_BOOLEAN, 8, NULL, 0x40,
27204 NULL, HFILL }},
27205 { &hf_dsrc_LaneAttributes_Sidewalk_isSidewalkFlyOverLane,
27206 { "isSidewalkFlyOverLane", "dsrc.LaneAttributes.Sidewalk.isSidewalkFlyOverLane",
27207 FT_BOOLEAN, 8, NULL, 0x20,
27208 NULL, HFILL }},
27209 { &hf_dsrc_LaneAttributes_Sidewalk_walkBikes,
27210 { "walkBikes", "dsrc.LaneAttributes.Sidewalk.walkBikes",
27211 FT_BOOLEAN, 8, NULL, 0x10,
27212 NULL, HFILL }},
27213 { &hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesRevocableLane,
27214 { "stripeToConnectingLanesRevocableLane", "dsrc.LaneAttributes.Striping.stripeToConnectingLanesRevocableLane",
27215 FT_BOOLEAN, 8, NULL, 0x80,
27216 NULL, HFILL }},
27217 { &hf_dsrc_LaneAttributes_Striping_stripeDrawOnLeft,
27218 { "stripeDrawOnLeft", "dsrc.LaneAttributes.Striping.stripeDrawOnLeft",
27219 FT_BOOLEAN, 8, NULL, 0x40,
27220 NULL, HFILL }},
27221 { &hf_dsrc_LaneAttributes_Striping_stripeDrawOnRight,
27222 { "stripeDrawOnRight", "dsrc.LaneAttributes.Striping.stripeDrawOnRight",
27223 FT_BOOLEAN, 8, NULL, 0x20,
27224 NULL, HFILL }},
27225 { &hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesLeft,
27226 { "stripeToConnectingLanesLeft", "dsrc.LaneAttributes.Striping.stripeToConnectingLanesLeft",
27227 FT_BOOLEAN, 8, NULL, 0x10,
27228 NULL, HFILL }},
27229 { &hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesRight,
27230 { "stripeToConnectingLanesRight", "dsrc.LaneAttributes.Striping.stripeToConnectingLanesRight",
27231 FT_BOOLEAN, 8, NULL, 0x08,
27232 NULL, HFILL }},
27233 { &hf_dsrc_LaneAttributes_Striping_stripeToConnectingLanesAhead,
27234 { "stripeToConnectingLanesAhead", "dsrc.LaneAttributes.Striping.stripeToConnectingLanesAhead",
27235 FT_BOOLEAN, 8, NULL, 0x04,
27236 NULL, HFILL }},
27237 { &hf_dsrc_LaneAttributes_TrackedVehicle_spec_RevocableLane,
27238 { "spec-RevocableLane", "dsrc.LaneAttributes.TrackedVehicle.spec.RevocableLane",
27239 FT_BOOLEAN, 8, NULL, 0x80,
27240 NULL, HFILL }},
27241 { &hf_dsrc_LaneAttributes_TrackedVehicle_spec_commuterRailRoadTrack,
27242 { "spec-commuterRailRoadTrack", "dsrc.LaneAttributes.TrackedVehicle.spec.commuterRailRoadTrack",
27243 FT_BOOLEAN, 8, NULL, 0x40,
27244 NULL, HFILL }},
27245 { &hf_dsrc_LaneAttributes_TrackedVehicle_spec_lightRailRoadTrack,
27246 { "spec-lightRailRoadTrack", "dsrc.LaneAttributes.TrackedVehicle.spec.lightRailRoadTrack",
27247 FT_BOOLEAN, 8, NULL, 0x20,
27248 NULL, HFILL }},
27249 { &hf_dsrc_LaneAttributes_TrackedVehicle_spec_heavyRailRoadTrack,
27250 { "spec-heavyRailRoadTrack", "dsrc.LaneAttributes.TrackedVehicle.spec.heavyRailRoadTrack",
27251 FT_BOOLEAN, 8, NULL, 0x10,
27252 NULL, HFILL }},
27253 { &hf_dsrc_LaneAttributes_TrackedVehicle_spec_otherRailType,
27254 { "spec-otherRailType", "dsrc.LaneAttributes.TrackedVehicle.spec.otherRailType",
27255 FT_BOOLEAN, 8, NULL, 0x08,
27256 NULL, HFILL }},
27257 { &hf_dsrc_LaneAttributes_Vehicle_isVehicleRevocableLane,
27258 { "isVehicleRevocableLane", "dsrc.LaneAttributes.Vehicle.isVehicleRevocableLane",
27259 FT_BOOLEAN, 8, NULL, 0x80,
27260 NULL, HFILL }},
27261 { &hf_dsrc_LaneAttributes_Vehicle_isVehicleFlyOverLane,
27262 { "isVehicleFlyOverLane", "dsrc.LaneAttributes.Vehicle.isVehicleFlyOverLane",
27263 FT_BOOLEAN, 8, NULL, 0x40,
27264 NULL, HFILL }},
27265 { &hf_dsrc_LaneAttributes_Vehicle_hovLaneUseOnly,
27266 { "hovLaneUseOnly", "dsrc.LaneAttributes.Vehicle.hovLaneUseOnly",
27267 FT_BOOLEAN, 8, NULL, 0x20,
27268 NULL, HFILL }},
27269 { &hf_dsrc_LaneAttributes_Vehicle_restrictedToBusUse,
27270 { "restrictedToBusUse", "dsrc.LaneAttributes.Vehicle.restrictedToBusUse",
27271 FT_BOOLEAN, 8, NULL, 0x10,
27272 NULL, HFILL }},
27273 { &hf_dsrc_LaneAttributes_Vehicle_restrictedToTaxiUse,
27274 { "restrictedToTaxiUse", "dsrc.LaneAttributes.Vehicle.restrictedToTaxiUse",
27275 FT_BOOLEAN, 8, NULL, 0x08,
27276 NULL, HFILL }},
27277 { &hf_dsrc_LaneAttributes_Vehicle_restrictedFromPublicUse,
27278 { "restrictedFromPublicUse", "dsrc.LaneAttributes.Vehicle.restrictedFromPublicUse",
27279 FT_BOOLEAN, 8, NULL, 0x04,
27280 NULL, HFILL }},
27281 { &hf_dsrc_LaneAttributes_Vehicle_hasIRbeaconCoverage,
27282 { "hasIRbeaconCoverage", "dsrc.LaneAttributes.Vehicle.hasIRbeaconCoverage",
27283 FT_BOOLEAN, 8, NULL, 0x02,
27284 NULL, HFILL }},
27285 { &hf_dsrc_LaneAttributes_Vehicle_permissionOnRequest,
27286 { "permissionOnRequest", "dsrc.LaneAttributes.Vehicle.permissionOnRequest",
27287 FT_BOOLEAN, 8, NULL, 0x01,
27288 NULL, HFILL }},
27289 { &hf_dsrc_LaneDirection_ingressPath,
27290 { "ingressPath", "dsrc.LaneDirection.ingressPath",
27291 FT_BOOLEAN, 8, NULL, 0x80,
27292 NULL, HFILL }},
27293 { &hf_dsrc_LaneDirection_egressPath,
27294 { "egressPath", "dsrc.LaneDirection.egressPath",
27295 FT_BOOLEAN, 8, NULL, 0x40,
27296 NULL, HFILL }},
27297 { &hf_dsrc_TransitVehicleStatus_loading,
27298 { "loading", "dsrc.TransitVehicleStatus.loading",
27299 FT_BOOLEAN, 8, NULL, 0x80,
27300 NULL, HFILL }},
27301 { &hf_dsrc_TransitVehicleStatus_anADAuse,
27302 { "anADAuse", "dsrc.TransitVehicleStatus.anADAuse",
27303 FT_BOOLEAN, 8, NULL, 0x40,
27304 NULL, HFILL }},
27305 { &hf_dsrc_TransitVehicleStatus_aBikeLoad,
27306 { "aBikeLoad", "dsrc.TransitVehicleStatus.aBikeLoad",
27307 FT_BOOLEAN, 8, NULL, 0x20,
27308 NULL, HFILL }},
27309 { &hf_dsrc_TransitVehicleStatus_doorOpen,
27310 { "doorOpen", "dsrc.TransitVehicleStatus.doorOpen",
27311 FT_BOOLEAN, 8, NULL, 0x10,
27312 NULL, HFILL }},
27313 { &hf_dsrc_TransitVehicleStatus_charging,
27314 { "charging", "dsrc.TransitVehicleStatus.charging",
27315 FT_BOOLEAN, 8, NULL, 0x08,
27316 NULL, HFILL }},
27317 { &hf_dsrc_TransitVehicleStatus_atStopLine,
27318 { "atStopLine", "dsrc.TransitVehicleStatus.atStopLine",
27319 FT_BOOLEAN, 8, NULL, 0x04,
27320 NULL, HFILL }},
27322 /* --- Module AddGrpC --- --- --- */
27324 { &hf_AddGrpC_AddGrpC_ConnectionManeuverAssist_addGrpC_PDU,
27325 { "ConnectionManeuverAssist-addGrpC", "AddGrpC.ConnectionManeuverAssist_addGrpC_element",
27326 FT_NONE, BASE_NONE, NULL, 0,
27327 NULL, HFILL }},
27328 { &hf_AddGrpC_AddGrpC_ConnectionTrajectory_addGrpC_PDU,
27329 { "ConnectionTrajectory-addGrpC", "AddGrpC.ConnectionTrajectory_addGrpC_element",
27330 FT_NONE, BASE_NONE, NULL, 0,
27331 NULL, HFILL }},
27332 { &hf_AddGrpC_AddGrpC_IntersectionState_addGrpC_PDU,
27333 { "IntersectionState-addGrpC", "AddGrpC.IntersectionState_addGrpC_element",
27334 FT_NONE, BASE_NONE, NULL, 0,
27335 NULL, HFILL }},
27336 { &hf_AddGrpC_AddGrpC_LaneAttributes_addGrpC_PDU,
27337 { "LaneAttributes-addGrpC", "AddGrpC.LaneAttributes_addGrpC_element",
27338 FT_NONE, BASE_NONE, NULL, 0,
27339 NULL, HFILL }},
27340 { &hf_AddGrpC_AddGrpC_MapData_addGrpC_PDU,
27341 { "MapData-addGrpC", "AddGrpC.MapData_addGrpC_element",
27342 FT_NONE, BASE_NONE, NULL, 0,
27343 NULL, HFILL }},
27344 { &hf_AddGrpC_AddGrpC_MovementEvent_addGrpC_PDU,
27345 { "MovementEvent-addGrpC", "AddGrpC.MovementEvent_addGrpC_element",
27346 FT_NONE, BASE_NONE, NULL, 0,
27347 NULL, HFILL }},
27348 { &hf_AddGrpC_AddGrpC_NodeAttributeSet_addGrpC_PDU,
27349 { "NodeAttributeSet-addGrpC", "AddGrpC.NodeAttributeSet_addGrpC_element",
27350 FT_NONE, BASE_NONE, NULL, 0,
27351 NULL, HFILL }},
27352 { &hf_AddGrpC_AddGrpC_Position3D_addGrpC_PDU,
27353 { "Position3D-addGrpC", "AddGrpC.Position3D_addGrpC_element",
27354 FT_NONE, BASE_NONE, NULL, 0,
27355 NULL, HFILL }},
27356 { &hf_AddGrpC_AddGrpC_RestrictionUserType_addGrpC_PDU,
27357 { "RestrictionUserType-addGrpC", "AddGrpC.RestrictionUserType_addGrpC_element",
27358 FT_NONE, BASE_NONE, NULL, 0,
27359 NULL, HFILL }},
27360 { &hf_AddGrpC_AddGrpC_RequestorDescription_addGrpC_PDU,
27361 { "RequestorDescription-addGrpC", "AddGrpC.RequestorDescription_addGrpC_element",
27362 FT_NONE, BASE_NONE, NULL, 0,
27363 NULL, HFILL }},
27364 { &hf_AddGrpC_AddGrpC_SignalStatusPackage_addGrpC_PDU,
27365 { "SignalStatusPackage-addGrpC", "AddGrpC.SignalStatusPackage_addGrpC_element",
27366 FT_NONE, BASE_NONE, NULL, 0,
27367 NULL, HFILL }},
27368 { &hf_AddGrpC_itsStationPosition,
27369 { "itsStationPosition", "AddGrpC.itsStationPosition",
27370 FT_UINT32, BASE_DEC, NULL, 0,
27371 "ItsStationPositionList", HFILL }},
27372 { &hf_AddGrpC_nodes,
27373 { "nodes", "AddGrpC.nodes",
27374 FT_UINT32, BASE_DEC, NULL, 0,
27375 "NodeSetXY", HFILL }},
27376 { &hf_AddGrpC_connectionID,
27377 { "connectionID", "AddGrpC.connectionID",
27378 FT_UINT32, BASE_DEC, NULL, 0,
27379 "LaneConnectionID", HFILL }},
27380 { &hf_AddGrpC_activePrioritizations,
27381 { "activePrioritizations", "AddGrpC.activePrioritizations",
27382 FT_UINT32, BASE_DEC, NULL, 0,
27383 "PrioritizationResponseList", HFILL }},
27384 { &hf_AddGrpC_maxVehicleHeight,
27385 { "maxVehicleHeight", "AddGrpC.maxVehicleHeight",
27386 FT_UINT32, BASE_DEC, VALS(its_VehicleHeight_vals), 0,
27387 "VehicleHeight", HFILL }},
27388 { &hf_AddGrpC_maxVehicleWeight,
27389 { "maxVehicleWeight", "AddGrpC.maxVehicleWeight",
27390 FT_UINT32, BASE_DEC, VALS(its_VehicleMass_vals), 0,
27391 "VehicleMass", HFILL }},
27392 { &hf_AddGrpC_signalHeadLocations,
27393 { "signalHeadLocations", "AddGrpC.signalHeadLocations",
27394 FT_UINT32, BASE_DEC, NULL, 0,
27395 "SignalHeadLocationList", HFILL }},
27396 { &hf_AddGrpC_stateChangeReason,
27397 { "stateChangeReason", "AddGrpC.stateChangeReason",
27398 FT_UINT32, BASE_DEC, VALS(AddGrpC_ExceptionalCondition_vals), 0,
27399 "ExceptionalCondition", HFILL }},
27400 { &hf_AddGrpC_ptvRequest,
27401 { "ptvRequest", "AddGrpC.ptvRequest",
27402 FT_UINT32, BASE_DEC, VALS(AddGrpC_PtvRequestType_vals), 0,
27403 "PtvRequestType", HFILL }},
27404 { &hf_AddGrpC_nodeLink,
27405 { "nodeLink", "AddGrpC.nodeLink",
27406 FT_UINT32, BASE_DEC, NULL, 0,
27407 NULL, HFILL }},
27408 { &hf_AddGrpC_node,
27409 { "node", "AddGrpC.node_element",
27410 FT_NONE, BASE_NONE, NULL, 0,
27411 NULL, HFILL }},
27412 { &hf_AddGrpC_altitude,
27413 { "altitude", "AddGrpC.altitude_element",
27414 FT_NONE, BASE_NONE, NULL, 0,
27415 NULL, HFILL }},
27416 { &hf_AddGrpC_emission,
27417 { "emission", "AddGrpC.emission",
27418 FT_UINT32, BASE_DEC, VALS(AddGrpC_EmissionType_vals), 0,
27419 "EmissionType", HFILL }},
27420 { &hf_AddGrpC_fuel,
27421 { "fuel", "AddGrpC.fuel",
27422 FT_UINT32, BASE_DEC, VALS(dsrc_FuelType_vals), 0,
27423 "FuelType", HFILL }},
27424 { &hf_AddGrpC_batteryStatus,
27425 { "batteryStatus", "AddGrpC.batteryStatus",
27426 FT_UINT32, BASE_DEC, VALS(AddGrpC_BatteryStatus_vals), 0,
27427 NULL, HFILL }},
27428 { &hf_AddGrpC_synchToSchedule,
27429 { "synchToSchedule", "AddGrpC.synchToSchedule",
27430 FT_INT32, BASE_CUSTOM, CF_FUNC(dsrc_delta_time_fmt), 0,
27431 "DeltaTime", HFILL }},
27432 { &hf_AddGrpC_rejectedReason,
27433 { "rejectedReason", "AddGrpC.rejectedReason",
27434 FT_UINT32, BASE_DEC, VALS(AddGrpC_RejectedReason_vals), 0,
27435 NULL, HFILL }},
27436 { &hf_AddGrpC_stationID,
27437 { "stationID", "AddGrpC.stationID",
27438 FT_UINT32, BASE_DEC, NULL, 0,
27439 NULL, HFILL }},
27440 { &hf_AddGrpC_laneID,
27441 { "laneID", "AddGrpC.laneID",
27442 FT_UINT32, BASE_DEC, NULL, 0,
27443 NULL, HFILL }},
27444 { &hf_AddGrpC_nodeXY,
27445 { "nodeXY", "AddGrpC.nodeXY",
27446 FT_UINT32, BASE_DEC, VALS(dsrc_NodeOffsetPointXY_vals), 0,
27447 "NodeOffsetPointXY", HFILL }},
27448 { &hf_AddGrpC_timeReference,
27449 { "timeReference", "AddGrpC.timeReference",
27450 FT_UINT32, BASE_DEC, VALS(AddGrpC_TimeReference_vals), 0,
27451 NULL, HFILL }},
27452 { &hf_AddGrpC_ItsStationPositionList_item,
27453 { "ItsStationPosition", "AddGrpC.ItsStationPosition_element",
27454 FT_NONE, BASE_NONE, NULL, 0,
27455 NULL, HFILL }},
27456 { &hf_AddGrpC_id,
27457 { "id", "AddGrpC.id",
27458 FT_INT32, BASE_DEC, NULL, 0,
27459 "INTEGER", HFILL }},
27460 { &hf_AddGrpC_lane,
27461 { "lane", "AddGrpC.lane",
27462 FT_UINT32, BASE_DEC, NULL, 0,
27463 "LaneID", HFILL }},
27464 { &hf_AddGrpC_intersectionID,
27465 { "intersectionID", "AddGrpC.intersectionID",
27466 FT_UINT32, BASE_DEC, NULL, 0,
27467 NULL, HFILL }},
27468 { &hf_AddGrpC_NodeLink_item,
27469 { "Node", "AddGrpC.Node_element",
27470 FT_NONE, BASE_NONE, NULL, 0,
27471 NULL, HFILL }},
27472 { &hf_AddGrpC_priorState,
27473 { "priorState", "AddGrpC.priorState",
27474 FT_UINT32, BASE_DEC, VALS(dsrc_PrioritizationResponseStatus_vals), 0,
27475 "PrioritizationResponseStatus", HFILL }},
27476 { &hf_AddGrpC_signalGroup,
27477 { "signalGroup", "AddGrpC.signalGroup",
27478 FT_UINT32, BASE_DEC, NULL, 0,
27479 "SignalGroupID", HFILL }},
27480 { &hf_AddGrpC_PrioritizationResponseList_item,
27481 { "PrioritizationResponse", "AddGrpC.PrioritizationResponse_element",
27482 FT_NONE, BASE_NONE, NULL, 0,
27483 NULL, HFILL }},
27484 { &hf_AddGrpC_nodeZ,
27485 { "nodeZ", "AddGrpC.nodeZ",
27486 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_altitude_fmt), 0,
27487 "DeltaAltitude", HFILL }},
27488 { &hf_AddGrpC_signalGroupID,
27489 { "signalGroupID", "AddGrpC.signalGroupID",
27490 FT_UINT32, BASE_DEC, NULL, 0,
27491 NULL, HFILL }},
27492 { &hf_AddGrpC_SignalHeadLocationList_item,
27493 { "SignalHeadLocation", "AddGrpC.SignalHeadLocation_element",
27494 FT_NONE, BASE_NONE, NULL, 0,
27495 NULL, HFILL }},
27497 /* --- Module GDD --- --- --- */
27499 { &hf_gdd_pictogramCode,
27500 { "pictogramCode", "gdd.pictogramCode_element",
27501 FT_NONE, BASE_NONE, NULL, 0,
27502 "Pictogram", HFILL }},
27503 { &hf_gdd_attributes,
27504 { "attributes", "gdd.attributes",
27505 FT_UINT32, BASE_DEC, NULL, 0,
27506 "GddAttributes", HFILL }},
27507 { &hf_gdd_countryCode,
27508 { "countryCode", "gdd.countryCode",
27509 FT_BYTES, BASE_NONE, NULL, 0,
27510 "Pictogram_countryCode", HFILL }},
27511 { &hf_gdd_serviceCategoryCode,
27512 { "serviceCategoryCode", "gdd.serviceCategoryCode",
27513 FT_UINT32, BASE_DEC, VALS(gdd_Pictogram_serviceCategory_vals), 0,
27514 "Pictogram_serviceCategory", HFILL }},
27515 { &hf_gdd_pictogramCategoryCode,
27516 { "pictogramCategoryCode", "gdd.pictogramCategoryCode_element",
27517 FT_NONE, BASE_NONE, NULL, 0,
27518 "Pictogram_category", HFILL }},
27519 { &hf_gdd_trafficSignPictogram,
27520 { "trafficSignPictogram", "gdd.trafficSignPictogram",
27521 FT_UINT32, BASE_DEC, VALS(gdd_Pictogram_trafficSign_vals), 0,
27522 "Pictogram_trafficSign", HFILL }},
27523 { &hf_gdd_publicFacilitiesPictogram,
27524 { "publicFacilitiesPictogram", "gdd.publicFacilitiesPictogram",
27525 FT_UINT32, BASE_DEC, VALS(gdd_Pictogram_publicFacilitySign_vals), 0,
27526 "Pictogram_publicFacilitySign", HFILL }},
27527 { &hf_gdd_ambientOrRoadConditionPictogram,
27528 { "ambientOrRoadConditionPictogram", "gdd.ambientOrRoadConditionPictogram",
27529 FT_UINT32, BASE_DEC, VALS(gdd_Pictogram_conditionsSign_vals), 0,
27530 "Pictogram_conditionsSign", HFILL }},
27531 { &hf_gdd_nature,
27532 { "nature", "gdd.nature",
27533 FT_UINT32, BASE_DEC, NULL, 0,
27534 "Pictogram_nature", HFILL }},
27535 { &hf_gdd_serialNumber,
27536 { "serialNumber", "gdd.serialNumber",
27537 FT_UINT32, BASE_DEC, NULL, 0,
27538 "Pictogram_serialNumber", HFILL }},
27539 { &hf_gdd_GddAttributes_item,
27540 { "GddAttributes item", "gdd.GddAttributes_item",
27541 FT_UINT32, BASE_DEC, VALS(gdd_GddAttributes_item_vals), 0,
27542 NULL, HFILL }},
27543 { &hf_gdd_dtm,
27544 { "dtm", "gdd.dtm_element",
27545 FT_NONE, BASE_NONE, NULL, 0,
27546 "InternationalSign_applicablePeriod", HFILL }},
27547 { &hf_gdd_edt,
27548 { "edt", "gdd.edt_element",
27549 FT_NONE, BASE_NONE, NULL, 0,
27550 "InternationalSign_exemptedApplicablePeriod", HFILL }},
27551 { &hf_gdd_dfl,
27552 { "dfl", "gdd.dfl",
27553 FT_UINT32, BASE_DEC, VALS(gdd_InternationalSign_directionalFlowOfLane_vals), 0,
27554 "InternationalSign_directionalFlowOfLane", HFILL }},
27555 { &hf_gdd_ved,
27556 { "ved", "gdd.ved_element",
27557 FT_NONE, BASE_NONE, NULL, 0,
27558 "InternationalSign_applicableVehicleDimensions", HFILL }},
27559 { &hf_gdd_spe,
27560 { "spe", "gdd.spe_element",
27561 FT_NONE, BASE_NONE, NULL, 0,
27562 "InternationalSign_speedLimits", HFILL }},
27563 { &hf_gdd_roi,
27564 { "roi", "gdd.roi",
27565 FT_UINT32, BASE_DEC, NULL, 0,
27566 "InternationalSign_rateOfIncline", HFILL }},
27567 { &hf_gdd_dbv,
27568 { "dbv", "gdd.dbv_element",
27569 FT_NONE, BASE_NONE, NULL, 0,
27570 "InternationalSign_distanceBetweenVehicles", HFILL }},
27571 { &hf_gdd_ddd,
27572 { "ddd", "gdd.ddd_element",
27573 FT_NONE, BASE_NONE, NULL, 0,
27574 "InternationalSign_destinationInformation", HFILL }},
27575 { &hf_gdd_set,
27576 { "set", "gdd.set_element",
27577 FT_NONE, BASE_NONE, NULL, 0,
27578 "InternationalSign_section", HFILL }},
27579 { &hf_gdd_nol,
27580 { "nol", "gdd.nol",
27581 FT_UINT32, BASE_DEC, NULL, 0,
27582 "InternationalSign_numberOfLane", HFILL }},
27583 { &hf_gdd_year,
27584 { "year", "gdd.year_element",
27585 FT_NONE, BASE_NONE, NULL, 0,
27586 NULL, HFILL }},
27587 { &hf_gdd_yearRangeStartYear,
27588 { "yearRangeStartYear", "gdd.yearRangeStartYear",
27589 FT_UINT32, BASE_DEC, NULL, 0,
27590 "Year", HFILL }},
27591 { &hf_gdd_yearRangeEndYear,
27592 { "yearRangeEndYear", "gdd.yearRangeEndYear",
27593 FT_UINT32, BASE_DEC, NULL, 0,
27594 "Year", HFILL }},
27595 { &hf_gdd_month_day,
27596 { "month-day", "gdd.month_day_element",
27597 FT_NONE, BASE_NONE, NULL, 0,
27598 NULL, HFILL }},
27599 { &hf_gdd_dateRangeStartMonthDate,
27600 { "dateRangeStartMonthDate", "gdd.dateRangeStartMonthDate_element",
27601 FT_NONE, BASE_NONE, NULL, 0,
27602 "MonthDay", HFILL }},
27603 { &hf_gdd_dateRangeEndMonthDate,
27604 { "dateRangeEndMonthDate", "gdd.dateRangeEndMonthDate_element",
27605 FT_NONE, BASE_NONE, NULL, 0,
27606 "MonthDay", HFILL }},
27607 { &hf_gdd_repeatingPeriodDayTypes,
27608 { "repeatingPeriodDayTypes", "gdd.repeatingPeriodDayTypes",
27609 FT_BYTES, BASE_NONE, NULL, 0,
27610 "RPDT", HFILL }},
27611 { &hf_gdd_hourMinutes,
27612 { "hourMinutes", "gdd.hourMinutes_element",
27613 FT_NONE, BASE_NONE, NULL, 0,
27614 NULL, HFILL }},
27615 { &hf_gdd_timeRangeStartTime,
27616 { "timeRangeStartTime", "gdd.timeRangeStartTime_element",
27617 FT_NONE, BASE_NONE, NULL, 0,
27618 "HoursMinutes", HFILL }},
27619 { &hf_gdd_timeRangeEndTime,
27620 { "timeRangeEndTime", "gdd.timeRangeEndTime_element",
27621 FT_NONE, BASE_NONE, NULL, 0,
27622 "HoursMinutes", HFILL }},
27623 { &hf_gdd_dateRangeOfWeek,
27624 { "dateRangeOfWeek", "gdd.dateRangeOfWeek",
27625 FT_BYTES, BASE_NONE, NULL, 0,
27626 "DayOfWeek", HFILL }},
27627 { &hf_gdd_durationHourminute,
27628 { "durationHourminute", "gdd.durationHourminute_element",
27629 FT_NONE, BASE_NONE, NULL, 0,
27630 "HoursMinutes", HFILL }},
27631 { &hf_gdd_month,
27632 { "month", "gdd.month",
27633 FT_UINT32, BASE_DEC, NULL, 0,
27634 "MonthDay_month", HFILL }},
27635 { &hf_gdd_day,
27636 { "day", "gdd.day",
27637 FT_UINT32, BASE_DEC, NULL, 0,
27638 "MonthDay_day", HFILL }},
27639 { &hf_gdd_hours,
27640 { "hours", "gdd.hours",
27641 FT_UINT32, BASE_DEC, NULL, 0,
27642 "HoursMinutes_hours", HFILL }},
27643 { &hf_gdd_mins,
27644 { "mins", "gdd.mins",
27645 FT_UINT32, BASE_DEC, NULL, 0,
27646 "HoursMinutes_mins", HFILL }},
27647 { &hf_gdd_startingPointLength,
27648 { "startingPointLength", "gdd.startingPointLength_element",
27649 FT_NONE, BASE_NONE, NULL, 0,
27650 "Distance", HFILL }},
27651 { &hf_gdd_continuityLength,
27652 { "continuityLength", "gdd.continuityLength_element",
27653 FT_NONE, BASE_NONE, NULL, 0,
27654 "Distance", HFILL }},
27655 { &hf_gdd_vehicleHeight,
27656 { "vehicleHeight", "gdd.vehicleHeight_element",
27657 FT_NONE, BASE_NONE, NULL, 0,
27658 "Distance", HFILL }},
27659 { &hf_gdd_vehicleWidth,
27660 { "vehicleWidth", "gdd.vehicleWidth_element",
27661 FT_NONE, BASE_NONE, NULL, 0,
27662 "Distance", HFILL }},
27663 { &hf_gdd_vehicleLength,
27664 { "vehicleLength", "gdd.vehicleLength_element",
27665 FT_NONE, BASE_NONE, NULL, 0,
27666 "Distance", HFILL }},
27667 { &hf_gdd_vehicleWeight,
27668 { "vehicleWeight", "gdd.vehicleWeight_element",
27669 FT_NONE, BASE_NONE, NULL, 0,
27670 "Weight", HFILL }},
27671 { &hf_gdd_dValue,
27672 { "value", "gdd.value",
27673 FT_UINT32, BASE_DEC, NULL, 0,
27674 "INTEGER_1_16384", HFILL }},
27675 { &hf_gdd_unit,
27676 { "unit", "gdd.unit",
27677 FT_UINT32, BASE_DEC, VALS(gdd_Code_Units_vals), 0,
27678 "Code_Units_CONSTR002", HFILL }},
27679 { &hf_gdd_wValue,
27680 { "value", "gdd.value",
27681 FT_UINT32, BASE_DEC, NULL, 0,
27682 "INTEGER_1_16384", HFILL }},
27683 { &hf_gdd_unit_01,
27684 { "unit", "gdd.unit",
27685 FT_UINT32, BASE_DEC, VALS(gdd_Code_Units_vals), 0,
27686 "Code_Units_10_12", HFILL }},
27687 { &hf_gdd_speedLimitMax,
27688 { "speedLimitMax", "gdd.speedLimitMax",
27689 FT_UINT32, BASE_DEC, NULL, 0,
27690 "INTEGER_0_250", HFILL }},
27691 { &hf_gdd_speedLimitMin,
27692 { "speedLimitMin", "gdd.speedLimitMin",
27693 FT_UINT32, BASE_DEC, NULL, 0,
27694 "INTEGER_0_250", HFILL }},
27695 { &hf_gdd_unit_02,
27696 { "unit", "gdd.unit",
27697 FT_UINT32, BASE_DEC, VALS(gdd_Code_Units_vals), 0,
27698 "Code_Units_0_1", HFILL }},
27699 { &hf_gdd_junctionDirection,
27700 { "junctionDirection", "gdd.junctionDirection",
27701 FT_UINT32, BASE_DEC, NULL, 0,
27702 "DistinInfo_junctionDirection", HFILL }},
27703 { &hf_gdd_roundaboutCwDirection,
27704 { "roundaboutCwDirection", "gdd.roundaboutCwDirection",
27705 FT_UINT32, BASE_DEC, NULL, 0,
27706 "DistinInfo_roundaboutCwDirection", HFILL }},
27707 { &hf_gdd_roundaboutCcwDirection,
27708 { "roundaboutCcwDirection", "gdd.roundaboutCcwDirection",
27709 FT_UINT32, BASE_DEC, NULL, 0,
27710 "DistinInfo_roundaboutCcwDirection", HFILL }},
27711 { &hf_gdd_ioList,
27712 { "ioList", "gdd.ioList",
27713 FT_UINT32, BASE_DEC, NULL, 0,
27714 "SEQUENCE_SIZE_1_8__OF_DestinationInformationIO", HFILL }},
27715 { &hf_gdd_ioList_item,
27716 { "DestinationInformationIO", "gdd.DestinationInformationIO_element",
27717 FT_NONE, BASE_NONE, NULL, 0,
27718 NULL, HFILL }},
27719 { &hf_gdd_arrowDirection,
27720 { "arrowDirection", "gdd.arrowDirection",
27721 FT_UINT32, BASE_DEC, NULL, 0,
27722 "IO_arrowDirection", HFILL }},
27723 { &hf_gdd_destPlace,
27724 { "destPlace", "gdd.destPlace",
27725 FT_UINT32, BASE_DEC, NULL, 0,
27726 "SEQUENCE_SIZE_1_4__OF_DestinationPlace", HFILL }},
27727 { &hf_gdd_destPlace_item,
27728 { "DestinationPlace", "gdd.DestinationPlace_element",
27729 FT_NONE, BASE_NONE, NULL, 0,
27730 NULL, HFILL }},
27731 { &hf_gdd_destRoad,
27732 { "destRoad", "gdd.destRoad",
27733 FT_UINT32, BASE_DEC, NULL, 0,
27734 "SEQUENCE_SIZE_1_4__OF_DestinationRoad", HFILL }},
27735 { &hf_gdd_destRoad_item,
27736 { "DestinationRoad", "gdd.DestinationRoad_element",
27737 FT_NONE, BASE_NONE, NULL, 0,
27738 NULL, HFILL }},
27739 { &hf_gdd_roadNumberIdentifier,
27740 { "roadNumberIdentifier", "gdd.roadNumberIdentifier",
27741 FT_UINT32, BASE_DEC, NULL, 0,
27742 "IO_roadNumberIdentifier", HFILL }},
27743 { &hf_gdd_streetName,
27744 { "streetName", "gdd.streetName",
27745 FT_UINT32, BASE_DEC, NULL, 0,
27746 "IO_streetName", HFILL }},
27747 { &hf_gdd_streetNameText,
27748 { "streetNameText", "gdd.streetNameText",
27749 FT_STRING, BASE_NONE, NULL, 0,
27750 "IO_streetNameText", HFILL }},
27751 { &hf_gdd_distanceToDivergingPoint,
27752 { "distanceToDivergingPoint", "gdd.distanceToDivergingPoint_element",
27753 FT_NONE, BASE_NONE, NULL, 0,
27754 "DistanceOrDuration", HFILL }},
27755 { &hf_gdd_distanceToDestinationPlace,
27756 { "distanceToDestinationPlace", "gdd.distanceToDestinationPlace_element",
27757 FT_NONE, BASE_NONE, NULL, 0,
27758 "DistanceOrDuration", HFILL }},
27759 { &hf_gdd_destType,
27760 { "destType", "gdd.destType",
27761 FT_UINT32, BASE_DEC, VALS(gdd_DestinationType_vals), 0,
27762 "DestinationType", HFILL }},
27763 { &hf_gdd_destRSCode,
27764 { "destRSCode", "gdd.destRSCode_element",
27765 FT_NONE, BASE_NONE, NULL, 0,
27766 "GddStructure", HFILL }},
27767 { &hf_gdd_destBlob,
27768 { "destBlob", "gdd.destBlob",
27769 FT_BYTES, BASE_NONE, NULL, 0,
27770 "DestPlace_destBlob", HFILL }},
27771 { &hf_gdd_placeNameIdentification,
27772 { "placeNameIdentification", "gdd.placeNameIdentification",
27773 FT_UINT32, BASE_DEC, NULL, 0,
27774 "DestPlace_placeNameIdentification", HFILL }},
27775 { &hf_gdd_placeNameText,
27776 { "placeNameText", "gdd.placeNameText",
27777 FT_STRING, BASE_NONE, NULL, 0,
27778 "DestPlace_placeNameText", HFILL }},
27779 { &hf_gdd_derType,
27780 { "derType", "gdd.derType",
27781 FT_UINT32, BASE_DEC, VALS(gdd_DestinationRoadType_vals), 0,
27782 "DestinationRoadType", HFILL }},
27783 { &hf_gdd_roadNumberIdentifier_01,
27784 { "roadNumberIdentifier", "gdd.roadNumberIdentifier",
27785 FT_UINT32, BASE_DEC, NULL, 0,
27786 "DestRoad_roadNumberIdentifier", HFILL }},
27787 { &hf_gdd_roadNumberText,
27788 { "roadNumberText", "gdd.roadNumberText",
27789 FT_STRING, BASE_NONE, NULL, 0,
27790 "DestRoad_roadNumberText", HFILL }},
27791 { &hf_gdd_dodValue,
27792 { "value", "gdd.value",
27793 FT_UINT32, BASE_DEC, NULL, 0,
27794 "DistOrDuration_value", HFILL }},
27795 { &hf_gdd_unit_03,
27796 { "unit", "gdd.unit",
27797 FT_UINT32, BASE_DEC, VALS(gdd_Code_Units_vals), 0,
27798 "DistOrDuration_Units", HFILL }},
27799 { &hf_gdd_RPDT_national_holiday,
27800 { "national-holiday", "gdd.RPDT.national.holiday",
27801 FT_BOOLEAN, 8, NULL, 0x80,
27802 NULL, HFILL }},
27803 { &hf_gdd_RPDT_even_days,
27804 { "even-days", "gdd.RPDT.even.days",
27805 FT_BOOLEAN, 8, NULL, 0x40,
27806 NULL, HFILL }},
27807 { &hf_gdd_RPDT_odd_days,
27808 { "odd-days", "gdd.RPDT.odd.days",
27809 FT_BOOLEAN, 8, NULL, 0x20,
27810 NULL, HFILL }},
27811 { &hf_gdd_RPDT_market_day,
27812 { "market-day", "gdd.RPDT.market.day",
27813 FT_BOOLEAN, 8, NULL, 0x10,
27814 NULL, HFILL }},
27815 { &hf_gdd_DayOfWeek_unused,
27816 { "unused", "gdd.DayOfWeek.unused",
27817 FT_BOOLEAN, 8, NULL, 0x80,
27818 NULL, HFILL }},
27819 { &hf_gdd_DayOfWeek_monday,
27820 { "monday", "gdd.DayOfWeek.monday",
27821 FT_BOOLEAN, 8, NULL, 0x40,
27822 NULL, HFILL }},
27823 { &hf_gdd_DayOfWeek_tuesday,
27824 { "tuesday", "gdd.DayOfWeek.tuesday",
27825 FT_BOOLEAN, 8, NULL, 0x20,
27826 NULL, HFILL }},
27827 { &hf_gdd_DayOfWeek_wednesday,
27828 { "wednesday", "gdd.DayOfWeek.wednesday",
27829 FT_BOOLEAN, 8, NULL, 0x10,
27830 NULL, HFILL }},
27831 { &hf_gdd_DayOfWeek_thursday,
27832 { "thursday", "gdd.DayOfWeek.thursday",
27833 FT_BOOLEAN, 8, NULL, 0x08,
27834 NULL, HFILL }},
27835 { &hf_gdd_DayOfWeek_friday,
27836 { "friday", "gdd.DayOfWeek.friday",
27837 FT_BOOLEAN, 8, NULL, 0x04,
27838 NULL, HFILL }},
27839 { &hf_gdd_DayOfWeek_saturday,
27840 { "saturday", "gdd.DayOfWeek.saturday",
27841 FT_BOOLEAN, 8, NULL, 0x02,
27842 NULL, HFILL }},
27843 { &hf_gdd_DayOfWeek_sunday,
27844 { "sunday", "gdd.DayOfWeek.sunday",
27845 FT_BOOLEAN, 8, NULL, 0x01,
27846 NULL, HFILL }},
27848 /* --- Module IVI --- --- --- */
27850 { &hf_ivi_ivi_IviStructure_PDU,
27851 { "IviStructure", "ivi.IviStructure_element",
27852 FT_NONE, BASE_NONE, NULL, 0,
27853 NULL, HFILL }},
27854 { &hf_ivi_mandatory,
27855 { "mandatory", "ivi.mandatory_element",
27856 FT_NONE, BASE_NONE, NULL, 0,
27857 "IviManagementContainer", HFILL }},
27858 { &hf_ivi_optional,
27859 { "optional", "ivi.optional",
27860 FT_UINT32, BASE_DEC, NULL, 0,
27861 "IviContainers", HFILL }},
27862 { &hf_ivi_IviContainers_item,
27863 { "IviContainer", "ivi.IviContainer",
27864 FT_UINT32, BASE_DEC, VALS(ivi_IviContainer_vals), 0,
27865 NULL, HFILL }},
27866 { &hf_ivi_glc,
27867 { "glc", "ivi.glc_element",
27868 FT_NONE, BASE_NONE, NULL, 0,
27869 "GeographicLocationContainer", HFILL }},
27870 { &hf_ivi_giv,
27871 { "giv", "ivi.giv",
27872 FT_UINT32, BASE_DEC, NULL, 0,
27873 "GeneralIviContainer", HFILL }},
27874 { &hf_ivi_rcc,
27875 { "rcc", "ivi.rcc",
27876 FT_UINT32, BASE_DEC, NULL, 0,
27877 "RoadConfigurationContainer", HFILL }},
27878 { &hf_ivi_tc,
27879 { "tc", "ivi.tc",
27880 FT_UINT32, BASE_DEC, NULL, 0,
27881 "TextContainer", HFILL }},
27882 { &hf_ivi_lac,
27883 { "lac", "ivi.lac_element",
27884 FT_NONE, BASE_NONE, NULL, 0,
27885 "LayoutContainer", HFILL }},
27886 { &hf_ivi_avc,
27887 { "avc", "ivi.avc",
27888 FT_UINT32, BASE_DEC, NULL, 0,
27889 "AutomatedVehicleContainer", HFILL }},
27890 { &hf_ivi_mlc,
27891 { "mlc", "ivi.mlc_element",
27892 FT_NONE, BASE_NONE, NULL, 0,
27893 "MapLocationContainer", HFILL }},
27894 { &hf_ivi_rsc,
27895 { "rsc", "ivi.rsc",
27896 FT_UINT32, BASE_DEC, NULL, 0,
27897 "RoadSurfaceContainer", HFILL }},
27898 { &hf_ivi_serviceProviderId,
27899 { "serviceProviderId", "ivi.serviceProviderId_element",
27900 FT_NONE, BASE_NONE, NULL, 0,
27901 "Provider", HFILL }},
27902 { &hf_ivi_iviIdentificationNumber,
27903 { "iviIdentificationNumber", "ivi.iviIdentificationNumber",
27904 FT_UINT32, BASE_DEC, NULL, 0,
27905 NULL, HFILL }},
27906 { &hf_ivi_timeStamp,
27907 { "timeStamp", "ivi.timeStamp",
27908 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
27909 "TimestampIts", HFILL }},
27910 { &hf_ivi_validFrom,
27911 { "validFrom", "ivi.validFrom",
27912 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
27913 "TimestampIts", HFILL }},
27914 { &hf_ivi_validTo,
27915 { "validTo", "ivi.validTo",
27916 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
27917 "TimestampIts", HFILL }},
27918 { &hf_ivi_connectedIviStructures,
27919 { "connectedIviStructures", "ivi.connectedIviStructures",
27920 FT_UINT32, BASE_DEC, NULL, 0,
27921 "IviIdentificationNumbers", HFILL }},
27922 { &hf_ivi_iviStatus,
27923 { "iviStatus", "ivi.iviStatus",
27924 FT_UINT32, BASE_DEC, VALS(ivi_IviStatus_vals), 0,
27925 NULL, HFILL }},
27926 { &hf_ivi_connectedDenms,
27927 { "connectedDenms", "ivi.connectedDenms",
27928 FT_UINT32, BASE_DEC, NULL, 0,
27929 NULL, HFILL }},
27930 { &hf_ivi_referencePosition,
27931 { "referencePosition", "ivi.referencePosition_element",
27932 FT_NONE, BASE_NONE, NULL, 0,
27933 NULL, HFILL }},
27934 { &hf_ivi_referencePositionTime,
27935 { "referencePositionTime", "ivi.referencePositionTime",
27936 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
27937 "TimestampIts", HFILL }},
27938 { &hf_ivi_referencePositionHeading,
27939 { "referencePositionHeading", "ivi.referencePositionHeading_element",
27940 FT_NONE, BASE_NONE, NULL, 0,
27941 "Heading", HFILL }},
27942 { &hf_ivi_referencePositionSpeed,
27943 { "referencePositionSpeed", "ivi.referencePositionSpeed_element",
27944 FT_NONE, BASE_NONE, NULL, 0,
27945 "Speed", HFILL }},
27946 { &hf_ivi_parts,
27947 { "parts", "ivi.parts",
27948 FT_UINT32, BASE_DEC, NULL, 0,
27949 "GlcParts", HFILL }},
27950 { &hf_ivi_GlcParts_item,
27951 { "GlcPart", "ivi.GlcPart_element",
27952 FT_NONE, BASE_NONE, NULL, 0,
27953 NULL, HFILL }},
27954 { &hf_ivi_zoneId,
27955 { "zoneId", "ivi.zoneId",
27956 FT_UINT32, BASE_DEC, NULL, 0,
27957 "Zid", HFILL }},
27958 { &hf_ivi_laneNumber,
27959 { "laneNumber", "ivi.laneNumber",
27960 FT_INT32, BASE_DEC, VALS(its_LanePosition_vals), 0,
27961 "LanePosition", HFILL }},
27962 { &hf_ivi_zoneExtension,
27963 { "zoneExtension", "ivi.zoneExtension",
27964 FT_UINT32, BASE_DEC, NULL, 0,
27965 "INTEGER_0_255", HFILL }},
27966 { &hf_ivi_zoneHeading,
27967 { "zoneHeading", "ivi.zoneHeading",
27968 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_heading_value_fmt), 0,
27969 "HeadingValue", HFILL }},
27970 { &hf_ivi_zone,
27971 { "zone", "ivi.zone",
27972 FT_UINT32, BASE_DEC, VALS(ivi_Zone_vals), 0,
27973 NULL, HFILL }},
27974 { &hf_ivi_GeneralIviContainer_item,
27975 { "GicPart", "ivi.GicPart_element",
27976 FT_NONE, BASE_NONE, NULL, 0,
27977 NULL, HFILL }},
27978 { &hf_ivi_gpDetectionZoneIds,
27979 { "detectionZoneIds", "ivi.detectionZoneIds",
27980 FT_UINT32, BASE_DEC, NULL, 0,
27981 "T_GicPartDetectionZoneIds", HFILL }},
27982 { &hf_ivi_its_Rrid,
27983 { "its-Rrid", "ivi.its_Rrid",
27984 FT_UINT32, BASE_DEC, VALS(its_VarLengthNumber_vals), 0,
27985 "VarLengthNumber", HFILL }},
27986 { &hf_ivi_gpRelevanceZoneIds,
27987 { "relevanceZoneIds", "ivi.relevanceZoneIds",
27988 FT_UINT32, BASE_DEC, NULL, 0,
27989 "T_GicPartRelevanceZoneIds", HFILL }},
27990 { &hf_ivi_direction,
27991 { "direction", "ivi.direction",
27992 FT_UINT32, BASE_DEC, VALS(ivi_Direction_vals), 0,
27993 NULL, HFILL }},
27994 { &hf_ivi_gpDriverAwarenessZoneIds,
27995 { "driverAwarenessZoneIds", "ivi.driverAwarenessZoneIds",
27996 FT_UINT32, BASE_DEC, NULL, 0,
27997 "T_GicPartDriverAwarenessZoneIds", HFILL }},
27998 { &hf_ivi_minimumAwarenessTime,
27999 { "minimumAwarenessTime", "ivi.minimumAwarenessTime",
28000 FT_UINT32, BASE_DEC, NULL, 0,
28001 "INTEGER_0_255", HFILL }},
28002 { &hf_ivi_applicableLanes,
28003 { "applicableLanes", "ivi.applicableLanes",
28004 FT_UINT32, BASE_DEC, NULL, 0,
28005 "LanePositions", HFILL }},
28006 { &hf_ivi_iviType,
28007 { "iviType", "ivi.iviType",
28008 FT_UINT32, BASE_DEC, VALS(ivi_IviType_vals), 0,
28009 NULL, HFILL }},
28010 { &hf_ivi_iviPurpose,
28011 { "iviPurpose", "ivi.iviPurpose",
28012 FT_UINT32, BASE_DEC, VALS(ivi_IviPurpose_vals), 0,
28013 NULL, HFILL }},
28014 { &hf_ivi_laneStatus,
28015 { "laneStatus", "ivi.laneStatus",
28016 FT_UINT32, BASE_DEC, VALS(ivi_LaneStatus_vals), 0,
28017 NULL, HFILL }},
28018 { &hf_ivi_vehicleCharacteristics,
28019 { "vehicleCharacteristics", "ivi.vehicleCharacteristics",
28020 FT_UINT32, BASE_DEC, NULL, 0,
28021 "VehicleCharacteristicsList", HFILL }},
28022 { &hf_ivi_driverCharacteristics,
28023 { "driverCharacteristics", "ivi.driverCharacteristics",
28024 FT_UINT32, BASE_DEC, VALS(ivi_DriverCharacteristics_vals), 0,
28025 NULL, HFILL }},
28026 { &hf_ivi_layoutId,
28027 { "layoutId", "ivi.layoutId",
28028 FT_UINT32, BASE_DEC, NULL, 0,
28029 "INTEGER_1_4_", HFILL }},
28030 { &hf_ivi_preStoredlayoutId,
28031 { "preStoredlayoutId", "ivi.preStoredlayoutId",
28032 FT_UINT32, BASE_DEC, NULL, 0,
28033 "INTEGER_1_64_", HFILL }},
28034 { &hf_ivi_roadSignCodes,
28035 { "roadSignCodes", "ivi.roadSignCodes",
28036 FT_UINT32, BASE_DEC, NULL, 0,
28037 NULL, HFILL }},
28038 { &hf_ivi_extraText,
28039 { "extraText", "ivi.extraText",
28040 FT_UINT32, BASE_DEC, NULL, 0,
28041 "T_GicPartExtraText", HFILL }},
28042 { &hf_ivi_RoadConfigurationContainer_item,
28043 { "RccPart", "ivi.RccPart_element",
28044 FT_NONE, BASE_NONE, NULL, 0,
28045 NULL, HFILL }},
28046 { &hf_ivi_relevanceZoneIds,
28047 { "relevanceZoneIds", "ivi.relevanceZoneIds",
28048 FT_UINT32, BASE_DEC, NULL, 0,
28049 "ZoneIds", HFILL }},
28050 { &hf_ivi_roadType,
28051 { "roadType", "ivi.roadType",
28052 FT_UINT32, BASE_DEC, VALS(its_RoadType_vals), 0,
28053 NULL, HFILL }},
28054 { &hf_ivi_laneConfiguration,
28055 { "laneConfiguration", "ivi.laneConfiguration",
28056 FT_UINT32, BASE_DEC, NULL, 0,
28057 NULL, HFILL }},
28058 { &hf_ivi_RoadSurfaceContainer_item,
28059 { "RscPart", "ivi.RscPart_element",
28060 FT_NONE, BASE_NONE, NULL, 0,
28061 NULL, HFILL }},
28062 { &hf_ivi_detectionZoneIds,
28063 { "detectionZoneIds", "ivi.detectionZoneIds",
28064 FT_UINT32, BASE_DEC, NULL, 0,
28065 "ZoneIds", HFILL }},
28066 { &hf_ivi_roadSurfaceStaticCharacteristics,
28067 { "roadSurfaceStaticCharacteristics", "ivi.roadSurfaceStaticCharacteristics_element",
28068 FT_NONE, BASE_NONE, NULL, 0,
28069 NULL, HFILL }},
28070 { &hf_ivi_roadSurfaceDynamicCharacteristics,
28071 { "roadSurfaceDynamicCharacteristics", "ivi.roadSurfaceDynamicCharacteristics_element",
28072 FT_NONE, BASE_NONE, NULL, 0,
28073 NULL, HFILL }},
28074 { &hf_ivi_TextContainer_item,
28075 { "TcPart", "ivi.TcPart_element",
28076 FT_NONE, BASE_NONE, NULL, 0,
28077 NULL, HFILL }},
28078 { &hf_ivi_tpDetectionZoneIds,
28079 { "detectionZoneIds", "ivi.detectionZoneIds",
28080 FT_UINT32, BASE_DEC, NULL, 0,
28081 "T_TcPartDetectionZoneIds", HFILL }},
28082 { &hf_ivi_tpRelevanceZoneIds,
28083 { "relevanceZoneIds", "ivi.relevanceZoneIds",
28084 FT_UINT32, BASE_DEC, NULL, 0,
28085 "T_TcPartRelevanceZoneIds", HFILL }},
28086 { &hf_ivi_tpDriverAwarenessZoneIds,
28087 { "driverAwarenessZoneIds", "ivi.driverAwarenessZoneIds",
28088 FT_UINT32, BASE_DEC, NULL, 0,
28089 "T_TcPartDriverAwarenessZoneIds", HFILL }},
28090 { &hf_ivi_text,
28091 { "text", "ivi.text",
28092 FT_UINT32, BASE_DEC, NULL, 0,
28093 "T_TcPartText", HFILL }},
28094 { &hf_ivi_data,
28095 { "data", "ivi.data",
28096 FT_BYTES, BASE_NONE, NULL, 0,
28097 "OCTET_STRING", HFILL }},
28098 { &hf_ivi_height,
28099 { "height", "ivi.height",
28100 FT_UINT32, BASE_DEC, NULL, 0,
28101 "INTEGER_10_73", HFILL }},
28102 { &hf_ivi_width,
28103 { "width", "ivi.width",
28104 FT_UINT32, BASE_DEC, NULL, 0,
28105 "INTEGER_10_265", HFILL }},
28106 { &hf_ivi_layoutComponents,
28107 { "layoutComponents", "ivi.layoutComponents",
28108 FT_UINT32, BASE_DEC, NULL, 0,
28109 NULL, HFILL }},
28110 { &hf_ivi_AutomatedVehicleContainer_item,
28111 { "AvcPart", "ivi.AvcPart_element",
28112 FT_NONE, BASE_NONE, NULL, 0,
28113 NULL, HFILL }},
28114 { &hf_ivi_automatedVehicleRules,
28115 { "automatedVehicleRules", "ivi.automatedVehicleRules",
28116 FT_UINT32, BASE_DEC, NULL, 0,
28117 NULL, HFILL }},
28118 { &hf_ivi_platooningRules,
28119 { "platooningRules", "ivi.platooningRules",
28120 FT_UINT32, BASE_DEC, NULL, 0,
28121 NULL, HFILL }},
28122 { &hf_ivi_reference,
28123 { "reference", "ivi.reference",
28124 FT_UINT32, BASE_DEC, VALS(ivi_MapReference_vals), 0,
28125 "MapReference", HFILL }},
28126 { &hf_ivi_parts_01,
28127 { "parts", "ivi.parts",
28128 FT_UINT32, BASE_DEC, NULL, 0,
28129 "MlcParts", HFILL }},
28130 { &hf_ivi_MlcParts_item,
28131 { "MlcPart", "ivi.MlcPart_element",
28132 FT_NONE, BASE_NONE, NULL, 0,
28133 NULL, HFILL }},
28134 { &hf_ivi_laneIds,
28135 { "laneIds", "ivi.laneIds",
28136 FT_UINT32, BASE_DEC, NULL, 0,
28137 NULL, HFILL }},
28138 { &hf_ivi_AbsolutePositions_item,
28139 { "AbsolutePosition", "ivi.AbsolutePosition_element",
28140 FT_NONE, BASE_NONE, NULL, 0,
28141 NULL, HFILL }},
28142 { &hf_ivi_AbsolutePositionsWAltitude_item,
28143 { "AbsolutePositionWAltitude", "ivi.AbsolutePositionWAltitude_element",
28144 FT_NONE, BASE_NONE, NULL, 0,
28145 NULL, HFILL }},
28146 { &hf_ivi_AutomatedVehicleRules_item,
28147 { "AutomatedVehicleRule", "ivi.AutomatedVehicleRule_element",
28148 FT_NONE, BASE_NONE, NULL, 0,
28149 NULL, HFILL }},
28150 { &hf_ivi_ConnectedDenms_item,
28151 { "ActionID", "ivi.ActionID_element",
28152 FT_NONE, BASE_NONE, NULL, 0,
28153 NULL, HFILL }},
28154 { &hf_ivi_DeltaPositions_item,
28155 { "DeltaPosition", "ivi.DeltaPosition_element",
28156 FT_NONE, BASE_NONE, NULL, 0,
28157 NULL, HFILL }},
28158 { &hf_ivi_DeltaReferencePositions_item,
28159 { "DeltaReferencePosition", "ivi.DeltaReferencePosition_element",
28160 FT_NONE, BASE_NONE, NULL, 0,
28161 NULL, HFILL }},
28162 { &hf_ivi_ConstraintTextLines1_item,
28163 { "Text", "ivi.Text_element",
28164 FT_NONE, BASE_NONE, NULL, 0,
28165 NULL, HFILL }},
28166 { &hf_ivi_ConstraintTextLines2_item,
28167 { "Text", "ivi.Text_element",
28168 FT_NONE, BASE_NONE, NULL, 0,
28169 NULL, HFILL }},
28170 { &hf_ivi_IviIdentificationNumbers_item,
28171 { "IviIdentificationNumber", "ivi.IviIdentificationNumber",
28172 FT_UINT32, BASE_DEC, NULL, 0,
28173 NULL, HFILL }},
28174 { &hf_ivi_ISO14823Attributes_item,
28175 { "ISO14823Attribute", "ivi.ISO14823Attribute",
28176 FT_UINT32, BASE_DEC, VALS(ivi_ISO14823Attribute_vals), 0,
28177 NULL, HFILL }},
28178 { &hf_ivi_LaneConfiguration_item,
28179 { "LaneInformation", "ivi.LaneInformation_element",
28180 FT_NONE, BASE_NONE, NULL, 0,
28181 NULL, HFILL }},
28182 { &hf_ivi_LaneIds_item,
28183 { "LaneID", "ivi.LaneID",
28184 FT_UINT32, BASE_DEC, NULL, 0,
28185 NULL, HFILL }},
28186 { &hf_ivi_LanePositions_item,
28187 { "LanePosition", "ivi.LanePosition",
28188 FT_INT32, BASE_DEC, VALS(its_LanePosition_vals), 0,
28189 NULL, HFILL }},
28190 { &hf_ivi_LayoutComponents_item,
28191 { "LayoutComponent", "ivi.LayoutComponent_element",
28192 FT_NONE, BASE_NONE, NULL, 0,
28193 NULL, HFILL }},
28194 { &hf_ivi_PlatooningRules_item,
28195 { "PlatooningRule", "ivi.PlatooningRule_element",
28196 FT_NONE, BASE_NONE, NULL, 0,
28197 NULL, HFILL }},
28198 { &hf_ivi_RoadSignCodes_item,
28199 { "RSCode", "ivi.RSCode_element",
28200 FT_NONE, BASE_NONE, NULL, 0,
28201 NULL, HFILL }},
28202 { &hf_ivi_TextLines_item,
28203 { "Text", "ivi.Text_element",
28204 FT_NONE, BASE_NONE, NULL, 0,
28205 NULL, HFILL }},
28206 { &hf_ivi_TrailerCharacteristicsList_item,
28207 { "TrailerCharacteristics", "ivi.TrailerCharacteristics_element",
28208 FT_NONE, BASE_NONE, NULL, 0,
28209 NULL, HFILL }},
28210 { &hf_ivi_TrailerCharacteristicsFixValuesList_item,
28211 { "VehicleCharacteristicsFixValues", "ivi.VehicleCharacteristicsFixValues",
28212 FT_UINT32, BASE_DEC, VALS(ivi_VehicleCharacteristicsFixValues_vals), 0,
28213 NULL, HFILL }},
28214 { &hf_ivi_TrailerCharacteristicsRangesList_item,
28215 { "VehicleCharacteristicsRanges", "ivi.VehicleCharacteristicsRanges_element",
28216 FT_NONE, BASE_NONE, NULL, 0,
28217 NULL, HFILL }},
28218 { &hf_ivi_SaeAutomationLevels_item,
28219 { "SaeAutomationLevel", "ivi.SaeAutomationLevel",
28220 FT_UINT32, BASE_DEC, NULL, 0,
28221 NULL, HFILL }},
28222 { &hf_ivi_VehicleCharacteristicsFixValuesList_item,
28223 { "VehicleCharacteristicsFixValues", "ivi.VehicleCharacteristicsFixValues",
28224 FT_UINT32, BASE_DEC, VALS(ivi_VehicleCharacteristicsFixValues_vals), 0,
28225 NULL, HFILL }},
28226 { &hf_ivi_VehicleCharacteristicsList_item,
28227 { "CompleteVehicleCharacteristics", "ivi.CompleteVehicleCharacteristics_element",
28228 FT_NONE, BASE_NONE, NULL, 0,
28229 NULL, HFILL }},
28230 { &hf_ivi_VehicleCharacteristicsRangesList_item,
28231 { "VehicleCharacteristicsRanges", "ivi.VehicleCharacteristicsRanges_element",
28232 FT_NONE, BASE_NONE, NULL, 0,
28233 NULL, HFILL }},
28234 { &hf_ivi_ValidityPeriods_item,
28235 { "InternationalSign-applicablePeriod", "ivi.InternationalSign_applicablePeriod_element",
28236 FT_NONE, BASE_NONE, NULL, 0,
28237 NULL, HFILL }},
28238 { &hf_ivi_ZoneIds_item,
28239 { "Zid", "ivi.Zid",
28240 FT_UINT32, BASE_DEC, NULL, 0,
28241 NULL, HFILL }},
28242 { &hf_ivi_latitude,
28243 { "latitude", "ivi.latitude",
28244 FT_INT32, BASE_CUSTOM, CF_FUNC(its_latitude_fmt), 0,
28245 NULL, HFILL }},
28246 { &hf_ivi_longitude,
28247 { "longitude", "ivi.longitude",
28248 FT_INT32, BASE_CUSTOM, CF_FUNC(its_longitude_fmt), 0,
28249 NULL, HFILL }},
28250 { &hf_ivi_altitude,
28251 { "altitude", "ivi.altitude_element",
28252 FT_NONE, BASE_NONE, NULL, 0,
28253 NULL, HFILL }},
28254 { &hf_ivi_owner,
28255 { "owner", "ivi.owner_element",
28256 FT_NONE, BASE_NONE, NULL, 0,
28257 "Provider", HFILL }},
28258 { &hf_ivi_version,
28259 { "version", "ivi.version",
28260 FT_UINT32, BASE_DEC, NULL, 0,
28261 "INTEGER_0_255", HFILL }},
28262 { &hf_ivi_acPictogramCode,
28263 { "pictogramCode", "ivi.pictogramCode",
28264 FT_UINT32, BASE_DEC, NULL, 0,
28265 "INTEGER_0_65535", HFILL }},
28266 { &hf_ivi_acValue,
28267 { "value", "ivi.value",
28268 FT_UINT32, BASE_DEC, NULL, 0,
28269 "INTEGER_0_65535", HFILL }},
28270 { &hf_ivi_unit,
28271 { "unit", "ivi.unit",
28272 FT_UINT32, BASE_DEC, VALS(ivi_RSCUnit_vals), 0,
28273 "RSCUnit", HFILL }},
28274 { &hf_ivi_attributes,
28275 { "attributes", "ivi.attributes",
28276 FT_UINT32, BASE_DEC, NULL, 0,
28277 "ISO14823Attributes", HFILL }},
28278 { &hf_ivi_priority,
28279 { "priority", "ivi.priority",
28280 FT_UINT32, BASE_DEC, NULL, 0,
28281 "PriorityLevel", HFILL }},
28282 { &hf_ivi_allowedSaeAutomationLevels,
28283 { "allowedSaeAutomationLevels", "ivi.allowedSaeAutomationLevels",
28284 FT_UINT32, BASE_DEC, NULL, 0,
28285 "SaeAutomationLevels", HFILL }},
28286 { &hf_ivi_minGapBetweenVehicles,
28287 { "minGapBetweenVehicles", "ivi.minGapBetweenVehicles",
28288 FT_UINT32, BASE_DEC, NULL, 0,
28289 "GapBetweenVehicles", HFILL }},
28290 { &hf_ivi_recGapBetweenVehicles,
28291 { "recGapBetweenVehicles", "ivi.recGapBetweenVehicles",
28292 FT_UINT32, BASE_DEC, NULL, 0,
28293 "GapBetweenVehicles", HFILL }},
28294 { &hf_ivi_automatedVehicleMaxSpeedLimit,
28295 { "automatedVehicleMaxSpeedLimit", "ivi.automatedVehicleMaxSpeedLimit",
28296 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_value_fmt), 0,
28297 "SpeedValue", HFILL }},
28298 { &hf_ivi_automatedVehicleMinSpeedLimit,
28299 { "automatedVehicleMinSpeedLimit", "ivi.automatedVehicleMinSpeedLimit",
28300 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_value_fmt), 0,
28301 "SpeedValue", HFILL }},
28302 { &hf_ivi_automatedVehicleSpeedRecommendation,
28303 { "automatedVehicleSpeedRecommendation", "ivi.automatedVehicleSpeedRecommendation",
28304 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_value_fmt), 0,
28305 "SpeedValue", HFILL }},
28306 { &hf_ivi_extraText_01,
28307 { "extraText", "ivi.extraText",
28308 FT_UINT32, BASE_DEC, NULL, 0,
28309 "ConstraintTextLines2", HFILL }},
28310 { &hf_ivi_tractor,
28311 { "tractor", "ivi.tractor_element",
28312 FT_NONE, BASE_NONE, NULL, 0,
28313 "TractorCharacteristics", HFILL }},
28314 { &hf_ivi_trailer,
28315 { "trailer", "ivi.trailer",
28316 FT_UINT32, BASE_DEC, NULL, 0,
28317 "TrailerCharacteristicsList", HFILL }},
28318 { &hf_ivi_train,
28319 { "train", "ivi.train_element",
28320 FT_NONE, BASE_NONE, NULL, 0,
28321 "TrainCharacteristics", HFILL }},
28322 { &hf_ivi_laneWidth,
28323 { "laneWidth", "ivi.laneWidth",
28324 FT_UINT32, BASE_DEC, NULL, 0,
28325 "IviLaneWidth", HFILL }},
28326 { &hf_ivi_offsetDistance,
28327 { "offsetDistance", "ivi.offsetDistance",
28328 FT_INT32, BASE_DEC, NULL, 0,
28329 "INTEGER_M32768_32767", HFILL }},
28330 { &hf_ivi_offsetPosition,
28331 { "offsetPosition", "ivi.offsetPosition_element",
28332 FT_NONE, BASE_NONE, NULL, 0,
28333 "DeltaReferencePosition", HFILL }},
28334 { &hf_ivi_deltaLatitude,
28335 { "deltaLatitude", "ivi.deltaLatitude",
28336 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_latitude_fmt), 0,
28337 NULL, HFILL }},
28338 { &hf_ivi_deltaLongitude,
28339 { "deltaLongitude", "ivi.deltaLongitude",
28340 FT_INT32, BASE_CUSTOM, CF_FUNC(its_delta_longitude_fmt), 0,
28341 NULL, HFILL }},
28342 { &hf_ivi_dtm,
28343 { "dtm", "ivi.dtm_element",
28344 FT_NONE, BASE_NONE, NULL, 0,
28345 "InternationalSign_applicablePeriod", HFILL }},
28346 { &hf_ivi_edt,
28347 { "edt", "ivi.edt_element",
28348 FT_NONE, BASE_NONE, NULL, 0,
28349 "InternationalSign_exemptedApplicablePeriod", HFILL }},
28350 { &hf_ivi_dfl,
28351 { "dfl", "ivi.dfl",
28352 FT_UINT32, BASE_DEC, VALS(gdd_InternationalSign_directionalFlowOfLane_vals), 0,
28353 "InternationalSign_directionalFlowOfLane", HFILL }},
28354 { &hf_ivi_ved,
28355 { "ved", "ivi.ved_element",
28356 FT_NONE, BASE_NONE, NULL, 0,
28357 "InternationalSign_applicableVehicleDimensions", HFILL }},
28358 { &hf_ivi_spe,
28359 { "spe", "ivi.spe_element",
28360 FT_NONE, BASE_NONE, NULL, 0,
28361 "InternationalSign_speedLimits", HFILL }},
28362 { &hf_ivi_roi,
28363 { "roi", "ivi.roi",
28364 FT_UINT32, BASE_DEC, NULL, 0,
28365 "InternationalSign_rateOfIncline", HFILL }},
28366 { &hf_ivi_dbv,
28367 { "dbv", "ivi.dbv_element",
28368 FT_NONE, BASE_NONE, NULL, 0,
28369 "InternationalSign_distanceBetweenVehicles", HFILL }},
28370 { &hf_ivi_ddd,
28371 { "ddd", "ivi.ddd_element",
28372 FT_NONE, BASE_NONE, NULL, 0,
28373 "InternationalSign_destinationInformation", HFILL }},
28374 { &hf_ivi_icPictogramCode,
28375 { "pictogramCode", "ivi.pictogramCode_element",
28376 FT_NONE, BASE_NONE, NULL, 0,
28377 "T_icPictogramCode", HFILL }},
28378 { &hf_ivi_countryCode,
28379 { "countryCode", "ivi.countryCode",
28380 FT_BYTES, BASE_NONE, NULL, 0,
28381 "OCTET_STRING_SIZE_2", HFILL }},
28382 { &hf_ivi_serviceCategoryCode,
28383 { "serviceCategoryCode", "ivi.serviceCategoryCode",
28384 FT_UINT32, BASE_DEC, VALS(ivi_T_serviceCategoryCode_vals), 0,
28385 NULL, HFILL }},
28386 { &hf_ivi_trafficSignPictogram,
28387 { "trafficSignPictogram", "ivi.trafficSignPictogram",
28388 FT_UINT32, BASE_DEC, VALS(ivi_T_trafficSignPictogram_vals), 0,
28389 NULL, HFILL }},
28390 { &hf_ivi_publicFacilitiesPictogram,
28391 { "publicFacilitiesPictogram", "ivi.publicFacilitiesPictogram",
28392 FT_UINT32, BASE_DEC, VALS(ivi_T_publicFacilitiesPictogram_vals), 0,
28393 NULL, HFILL }},
28394 { &hf_ivi_ambientOrRoadConditionPictogram,
28395 { "ambientOrRoadConditionPictogram", "ivi.ambientOrRoadConditionPictogram",
28396 FT_UINT32, BASE_DEC, VALS(ivi_T_ambientOrRoadConditionPictogram_vals), 0,
28397 NULL, HFILL }},
28398 { &hf_ivi_pictogramCategoryCode,
28399 { "pictogramCategoryCode", "ivi.pictogramCategoryCode_element",
28400 FT_NONE, BASE_NONE, NULL, 0,
28401 NULL, HFILL }},
28402 { &hf_ivi_nature,
28403 { "nature", "ivi.nature",
28404 FT_UINT32, BASE_DEC, NULL, 0,
28405 "INTEGER_1_9", HFILL }},
28406 { &hf_ivi_serialNumber,
28407 { "serialNumber", "ivi.serialNumber",
28408 FT_UINT32, BASE_DEC, NULL, 0,
28409 "INTEGER_0_99", HFILL }},
28410 { &hf_ivi_liValidity,
28411 { "validity", "ivi.validity_element",
28412 FT_NONE, BASE_NONE, NULL, 0,
28413 "InternationalSign_applicablePeriod", HFILL }},
28414 { &hf_ivi_laneType,
28415 { "laneType", "ivi.laneType",
28416 FT_UINT32, BASE_DEC, VALS(ivi_LaneType_vals), 0,
28417 NULL, HFILL }},
28418 { &hf_ivi_laneTypeQualifier,
28419 { "laneTypeQualifier", "ivi.laneTypeQualifier_element",
28420 FT_NONE, BASE_NONE, NULL, 0,
28421 "CompleteVehicleCharacteristics", HFILL }},
28422 { &hf_ivi_laneCharacteristics,
28423 { "laneCharacteristics", "ivi.laneCharacteristics_element",
28424 FT_NONE, BASE_NONE, NULL, 0,
28425 NULL, HFILL }},
28426 { &hf_ivi_laneSurfaceStaticCharacteristics,
28427 { "laneSurfaceStaticCharacteristics", "ivi.laneSurfaceStaticCharacteristics_element",
28428 FT_NONE, BASE_NONE, NULL, 0,
28429 "RoadSurfaceStaticCharacteristics", HFILL }},
28430 { &hf_ivi_laneSurfaceDynamicCharacteristics,
28431 { "laneSurfaceDynamicCharacteristics", "ivi.laneSurfaceDynamicCharacteristics_element",
28432 FT_NONE, BASE_NONE, NULL, 0,
28433 "RoadSurfaceDynamicCharacteristics", HFILL }},
28434 { &hf_ivi_zoneDefinitionAccuracy,
28435 { "zoneDefinitionAccuracy", "ivi.zoneDefinitionAccuracy",
28436 FT_UINT32, BASE_DEC, VALS(ivi_DefinitionAccuracy_vals), 0,
28437 "DefinitionAccuracy", HFILL }},
28438 { &hf_ivi_existinglaneMarkingStatus,
28439 { "existinglaneMarkingStatus", "ivi.existinglaneMarkingStatus",
28440 FT_BOOLEAN, BASE_NONE, NULL, 0,
28441 "LaneMarkingStatus", HFILL }},
28442 { &hf_ivi_newlaneMarkingColour,
28443 { "newlaneMarkingColour", "ivi.newlaneMarkingColour",
28444 FT_UINT32, BASE_DEC, VALS(ivi_MarkingColour_vals), 0,
28445 "MarkingColour", HFILL }},
28446 { &hf_ivi_laneDelimitationLeft,
28447 { "laneDelimitationLeft", "ivi.laneDelimitationLeft",
28448 FT_UINT32, BASE_DEC, VALS(ivi_LaneDelimitation_vals), 0,
28449 "LaneDelimitation", HFILL }},
28450 { &hf_ivi_laneDelimitationRight,
28451 { "laneDelimitationRight", "ivi.laneDelimitationRight",
28452 FT_UINT32, BASE_DEC, VALS(ivi_LaneDelimitation_vals), 0,
28453 "LaneDelimitation", HFILL }},
28454 { &hf_ivi_mergingWith,
28455 { "mergingWith", "ivi.mergingWith",
28456 FT_UINT32, BASE_DEC, NULL, 0,
28457 "Zid", HFILL }},
28458 { &hf_ivi_lcLayoutComponentId,
28459 { "layoutComponentId", "ivi.layoutComponentId",
28460 FT_UINT32, BASE_DEC, NULL, 0,
28461 "INTEGER_1_8_", HFILL }},
28462 { &hf_ivi_x,
28463 { "x", "ivi.x",
28464 FT_UINT32, BASE_DEC, NULL, 0,
28465 "INTEGER_10_265", HFILL }},
28466 { &hf_ivi_y,
28467 { "y", "ivi.y",
28468 FT_UINT32, BASE_DEC, NULL, 0,
28469 "INTEGER_10_73", HFILL }},
28470 { &hf_ivi_textScripting,
28471 { "textScripting", "ivi.textScripting",
28472 FT_UINT32, BASE_DEC, VALS(ivi_T_textScripting_vals), 0,
28473 NULL, HFILL }},
28474 { &hf_ivi_goodsType,
28475 { "goodsType", "ivi.goodsType",
28476 FT_UINT32, BASE_DEC, VALS(ivi_GoodsType_vals), 0,
28477 NULL, HFILL }},
28478 { &hf_ivi_dangerousGoodsType,
28479 { "dangerousGoodsType", "ivi.dangerousGoodsType",
28480 FT_UINT32, BASE_DEC, VALS(its_DangerousGoodsBasic_vals), 0,
28481 "DangerousGoodsBasic", HFILL }},
28482 { &hf_ivi_specialTransportType,
28483 { "specialTransportType", "ivi.specialTransportType",
28484 FT_BYTES, BASE_NONE, NULL, 0,
28485 NULL, HFILL }},
28486 { &hf_ivi_roadsegment,
28487 { "roadsegment", "ivi.roadsegment_element",
28488 FT_NONE, BASE_NONE, NULL, 0,
28489 "RoadSegmentReferenceID", HFILL }},
28490 { &hf_ivi_intersection,
28491 { "intersection", "ivi.intersection_element",
28492 FT_NONE, BASE_NONE, NULL, 0,
28493 "IntersectionReferenceID", HFILL }},
28494 { &hf_ivi_maxNoOfVehicles,
28495 { "maxNoOfVehicles", "ivi.maxNoOfVehicles",
28496 FT_UINT32, BASE_DEC, NULL, 0,
28497 NULL, HFILL }},
28498 { &hf_ivi_maxLenghtOfPlatoon,
28499 { "maxLenghtOfPlatoon", "ivi.maxLenghtOfPlatoon",
28500 FT_UINT32, BASE_DEC, NULL, 0,
28501 NULL, HFILL }},
28502 { &hf_ivi_platoonMaxSpeedLimit,
28503 { "platoonMaxSpeedLimit", "ivi.platoonMaxSpeedLimit",
28504 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_value_fmt), 0,
28505 "SpeedValue", HFILL }},
28506 { &hf_ivi_platoonMinSpeedLimit,
28507 { "platoonMinSpeedLimit", "ivi.platoonMinSpeedLimit",
28508 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_value_fmt), 0,
28509 "SpeedValue", HFILL }},
28510 { &hf_ivi_platoonSpeedRecommendation,
28511 { "platoonSpeedRecommendation", "ivi.platoonSpeedRecommendation",
28512 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_value_fmt), 0,
28513 "SpeedValue", HFILL }},
28514 { &hf_ivi_deltaPositions,
28515 { "deltaPositions", "ivi.deltaPositions",
28516 FT_UINT32, BASE_DEC, NULL, 0,
28517 NULL, HFILL }},
28518 { &hf_ivi_deltaPositionsWithAltitude,
28519 { "deltaPositionsWithAltitude", "ivi.deltaPositionsWithAltitude",
28520 FT_UINT32, BASE_DEC, NULL, 0,
28521 "DeltaReferencePositions", HFILL }},
28522 { &hf_ivi_absolutePositions,
28523 { "absolutePositions", "ivi.absolutePositions",
28524 FT_UINT32, BASE_DEC, NULL, 0,
28525 NULL, HFILL }},
28526 { &hf_ivi_absolutePositionsWithAltitude,
28527 { "absolutePositionsWithAltitude", "ivi.absolutePositionsWithAltitude",
28528 FT_UINT32, BASE_DEC, NULL, 0,
28529 "AbsolutePositionsWAltitude", HFILL }},
28530 { &hf_ivi_condition,
28531 { "condition", "ivi.condition",
28532 FT_UINT32, BASE_DEC, VALS(ivi_Condition_vals), 0,
28533 NULL, HFILL }},
28534 { &hf_ivi_temperature,
28535 { "temperature", "ivi.temperature",
28536 FT_INT32, BASE_DEC, NULL, 0,
28537 NULL, HFILL }},
28538 { &hf_ivi_iceOrWaterDepth,
28539 { "iceOrWaterDepth", "ivi.iceOrWaterDepth",
28540 FT_UINT32, BASE_DEC, NULL, 0,
28541 "Depth", HFILL }},
28542 { &hf_ivi_treatment,
28543 { "treatment", "ivi.treatment",
28544 FT_UINT32, BASE_DEC, VALS(ivi_TreatmentType_vals), 0,
28545 "TreatmentType", HFILL }},
28546 { &hf_ivi_frictionCoefficient,
28547 { "frictionCoefficient", "ivi.frictionCoefficient",
28548 FT_UINT32, BASE_DEC, NULL, 0,
28549 NULL, HFILL }},
28550 { &hf_ivi_material,
28551 { "material", "ivi.material",
28552 FT_UINT32, BASE_DEC, VALS(ivi_MaterialType_vals), 0,
28553 "MaterialType", HFILL }},
28554 { &hf_ivi_wear,
28555 { "wear", "ivi.wear",
28556 FT_UINT32, BASE_DEC, VALS(ivi_WearLevel_vals), 0,
28557 "WearLevel", HFILL }},
28558 { &hf_ivi_avBankingAngle,
28559 { "avBankingAngle", "ivi.avBankingAngle",
28560 FT_INT32, BASE_DEC, NULL, 0,
28561 "BankingAngle", HFILL }},
28562 { &hf_ivi_rscLayoutComponentId,
28563 { "layoutComponentId", "ivi.layoutComponentId",
28564 FT_UINT32, BASE_DEC, NULL, 0,
28565 "INTEGER_1_4_", HFILL }},
28566 { &hf_ivi_code,
28567 { "code", "ivi.code",
28568 FT_UINT32, BASE_DEC, VALS(ivi_T_code_vals), 0,
28569 NULL, HFILL }},
28570 { &hf_ivi_viennaConvention,
28571 { "viennaConvention", "ivi.viennaConvention_element",
28572 FT_NONE, BASE_NONE, NULL, 0,
28573 "VcCode", HFILL }},
28574 { &hf_ivi_iso14823,
28575 { "iso14823", "ivi.iso14823_element",
28576 FT_NONE, BASE_NONE, NULL, 0,
28577 "ISO14823Code", HFILL }},
28578 { &hf_ivi_itisCodes,
28579 { "itisCodes", "ivi.itisCodes",
28580 FT_UINT32, BASE_DEC, NULL, 0,
28581 "INTEGER_0_65535", HFILL }},
28582 { &hf_ivi_anyCatalogue,
28583 { "anyCatalogue", "ivi.anyCatalogue_element",
28584 FT_NONE, BASE_NONE, NULL, 0,
28585 NULL, HFILL }},
28586 { &hf_ivi_line,
28587 { "line", "ivi.line",
28588 FT_UINT32, BASE_DEC, VALS(ivi_PolygonalLine_vals), 0,
28589 "PolygonalLine", HFILL }},
28590 { &hf_ivi_tLayoutComponentId,
28591 { "layoutComponentId", "ivi.layoutComponentId",
28592 FT_UINT32, BASE_DEC, NULL, 0,
28593 "INTEGER_1_4_", HFILL }},
28594 { &hf_ivi_language,
28595 { "language", "ivi.language",
28596 FT_BYTES, BASE_NONE, NULL, 0,
28597 NULL, HFILL }},
28598 { &hf_ivi_textContent,
28599 { "textContent", "ivi.textContent",
28600 FT_STRING, BASE_NONE, NULL, 0,
28601 "UTF8String", HFILL }},
28602 { &hf_ivi_toEqualTo,
28603 { "equalTo", "ivi.equalTo",
28604 FT_UINT32, BASE_DEC, NULL, 0,
28605 "T_TractorCharactEqualTo", HFILL }},
28606 { &hf_ivi_toNotEqualTo,
28607 { "notEqualTo", "ivi.notEqualTo",
28608 FT_UINT32, BASE_DEC, NULL, 0,
28609 "T_TractorCharactNotEqualTo", HFILL }},
28610 { &hf_ivi_ranges,
28611 { "ranges", "ivi.ranges",
28612 FT_UINT32, BASE_DEC, NULL, 0,
28613 "VehicleCharacteristicsRangesList", HFILL }},
28614 { &hf_ivi_teEqualTo,
28615 { "equalTo", "ivi.equalTo",
28616 FT_UINT32, BASE_DEC, NULL, 0,
28617 "T_TrailerCharactEqualTo", HFILL }},
28618 { &hf_ivi_teNotEqualTo,
28619 { "notEqualTo", "ivi.notEqualTo",
28620 FT_UINT32, BASE_DEC, NULL, 0,
28621 "T_TrailerCharactNotEqualTo", HFILL }},
28622 { &hf_ivi_ranges_01,
28623 { "ranges", "ivi.ranges",
28624 FT_UINT32, BASE_DEC, NULL, 0,
28625 "TrailerCharacteristicsRangesList", HFILL }},
28626 { &hf_ivi_roadSignClass,
28627 { "roadSignClass", "ivi.roadSignClass",
28628 FT_UINT32, BASE_DEC, VALS(ivi_VcClass_vals), 0,
28629 "VcClass", HFILL }},
28630 { &hf_ivi_roadSignCode,
28631 { "roadSignCode", "ivi.roadSignCode",
28632 FT_UINT32, BASE_DEC, NULL, 0,
28633 "INTEGER_1_64", HFILL }},
28634 { &hf_ivi_vcOption,
28635 { "vcOption", "ivi.vcOption",
28636 FT_UINT32, BASE_DEC, VALS(ivi_VcOption_vals), 0,
28637 NULL, HFILL }},
28638 { &hf_ivi_vcValidity,
28639 { "validity", "ivi.validity",
28640 FT_UINT32, BASE_DEC, NULL, 0,
28641 "ValidityPeriods", HFILL }},
28642 { &hf_ivi_vcValue,
28643 { "value", "ivi.value",
28644 FT_UINT32, BASE_DEC, NULL, 0,
28645 "INTEGER_0_65535", HFILL }},
28646 { &hf_ivi_simpleVehicleType,
28647 { "simpleVehicleType", "ivi.simpleVehicleType",
28648 FT_UINT32, BASE_DEC, VALS(its_StationType_vals), 0,
28649 "StationType", HFILL }},
28650 { &hf_ivi_euVehicleCategoryCode,
28651 { "euVehicleCategoryCode", "ivi.euVehicleCategoryCode",
28652 FT_UINT32, BASE_DEC, VALS(its_EuVehicleCategoryCode_vals), 0,
28653 NULL, HFILL }},
28654 { &hf_ivi_iso3833VehicleType,
28655 { "iso3833VehicleType", "ivi.iso3833VehicleType",
28656 FT_UINT32, BASE_DEC, VALS(its_Iso3833VehicleType_vals), 0,
28657 NULL, HFILL }},
28658 { &hf_ivi_euroAndCo2value,
28659 { "euroAndCo2value", "ivi.euroAndCo2value_element",
28660 FT_NONE, BASE_NONE, NULL, 0,
28661 "EnvironmentalCharacteristics", HFILL }},
28662 { &hf_ivi_engineCharacteristics,
28663 { "engineCharacteristics", "ivi.engineCharacteristics",
28664 FT_UINT32, BASE_DEC, VALS(dsrc_app_EngineCharacteristics_vals), 0,
28665 NULL, HFILL }},
28666 { &hf_ivi_loadType,
28667 { "loadType", "ivi.loadType_element",
28668 FT_NONE, BASE_NONE, NULL, 0,
28669 NULL, HFILL }},
28670 { &hf_ivi_usage,
28671 { "usage", "ivi.usage",
28672 FT_UINT32, BASE_DEC, VALS(its_VehicleRole_vals), 0,
28673 "VehicleRole", HFILL }},
28674 { &hf_ivi_comparisonOperator,
28675 { "comparisonOperator", "ivi.comparisonOperator",
28676 FT_UINT32, BASE_DEC, VALS(ivi_ComparisonOperator_vals), 0,
28677 NULL, HFILL }},
28678 { &hf_ivi_limits,
28679 { "limits", "ivi.limits",
28680 FT_UINT32, BASE_DEC, VALS(ivi_T_limits_vals), 0,
28681 NULL, HFILL }},
28682 { &hf_ivi_numberOfAxles,
28683 { "numberOfAxles", "ivi.numberOfAxles",
28684 FT_UINT32, BASE_DEC, NULL, 0,
28685 "INTEGER_0_7", HFILL }},
28686 { &hf_ivi_vehicleDimensions,
28687 { "vehicleDimensions", "ivi.vehicleDimensions_element",
28688 FT_NONE, BASE_NONE, NULL, 0,
28689 NULL, HFILL }},
28690 { &hf_ivi_vehicleWeightLimits,
28691 { "vehicleWeightLimits", "ivi.vehicleWeightLimits_element",
28692 FT_NONE, BASE_NONE, NULL, 0,
28693 NULL, HFILL }},
28694 { &hf_ivi_axleWeightLimits,
28695 { "axleWeightLimits", "ivi.axleWeightLimits_element",
28696 FT_NONE, BASE_NONE, NULL, 0,
28697 NULL, HFILL }},
28698 { &hf_ivi_passengerCapacity,
28699 { "passengerCapacity", "ivi.passengerCapacity_element",
28700 FT_NONE, BASE_NONE, NULL, 0,
28701 NULL, HFILL }},
28702 { &hf_ivi_exhaustEmissionValues,
28703 { "exhaustEmissionValues", "ivi.exhaustEmissionValues_element",
28704 FT_NONE, BASE_NONE, NULL, 0,
28705 NULL, HFILL }},
28706 { &hf_ivi_dieselEmissionValues,
28707 { "dieselEmissionValues", "ivi.dieselEmissionValues_element",
28708 FT_NONE, BASE_NONE, NULL, 0,
28709 NULL, HFILL }},
28710 { &hf_ivi_soundLevel,
28711 { "soundLevel", "ivi.soundLevel_element",
28712 FT_NONE, BASE_NONE, NULL, 0,
28713 NULL, HFILL }},
28714 { &hf_ivi_segment,
28715 { "segment", "ivi.segment_element",
28716 FT_NONE, BASE_NONE, NULL, 0,
28717 NULL, HFILL }},
28718 { &hf_ivi_area,
28719 { "area", "ivi.area",
28720 FT_UINT32, BASE_DEC, VALS(ivi_PolygonalLine_vals), 0,
28721 "PolygonalLine", HFILL }},
28722 { &hf_ivi_computedSegment,
28723 { "computedSegment", "ivi.computedSegment_element",
28724 FT_NONE, BASE_NONE, NULL, 0,
28725 NULL, HFILL }},
28727 /* --- Module CAMv1-PDU-Descriptions --- --- --- */
28729 { &hf_camv1_camv1_CoopAwarenessV1_PDU,
28730 { "CoopAwarenessV1", "camv1.CoopAwarenessV1_element",
28731 FT_NONE, BASE_NONE, NULL, 0,
28732 NULL, HFILL }},
28733 { &hf_camv1_generationDeltaTime,
28734 { "generationDeltaTime", "camv1.generationDeltaTime",
28735 FT_UINT32, BASE_DEC, NULL, 0,
28736 NULL, HFILL }},
28737 { &hf_camv1_camParameters,
28738 { "camParameters", "camv1.camParameters_element",
28739 FT_NONE, BASE_NONE, NULL, 0,
28740 NULL, HFILL }},
28741 { &hf_camv1_basicContainer,
28742 { "basicContainer", "camv1.basicContainer_element",
28743 FT_NONE, BASE_NONE, NULL, 0,
28744 NULL, HFILL }},
28745 { &hf_camv1_highFrequencyContainer,
28746 { "highFrequencyContainer", "camv1.highFrequencyContainer",
28747 FT_UINT32, BASE_DEC, VALS(camv1_HighFrequencyContainer_vals), 0,
28748 NULL, HFILL }},
28749 { &hf_camv1_lowFrequencyContainer,
28750 { "lowFrequencyContainer", "camv1.lowFrequencyContainer",
28751 FT_UINT32, BASE_DEC, VALS(camv1_LowFrequencyContainer_vals), 0,
28752 NULL, HFILL }},
28753 { &hf_camv1_specialVehicleContainer,
28754 { "specialVehicleContainer", "camv1.specialVehicleContainer",
28755 FT_UINT32, BASE_DEC, VALS(camv1_SpecialVehicleContainer_vals), 0,
28756 NULL, HFILL }},
28757 { &hf_camv1_basicVehicleContainerHighFrequency,
28758 { "basicVehicleContainerHighFrequency", "camv1.basicVehicleContainerHighFrequency_element",
28759 FT_NONE, BASE_NONE, NULL, 0,
28760 NULL, HFILL }},
28761 { &hf_camv1_rsuContainerHighFrequency,
28762 { "rsuContainerHighFrequency", "camv1.rsuContainerHighFrequency_element",
28763 FT_NONE, BASE_NONE, NULL, 0,
28764 NULL, HFILL }},
28765 { &hf_camv1_basicVehicleContainerLowFrequency,
28766 { "basicVehicleContainerLowFrequency", "camv1.basicVehicleContainerLowFrequency_element",
28767 FT_NONE, BASE_NONE, NULL, 0,
28768 NULL, HFILL }},
28769 { &hf_camv1_publicTransportContainer,
28770 { "publicTransportContainer", "camv1.publicTransportContainer_element",
28771 FT_NONE, BASE_NONE, NULL, 0,
28772 NULL, HFILL }},
28773 { &hf_camv1_specialTransportContainer,
28774 { "specialTransportContainer", "camv1.specialTransportContainer_element",
28775 FT_NONE, BASE_NONE, NULL, 0,
28776 NULL, HFILL }},
28777 { &hf_camv1_dangerousGoodsContainer,
28778 { "dangerousGoodsContainer", "camv1.dangerousGoodsContainer_element",
28779 FT_NONE, BASE_NONE, NULL, 0,
28780 NULL, HFILL }},
28781 { &hf_camv1_roadWorksContainerBasic,
28782 { "roadWorksContainerBasic", "camv1.roadWorksContainerBasic_element",
28783 FT_NONE, BASE_NONE, NULL, 0,
28784 NULL, HFILL }},
28785 { &hf_camv1_rescueContainer,
28786 { "rescueContainer", "camv1.rescueContainer_element",
28787 FT_NONE, BASE_NONE, NULL, 0,
28788 NULL, HFILL }},
28789 { &hf_camv1_emergencyContainer,
28790 { "emergencyContainer", "camv1.emergencyContainer_element",
28791 FT_NONE, BASE_NONE, NULL, 0,
28792 NULL, HFILL }},
28793 { &hf_camv1_safetyCarContainer,
28794 { "safetyCarContainer", "camv1.safetyCarContainer_element",
28795 FT_NONE, BASE_NONE, NULL, 0,
28796 NULL, HFILL }},
28797 { &hf_camv1_stationType,
28798 { "stationType", "camv1.stationType",
28799 FT_UINT32, BASE_DEC, VALS(itsv1_StationType_vals), 0,
28800 NULL, HFILL }},
28801 { &hf_camv1_referencePosition,
28802 { "referencePosition", "camv1.referencePosition_element",
28803 FT_NONE, BASE_NONE, NULL, 0,
28804 NULL, HFILL }},
28805 { &hf_camv1_heading,
28806 { "heading", "camv1.heading_element",
28807 FT_NONE, BASE_NONE, NULL, 0,
28808 NULL, HFILL }},
28809 { &hf_camv1_speed,
28810 { "speed", "camv1.speed_element",
28811 FT_NONE, BASE_NONE, NULL, 0,
28812 NULL, HFILL }},
28813 { &hf_camv1_driveDirection,
28814 { "driveDirection", "camv1.driveDirection",
28815 FT_UINT32, BASE_DEC, VALS(itsv1_DriveDirection_vals), 0,
28816 NULL, HFILL }},
28817 { &hf_camv1_vehicleLength,
28818 { "vehicleLength", "camv1.vehicleLength_element",
28819 FT_NONE, BASE_NONE, NULL, 0,
28820 NULL, HFILL }},
28821 { &hf_camv1_vehicleWidth,
28822 { "vehicleWidth", "camv1.vehicleWidth",
28823 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_vehicle_width_fmt), 0,
28824 NULL, HFILL }},
28825 { &hf_camv1_longitudinalAcceleration,
28826 { "longitudinalAcceleration", "camv1.longitudinalAcceleration_element",
28827 FT_NONE, BASE_NONE, NULL, 0,
28828 NULL, HFILL }},
28829 { &hf_camv1_curvature,
28830 { "curvature", "camv1.curvature_element",
28831 FT_NONE, BASE_NONE, NULL, 0,
28832 NULL, HFILL }},
28833 { &hf_camv1_curvatureCalculationMode,
28834 { "curvatureCalculationMode", "camv1.curvatureCalculationMode",
28835 FT_UINT32, BASE_DEC, VALS(itsv1_CurvatureCalculationMode_vals), 0,
28836 NULL, HFILL }},
28837 { &hf_camv1_yawRate,
28838 { "yawRate", "camv1.yawRate_element",
28839 FT_NONE, BASE_NONE, NULL, 0,
28840 NULL, HFILL }},
28841 { &hf_camv1_accelerationControl,
28842 { "accelerationControl", "camv1.accelerationControl",
28843 FT_BYTES, BASE_NONE, NULL, 0,
28844 NULL, HFILL }},
28845 { &hf_camv1_lanePosition,
28846 { "lanePosition", "camv1.lanePosition",
28847 FT_INT32, BASE_DEC, VALS(itsv1_LanePosition_vals), 0,
28848 NULL, HFILL }},
28849 { &hf_camv1_steeringWheelAngle,
28850 { "steeringWheelAngle", "camv1.steeringWheelAngle_element",
28851 FT_NONE, BASE_NONE, NULL, 0,
28852 NULL, HFILL }},
28853 { &hf_camv1_lateralAcceleration,
28854 { "lateralAcceleration", "camv1.lateralAcceleration_element",
28855 FT_NONE, BASE_NONE, NULL, 0,
28856 NULL, HFILL }},
28857 { &hf_camv1_verticalAcceleration,
28858 { "verticalAcceleration", "camv1.verticalAcceleration_element",
28859 FT_NONE, BASE_NONE, NULL, 0,
28860 NULL, HFILL }},
28861 { &hf_camv1_performanceClass,
28862 { "performanceClass", "camv1.performanceClass",
28863 FT_UINT32, BASE_DEC, VALS(itsv1_PerformanceClass_vals), 0,
28864 NULL, HFILL }},
28865 { &hf_camv1_cenDsrcTollingZone,
28866 { "cenDsrcTollingZone", "camv1.cenDsrcTollingZone_element",
28867 FT_NONE, BASE_NONE, NULL, 0,
28868 NULL, HFILL }},
28869 { &hf_camv1_vehicleRole,
28870 { "vehicleRole", "camv1.vehicleRole",
28871 FT_UINT32, BASE_DEC, VALS(itsv1_VehicleRole_vals), 0,
28872 NULL, HFILL }},
28873 { &hf_camv1_exteriorLights,
28874 { "exteriorLights", "camv1.exteriorLights",
28875 FT_BYTES, BASE_NONE, NULL, 0,
28876 NULL, HFILL }},
28877 { &hf_camv1_pathHistory,
28878 { "pathHistory", "camv1.pathHistory",
28879 FT_UINT32, BASE_DEC, NULL, 0,
28880 NULL, HFILL }},
28881 { &hf_camv1_embarkationStatus,
28882 { "embarkationStatus", "camv1.embarkationStatus",
28883 FT_BOOLEAN, BASE_NONE, NULL, 0,
28884 NULL, HFILL }},
28885 { &hf_camv1_ptActivation,
28886 { "ptActivation", "camv1.ptActivation_element",
28887 FT_NONE, BASE_NONE, NULL, 0,
28888 NULL, HFILL }},
28889 { &hf_camv1_specialTransportType,
28890 { "specialTransportType", "camv1.specialTransportType",
28891 FT_BYTES, BASE_NONE, NULL, 0,
28892 NULL, HFILL }},
28893 { &hf_camv1_lightBarSirenInUse,
28894 { "lightBarSirenInUse", "camv1.lightBarSirenInUse",
28895 FT_BYTES, BASE_NONE, NULL, 0,
28896 NULL, HFILL }},
28897 { &hf_camv1_dangerousGoodsBasic,
28898 { "dangerousGoodsBasic", "camv1.dangerousGoodsBasic",
28899 FT_UINT32, BASE_DEC, VALS(itsv1_DangerousGoodsBasic_vals), 0,
28900 NULL, HFILL }},
28901 { &hf_camv1_roadworksSubCauseCode,
28902 { "roadworksSubCauseCode", "camv1.roadworksSubCauseCode",
28903 FT_UINT32, BASE_DEC, VALS(itsv1_RoadworksSubCauseCode_vals), 0,
28904 NULL, HFILL }},
28905 { &hf_camv1_closedLanes,
28906 { "closedLanes", "camv1.closedLanes_element",
28907 FT_NONE, BASE_NONE, NULL, 0,
28908 NULL, HFILL }},
28909 { &hf_camv1_incidentIndication,
28910 { "incidentIndication", "camv1.incidentIndication_element",
28911 FT_NONE, BASE_NONE, NULL, 0,
28912 "CauseCode", HFILL }},
28913 { &hf_camv1_emergencyPriority,
28914 { "emergencyPriority", "camv1.emergencyPriority",
28915 FT_BYTES, BASE_NONE, NULL, 0,
28916 NULL, HFILL }},
28917 { &hf_camv1_trafficRule,
28918 { "trafficRule", "camv1.trafficRule",
28919 FT_UINT32, BASE_DEC, VALS(itsv1_TrafficRule_vals), 0,
28920 NULL, HFILL }},
28921 { &hf_camv1_speedLimit,
28922 { "speedLimit", "camv1.speedLimit",
28923 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_limit_fmt), 0,
28924 NULL, HFILL }},
28925 { &hf_camv1_protectedCommunicationZonesRSU,
28926 { "protectedCommunicationZonesRSU", "camv1.protectedCommunicationZonesRSU",
28927 FT_UINT32, BASE_DEC, NULL, 0,
28928 NULL, HFILL }},
28930 /* --- Module CAM-PDU-Descriptions --- --- --- */
28932 { &hf_cam_cam_CamPayload_PDU,
28933 { "CamPayload", "cam.CamPayload_element",
28934 FT_NONE, BASE_NONE, NULL, 0,
28935 NULL, HFILL }},
28936 { &hf_cam_generationDeltaTime,
28937 { "generationDeltaTime", "cam.generationDeltaTime",
28938 FT_UINT32, BASE_DEC, NULL, 0,
28939 NULL, HFILL }},
28940 { &hf_cam_camParameters,
28941 { "camParameters", "cam.camParameters_element",
28942 FT_NONE, BASE_NONE, NULL, 0,
28943 NULL, HFILL }},
28944 { &hf_cam_basicContainer,
28945 { "basicContainer", "cam.basicContainer_element",
28946 FT_NONE, BASE_NONE, NULL, 0,
28947 NULL, HFILL }},
28948 { &hf_cam_highFrequencyContainer,
28949 { "highFrequencyContainer", "cam.highFrequencyContainer",
28950 FT_UINT32, BASE_DEC, VALS(cam_HighFrequencyContainer_vals), 0,
28951 NULL, HFILL }},
28952 { &hf_cam_lowFrequencyContainer,
28953 { "lowFrequencyContainer", "cam.lowFrequencyContainer",
28954 FT_UINT32, BASE_DEC, VALS(cam_LowFrequencyContainer_vals), 0,
28955 NULL, HFILL }},
28956 { &hf_cam_specialVehicleContainer,
28957 { "specialVehicleContainer", "cam.specialVehicleContainer",
28958 FT_UINT32, BASE_DEC, VALS(cam_SpecialVehicleContainer_vals), 0,
28959 NULL, HFILL }},
28960 { &hf_cam_basicVehicleContainerHighFrequency,
28961 { "basicVehicleContainerHighFrequency", "cam.basicVehicleContainerHighFrequency_element",
28962 FT_NONE, BASE_NONE, NULL, 0,
28963 NULL, HFILL }},
28964 { &hf_cam_rsuContainerHighFrequency,
28965 { "rsuContainerHighFrequency", "cam.rsuContainerHighFrequency_element",
28966 FT_NONE, BASE_NONE, NULL, 0,
28967 NULL, HFILL }},
28968 { &hf_cam_basicVehicleContainerLowFrequency,
28969 { "basicVehicleContainerLowFrequency", "cam.basicVehicleContainerLowFrequency_element",
28970 FT_NONE, BASE_NONE, NULL, 0,
28971 NULL, HFILL }},
28972 { &hf_cam_publicTransportContainer,
28973 { "publicTransportContainer", "cam.publicTransportContainer_element",
28974 FT_NONE, BASE_NONE, NULL, 0,
28975 NULL, HFILL }},
28976 { &hf_cam_specialTransportContainer,
28977 { "specialTransportContainer", "cam.specialTransportContainer_element",
28978 FT_NONE, BASE_NONE, NULL, 0,
28979 NULL, HFILL }},
28980 { &hf_cam_dangerousGoodsContainer,
28981 { "dangerousGoodsContainer", "cam.dangerousGoodsContainer_element",
28982 FT_NONE, BASE_NONE, NULL, 0,
28983 NULL, HFILL }},
28984 { &hf_cam_roadWorksContainerBasic,
28985 { "roadWorksContainerBasic", "cam.roadWorksContainerBasic_element",
28986 FT_NONE, BASE_NONE, NULL, 0,
28987 NULL, HFILL }},
28988 { &hf_cam_rescueContainer,
28989 { "rescueContainer", "cam.rescueContainer_element",
28990 FT_NONE, BASE_NONE, NULL, 0,
28991 NULL, HFILL }},
28992 { &hf_cam_emergencyContainer,
28993 { "emergencyContainer", "cam.emergencyContainer_element",
28994 FT_NONE, BASE_NONE, NULL, 0,
28995 NULL, HFILL }},
28996 { &hf_cam_safetyCarContainer,
28997 { "safetyCarContainer", "cam.safetyCarContainer_element",
28998 FT_NONE, BASE_NONE, NULL, 0,
28999 NULL, HFILL }},
29000 { &hf_cam_heading,
29001 { "heading", "cam.heading_element",
29002 FT_NONE, BASE_NONE, NULL, 0,
29003 NULL, HFILL }},
29004 { &hf_cam_speed,
29005 { "speed", "cam.speed_element",
29006 FT_NONE, BASE_NONE, NULL, 0,
29007 NULL, HFILL }},
29008 { &hf_cam_driveDirection,
29009 { "driveDirection", "cam.driveDirection",
29010 FT_UINT32, BASE_DEC, VALS(its_DriveDirection_vals), 0,
29011 NULL, HFILL }},
29012 { &hf_cam_vehicleLength,
29013 { "vehicleLength", "cam.vehicleLength_element",
29014 FT_NONE, BASE_NONE, NULL, 0,
29015 NULL, HFILL }},
29016 { &hf_cam_vehicleWidth,
29017 { "vehicleWidth", "cam.vehicleWidth",
29018 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_vehicle_width_fmt), 0,
29019 NULL, HFILL }},
29020 { &hf_cam_longitudinalAcceleration,
29021 { "longitudinalAcceleration", "cam.longitudinalAcceleration_element",
29022 FT_NONE, BASE_NONE, NULL, 0,
29023 "AccelerationComponent", HFILL }},
29024 { &hf_cam_curvature,
29025 { "curvature", "cam.curvature_element",
29026 FT_NONE, BASE_NONE, NULL, 0,
29027 NULL, HFILL }},
29028 { &hf_cam_curvatureCalculationMode,
29029 { "curvatureCalculationMode", "cam.curvatureCalculationMode",
29030 FT_UINT32, BASE_DEC, VALS(its_CurvatureCalculationMode_vals), 0,
29031 NULL, HFILL }},
29032 { &hf_cam_yawRate,
29033 { "yawRate", "cam.yawRate_element",
29034 FT_NONE, BASE_NONE, NULL, 0,
29035 NULL, HFILL }},
29036 { &hf_cam_accelerationControl,
29037 { "accelerationControl", "cam.accelerationControl",
29038 FT_BYTES, BASE_NONE, NULL, 0,
29039 NULL, HFILL }},
29040 { &hf_cam_lanePosition,
29041 { "lanePosition", "cam.lanePosition",
29042 FT_INT32, BASE_DEC, VALS(its_LanePosition_vals), 0,
29043 NULL, HFILL }},
29044 { &hf_cam_steeringWheelAngle,
29045 { "steeringWheelAngle", "cam.steeringWheelAngle_element",
29046 FT_NONE, BASE_NONE, NULL, 0,
29047 NULL, HFILL }},
29048 { &hf_cam_lateralAcceleration,
29049 { "lateralAcceleration", "cam.lateralAcceleration_element",
29050 FT_NONE, BASE_NONE, NULL, 0,
29051 "AccelerationComponent", HFILL }},
29052 { &hf_cam_verticalAcceleration,
29053 { "verticalAcceleration", "cam.verticalAcceleration_element",
29054 FT_NONE, BASE_NONE, NULL, 0,
29055 "AccelerationComponent", HFILL }},
29056 { &hf_cam_performanceClass,
29057 { "performanceClass", "cam.performanceClass",
29058 FT_UINT32, BASE_DEC, VALS(its_PerformanceClass_vals), 0,
29059 NULL, HFILL }},
29060 { &hf_cam_cenDsrcTollingZone,
29061 { "cenDsrcTollingZone", "cam.cenDsrcTollingZone_element",
29062 FT_NONE, BASE_NONE, NULL, 0,
29063 NULL, HFILL }},
29064 { &hf_cam_vehicleRole,
29065 { "vehicleRole", "cam.vehicleRole",
29066 FT_UINT32, BASE_DEC, VALS(its_VehicleRole_vals), 0,
29067 NULL, HFILL }},
29068 { &hf_cam_exteriorLights,
29069 { "exteriorLights", "cam.exteriorLights",
29070 FT_BYTES, BASE_NONE, NULL, 0,
29071 NULL, HFILL }},
29072 { &hf_cam_pathHistory,
29073 { "pathHistory", "cam.pathHistory",
29074 FT_UINT32, BASE_DEC, NULL, 0,
29075 "Path", HFILL }},
29076 { &hf_cam_embarkationStatus,
29077 { "embarkationStatus", "cam.embarkationStatus",
29078 FT_BOOLEAN, BASE_NONE, NULL, 0,
29079 NULL, HFILL }},
29080 { &hf_cam_ptActivation,
29081 { "ptActivation", "cam.ptActivation_element",
29082 FT_NONE, BASE_NONE, NULL, 0,
29083 NULL, HFILL }},
29084 { &hf_cam_specialTransportType,
29085 { "specialTransportType", "cam.specialTransportType",
29086 FT_BYTES, BASE_NONE, NULL, 0,
29087 NULL, HFILL }},
29088 { &hf_cam_lightBarSirenInUse,
29089 { "lightBarSirenInUse", "cam.lightBarSirenInUse",
29090 FT_BYTES, BASE_NONE, NULL, 0,
29091 NULL, HFILL }},
29092 { &hf_cam_dangerousGoodsBasic,
29093 { "dangerousGoodsBasic", "cam.dangerousGoodsBasic",
29094 FT_UINT32, BASE_DEC, VALS(its_DangerousGoodsBasic_vals), 0,
29095 NULL, HFILL }},
29096 { &hf_cam_roadworksSubCauseCode,
29097 { "roadworksSubCauseCode", "cam.roadworksSubCauseCode",
29098 FT_UINT32, BASE_DEC, VALS(its_RoadworksSubCauseCode_vals), 0,
29099 NULL, HFILL }},
29100 { &hf_cam_closedLanes,
29101 { "closedLanes", "cam.closedLanes_element",
29102 FT_NONE, BASE_NONE, NULL, 0,
29103 NULL, HFILL }},
29104 { &hf_cam_incidentIndication,
29105 { "incidentIndication", "cam.incidentIndication_element",
29106 FT_NONE, BASE_NONE, NULL, 0,
29107 "CauseCodeV2", HFILL }},
29108 { &hf_cam_emergencyPriority,
29109 { "emergencyPriority", "cam.emergencyPriority",
29110 FT_BYTES, BASE_NONE, NULL, 0,
29111 NULL, HFILL }},
29112 { &hf_cam_trafficRule,
29113 { "trafficRule", "cam.trafficRule",
29114 FT_UINT32, BASE_DEC, VALS(its_TrafficRule_vals), 0,
29115 NULL, HFILL }},
29116 { &hf_cam_speedLimit,
29117 { "speedLimit", "cam.speedLimit",
29118 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_limit_fmt), 0,
29119 NULL, HFILL }},
29120 { &hf_cam_protectedCommunicationZonesRSU,
29121 { "protectedCommunicationZonesRSU", "cam.protectedCommunicationZonesRSU",
29122 FT_UINT32, BASE_DEC, NULL, 0,
29123 NULL, HFILL }},
29125 /* --- Module DENMv1-PDU-Descriptions --- --- --- */
29127 { &hf_denmv1_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU,
29128 { "DecentralizedEnvironmentalNotificationMessageV1", "denmv1.DecentralizedEnvironmentalNotificationMessageV1_element",
29129 FT_NONE, BASE_NONE, NULL, 0,
29130 NULL, HFILL }},
29131 { &hf_denmv1_management,
29132 { "management", "denmv1.management_element",
29133 FT_NONE, BASE_NONE, NULL, 0,
29134 "ManagementContainer", HFILL }},
29135 { &hf_denmv1_situation,
29136 { "situation", "denmv1.situation_element",
29137 FT_NONE, BASE_NONE, NULL, 0,
29138 "SituationContainer", HFILL }},
29139 { &hf_denmv1_location,
29140 { "location", "denmv1.location_element",
29141 FT_NONE, BASE_NONE, NULL, 0,
29142 "LocationContainer", HFILL }},
29143 { &hf_denmv1_alacarte,
29144 { "alacarte", "denmv1.alacarte_element",
29145 FT_NONE, BASE_NONE, NULL, 0,
29146 "AlacarteContainer", HFILL }},
29147 { &hf_denmv1_actionID,
29148 { "actionID", "denmv1.actionID_element",
29149 FT_NONE, BASE_NONE, NULL, 0,
29150 NULL, HFILL }},
29151 { &hf_denmv1_detectionTime,
29152 { "detectionTime", "denmv1.detectionTime",
29153 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
29154 "TimestampIts", HFILL }},
29155 { &hf_denmv1_referenceTime,
29156 { "referenceTime", "denmv1.referenceTime",
29157 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
29158 "TimestampIts", HFILL }},
29159 { &hf_denmv1_termination,
29160 { "termination", "denmv1.termination",
29161 FT_UINT32, BASE_DEC, VALS(denmv1_Termination_vals), 0,
29162 NULL, HFILL }},
29163 { &hf_denmv1_eventPosition,
29164 { "eventPosition", "denmv1.eventPosition_element",
29165 FT_NONE, BASE_NONE, NULL, 0,
29166 "ReferencePosition", HFILL }},
29167 { &hf_denmv1_relevanceDistance,
29168 { "relevanceDistance", "denmv1.relevanceDistance",
29169 FT_UINT32, BASE_DEC, VALS(itsv1_RelevanceDistance_vals), 0,
29170 NULL, HFILL }},
29171 { &hf_denmv1_relevanceTrafficDirection,
29172 { "relevanceTrafficDirection", "denmv1.relevanceTrafficDirection",
29173 FT_UINT32, BASE_DEC, VALS(itsv1_RelevanceTrafficDirection_vals), 0,
29174 NULL, HFILL }},
29175 { &hf_denmv1_validityDuration,
29176 { "validityDuration", "denmv1.validityDuration",
29177 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_validity_duration_fmt), 0,
29178 NULL, HFILL }},
29179 { &hf_denmv1_transmissionInterval,
29180 { "transmissionInterval", "denmv1.transmissionInterval",
29181 FT_UINT32, BASE_DEC, VALS(itsv1_TransmissionInterval_vals), 0,
29182 NULL, HFILL }},
29183 { &hf_denmv1_stationType,
29184 { "stationType", "denmv1.stationType",
29185 FT_UINT32, BASE_DEC, VALS(itsv1_StationType_vals), 0,
29186 NULL, HFILL }},
29187 { &hf_denmv1_informationQuality,
29188 { "informationQuality", "denmv1.informationQuality",
29189 FT_UINT32, BASE_DEC, VALS(itsv1_InformationQuality_vals), 0,
29190 NULL, HFILL }},
29191 { &hf_denmv1_eventType,
29192 { "eventType", "denmv1.eventType_element",
29193 FT_NONE, BASE_NONE, NULL, 0,
29194 "CauseCode", HFILL }},
29195 { &hf_denmv1_linkedCause,
29196 { "linkedCause", "denmv1.linkedCause_element",
29197 FT_NONE, BASE_NONE, NULL, 0,
29198 "CauseCode", HFILL }},
29199 { &hf_denmv1_eventHistory,
29200 { "eventHistory", "denmv1.eventHistory",
29201 FT_UINT32, BASE_DEC, NULL, 0,
29202 NULL, HFILL }},
29203 { &hf_denmv1_eventSpeed,
29204 { "eventSpeed", "denmv1.eventSpeed_element",
29205 FT_NONE, BASE_NONE, NULL, 0,
29206 "Speed", HFILL }},
29207 { &hf_denmv1_eventPositionHeading,
29208 { "eventPositionHeading", "denmv1.eventPositionHeading_element",
29209 FT_NONE, BASE_NONE, NULL, 0,
29210 "Heading", HFILL }},
29211 { &hf_denmv1_traces,
29212 { "traces", "denmv1.traces",
29213 FT_UINT32, BASE_DEC, NULL, 0,
29214 NULL, HFILL }},
29215 { &hf_denmv1_roadType,
29216 { "roadType", "denmv1.roadType",
29217 FT_UINT32, BASE_DEC, VALS(itsv1_RoadType_vals), 0,
29218 NULL, HFILL }},
29219 { &hf_denmv1_heightLonCarrLeft,
29220 { "heightLonCarrLeft", "denmv1.heightLonCarrLeft",
29221 FT_UINT32, BASE_DEC, VALS(itsv1_HeightLonCarr_vals), 0,
29222 "HeightLonCarr", HFILL }},
29223 { &hf_denmv1_heightLonCarrRight,
29224 { "heightLonCarrRight", "denmv1.heightLonCarrRight",
29225 FT_UINT32, BASE_DEC, VALS(itsv1_HeightLonCarr_vals), 0,
29226 "HeightLonCarr", HFILL }},
29227 { &hf_denmv1_posLonCarrLeft,
29228 { "posLonCarrLeft", "denmv1.posLonCarrLeft",
29229 FT_UINT32, BASE_DEC, VALS(itsv1_PosLonCarr_vals), 0,
29230 "PosLonCarr", HFILL }},
29231 { &hf_denmv1_posLonCarrRight,
29232 { "posLonCarrRight", "denmv1.posLonCarrRight",
29233 FT_UINT32, BASE_DEC, VALS(itsv1_PosLonCarr_vals), 0,
29234 "PosLonCarr", HFILL }},
29235 { &hf_denmv1_positionOfPillars,
29236 { "positionOfPillars", "denmv1.positionOfPillars",
29237 FT_UINT32, BASE_DEC, NULL, 0,
29238 NULL, HFILL }},
29239 { &hf_denmv1_posCentMass,
29240 { "posCentMass", "denmv1.posCentMass",
29241 FT_UINT32, BASE_DEC, VALS(itsv1_PosCentMass_vals), 0,
29242 NULL, HFILL }},
29243 { &hf_denmv1_wheelBaseVehicle,
29244 { "wheelBaseVehicle", "denmv1.wheelBaseVehicle",
29245 FT_UINT32, BASE_DEC, VALS(itsv1_WheelBaseVehicle_vals), 0,
29246 NULL, HFILL }},
29247 { &hf_denmv1_turningRadius,
29248 { "turningRadius", "denmv1.turningRadius",
29249 FT_UINT32, BASE_DEC, VALS(itsv1_TurningRadius_vals), 0,
29250 NULL, HFILL }},
29251 { &hf_denmv1_posFrontAx,
29252 { "posFrontAx", "denmv1.posFrontAx",
29253 FT_UINT32, BASE_DEC, VALS(itsv1_PosFrontAx_vals), 0,
29254 NULL, HFILL }},
29255 { &hf_denmv1_positionOfOccupants,
29256 { "positionOfOccupants", "denmv1.positionOfOccupants",
29257 FT_BYTES, BASE_NONE, NULL, 0,
29258 NULL, HFILL }},
29259 { &hf_denmv1_vehicleMass,
29260 { "vehicleMass", "denmv1.vehicleMass",
29261 FT_UINT32, BASE_DEC, VALS(itsv1_VehicleMass_vals), 0,
29262 NULL, HFILL }},
29263 { &hf_denmv1_requestResponseIndication,
29264 { "requestResponseIndication", "denmv1.requestResponseIndication",
29265 FT_UINT32, BASE_DEC, VALS(itsv1_RequestResponseIndication_vals), 0,
29266 NULL, HFILL }},
29267 { &hf_denmv1_lightBarSirenInUse,
29268 { "lightBarSirenInUse", "denmv1.lightBarSirenInUse",
29269 FT_BYTES, BASE_NONE, NULL, 0,
29270 NULL, HFILL }},
29271 { &hf_denmv1_closedLanes,
29272 { "closedLanes", "denmv1.closedLanes_element",
29273 FT_NONE, BASE_NONE, NULL, 0,
29274 NULL, HFILL }},
29275 { &hf_denmv1_restriction,
29276 { "restriction", "denmv1.restriction",
29277 FT_UINT32, BASE_DEC, NULL, 0,
29278 "RestrictedTypes", HFILL }},
29279 { &hf_denmv1_speedLimit,
29280 { "speedLimit", "denmv1.speedLimit",
29281 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_limit_fmt), 0,
29282 NULL, HFILL }},
29283 { &hf_denmv1_incidentIndication,
29284 { "incidentIndication", "denmv1.incidentIndication_element",
29285 FT_NONE, BASE_NONE, NULL, 0,
29286 "CauseCode", HFILL }},
29287 { &hf_denmv1_recommendedPath,
29288 { "recommendedPath", "denmv1.recommendedPath",
29289 FT_UINT32, BASE_DEC, NULL, 0,
29290 "ItineraryPath", HFILL }},
29291 { &hf_denmv1_startingPointSpeedLimit,
29292 { "startingPointSpeedLimit", "denmv1.startingPointSpeedLimit_element",
29293 FT_NONE, BASE_NONE, NULL, 0,
29294 "DeltaReferencePosition", HFILL }},
29295 { &hf_denmv1_trafficFlowRule,
29296 { "trafficFlowRule", "denmv1.trafficFlowRule",
29297 FT_UINT32, BASE_DEC, VALS(itsv1_TrafficRule_vals), 0,
29298 "TrafficRule", HFILL }},
29299 { &hf_denmv1_referenceDenms,
29300 { "referenceDenms", "denmv1.referenceDenms",
29301 FT_UINT32, BASE_DEC, NULL, 0,
29302 NULL, HFILL }},
29303 { &hf_denmv1_stationarySince,
29304 { "stationarySince", "denmv1.stationarySince",
29305 FT_UINT32, BASE_DEC, VALS(itsv1_StationarySince_vals), 0,
29306 NULL, HFILL }},
29307 { &hf_denmv1_stationaryCause,
29308 { "stationaryCause", "denmv1.stationaryCause_element",
29309 FT_NONE, BASE_NONE, NULL, 0,
29310 "CauseCode", HFILL }},
29311 { &hf_denmv1_carryingDangerousGoods,
29312 { "carryingDangerousGoods", "denmv1.carryingDangerousGoods_element",
29313 FT_NONE, BASE_NONE, NULL, 0,
29314 "DangerousGoodsExtended", HFILL }},
29315 { &hf_denmv1_numberOfOccupants,
29316 { "numberOfOccupants", "denmv1.numberOfOccupants",
29317 FT_UINT32, BASE_DEC, VALS(itsv1_NumberOfOccupants_vals), 0,
29318 NULL, HFILL }},
29319 { &hf_denmv1_vehicleIdentification,
29320 { "vehicleIdentification", "denmv1.vehicleIdentification_element",
29321 FT_NONE, BASE_NONE, NULL, 0,
29322 NULL, HFILL }},
29323 { &hf_denmv1_energyStorageType,
29324 { "energyStorageType", "denmv1.energyStorageType",
29325 FT_BYTES, BASE_NONE, NULL, 0,
29326 NULL, HFILL }},
29327 { &hf_denmv1_lanePosition,
29328 { "lanePosition", "denmv1.lanePosition",
29329 FT_INT32, BASE_DEC, VALS(itsv1_LanePosition_vals), 0,
29330 NULL, HFILL }},
29331 { &hf_denmv1_impactReduction,
29332 { "impactReduction", "denmv1.impactReduction_element",
29333 FT_NONE, BASE_NONE, NULL, 0,
29334 "ImpactReductionContainer", HFILL }},
29335 { &hf_denmv1_externalTemperature,
29336 { "externalTemperature", "denmv1.externalTemperature",
29337 FT_INT32, BASE_DEC, VALS(itsv1_Temperature_vals), 0,
29338 "Temperature", HFILL }},
29339 { &hf_denmv1_roadWorks,
29340 { "roadWorks", "denmv1.roadWorks_element",
29341 FT_NONE, BASE_NONE, NULL, 0,
29342 "RoadWorksContainerExtended", HFILL }},
29343 { &hf_denmv1_positioningSolution,
29344 { "positioningSolution", "denmv1.positioningSolution",
29345 FT_UINT32, BASE_DEC, VALS(itsv1_PositioningSolutionType_vals), 0,
29346 "PositioningSolutionType", HFILL }},
29347 { &hf_denmv1_stationaryVehicle,
29348 { "stationaryVehicle", "denmv1.stationaryVehicle_element",
29349 FT_NONE, BASE_NONE, NULL, 0,
29350 "StationaryVehicleContainer", HFILL }},
29351 { &hf_denmv1_ReferenceDenms_item,
29352 { "ActionID", "denmv1.ActionID_element",
29353 FT_NONE, BASE_NONE, NULL, 0,
29354 NULL, HFILL }},
29356 /* --- Module DENM-PDU-Description --- --- --- */
29358 { &hf_denm_denm_DenmPayload_PDU,
29359 { "DenmPayload", "denm.DenmPayload_element",
29360 FT_NONE, BASE_NONE, NULL, 0,
29361 NULL, HFILL }},
29362 { &hf_denm_management,
29363 { "management", "denm.management_element",
29364 FT_NONE, BASE_NONE, NULL, 0,
29365 "ManagementContainer", HFILL }},
29366 { &hf_denm_situation,
29367 { "situation", "denm.situation_element",
29368 FT_NONE, BASE_NONE, NULL, 0,
29369 "SituationContainer", HFILL }},
29370 { &hf_denm_location,
29371 { "location", "denm.location_element",
29372 FT_NONE, BASE_NONE, NULL, 0,
29373 "LocationContainer", HFILL }},
29374 { &hf_denm_alacarte,
29375 { "alacarte", "denm.alacarte_element",
29376 FT_NONE, BASE_NONE, NULL, 0,
29377 "AlacarteContainer", HFILL }},
29378 { &hf_denm_actionId,
29379 { "actionId", "denm.actionId_element",
29380 FT_NONE, BASE_NONE, NULL, 0,
29381 NULL, HFILL }},
29382 { &hf_denm_detectionTime,
29383 { "detectionTime", "denm.detectionTime",
29384 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
29385 "TimestampIts", HFILL }},
29386 { &hf_denm_referenceTime,
29387 { "referenceTime", "denm.referenceTime",
29388 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
29389 "TimestampIts", HFILL }},
29390 { &hf_denm_termination,
29391 { "termination", "denm.termination",
29392 FT_UINT32, BASE_DEC, VALS(denm_Termination_vals), 0,
29393 NULL, HFILL }},
29394 { &hf_denm_eventPosition,
29395 { "eventPosition", "denm.eventPosition_element",
29396 FT_NONE, BASE_NONE, NULL, 0,
29397 "ReferencePosition", HFILL }},
29398 { &hf_denm_awarenessDistance,
29399 { "awarenessDistance", "denm.awarenessDistance",
29400 FT_UINT32, BASE_DEC, VALS(its_StandardLength3b_vals), 0,
29401 "StandardLength3b", HFILL }},
29402 { &hf_denm_awarenessTrafficDirection,
29403 { "awarenessTrafficDirection", "denm.awarenessTrafficDirection",
29404 FT_UINT32, BASE_DEC, VALS(its_TrafficDirection_vals), 0,
29405 "TrafficDirection", HFILL }},
29406 { &hf_denm_validityDuration,
29407 { "validityDuration", "denm.validityDuration",
29408 FT_UINT32, BASE_DEC, NULL, 0,
29409 "DeltaTimeSecond", HFILL }},
29410 { &hf_denm_transmissionInterval,
29411 { "transmissionInterval", "denm.transmissionInterval",
29412 FT_UINT32, BASE_DEC, NULL, 0,
29413 "DeltaTimeMilliSecondPositive", HFILL }},
29414 { &hf_denm_stationType,
29415 { "stationType", "denm.stationType",
29416 FT_UINT32, BASE_DEC, VALS(its_StationType_vals), 0,
29417 NULL, HFILL }},
29418 { &hf_denm_informationQuality,
29419 { "informationQuality", "denm.informationQuality",
29420 FT_UINT32, BASE_DEC, NULL, 0,
29421 NULL, HFILL }},
29422 { &hf_denm_eventType,
29423 { "eventType", "denm.eventType_element",
29424 FT_NONE, BASE_NONE, NULL, 0,
29425 "CauseCodeV2", HFILL }},
29426 { &hf_denm_linkedCause,
29427 { "linkedCause", "denm.linkedCause_element",
29428 FT_NONE, BASE_NONE, NULL, 0,
29429 "CauseCodeV2", HFILL }},
29430 { &hf_denm_eventZone,
29431 { "eventZone", "denm.eventZone",
29432 FT_UINT32, BASE_DEC, NULL, 0,
29433 NULL, HFILL }},
29434 { &hf_denm_eventSpeed,
29435 { "eventSpeed", "denm.eventSpeed_element",
29436 FT_NONE, BASE_NONE, NULL, 0,
29437 "Speed", HFILL }},
29438 { &hf_denm_eventPositionHeading,
29439 { "eventPositionHeading", "denm.eventPositionHeading_element",
29440 FT_NONE, BASE_NONE, NULL, 0,
29441 "Wgs84Angle", HFILL }},
29442 { &hf_denm_traces,
29443 { "traces", "denm.traces",
29444 FT_UINT32, BASE_DEC, NULL, 0,
29445 NULL, HFILL }},
29446 { &hf_denm_roadType,
29447 { "roadType", "denm.roadType",
29448 FT_UINT32, BASE_DEC, VALS(its_RoadType_vals), 0,
29449 NULL, HFILL }},
29450 { &hf_denm_heightLonCarrLeft,
29451 { "heightLonCarrLeft", "denm.heightLonCarrLeft",
29452 FT_UINT32, BASE_DEC, VALS(its_HeightLonCarr_vals), 0,
29453 "HeightLonCarr", HFILL }},
29454 { &hf_denm_heightLonCarrRight,
29455 { "heightLonCarrRight", "denm.heightLonCarrRight",
29456 FT_UINT32, BASE_DEC, VALS(its_HeightLonCarr_vals), 0,
29457 "HeightLonCarr", HFILL }},
29458 { &hf_denm_posLonCarrLeft,
29459 { "posLonCarrLeft", "denm.posLonCarrLeft",
29460 FT_UINT32, BASE_DEC, VALS(its_PosLonCarr_vals), 0,
29461 "PosLonCarr", HFILL }},
29462 { &hf_denm_posLonCarrRight,
29463 { "posLonCarrRight", "denm.posLonCarrRight",
29464 FT_UINT32, BASE_DEC, VALS(its_PosLonCarr_vals), 0,
29465 "PosLonCarr", HFILL }},
29466 { &hf_denm_positionOfPillars,
29467 { "positionOfPillars", "denm.positionOfPillars",
29468 FT_UINT32, BASE_DEC, NULL, 0,
29469 NULL, HFILL }},
29470 { &hf_denm_posCentMass,
29471 { "posCentMass", "denm.posCentMass",
29472 FT_UINT32, BASE_DEC, VALS(its_PosCentMass_vals), 0,
29473 NULL, HFILL }},
29474 { &hf_denm_wheelBaseVehicle,
29475 { "wheelBaseVehicle", "denm.wheelBaseVehicle",
29476 FT_UINT32, BASE_DEC, VALS(its_WheelBaseVehicle_vals), 0,
29477 NULL, HFILL }},
29478 { &hf_denm_turningRadius,
29479 { "turningRadius", "denm.turningRadius",
29480 FT_UINT32, BASE_DEC, VALS(its_TurningRadius_vals), 0,
29481 NULL, HFILL }},
29482 { &hf_denm_posFrontAx,
29483 { "posFrontAx", "denm.posFrontAx",
29484 FT_UINT32, BASE_DEC, VALS(its_PosFrontAx_vals), 0,
29485 NULL, HFILL }},
29486 { &hf_denm_positionOfOccupants,
29487 { "positionOfOccupants", "denm.positionOfOccupants",
29488 FT_BYTES, BASE_NONE, NULL, 0,
29489 NULL, HFILL }},
29490 { &hf_denm_vehicleMass,
29491 { "vehicleMass", "denm.vehicleMass",
29492 FT_UINT32, BASE_DEC, VALS(its_VehicleMass_vals), 0,
29493 NULL, HFILL }},
29494 { &hf_denm_requestResponseIndication,
29495 { "requestResponseIndication", "denm.requestResponseIndication",
29496 FT_UINT32, BASE_DEC, VALS(its_RequestResponseIndication_vals), 0,
29497 NULL, HFILL }},
29498 { &hf_denm_lightBarSirenInUse,
29499 { "lightBarSirenInUse", "denm.lightBarSirenInUse",
29500 FT_BYTES, BASE_NONE, NULL, 0,
29501 NULL, HFILL }},
29502 { &hf_denm_closedLanes,
29503 { "closedLanes", "denm.closedLanes_element",
29504 FT_NONE, BASE_NONE, NULL, 0,
29505 NULL, HFILL }},
29506 { &hf_denm_restriction,
29507 { "restriction", "denm.restriction",
29508 FT_UINT32, BASE_DEC, NULL, 0,
29509 "RestrictedTypes", HFILL }},
29510 { &hf_denm_speedLimit,
29511 { "speedLimit", "denm.speedLimit",
29512 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_limit_fmt), 0,
29513 NULL, HFILL }},
29514 { &hf_denm_incidentIndication,
29515 { "incidentIndication", "denm.incidentIndication_element",
29516 FT_NONE, BASE_NONE, NULL, 0,
29517 "CauseCodeV2", HFILL }},
29518 { &hf_denm_recommendedPath,
29519 { "recommendedPath", "denm.recommendedPath",
29520 FT_UINT32, BASE_DEC, NULL, 0,
29521 "ItineraryPath", HFILL }},
29522 { &hf_denm_startingPointSpeedLimit,
29523 { "startingPointSpeedLimit", "denm.startingPointSpeedLimit_element",
29524 FT_NONE, BASE_NONE, NULL, 0,
29525 "DeltaReferencePosition", HFILL }},
29526 { &hf_denm_trafficFlowRule,
29527 { "trafficFlowRule", "denm.trafficFlowRule",
29528 FT_UINT32, BASE_DEC, VALS(its_TrafficRule_vals), 0,
29529 "TrafficRule", HFILL }},
29530 { &hf_denm_referenceDenms,
29531 { "referenceDenms", "denm.referenceDenms",
29532 FT_UINT32, BASE_DEC, NULL, 0,
29533 "ActionIdList", HFILL }},
29534 { &hf_denm_stationarySince,
29535 { "stationarySince", "denm.stationarySince",
29536 FT_UINT32, BASE_DEC, VALS(its_StationarySince_vals), 0,
29537 NULL, HFILL }},
29538 { &hf_denm_stationaryCause,
29539 { "stationaryCause", "denm.stationaryCause_element",
29540 FT_NONE, BASE_NONE, NULL, 0,
29541 "CauseCodeV2", HFILL }},
29542 { &hf_denm_carryingDangerousGoods,
29543 { "carryingDangerousGoods", "denm.carryingDangerousGoods_element",
29544 FT_NONE, BASE_NONE, NULL, 0,
29545 "DangerousGoodsExtended", HFILL }},
29546 { &hf_denm_numberOfOccupants,
29547 { "numberOfOccupants", "denm.numberOfOccupants",
29548 FT_UINT32, BASE_DEC, VALS(its_NumberOfOccupants_vals), 0,
29549 NULL, HFILL }},
29550 { &hf_denm_vehicleIdentification,
29551 { "vehicleIdentification", "denm.vehicleIdentification_element",
29552 FT_NONE, BASE_NONE, NULL, 0,
29553 NULL, HFILL }},
29554 { &hf_denm_energyStorageType,
29555 { "energyStorageType", "denm.energyStorageType",
29556 FT_BYTES, BASE_NONE, NULL, 0,
29557 NULL, HFILL }},
29558 { &hf_denm_lanePosition,
29559 { "lanePosition", "denm.lanePosition",
29560 FT_INT32, BASE_DEC, VALS(its_LanePosition_vals), 0,
29561 NULL, HFILL }},
29562 { &hf_denm_impactReduction,
29563 { "impactReduction", "denm.impactReduction_element",
29564 FT_NONE, BASE_NONE, NULL, 0,
29565 "ImpactReductionContainer", HFILL }},
29566 { &hf_denm_externalTemperature,
29567 { "externalTemperature", "denm.externalTemperature",
29568 FT_INT32, BASE_DEC, VALS(its_Temperature_vals), 0,
29569 "Temperature", HFILL }},
29570 { &hf_denm_roadWorks,
29571 { "roadWorks", "denm.roadWorks_element",
29572 FT_NONE, BASE_NONE, NULL, 0,
29573 "RoadWorksContainerExtended", HFILL }},
29574 { &hf_denm_positioningSolution,
29575 { "positioningSolution", "denm.positioningSolution",
29576 FT_UINT32, BASE_DEC, VALS(its_PositioningSolutionType_vals), 0,
29577 "PositioningSolutionType", HFILL }},
29578 { &hf_denm_stationaryVehicle,
29579 { "stationaryVehicle", "denm.stationaryVehicle_element",
29580 FT_NONE, BASE_NONE, NULL, 0,
29581 "StationaryVehicleContainer", HFILL }},
29583 /* --- Module TIS-TPG-Transactions-Descriptions --- --- --- */
29585 { &hf_tistpg_tistpg_TisTpgTransaction_PDU,
29586 { "TisTpgTransaction", "tistpg.TisTpgTransaction",
29587 FT_UINT32, BASE_DEC, VALS(tistpg_TisTpgTransaction_vals), 0,
29588 NULL, HFILL }},
29589 { &hf_tistpg_drm,
29590 { "drm", "tistpg.drm_element",
29591 FT_NONE, BASE_NONE, NULL, 0,
29592 "TisTpgDRM", HFILL }},
29593 { &hf_tistpg_snm,
29594 { "snm", "tistpg.snm_element",
29595 FT_NONE, BASE_NONE, NULL, 0,
29596 "TisTpgSNM", HFILL }},
29597 { &hf_tistpg_trm,
29598 { "trm", "tistpg.trm_element",
29599 FT_NONE, BASE_NONE, NULL, 0,
29600 "TisTpgTRM", HFILL }},
29601 { &hf_tistpg_tcm,
29602 { "tcm", "tistpg.tcm_element",
29603 FT_NONE, BASE_NONE, NULL, 0,
29604 "TisTpgTCM", HFILL }},
29605 { &hf_tistpg_vdrm,
29606 { "vdrm", "tistpg.vdrm_element",
29607 FT_NONE, BASE_NONE, NULL, 0,
29608 "TisTpgVDRM", HFILL }},
29609 { &hf_tistpg_vdpm,
29610 { "vdpm", "tistpg.vdpm_element",
29611 FT_NONE, BASE_NONE, NULL, 0,
29612 "TisTpgVDPM", HFILL }},
29613 { &hf_tistpg_eofm,
29614 { "eofm", "tistpg.eofm_element",
29615 FT_NONE, BASE_NONE, NULL, 0,
29616 "TisTpgEOFM", HFILL }},
29617 { &hf_tistpg_drmManagement,
29618 { "management", "tistpg.management_element",
29619 FT_NONE, BASE_NONE, NULL, 0,
29620 "TisTpgDRM_Management", HFILL }},
29621 { &hf_tistpg_drmSituation,
29622 { "situation", "tistpg.situation_element",
29623 FT_NONE, BASE_NONE, NULL, 0,
29624 "TisTpgDRM_Situation", HFILL }},
29625 { &hf_tistpg_drmLocation,
29626 { "location", "tistpg.location_element",
29627 FT_NONE, BASE_NONE, NULL, 0,
29628 "TisTpgDRM_Location", HFILL }},
29629 { &hf_tistpg_generationTime,
29630 { "generationTime", "tistpg.generationTime",
29631 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
29632 "TimestampIts", HFILL }},
29633 { &hf_tistpg_vehicleType,
29634 { "vehicleType", "tistpg.vehicleType",
29635 FT_UINT32, BASE_DEC, VALS(tistpg_UNVehicleClassifcation_vals), 0,
29636 "UNVehicleClassifcation", HFILL }},
29637 { &hf_tistpg_costumerContract,
29638 { "costumerContract", "tistpg.costumerContract",
29639 FT_STRING, BASE_NONE, NULL, 0,
29640 "CustomerContract", HFILL }},
29641 { &hf_tistpg_tisProfile,
29642 { "tisProfile", "tistpg.tisProfile",
29643 FT_BYTES, BASE_NONE, NULL, 0,
29644 NULL, HFILL }},
29645 { &hf_tistpg_causeCode,
29646 { "causeCode", "tistpg.causeCode_element",
29647 FT_NONE, BASE_NONE, NULL, 0,
29648 NULL, HFILL }},
29649 { &hf_tistpg_vehiclePosition,
29650 { "vehiclePosition", "tistpg.vehiclePosition_element",
29651 FT_NONE, BASE_NONE, NULL, 0,
29652 "ReferencePosition", HFILL }},
29653 { &hf_tistpg_vehicleSpeed,
29654 { "vehicleSpeed", "tistpg.vehicleSpeed_element",
29655 FT_NONE, BASE_NONE, NULL, 0,
29656 "Speed", HFILL }},
29657 { &hf_tistpg_vehicleHeading,
29658 { "vehicleHeading", "tistpg.vehicleHeading_element",
29659 FT_NONE, BASE_NONE, NULL, 0,
29660 "Heading", HFILL }},
29661 { &hf_tistpg_requestedPosition,
29662 { "requestedPosition", "tistpg.requestedPosition_element",
29663 FT_NONE, BASE_NONE, NULL, 0,
29664 "ReferencePosition", HFILL }},
29665 { &hf_tistpg_searchRange,
29666 { "searchRange", "tistpg.searchRange",
29667 FT_UINT32, BASE_DEC, NULL, 0,
29668 NULL, HFILL }},
29669 { &hf_tistpg_searchCondition,
29670 { "searchCondition", "tistpg.searchCondition",
29671 FT_UINT32, BASE_DEC, VALS(tistpg_SearchCondition_vals), 0,
29672 NULL, HFILL }},
29673 { &hf_tistpg_snmManagement,
29674 { "management", "tistpg.management_element",
29675 FT_NONE, BASE_NONE, NULL, 0,
29676 "TisTpgSNM_Management", HFILL }},
29677 { &hf_tistpg_tpgContainer,
29678 { "tpgContainer", "tistpg.tpgContainer",
29679 FT_UINT32, BASE_DEC, NULL, 0,
29680 "TpgNotifContainer", HFILL }},
29681 { &hf_tistpg_totalTpgStations,
29682 { "totalTpgStations", "tistpg.totalTpgStations",
29683 FT_UINT32, BASE_DEC, NULL, 0,
29684 NULL, HFILL }},
29685 { &hf_tistpg_trmManagement,
29686 { "management", "tistpg.management_element",
29687 FT_NONE, BASE_NONE, NULL, 0,
29688 "TisTpgTRM_Management", HFILL }},
29689 { &hf_tistpg_trmSituation,
29690 { "situation", "tistpg.situation_element",
29691 FT_NONE, BASE_NONE, NULL, 0,
29692 "TisTpgTRM_Situation", HFILL }},
29693 { &hf_tistpg_trmLocation,
29694 { "location", "tistpg.location_element",
29695 FT_NONE, BASE_NONE, NULL, 0,
29696 "TisTpgTRM_Location", HFILL }},
29697 { &hf_tistpg_tpgStationID,
29698 { "tpgStationID", "tistpg.tpgStationID",
29699 FT_UINT32, BASE_DEC, NULL, 0,
29700 "StationID", HFILL }},
29701 { &hf_tistpg_reservationStatus,
29702 { "reservationStatus", "tistpg.reservationStatus",
29703 FT_UINT32, BASE_DEC, VALS(tistpg_ReservationStatus_vals), 0,
29704 NULL, HFILL }},
29705 { &hf_tistpg_costumercontract,
29706 { "costumercontract", "tistpg.costumercontract",
29707 FT_STRING, BASE_NONE, NULL, 0,
29708 "CustomerContract", HFILL }},
29709 { &hf_tistpg_reservationID,
29710 { "reservationID", "tistpg.reservationID",
29711 FT_STRING, BASE_NONE, NULL, 0,
29712 NULL, HFILL }},
29713 { &hf_tistpg_estArrivalTime,
29714 { "estArrivalTime", "tistpg.estArrivalTime",
29715 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
29716 "TimestampIts", HFILL }},
29717 { &hf_tistpg_proposedPairingID,
29718 { "proposedPairingID", "tistpg.proposedPairingID",
29719 FT_UINT32, BASE_DEC, NULL, 0,
29720 "PairingID", HFILL }},
29721 { &hf_tistpg_tcmManagement,
29722 { "management", "tistpg.management_element",
29723 FT_NONE, BASE_NONE, NULL, 0,
29724 "TisTpgTCM_Management", HFILL }},
29725 { &hf_tistpg_tcmSituation,
29726 { "situation", "tistpg.situation_element",
29727 FT_NONE, BASE_NONE, NULL, 0,
29728 "TisTpgTCM_Situation", HFILL }},
29729 { &hf_tistpg_tcmLocation,
29730 { "location", "tistpg.location_element",
29731 FT_NONE, BASE_NONE, NULL, 0,
29732 "TisTpgTCM_Location", HFILL }},
29733 { &hf_tistpg_reservedTpg,
29734 { "reservedTpg", "tistpg.reservedTpg",
29735 FT_UINT32, BASE_DEC, NULL, 0,
29736 "INTEGER_1_65535", HFILL }},
29737 { &hf_tistpg_tpgAutomationLevel,
29738 { "tpgAutomationLevel", "tistpg.tpgAutomationLevel",
29739 FT_BYTES, BASE_NONE, NULL, 0,
29740 "TpgAutomation", HFILL }},
29741 { &hf_tistpg_pairingID,
29742 { "pairingID", "tistpg.pairingID",
29743 FT_UINT32, BASE_DEC, NULL, 0,
29744 NULL, HFILL }},
29745 { &hf_tistpg_reservationTimeLimit,
29746 { "reservationTimeLimit", "tistpg.reservationTimeLimit",
29747 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
29748 "TimestampIts", HFILL }},
29749 { &hf_tistpg_cancellationCondition,
29750 { "cancellationCondition", "tistpg.cancellationCondition",
29751 FT_STRING, BASE_NONE, NULL, 0,
29752 NULL, HFILL }},
29753 { &hf_tistpg_tpgLocation,
29754 { "tpgLocation", "tistpg.tpgLocation_element",
29755 FT_NONE, BASE_NONE, NULL, 0,
29756 "ReferencePosition", HFILL }},
29757 { &hf_tistpg_address,
29758 { "address", "tistpg.address",
29759 FT_STRING, BASE_NONE, NULL, 0,
29760 "UTF8String_SIZE_1_128", HFILL }},
29761 { &hf_tistpg_vdrmManagement,
29762 { "management", "tistpg.management_element",
29763 FT_NONE, BASE_NONE, NULL, 0,
29764 "TisTpgVDRM_Management", HFILL }},
29765 { &hf_tistpg_fillingStatus,
29766 { "fillingStatus", "tistpg.fillingStatus",
29767 FT_UINT32, BASE_DEC, VALS(tistpg_FillingStatus_vals), 0,
29768 NULL, HFILL }},
29769 { &hf_tistpg_automationLevel,
29770 { "automationLevel", "tistpg.automationLevel",
29771 FT_BYTES, BASE_NONE, NULL, 0,
29772 "TpgAutomation", HFILL }},
29773 { &hf_tistpg_vdpmManagement,
29774 { "management", "tistpg.management_element",
29775 FT_NONE, BASE_NONE, NULL, 0,
29776 "TisTpgVDPM_Management", HFILL }},
29777 { &hf_tistpg_placardTable,
29778 { "placardTable", "tistpg.placardTable",
29779 FT_UINT32, BASE_DEC, NULL, 0,
29780 NULL, HFILL }},
29781 { &hf_tistpg_vehicleSpecificData,
29782 { "vehicleSpecificData", "tistpg.vehicleSpecificData_element",
29783 FT_NONE, BASE_NONE, NULL, 0,
29784 NULL, HFILL }},
29785 { &hf_tistpg_language,
29786 { "language", "tistpg.language",
29787 FT_BYTES, BASE_NONE, NULL, 0,
29788 NULL, HFILL }},
29789 { &hf_tistpg_tyreTempCondition,
29790 { "tyreTempCondition", "tistpg.tyreTempCondition",
29791 FT_UINT32, BASE_DEC, VALS(tistpg_TyreTempCondition_vals), 0,
29792 NULL, HFILL }},
29793 { &hf_tistpg_currentVehicleConfiguration,
29794 { "currentVehicleConfiguration", "tistpg.currentVehicleConfiguration",
29795 FT_BYTES, BASE_NONE, NULL, 0,
29796 "PressureConfiguration", HFILL }},
29797 { &hf_tistpg_frontLeftTyreData,
29798 { "frontLeftTyreData", "tistpg.frontLeftTyreData_element",
29799 FT_NONE, BASE_NONE, NULL, 0,
29800 "TyreData", HFILL }},
29801 { &hf_tistpg_frontRightTyreData,
29802 { "frontRightTyreData", "tistpg.frontRightTyreData_element",
29803 FT_NONE, BASE_NONE, NULL, 0,
29804 "TyreData", HFILL }},
29805 { &hf_tistpg_rearLeftTyreData,
29806 { "rearLeftTyreData", "tistpg.rearLeftTyreData_element",
29807 FT_NONE, BASE_NONE, NULL, 0,
29808 "TyreData", HFILL }},
29809 { &hf_tistpg_rearRightTyreData,
29810 { "rearRightTyreData", "tistpg.rearRightTyreData_element",
29811 FT_NONE, BASE_NONE, NULL, 0,
29812 "TyreData", HFILL }},
29813 { &hf_tistpg_spareTyreData,
29814 { "spareTyreData", "tistpg.spareTyreData_element",
29815 FT_NONE, BASE_NONE, NULL, 0,
29816 "TyreData", HFILL }},
29817 { &hf_tistpg_eofmManagement,
29818 { "management", "tistpg.management_element",
29819 FT_NONE, BASE_NONE, NULL, 0,
29820 "TisTpgEOFM_Management", HFILL }},
29821 { &hf_tistpg_numberOfAppliedPressure,
29822 { "numberOfAppliedPressure", "tistpg.numberOfAppliedPressure",
29823 FT_UINT32, BASE_DEC, VALS(tistpg_NumberOfAppliedPressure_vals), 0,
29824 NULL, HFILL }},
29825 { &hf_tistpg_appliedTyrePressures,
29826 { "appliedTyrePressures", "tistpg.appliedTyrePressures",
29827 FT_UINT32, BASE_DEC, NULL, 0,
29828 NULL, HFILL }},
29829 { &hf_tistpg_PlacardTable_item,
29830 { "TyreSetVariant", "tistpg.TyreSetVariant_element",
29831 FT_NONE, BASE_NONE, NULL, 0,
29832 NULL, HFILL }},
29833 { &hf_tistpg_variantID,
29834 { "variantID", "tistpg.variantID",
29835 FT_UINT32, BASE_DEC, NULL, 0,
29836 "TyreSetVariantID", HFILL }},
29837 { &hf_tistpg_frontAxleDimension,
29838 { "frontAxleDimension", "tistpg.frontAxleDimension",
29839 FT_BYTES, BASE_NONE, NULL, 0,
29840 "TyreSidewallInformation", HFILL }},
29841 { &hf_tistpg_rearAxleDimension,
29842 { "rearAxleDimension", "tistpg.rearAxleDimension",
29843 FT_BYTES, BASE_NONE, NULL, 0,
29844 "TyreSidewallInformation", HFILL }},
29845 { &hf_tistpg_pressureVariantsList,
29846 { "pressureVariantsList", "tistpg.pressureVariantsList",
29847 FT_UINT32, BASE_DEC, NULL, 0,
29848 NULL, HFILL }},
29849 { &hf_tistpg_PressureVariantsList_item,
29850 { "PressureVariant", "tistpg.PressureVariant_element",
29851 FT_NONE, BASE_NONE, NULL, 0,
29852 NULL, HFILL }},
29853 { &hf_tistpg_pressureConfiguration,
29854 { "pressureConfiguration", "tistpg.pressureConfiguration",
29855 FT_BYTES, BASE_NONE, NULL, 0,
29856 NULL, HFILL }},
29857 { &hf_tistpg_frontAxlePressure,
29858 { "frontAxlePressure", "tistpg.frontAxlePressure",
29859 FT_UINT32, BASE_DEC, VALS(tistpg_AxlePlacardPressure_vals), 0,
29860 "AxlePlacardPressure", HFILL }},
29861 { &hf_tistpg_rearAxlePressure,
29862 { "rearAxlePressure", "tistpg.rearAxlePressure",
29863 FT_UINT32, BASE_DEC, VALS(tistpg_AxlePlacardPressure_vals), 0,
29864 "AxlePlacardPressure", HFILL }},
29865 { &hf_tistpg_currentTyrePressure,
29866 { "currentTyrePressure", "tistpg.currentTyrePressure",
29867 FT_UINT32, BASE_DEC, VALS(tistpg_T_currentTyrePressure_vals), 0,
29868 NULL, HFILL }},
29869 { &hf_tistpg_tyrePressureValue,
29870 { "tyrePressureValue", "tistpg.tyrePressureValue",
29871 FT_UINT32, BASE_DEC, VALS(tistpg_TyrePressure_vals), 0,
29872 "TyrePressure", HFILL }},
29873 { &hf_tistpg_unavailable,
29874 { "unavailable", "tistpg.unavailable_element",
29875 FT_NONE, BASE_NONE, NULL, 0,
29876 NULL, HFILL }},
29877 { &hf_tistpg_tyreSidewallInformation,
29878 { "tyreSidewallInformation", "tistpg.tyreSidewallInformation",
29879 FT_UINT32, BASE_DEC, VALS(tistpg_T_tyreSidewallInformation_vals), 0,
29880 NULL, HFILL }},
29881 { &hf_tistpg_tyreSidewallInformationValue,
29882 { "tyreSidewallInformationValue", "tistpg.tyreSidewallInformationValue",
29883 FT_BYTES, BASE_NONE, NULL, 0,
29884 "TyreSidewallInformation", HFILL }},
29885 { &hf_tistpg_currentInsideAirTemperature,
29886 { "currentInsideAirTemperature", "tistpg.currentInsideAirTemperature",
29887 FT_UINT32, BASE_DEC, VALS(tistpg_T_currentInsideAirTemperature_vals), 0,
29888 NULL, HFILL }},
29889 { &hf_tistpg_tyreAirTemperatureValue,
29890 { "tyreAirTemperatureValue", "tistpg.tyreAirTemperatureValue",
29891 FT_UINT32, BASE_DEC, VALS(tistpg_TyreAirTemperature_vals), 0,
29892 "TyreAirTemperature", HFILL }},
29893 { &hf_tistpg_recommendedTyrePressure,
29894 { "recommendedTyrePressure", "tistpg.recommendedTyrePressure",
29895 FT_UINT32, BASE_DEC, VALS(tistpg_T_recommendedTyrePressure_vals), 0,
29896 NULL, HFILL }},
29897 { &hf_tistpg_axlePlacardPressureValue,
29898 { "axlePlacardPressureValue", "tistpg.axlePlacardPressureValue",
29899 FT_UINT32, BASE_DEC, VALS(tistpg_AxlePlacardPressure_vals), 0,
29900 "AxlePlacardPressure", HFILL }},
29901 { &hf_tistpg_tin,
29902 { "tin", "tistpg.tin",
29903 FT_UINT32, BASE_DEC, VALS(tistpg_T_tin_vals), 0,
29904 NULL, HFILL }},
29905 { &hf_tistpg_tinValue,
29906 { "tinValue", "tistpg.tinValue",
29907 FT_BYTES, BASE_NONE, NULL, 0,
29908 "TIN", HFILL }},
29909 { &hf_tistpg_sensorState,
29910 { "sensorState", "tistpg.sensorState",
29911 FT_UINT32, BASE_DEC, VALS(tistpg_T_sensorState_vals), 0,
29912 NULL, HFILL }},
29913 { &hf_tistpg_sensorStateValue,
29914 { "sensorStateValue", "tistpg.sensorStateValue",
29915 FT_UINT32, BASE_DEC, VALS(tistpg_SensorState_vals), 0,
29916 "SensorState", HFILL }},
29917 { &hf_tistpg_tpgNumber,
29918 { "tpgNumber", "tistpg.tpgNumber",
29919 FT_UINT32, BASE_DEC, NULL, 0,
29920 NULL, HFILL }},
29921 { &hf_tistpg_tpgProvider,
29922 { "tpgProvider", "tistpg.tpgProvider",
29923 FT_STRING, BASE_NONE, NULL, 0,
29924 NULL, HFILL }},
29925 { &hf_tistpg_accessibility,
29926 { "accessibility", "tistpg.accessibility",
29927 FT_STRING, BASE_NONE, NULL, 0,
29928 NULL, HFILL }},
29929 { &hf_tistpg_phoneNumber,
29930 { "phoneNumber", "tistpg.phoneNumber",
29931 FT_STRING, BASE_NONE, NULL, 0,
29932 NULL, HFILL }},
29933 { &hf_tistpg_digitalMap,
29934 { "digitalMap", "tistpg.digitalMap",
29935 FT_UINT32, BASE_DEC, NULL, 0,
29936 NULL, HFILL }},
29937 { &hf_tistpg_openingDaysHours,
29938 { "openingDaysHours", "tistpg.openingDaysHours",
29939 FT_STRING, BASE_NONE, NULL, 0,
29940 NULL, HFILL }},
29941 { &hf_tistpg_bookingInfo,
29942 { "bookingInfo", "tistpg.bookingInfo",
29943 FT_STRING, BASE_NONE, NULL, 0,
29944 NULL, HFILL }},
29945 { &hf_tistpg_availableTpgNumber,
29946 { "availableTpgNumber", "tistpg.availableTpgNumber",
29947 FT_UINT32, BASE_DEC, NULL, 0,
29948 NULL, HFILL }},
29949 { &hf_tistpg_AppliedTyrePressures_item,
29950 { "AppliedTyrePressure", "tistpg.AppliedTyrePressure",
29951 FT_UINT32, BASE_DEC, VALS(tistpg_AppliedTyrePressure_vals), 0,
29952 NULL, HFILL }},
29953 { &hf_tistpg_TpgNotifContainer_item,
29954 { "TpgStationData", "tistpg.TpgStationData_element",
29955 FT_NONE, BASE_NONE, NULL, 0,
29956 NULL, HFILL }},
29957 { &hf_tistpg_TpgAutomation_fullAutomated,
29958 { "fullAutomated", "tistpg.TpgAutomation.fullAutomated",
29959 FT_BOOLEAN, 8, NULL, 0x80,
29960 NULL, HFILL }},
29961 { &hf_tistpg_TpgAutomation_semiAutomated,
29962 { "semiAutomated", "tistpg.TpgAutomation.semiAutomated",
29963 FT_BOOLEAN, 8, NULL, 0x40,
29964 NULL, HFILL }},
29965 { &hf_tistpg_TpgAutomation_manual,
29966 { "manual", "tistpg.TpgAutomation.manual",
29967 FT_BOOLEAN, 8, NULL, 0x20,
29968 NULL, HFILL }},
29969 { &hf_tistpg_TpgAutomation_reserved,
29970 { "reserved", "tistpg.TpgAutomation.reserved",
29971 FT_BOOLEAN, 8, NULL, 0x10,
29972 NULL, HFILL }},
29973 { &hf_tistpg_TisProfile_reserved,
29974 { "reserved", "tistpg.TisProfile.reserved",
29975 FT_BOOLEAN, 8, NULL, 0x80,
29976 NULL, HFILL }},
29977 { &hf_tistpg_TisProfile_profileOne,
29978 { "profileOne", "tistpg.TisProfile.profileOne",
29979 FT_BOOLEAN, 8, NULL, 0x40,
29980 NULL, HFILL }},
29981 { &hf_tistpg_TisProfile_profileTwo,
29982 { "profileTwo", "tistpg.TisProfile.profileTwo",
29983 FT_BOOLEAN, 8, NULL, 0x20,
29984 NULL, HFILL }},
29985 { &hf_tistpg_TisProfile_profileThree,
29986 { "profileThree", "tistpg.TisProfile.profileThree",
29987 FT_BOOLEAN, 8, NULL, 0x10,
29988 NULL, HFILL }},
29990 /* --- Module EVCSN-PDU-Descriptions --- --- --- */
29992 { &hf_evcsn_evcsn_EVChargingSpotNotificationPOIMessage_PDU,
29993 { "EVChargingSpotNotificationPOIMessage", "evcsn.EVChargingSpotNotificationPOIMessage_element",
29994 FT_NONE, BASE_NONE, NULL, 0,
29995 NULL, HFILL }},
29996 { &hf_evcsn_poiHeader,
29997 { "poiHeader", "evcsn.poiHeader_element",
29998 FT_NONE, BASE_NONE, NULL, 0,
29999 "ItsPOIHeader", HFILL }},
30000 { &hf_evcsn_evcsnData,
30001 { "evcsnData", "evcsn.evcsnData_element",
30002 FT_NONE, BASE_NONE, NULL, 0,
30003 "ItsEVCSNData", HFILL }},
30004 { &hf_evcsn_poiType,
30005 { "poiType", "evcsn.poiType",
30006 FT_UINT32, BASE_DEC, NULL, 0,
30007 NULL, HFILL }},
30008 { &hf_evcsn_timeStamp,
30009 { "timeStamp", "evcsn.timeStamp",
30010 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
30011 "TimestampIts", HFILL }},
30012 { &hf_evcsn_relayCapable,
30013 { "relayCapable", "evcsn.relayCapable",
30014 FT_BOOLEAN, BASE_NONE, NULL, 0,
30015 "BOOLEAN", HFILL }},
30016 { &hf_evcsn_totalNumberOfStations,
30017 { "totalNumberOfStations", "evcsn.totalNumberOfStations",
30018 FT_UINT32, BASE_DEC, NULL, 0,
30019 "NumberStations", HFILL }},
30020 { &hf_evcsn_chargingStationsData,
30021 { "chargingStationsData", "evcsn.chargingStationsData",
30022 FT_UINT32, BASE_DEC, NULL, 0,
30023 "SEQUENCE_SIZE_1_256_OF_ItsChargingStationData", HFILL }},
30024 { &hf_evcsn_chargingStationsData_item,
30025 { "ItsChargingStationData", "evcsn.ItsChargingStationData_element",
30026 FT_NONE, BASE_NONE, NULL, 0,
30027 NULL, HFILL }},
30028 { &hf_evcsn_chargingStationID,
30029 { "chargingStationID", "evcsn.chargingStationID",
30030 FT_UINT32, BASE_DEC, NULL, 0,
30031 "StationID", HFILL }},
30032 { &hf_evcsn_utilityDistributorId,
30033 { "utilityDistributorId", "evcsn.utilityDistributorId",
30034 FT_STRING, BASE_NONE, NULL, 0,
30035 "UTF8String_SIZE_1_32", HFILL }},
30036 { &hf_evcsn_providerID,
30037 { "providerID", "evcsn.providerID",
30038 FT_STRING, BASE_NONE, NULL, 0,
30039 "UTF8String_SIZE_1_32", HFILL }},
30040 { &hf_evcsn_chargingStationLocation,
30041 { "chargingStationLocation", "evcsn.chargingStationLocation_element",
30042 FT_NONE, BASE_NONE, NULL, 0,
30043 "ReferencePosition", HFILL }},
30044 { &hf_evcsn_address,
30045 { "address", "evcsn.address",
30046 FT_STRING, BASE_NONE, NULL, 0,
30047 "UTF8String", HFILL }},
30048 { &hf_evcsn_phoneNumber,
30049 { "phoneNumber", "evcsn.phoneNumber",
30050 FT_STRING, BASE_NONE, NULL, 0,
30051 "NumericString_SIZE_1_16", HFILL }},
30052 { &hf_evcsn_accessibility,
30053 { "accessibility", "evcsn.accessibility",
30054 FT_STRING, BASE_NONE, NULL, 0,
30055 "UTF8String_SIZE_1_32", HFILL }},
30056 { &hf_evcsn_digitalMap,
30057 { "digitalMap", "evcsn.digitalMap",
30058 FT_UINT32, BASE_DEC, NULL, 0,
30059 NULL, HFILL }},
30060 { &hf_evcsn_openingDaysHours,
30061 { "openingDaysHours", "evcsn.openingDaysHours",
30062 FT_STRING, BASE_NONE, NULL, 0,
30063 "UTF8String", HFILL }},
30064 { &hf_evcsn_pricing,
30065 { "pricing", "evcsn.pricing",
30066 FT_STRING, BASE_NONE, NULL, 0,
30067 "UTF8String", HFILL }},
30068 { &hf_evcsn_bookingContactInfo,
30069 { "bookingContactInfo", "evcsn.bookingContactInfo",
30070 FT_STRING, BASE_NONE, NULL, 0,
30071 "UTF8String", HFILL }},
30072 { &hf_evcsn_payment,
30073 { "payment", "evcsn.payment",
30074 FT_STRING, BASE_NONE, NULL, 0,
30075 "UTF8String", HFILL }},
30076 { &hf_evcsn_chargingSpotsAvailable,
30077 { "chargingSpotsAvailable", "evcsn.chargingSpotsAvailable",
30078 FT_UINT32, BASE_DEC, NULL, 0,
30079 "ItsChargingSpots", HFILL }},
30080 { &hf_evcsn_ItsChargingSpots_item,
30081 { "ItsChargingSpotDataElements", "evcsn.ItsChargingSpotDataElements_element",
30082 FT_NONE, BASE_NONE, NULL, 0,
30083 NULL, HFILL }},
30084 { &hf_evcsn_type,
30085 { "type", "evcsn.type",
30086 FT_BYTES, BASE_NONE, NULL, 0,
30087 "ChargingSpotType", HFILL }},
30088 { &hf_evcsn_evEquipmentID,
30089 { "evEquipmentID", "evcsn.evEquipmentID",
30090 FT_STRING, BASE_NONE, NULL, 0,
30091 "UTF8String", HFILL }},
30092 { &hf_evcsn_typeOfReceptacle,
30093 { "typeOfReceptacle", "evcsn.typeOfReceptacle",
30094 FT_BYTES, BASE_NONE, NULL, 0,
30095 NULL, HFILL }},
30096 { &hf_evcsn_energyAvailability,
30097 { "energyAvailability", "evcsn.energyAvailability",
30098 FT_STRING, BASE_NONE, NULL, 0,
30099 "UTF8String", HFILL }},
30100 { &hf_evcsn_parkingPlacesData,
30101 { "parkingPlacesData", "evcsn.parkingPlacesData",
30102 FT_UINT32, BASE_DEC, NULL, 0,
30103 NULL, HFILL }},
30104 { &hf_evcsn_ParkingPlacesData_item,
30105 { "SpotAvailability", "evcsn.SpotAvailability_element",
30106 FT_NONE, BASE_NONE, NULL, 0,
30107 NULL, HFILL }},
30108 { &hf_evcsn_maxWaitingTimeMinutes,
30109 { "maxWaitingTimeMinutes", "evcsn.maxWaitingTimeMinutes",
30110 FT_UINT32, BASE_DEC, NULL, 0,
30111 "INTEGER_0_1400", HFILL }},
30112 { &hf_evcsn_blocking,
30113 { "blocking", "evcsn.blocking",
30114 FT_BOOLEAN, BASE_NONE, NULL, 0,
30115 "BOOLEAN", HFILL }},
30116 { &hf_evcsn_ChargingSpotType_standardChargeMode1,
30117 { "standardChargeMode1", "evcsn.ChargingSpotType.standardChargeMode1",
30118 FT_BOOLEAN, 8, NULL, 0x80,
30119 NULL, HFILL }},
30120 { &hf_evcsn_ChargingSpotType_standardChargeMode2,
30121 { "standardChargeMode2", "evcsn.ChargingSpotType.standardChargeMode2",
30122 FT_BOOLEAN, 8, NULL, 0x40,
30123 NULL, HFILL }},
30124 { &hf_evcsn_ChargingSpotType_standardOrFastChargeMode3,
30125 { "standardOrFastChargeMode3", "evcsn.ChargingSpotType.standardOrFastChargeMode3",
30126 FT_BOOLEAN, 8, NULL, 0x20,
30127 NULL, HFILL }},
30128 { &hf_evcsn_ChargingSpotType_fastChargeWithExternalCharger,
30129 { "fastChargeWithExternalCharger", "evcsn.ChargingSpotType.fastChargeWithExternalCharger",
30130 FT_BOOLEAN, 8, NULL, 0x10,
30131 NULL, HFILL }},
30132 { &hf_evcsn_ChargingSpotType_spare_bit4,
30133 { "spare_bit4", "evcsn.ChargingSpotType.spare.bit4",
30134 FT_BOOLEAN, 8, NULL, 0x08,
30135 NULL, HFILL }},
30136 { &hf_evcsn_ChargingSpotType_spare_bit5,
30137 { "spare_bit5", "evcsn.ChargingSpotType.spare.bit5",
30138 FT_BOOLEAN, 8, NULL, 0x04,
30139 NULL, HFILL }},
30140 { &hf_evcsn_ChargingSpotType_spare_bit6,
30141 { "spare_bit6", "evcsn.ChargingSpotType.spare.bit6",
30142 FT_BOOLEAN, 8, NULL, 0x02,
30143 NULL, HFILL }},
30144 { &hf_evcsn_ChargingSpotType_spare_bit7,
30145 { "spare_bit7", "evcsn.ChargingSpotType.spare.bit7",
30146 FT_BOOLEAN, 8, NULL, 0x01,
30147 NULL, HFILL }},
30148 { &hf_evcsn_ChargingSpotType_quickDrop,
30149 { "quickDrop", "evcsn.ChargingSpotType.quickDrop",
30150 FT_BOOLEAN, 8, NULL, 0x80,
30151 NULL, HFILL }},
30152 { &hf_evcsn_ChargingSpotType_spare_bit9,
30153 { "spare_bit9", "evcsn.ChargingSpotType.spare.bit9",
30154 FT_BOOLEAN, 8, NULL, 0x40,
30155 NULL, HFILL }},
30156 { &hf_evcsn_ChargingSpotType_spare_bit10,
30157 { "spare_bit10", "evcsn.ChargingSpotType.spare.bit10",
30158 FT_BOOLEAN, 8, NULL, 0x20,
30159 NULL, HFILL }},
30160 { &hf_evcsn_ChargingSpotType_spare_bit11,
30161 { "spare_bit11", "evcsn.ChargingSpotType.spare.bit11",
30162 FT_BOOLEAN, 8, NULL, 0x10,
30163 NULL, HFILL }},
30164 { &hf_evcsn_ChargingSpotType_inductiveChargeWhileStationary,
30165 { "inductiveChargeWhileStationary", "evcsn.ChargingSpotType.inductiveChargeWhileStationary",
30166 FT_BOOLEAN, 8, NULL, 0x08,
30167 NULL, HFILL }},
30168 { &hf_evcsn_ChargingSpotType_spare_bit13,
30169 { "spare_bit13", "evcsn.ChargingSpotType.spare.bit13",
30170 FT_BOOLEAN, 8, NULL, 0x04,
30171 NULL, HFILL }},
30172 { &hf_evcsn_ChargingSpotType_inductiveChargeWhileDriving,
30173 { "inductiveChargeWhileDriving", "evcsn.ChargingSpotType.inductiveChargeWhileDriving",
30174 FT_BOOLEAN, 8, NULL, 0x02,
30175 NULL, HFILL }},
30177 /* --- Module EV-RechargingSpotReservation-PDU-Descriptions --- --- --- */
30179 { &hf_evrsr_evrsr_EV_RSR_MessageBody_PDU,
30180 { "EV-RSR-MessageBody", "evrsr.EV_RSR_MessageBody",
30181 FT_UINT32, BASE_DEC, VALS(evrsr_EV_RSR_MessageBody_vals), 0,
30182 NULL, HFILL }},
30183 { &hf_evrsr_preReservationRequestMessage,
30184 { "preReservationRequestMessage", "evrsr.preReservationRequestMessage_element",
30185 FT_NONE, BASE_NONE, NULL, 0,
30186 NULL, HFILL }},
30187 { &hf_evrsr_preReservationResponseMessage,
30188 { "preReservationResponseMessage", "evrsr.preReservationResponseMessage_element",
30189 FT_NONE, BASE_NONE, NULL, 0,
30190 NULL, HFILL }},
30191 { &hf_evrsr_reservationRequestMessage,
30192 { "reservationRequestMessage", "evrsr.reservationRequestMessage_element",
30193 FT_NONE, BASE_NONE, NULL, 0,
30194 NULL, HFILL }},
30195 { &hf_evrsr_reservationResponseMessage,
30196 { "reservationResponseMessage", "evrsr.reservationResponseMessage_element",
30197 FT_NONE, BASE_NONE, NULL, 0,
30198 NULL, HFILL }},
30199 { &hf_evrsr_cancellationRequestMessage,
30200 { "cancellationRequestMessage", "evrsr.cancellationRequestMessage_element",
30201 FT_NONE, BASE_NONE, NULL, 0,
30202 NULL, HFILL }},
30203 { &hf_evrsr_cancellationResponseMessage,
30204 { "cancellationResponseMessage", "evrsr.cancellationResponseMessage_element",
30205 FT_NONE, BASE_NONE, NULL, 0,
30206 NULL, HFILL }},
30207 { &hf_evrsr_updateRequestMessage,
30208 { "updateRequestMessage", "evrsr.updateRequestMessage_element",
30209 FT_NONE, BASE_NONE, NULL, 0,
30210 NULL, HFILL }},
30211 { &hf_evrsr_updateResponseMessage,
30212 { "updateResponseMessage", "evrsr.updateResponseMessage_element",
30213 FT_NONE, BASE_NONE, NULL, 0,
30214 NULL, HFILL }},
30215 { &hf_evrsr_evse_ID,
30216 { "evse-ID", "evrsr.evse_ID",
30217 FT_BYTES, BASE_NONE, NULL, 0,
30218 NULL, HFILL }},
30219 { &hf_evrsr_arrivalTime,
30220 { "arrivalTime", "evrsr.arrivalTime",
30221 FT_INT32, BASE_DEC, VALS(evrsr_TimestampUTC_vals), 0,
30222 "TimestampUTC", HFILL }},
30223 { &hf_evrsr_departureTime,
30224 { "departureTime", "evrsr.departureTime",
30225 FT_INT32, BASE_DEC, VALS(evrsr_TimestampUTC_vals), 0,
30226 "TimestampUTC", HFILL }},
30227 { &hf_evrsr_rechargingType,
30228 { "rechargingType", "evrsr.rechargingType_element",
30229 FT_NONE, BASE_NONE, NULL, 0,
30230 NULL, HFILL }},
30231 { &hf_evrsr_batteryType,
30232 { "batteryType", "evrsr.batteryType",
30233 FT_STRING, BASE_NONE, NULL, 0,
30234 NULL, HFILL }},
30235 { &hf_evrsr_preReservation_ID,
30236 { "preReservation-ID", "evrsr.preReservation_ID",
30237 FT_STRING, BASE_NONE, NULL, 0,
30238 NULL, HFILL }},
30239 { &hf_evrsr_availabilityStatus,
30240 { "availabilityStatus", "evrsr.availabilityStatus",
30241 FT_UINT32, BASE_DEC, VALS(evrsr_AvailabilityStatus_vals), 0,
30242 NULL, HFILL }},
30243 { &hf_evrsr_preReservationExpirationTime,
30244 { "preReservationExpirationTime", "evrsr.preReservationExpirationTime",
30245 FT_INT32, BASE_DEC, VALS(evrsr_TimestampUTC_vals), 0,
30246 "TimestampUTC", HFILL }},
30247 { &hf_evrsr_supportedPaymentTypes,
30248 { "supportedPaymentTypes", "evrsr.supportedPaymentTypes",
30249 FT_BYTES, BASE_NONE, NULL, 0,
30250 NULL, HFILL }},
30251 { &hf_evrsr_currentTime,
30252 { "currentTime", "evrsr.currentTime",
30253 FT_INT32, BASE_DEC, VALS(evrsr_TimestampUTC_vals), 0,
30254 "TimestampUTC", HFILL }},
30255 { &hf_evrsr_eAmount,
30256 { "eAmount", "evrsr.eAmount",
30257 FT_UINT32, BASE_DEC, VALS(evrsr_EAmount_vals), 0,
30258 NULL, HFILL }},
30259 { &hf_evrsr_eAmountMin,
30260 { "eAmountMin", "evrsr.eAmountMin",
30261 FT_UINT32, BASE_DEC, VALS(evrsr_EAmount_vals), 0,
30262 "EAmount", HFILL }},
30263 { &hf_evrsr_paymentType,
30264 { "paymentType", "evrsr.paymentType",
30265 FT_UINT32, BASE_DEC, VALS(evrsr_PaymentType_vals), 0,
30266 NULL, HFILL }},
30267 { &hf_evrsr_payment_ID,
30268 { "payment-ID", "evrsr.payment_ID",
30269 FT_UINT32, BASE_DEC, VALS(evrsr_Payment_ID_vals), 0,
30270 NULL, HFILL }},
30271 { &hf_evrsr_secondPayment_ID,
30272 { "secondPayment-ID", "evrsr.secondPayment_ID",
30273 FT_UINT32, BASE_DEC, VALS(evrsr_Payment_ID_vals), 0,
30274 "Payment_ID", HFILL }},
30275 { &hf_evrsr_pairing_ID,
30276 { "pairing-ID", "evrsr.pairing_ID",
30277 FT_STRING, BASE_NONE, NULL, 0,
30278 NULL, HFILL }},
30279 { &hf_evrsr_reservationResponseCode,
30280 { "reservationResponseCode", "evrsr.reservationResponseCode",
30281 FT_UINT32, BASE_DEC, VALS(evrsr_ReservationResponseCode_vals), 0,
30282 NULL, HFILL }},
30283 { &hf_evrsr_reservation_ID,
30284 { "reservation-ID", "evrsr.reservation_ID",
30285 FT_STRING, BASE_NONE, NULL, 0,
30286 NULL, HFILL }},
30287 { &hf_evrsr_reservation_Password,
30288 { "reservation-Password", "evrsr.reservation_Password",
30289 FT_STRING, BASE_NONE, NULL, 0,
30290 NULL, HFILL }},
30291 { &hf_evrsr_stationDetails,
30292 { "stationDetails", "evrsr.stationDetails",
30293 FT_STRING, BASE_NONE, NULL, 0,
30294 NULL, HFILL }},
30295 { &hf_evrsr_chargingSpotLabel,
30296 { "chargingSpotLabel", "evrsr.chargingSpotLabel",
30297 FT_STRING, BASE_NONE, NULL, 0,
30298 NULL, HFILL }},
30299 { &hf_evrsr_expirationTime,
30300 { "expirationTime", "evrsr.expirationTime",
30301 FT_INT32, BASE_DEC, VALS(evrsr_TimestampUTC_vals), 0,
30302 "TimestampUTC", HFILL }},
30303 { &hf_evrsr_freeCancelTimeLimit,
30304 { "freeCancelTimeLimit", "evrsr.freeCancelTimeLimit",
30305 FT_INT32, BASE_DEC, VALS(evrsr_TimestampUTC_vals), 0,
30306 "TimestampUTC", HFILL }},
30307 { &hf_evrsr_cancellationResponseCode,
30308 { "cancellationResponseCode", "evrsr.cancellationResponseCode",
30309 FT_UINT32, BASE_DEC, VALS(evrsr_CancellationResponseCode_vals), 0,
30310 NULL, HFILL }},
30311 { &hf_evrsr_updatedArrivalTime,
30312 { "updatedArrivalTime", "evrsr.updatedArrivalTime",
30313 FT_INT32, BASE_DEC, VALS(evrsr_TimestampUTC_vals), 0,
30314 "TimestampUTC", HFILL }},
30315 { &hf_evrsr_updatedDepartureTime,
30316 { "updatedDepartureTime", "evrsr.updatedDepartureTime",
30317 FT_INT32, BASE_DEC, VALS(evrsr_TimestampUTC_vals), 0,
30318 "TimestampUTC", HFILL }},
30319 { &hf_evrsr_updateResponseCode,
30320 { "updateResponseCode", "evrsr.updateResponseCode",
30321 FT_UINT32, BASE_DEC, VALS(evrsr_UpdateResponseCode_vals), 0,
30322 NULL, HFILL }},
30323 { &hf_evrsr_contractID,
30324 { "contractID", "evrsr.contractID",
30325 FT_STRING, BASE_NONE, NULL, 0,
30326 NULL, HFILL }},
30327 { &hf_evrsr_externalIdentificationMeans,
30328 { "externalIdentificationMeans", "evrsr.externalIdentificationMeans",
30329 FT_STRING, BASE_NONE, NULL, 0,
30330 NULL, HFILL }},
30331 { &hf_evrsr_rechargingMode,
30332 { "rechargingMode", "evrsr.rechargingMode",
30333 FT_UINT32, BASE_DEC, VALS(evrsr_RechargingMode_vals), 0,
30334 NULL, HFILL }},
30335 { &hf_evrsr_powerSource,
30336 { "powerSource", "evrsr.powerSource",
30337 FT_UINT32, BASE_DEC, VALS(evrsr_PowerSource_vals), 0,
30338 NULL, HFILL }},
30339 { &hf_evrsr_SupportedPaymentTypes_contract,
30340 { "contract", "evrsr.SupportedPaymentTypes.contract",
30341 FT_BOOLEAN, 8, NULL, 0x80,
30342 NULL, HFILL }},
30343 { &hf_evrsr_SupportedPaymentTypes_externalIdentification,
30344 { "externalIdentification", "evrsr.SupportedPaymentTypes.externalIdentification",
30345 FT_BOOLEAN, 8, NULL, 0x40,
30346 NULL, HFILL }},
30348 /* --- Module CPM-OriginatingStationContainers --- --- --- */
30350 { &hf_cpm_cpm_OriginatingVehicleContainer_PDU,
30351 { "OriginatingVehicleContainer", "cpm.OriginatingVehicleContainer_element",
30352 FT_NONE, BASE_NONE, NULL, 0,
30353 NULL, HFILL }},
30354 { &hf_cpm_cpm_OriginatingRsuContainer_PDU,
30355 { "OriginatingRsuContainer", "cpm.OriginatingRsuContainer_element",
30356 FT_NONE, BASE_NONE, NULL, 0,
30357 NULL, HFILL }},
30358 { &hf_cpm_orientationAngle,
30359 { "orientationAngle", "cpm.orientationAngle_element",
30360 FT_NONE, BASE_NONE, NULL, 0,
30361 "Wgs84Angle", HFILL }},
30362 { &hf_cpm_pitchAngle,
30363 { "pitchAngle", "cpm.pitchAngle_element",
30364 FT_NONE, BASE_NONE, NULL, 0,
30365 "CartesianAngle", HFILL }},
30366 { &hf_cpm_rollAngle,
30367 { "rollAngle", "cpm.rollAngle_element",
30368 FT_NONE, BASE_NONE, NULL, 0,
30369 "CartesianAngle", HFILL }},
30370 { &hf_cpm_trailerDataSet,
30371 { "trailerDataSet", "cpm.trailerDataSet",
30372 FT_UINT32, BASE_DEC, NULL, 0,
30373 NULL, HFILL }},
30374 { &hf_cpm_mapReference,
30375 { "mapReference", "cpm.mapReference",
30376 FT_UINT32, BASE_DEC, VALS(its_MapReference_vals), 0,
30377 NULL, HFILL }},
30378 { &hf_cpm_TrailerDataSet_item,
30379 { "TrailerData", "cpm.TrailerData_element",
30380 FT_NONE, BASE_NONE, NULL, 0,
30381 NULL, HFILL }},
30383 /* --- Module CPM-PDU-Descriptionsv1 --- --- --- */
30385 { &hf_cpmv1_cpmv1_CollectivePerceptionMessagev1_PDU,
30386 { "CollectivePerceptionMessagev1", "cpmv1.CollectivePerceptionMessagev1_element",
30387 FT_NONE, BASE_NONE, NULL, 0,
30388 NULL, HFILL }},
30389 { &hf_cpmv1_generationDeltaTime,
30390 { "generationDeltaTime", "cpmv1.generationDeltaTime",
30391 FT_UINT32, BASE_DEC, NULL, 0,
30392 NULL, HFILL }},
30393 { &hf_cpmv1_cpmParameters,
30394 { "cpmParameters", "cpmv1.cpmParameters_element",
30395 FT_NONE, BASE_NONE, NULL, 0,
30396 NULL, HFILL }},
30397 { &hf_cpmv1_managementContainer,
30398 { "managementContainer", "cpmv1.managementContainer_element",
30399 FT_NONE, BASE_NONE, NULL, 0,
30400 "CpmManagementContainer", HFILL }},
30401 { &hf_cpmv1_stationDataContainer,
30402 { "stationDataContainer", "cpmv1.stationDataContainer",
30403 FT_UINT32, BASE_DEC, VALS(cpmv1_StationDataContainer_vals), 0,
30404 NULL, HFILL }},
30405 { &hf_cpmv1_sensorInformationContainer,
30406 { "sensorInformationContainer", "cpmv1.sensorInformationContainer",
30407 FT_UINT32, BASE_DEC, NULL, 0,
30408 "SensorInformationContainerv1", HFILL }},
30409 { &hf_cpmv1_perceivedObjectContainer,
30410 { "perceivedObjectContainer", "cpmv1.perceivedObjectContainer",
30411 FT_UINT32, BASE_DEC, NULL, 0,
30412 "PerceivedObjectContainerv1", HFILL }},
30413 { &hf_cpmv1_freeSpaceAddendumContainer,
30414 { "freeSpaceAddendumContainer", "cpmv1.freeSpaceAddendumContainer",
30415 FT_UINT32, BASE_DEC, NULL, 0,
30416 NULL, HFILL }},
30417 { &hf_cpmv1_numberOfPerceivedObjects,
30418 { "numberOfPerceivedObjects", "cpmv1.numberOfPerceivedObjects",
30419 FT_UINT32, BASE_DEC, NULL, 0,
30420 NULL, HFILL }},
30421 { &hf_cpmv1_stationType,
30422 { "stationType", "cpmv1.stationType",
30423 FT_UINT32, BASE_DEC, VALS(itsv1_StationType_vals), 0,
30424 NULL, HFILL }},
30425 { &hf_cpmv1_perceivedObjectContainerSegmentInfo,
30426 { "perceivedObjectContainerSegmentInfo", "cpmv1.perceivedObjectContainerSegmentInfo_element",
30427 FT_NONE, BASE_NONE, NULL, 0,
30428 NULL, HFILL }},
30429 { &hf_cpmv1_referencePosition,
30430 { "referencePosition", "cpmv1.referencePosition_element",
30431 FT_NONE, BASE_NONE, NULL, 0,
30432 NULL, HFILL }},
30433 { &hf_cpmv1_originatingVehicleContainer,
30434 { "originatingVehicleContainer", "cpmv1.originatingVehicleContainer_element",
30435 FT_NONE, BASE_NONE, NULL, 0,
30436 "OriginatingVehicleContainerV1", HFILL }},
30437 { &hf_cpmv1_originatingRSUContainer,
30438 { "originatingRSUContainer", "cpmv1.originatingRSUContainer",
30439 FT_UINT32, BASE_DEC, VALS(cpmv1_OriginatingRSUContainer_vals), 0,
30440 NULL, HFILL }},
30441 { &hf_cpmv1_heading,
30442 { "heading", "cpmv1.heading_element",
30443 FT_NONE, BASE_NONE, NULL, 0,
30444 NULL, HFILL }},
30445 { &hf_cpmv1_speed,
30446 { "speed", "cpmv1.speed_element",
30447 FT_NONE, BASE_NONE, NULL, 0,
30448 NULL, HFILL }},
30449 { &hf_cpmv1_vehicleOrientationAngle,
30450 { "vehicleOrientationAngle", "cpmv1.vehicleOrientationAngle_element",
30451 FT_NONE, BASE_NONE, NULL, 0,
30452 "WGS84Angle", HFILL }},
30453 { &hf_cpmv1_driveDirection,
30454 { "driveDirection", "cpmv1.driveDirection",
30455 FT_UINT32, BASE_DEC, VALS(itsv1_DriveDirection_vals), 0,
30456 NULL, HFILL }},
30457 { &hf_cpmv1_longitudinalAcceleration,
30458 { "longitudinalAcceleration", "cpmv1.longitudinalAcceleration_element",
30459 FT_NONE, BASE_NONE, NULL, 0,
30460 NULL, HFILL }},
30461 { &hf_cpmv1_lateralAcceleration,
30462 { "lateralAcceleration", "cpmv1.lateralAcceleration_element",
30463 FT_NONE, BASE_NONE, NULL, 0,
30464 NULL, HFILL }},
30465 { &hf_cpmv1_verticalAcceleration,
30466 { "verticalAcceleration", "cpmv1.verticalAcceleration_element",
30467 FT_NONE, BASE_NONE, NULL, 0,
30468 NULL, HFILL }},
30469 { &hf_cpmv1_yawRate,
30470 { "yawRate", "cpmv1.yawRate_element",
30471 FT_NONE, BASE_NONE, NULL, 0,
30472 NULL, HFILL }},
30473 { &hf_cpmv1_pitchAnglev1,
30474 { "pitchAnglev1", "cpmv1.pitchAnglev1_element",
30475 FT_NONE, BASE_NONE, NULL, 0,
30476 "CartesianAngle", HFILL }},
30477 { &hf_cpmv1_rollAnglev1,
30478 { "rollAnglev1", "cpmv1.rollAnglev1_element",
30479 FT_NONE, BASE_NONE, NULL, 0,
30480 "CartesianAngle", HFILL }},
30481 { &hf_cpmv1_vehicleLengthv1,
30482 { "vehicleLengthv1", "cpmv1.vehicleLengthv1_element",
30483 FT_NONE, BASE_NONE, NULL, 0,
30484 "VehicleLength", HFILL }},
30485 { &hf_cpmv1_vehicleWidthv1,
30486 { "vehicleWidthv1", "cpmv1.vehicleWidthv1",
30487 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_vehicle_width_fmt), 0,
30488 "VehicleWidth", HFILL }},
30489 { &hf_cpmv1_vehicleHeightv1,
30490 { "vehicleHeightv1", "cpmv1.vehicleHeightv1",
30491 FT_UINT32, BASE_DEC, NULL, 0,
30492 "VehicleHeight", HFILL }},
30493 { &hf_cpmv1_trailerDataContainerv1,
30494 { "trailerDataContainerv1", "cpmv1.trailerDataContainerv1",
30495 FT_UINT32, BASE_DEC, NULL, 0,
30496 "TrailerDataContainer", HFILL }},
30497 { &hf_cpmv1_intersectionReferenceId,
30498 { "intersectionReferenceId", "cpmv1.intersectionReferenceId_element",
30499 FT_NONE, BASE_NONE, NULL, 0,
30500 NULL, HFILL }},
30501 { &hf_cpmv1_roadSegmentReferenceId,
30502 { "roadSegmentReferenceId", "cpmv1.roadSegmentReferenceId_element",
30503 FT_NONE, BASE_NONE, NULL, 0,
30504 NULL, HFILL }},
30505 { &hf_cpmv1_SensorInformationContainerv1_item,
30506 { "SensorInformationv1", "cpmv1.SensorInformationv1_element",
30507 FT_NONE, BASE_NONE, NULL, 0,
30508 NULL, HFILL }},
30509 { &hf_cpmv1_sensorID,
30510 { "sensorID", "cpmv1.sensorID",
30511 FT_UINT32, BASE_DEC, NULL, 0,
30512 "Identifier", HFILL }},
30513 { &hf_cpmv1_type,
30514 { "type", "cpmv1.type",
30515 FT_UINT32, BASE_DEC, VALS(cpmv1_SensorType_vals), 0,
30516 "SensorType", HFILL }},
30517 { &hf_cpmv1_detectionArea,
30518 { "detectionArea", "cpmv1.detectionArea",
30519 FT_UINT32, BASE_DEC, VALS(cpmv1_DetectionArea_vals), 0,
30520 NULL, HFILL }},
30521 { &hf_cpmv1_freeSpaceConfidence,
30522 { "freeSpaceConfidence", "cpmv1.freeSpaceConfidence",
30523 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_general_confidence_fmt), 0,
30524 NULL, HFILL }},
30525 { &hf_cpmv1_PerceivedObjectContainerv1_item,
30526 { "PerceivedObjectv1", "cpmv1.PerceivedObjectv1_element",
30527 FT_NONE, BASE_NONE, NULL, 0,
30528 NULL, HFILL }},
30529 { &hf_cpmv1_objectID,
30530 { "objectID", "cpmv1.objectID",
30531 FT_UINT32, BASE_DEC, NULL, 0,
30532 "Identifier", HFILL }},
30533 { &hf_cpmv1_sensorIDList,
30534 { "sensorIDList", "cpmv1.sensorIDList",
30535 FT_UINT32, BASE_DEC, NULL, 0,
30536 NULL, HFILL }},
30537 { &hf_cpmv1_timeOfMeasurement,
30538 { "timeOfMeasurement", "cpmv1.timeOfMeasurement",
30539 FT_INT32, BASE_DEC, NULL, 0,
30540 NULL, HFILL }},
30541 { &hf_cpmv1_objectAge,
30542 { "objectAge", "cpmv1.objectAge",
30543 FT_UINT32, BASE_DEC, VALS(cpmv1_ObjectAge_vals), 0,
30544 NULL, HFILL }},
30545 { &hf_cpmv1_objectConfidence,
30546 { "objectConfidence", "cpmv1.objectConfidence",
30547 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_general_confidence_fmt), 0,
30548 NULL, HFILL }},
30549 { &hf_cpmv1_xDistance,
30550 { "xDistance", "cpmv1.xDistance_element",
30551 FT_NONE, BASE_NONE, NULL, 0,
30552 "ObjectDistanceWithConfidence", HFILL }},
30553 { &hf_cpmv1_yDistance,
30554 { "yDistance", "cpmv1.yDistance_element",
30555 FT_NONE, BASE_NONE, NULL, 0,
30556 "ObjectDistanceWithConfidence", HFILL }},
30557 { &hf_cpmv1_zDistance,
30558 { "zDistance", "cpmv1.zDistance_element",
30559 FT_NONE, BASE_NONE, NULL, 0,
30560 "ObjectDistanceWithConfidence", HFILL }},
30561 { &hf_cpmv1_xSpeed,
30562 { "xSpeed", "cpmv1.xSpeed_element",
30563 FT_NONE, BASE_NONE, NULL, 0,
30564 "SpeedExtended", HFILL }},
30565 { &hf_cpmv1_ySpeed,
30566 { "ySpeed", "cpmv1.ySpeed_element",
30567 FT_NONE, BASE_NONE, NULL, 0,
30568 "SpeedExtended", HFILL }},
30569 { &hf_cpmv1_zSpeed,
30570 { "zSpeed", "cpmv1.zSpeed_element",
30571 FT_NONE, BASE_NONE, NULL, 0,
30572 "SpeedExtended", HFILL }},
30573 { &hf_cpmv1_xAcceleration,
30574 { "xAcceleration", "cpmv1.xAcceleration_element",
30575 FT_NONE, BASE_NONE, NULL, 0,
30576 "LongitudinalAcceleration", HFILL }},
30577 { &hf_cpmv1_yAcceleration,
30578 { "yAcceleration", "cpmv1.yAcceleration_element",
30579 FT_NONE, BASE_NONE, NULL, 0,
30580 "LateralAcceleration", HFILL }},
30581 { &hf_cpmv1_zAcceleration,
30582 { "zAcceleration", "cpmv1.zAcceleration_element",
30583 FT_NONE, BASE_NONE, NULL, 0,
30584 "VerticalAcceleration", HFILL }},
30585 { &hf_cpmv1_yawAngle,
30586 { "yawAngle", "cpmv1.yawAngle_element",
30587 FT_NONE, BASE_NONE, NULL, 0,
30588 "CartesianAngle", HFILL }},
30589 { &hf_cpmv1_planarObjectDimension1,
30590 { "planarObjectDimension1", "cpmv1.planarObjectDimension1_element",
30591 FT_NONE, BASE_NONE, NULL, 0,
30592 "ObjectDimension", HFILL }},
30593 { &hf_cpmv1_planarObjectDimension2,
30594 { "planarObjectDimension2", "cpmv1.planarObjectDimension2_element",
30595 FT_NONE, BASE_NONE, NULL, 0,
30596 "ObjectDimension", HFILL }},
30597 { &hf_cpmv1_verticalObjectDimension,
30598 { "verticalObjectDimension", "cpmv1.verticalObjectDimension_element",
30599 FT_NONE, BASE_NONE, NULL, 0,
30600 "ObjectDimension", HFILL }},
30601 { &hf_cpmv1_objectRefPoint,
30602 { "objectRefPoint", "cpmv1.objectRefPoint",
30603 FT_UINT32, BASE_DEC, VALS(cpmv1_ObjectRefPoint_vals), 0,
30604 NULL, HFILL }},
30605 { &hf_cpmv1_dynamicStatus,
30606 { "dynamicStatus", "cpmv1.dynamicStatus",
30607 FT_UINT32, BASE_DEC, VALS(cpmv1_DynamicStatus_vals), 0,
30608 NULL, HFILL }},
30609 { &hf_cpmv1_classification,
30610 { "classification", "cpmv1.classification",
30611 FT_UINT32, BASE_DEC, NULL, 0,
30612 "ObjectClassDescription", HFILL }},
30613 { &hf_cpmv1_matchedPosition,
30614 { "matchedPosition", "cpmv1.matchedPosition_element",
30615 FT_NONE, BASE_NONE, NULL, 0,
30616 NULL, HFILL }},
30617 { &hf_cpmv1_vehicleSensor,
30618 { "vehicleSensor", "cpmv1.vehicleSensor_element",
30619 FT_NONE, BASE_NONE, NULL, 0,
30620 NULL, HFILL }},
30621 { &hf_cpmv1_stationarySensorRadial,
30622 { "stationarySensorRadial", "cpmv1.stationarySensorRadial_element",
30623 FT_NONE, BASE_NONE, NULL, 0,
30624 "AreaRadial", HFILL }},
30625 { &hf_cpmv1_stationarySensorPolygon,
30626 { "stationarySensorPolygon", "cpmv1.stationarySensorPolygon_element",
30627 FT_NONE, BASE_NONE, NULL, 0,
30628 "AreaPolygon", HFILL }},
30629 { &hf_cpmv1_stationarySensorCircular,
30630 { "stationarySensorCircular", "cpmv1.stationarySensorCircular_element",
30631 FT_NONE, BASE_NONE, NULL, 0,
30632 "AreaCircular", HFILL }},
30633 { &hf_cpmv1_stationarySensorEllipse,
30634 { "stationarySensorEllipse", "cpmv1.stationarySensorEllipse_element",
30635 FT_NONE, BASE_NONE, NULL, 0,
30636 "AreaEllipse", HFILL }},
30637 { &hf_cpmv1_stationarySensorRectangle,
30638 { "stationarySensorRectangle", "cpmv1.stationarySensorRectangle_element",
30639 FT_NONE, BASE_NONE, NULL, 0,
30640 "AreaRectangle", HFILL }},
30641 { &hf_cpmv1_refPointId,
30642 { "refPointId", "cpmv1.refPointId",
30643 FT_UINT32, BASE_DEC, NULL, 0,
30644 NULL, HFILL }},
30645 { &hf_cpmv1_xSensorOffset,
30646 { "xSensorOffset", "cpmv1.xSensorOffset",
30647 FT_INT32, BASE_DEC, VALS(cpmv1_XSensorOffset_vals), 0,
30648 NULL, HFILL }},
30649 { &hf_cpmv1_ySensorOffset,
30650 { "ySensorOffset", "cpmv1.ySensorOffset",
30651 FT_INT32, BASE_DEC, VALS(cpmv1_YSensorOffset_vals), 0,
30652 NULL, HFILL }},
30653 { &hf_cpmv1_zSensorOffset,
30654 { "zSensorOffset", "cpmv1.zSensorOffset",
30655 FT_UINT32, BASE_DEC, VALS(cpmv1_ZSensorOffset_vals), 0,
30656 NULL, HFILL }},
30657 { &hf_cpmv1_vehicleSensorPropertyList,
30658 { "vehicleSensorPropertyList", "cpmv1.vehicleSensorPropertyList",
30659 FT_UINT32, BASE_DEC, NULL, 0,
30660 NULL, HFILL }},
30661 { &hf_cpmv1_VehicleSensorPropertyList_item,
30662 { "VehicleSensorProperties", "cpmv1.VehicleSensorProperties_element",
30663 FT_NONE, BASE_NONE, NULL, 0,
30664 NULL, HFILL }},
30665 { &hf_cpmv1_range,
30666 { "range", "cpmv1.range",
30667 FT_UINT32, BASE_DEC, VALS(cpmv1_Range_vals), 0,
30668 NULL, HFILL }},
30669 { &hf_cpmv1_horizontalOpeningAngleStart,
30670 { "horizontalOpeningAngleStart", "cpmv1.horizontalOpeningAngleStart",
30671 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
30672 "CartesianAngleValue", HFILL }},
30673 { &hf_cpmv1_horizontalOpeningAngleEnd,
30674 { "horizontalOpeningAngleEnd", "cpmv1.horizontalOpeningAngleEnd",
30675 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
30676 "CartesianAngleValue", HFILL }},
30677 { &hf_cpmv1_verticalOpeningAngleStart,
30678 { "verticalOpeningAngleStart", "cpmv1.verticalOpeningAngleStart",
30679 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
30680 "CartesianAngleValue", HFILL }},
30681 { &hf_cpmv1_verticalOpeningAngleEnd,
30682 { "verticalOpeningAngleEnd", "cpmv1.verticalOpeningAngleEnd",
30683 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
30684 "CartesianAngleValue", HFILL }},
30685 { &hf_cpmv1_nodeCenterPoint,
30686 { "nodeCenterPoint", "cpmv1.nodeCenterPoint_element",
30687 FT_NONE, BASE_NONE, NULL, 0,
30688 "OffsetPoint", HFILL }},
30689 { &hf_cpmv1_radius,
30690 { "radius", "cpmv1.radius",
30691 FT_UINT32, BASE_DEC, VALS(cpmv1_Radius_vals), 0,
30692 NULL, HFILL }},
30693 { &hf_cpmv1_semiMinorRangeLength,
30694 { "semiMinorRangeLength", "cpmv1.semiMinorRangeLength",
30695 FT_UINT32, BASE_DEC, VALS(cpmv1_SemiRangeLength_vals), 0,
30696 "SemiRangeLength", HFILL }},
30697 { &hf_cpmv1_semiMajorRangeLength,
30698 { "semiMajorRangeLength", "cpmv1.semiMajorRangeLength",
30699 FT_UINT32, BASE_DEC, VALS(cpmv1_SemiRangeLength_vals), 0,
30700 "SemiRangeLength", HFILL }},
30701 { &hf_cpmv1_semiMajorRangeOrientation,
30702 { "semiMajorRangeOrientation", "cpmv1.semiMajorRangeOrientation",
30703 FT_UINT32, BASE_DEC, VALS(cpmv1_WGS84AngleValue_vals), 0,
30704 "WGS84AngleValue", HFILL }},
30705 { &hf_cpmv1_semiHeight,
30706 { "semiHeight", "cpmv1.semiHeight",
30707 FT_UINT32, BASE_DEC, VALS(cpmv1_SemiRangeLength_vals), 0,
30708 "SemiRangeLength", HFILL }},
30709 { &hf_cpmv1_polyPointList,
30710 { "polyPointList", "cpmv1.polyPointList",
30711 FT_UINT32, BASE_DEC, NULL, 0,
30712 NULL, HFILL }},
30713 { &hf_cpmv1_PolyPointList_item,
30714 { "OffsetPoint", "cpmv1.OffsetPoint_element",
30715 FT_NONE, BASE_NONE, NULL, 0,
30716 NULL, HFILL }},
30717 { &hf_cpmv1_stationaryHorizontalOpeningAngleStart,
30718 { "stationaryHorizontalOpeningAngleStart", "cpmv1.stationaryHorizontalOpeningAngleStart",
30719 FT_UINT32, BASE_DEC, VALS(cpmv1_WGS84AngleValue_vals), 0,
30720 "WGS84AngleValue", HFILL }},
30721 { &hf_cpmv1_stationaryHorizontalOpeningAngleEnd,
30722 { "stationaryHorizontalOpeningAngleEnd", "cpmv1.stationaryHorizontalOpeningAngleEnd",
30723 FT_UINT32, BASE_DEC, VALS(cpmv1_WGS84AngleValue_vals), 0,
30724 "WGS84AngleValue", HFILL }},
30725 { &hf_cpmv1_sensorPositionOffset,
30726 { "sensorPositionOffset", "cpmv1.sensorPositionOffset_element",
30727 FT_NONE, BASE_NONE, NULL, 0,
30728 "OffsetPoint", HFILL }},
30729 { &hf_cpmv1_sensorHeight,
30730 { "sensorHeight", "cpmv1.sensorHeight",
30731 FT_INT32, BASE_DEC, VALS(cpmv1_SensorHeight_vals), 0,
30732 NULL, HFILL }},
30733 { &hf_cpmv1_FreeSpaceAddendumContainer_item,
30734 { "FreeSpaceAddendum", "cpmv1.FreeSpaceAddendum_element",
30735 FT_NONE, BASE_NONE, NULL, 0,
30736 NULL, HFILL }},
30737 { &hf_cpmv1_freeSpaceArea,
30738 { "freeSpaceArea", "cpmv1.freeSpaceArea",
30739 FT_UINT32, BASE_DEC, VALS(cpmv1_FreeSpaceArea_vals), 0,
30740 NULL, HFILL }},
30741 { &hf_cpmv1_shadowingApplies,
30742 { "shadowingApplies", "cpmv1.shadowingApplies",
30743 FT_BOOLEAN, BASE_NONE, NULL, 0,
30744 NULL, HFILL }},
30745 { &hf_cpmv1_freeSpacePolygon,
30746 { "freeSpacePolygon", "cpmv1.freeSpacePolygon_element",
30747 FT_NONE, BASE_NONE, NULL, 0,
30748 "AreaPolygon", HFILL }},
30749 { &hf_cpmv1_freeSpaceCircular,
30750 { "freeSpaceCircular", "cpmv1.freeSpaceCircular_element",
30751 FT_NONE, BASE_NONE, NULL, 0,
30752 "AreaCircular", HFILL }},
30753 { &hf_cpmv1_freeSpaceEllipse,
30754 { "freeSpaceEllipse", "cpmv1.freeSpaceEllipse_element",
30755 FT_NONE, BASE_NONE, NULL, 0,
30756 "AreaEllipse", HFILL }},
30757 { &hf_cpmv1_freeSpaceRectangle,
30758 { "freeSpaceRectangle", "cpmv1.freeSpaceRectangle_element",
30759 FT_NONE, BASE_NONE, NULL, 0,
30760 "AreaRectangle", HFILL }},
30761 { &hf_cpmv1_value,
30762 { "value", "cpmv1.value",
30763 FT_INT32, BASE_CUSTOM, CF_FUNC(cpm_distance_value_fmt), 0,
30764 "DistanceValue", HFILL }},
30765 { &hf_cpmv1_confidence,
30766 { "confidence", "cpmv1.confidence",
30767 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_distance_confidence_fmt), 0,
30768 "DistanceConfidence", HFILL }},
30769 { &hf_cpmv1_value_01,
30770 { "value", "cpmv1.value",
30771 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_object_dimension_value_fmt), 0,
30772 "ObjectDimensionValue", HFILL }},
30773 { &hf_cpmv1_confidence_01,
30774 { "confidence", "cpmv1.confidence",
30775 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_object_dimension_confidence_fmt), 0,
30776 "ObjectDimensionConfidence", HFILL }},
30777 { &hf_cpmv1_value_02,
30778 { "value", "cpmv1.value",
30779 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_cartesian_angle_value_fmt), 0,
30780 "CartesianAngleValue", HFILL }},
30781 { &hf_cpmv1_confidence_02,
30782 { "confidence", "cpmv1.confidence",
30783 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_angle_confidence_fmt), 0,
30784 "AngleConfidence", HFILL }},
30785 { &hf_cpmv1_value_03,
30786 { "value", "cpmv1.value",
30787 FT_UINT32, BASE_DEC, VALS(cpmv1_WGS84AngleValue_vals), 0,
30788 "WGS84AngleValue", HFILL }},
30789 { &hf_cpmv1_value_04,
30790 { "value", "cpmv1.value",
30791 FT_INT32, BASE_CUSTOM, CF_FUNC(cpm_speed_value_ext_fmt), 0,
30792 "SpeedValueExtended", HFILL }},
30793 { &hf_cpmv1_confidence_03,
30794 { "confidence", "cpmv1.confidence",
30795 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_speed_confidence_fmt), 0,
30796 "SpeedConfidence", HFILL }},
30797 { &hf_cpmv1_SensorIdList_item,
30798 { "Identifier", "cpmv1.Identifier",
30799 FT_UINT32, BASE_DEC, NULL, 0,
30800 NULL, HFILL }},
30801 { &hf_cpmv1_TrailerDataContainer_item,
30802 { "TrailerData", "cpmv1.TrailerData_element",
30803 FT_NONE, BASE_NONE, NULL, 0,
30804 NULL, HFILL }},
30805 { &hf_cpmv1_hitchPointOffset,
30806 { "hitchPointOffset", "cpmv1.hitchPointOffset",
30807 FT_UINT32, BASE_DEC, VALS(cpmv1_HitchPointOffset_vals), 0,
30808 NULL, HFILL }},
30809 { &hf_cpmv1_frontOverhang,
30810 { "frontOverhang", "cpmv1.frontOverhang",
30811 FT_UINT32, BASE_DEC, VALS(cpmv1_FrontOverhang_vals), 0,
30812 NULL, HFILL }},
30813 { &hf_cpmv1_rearOverhang,
30814 { "rearOverhang", "cpmv1.rearOverhang",
30815 FT_UINT32, BASE_DEC, VALS(cpmv1_RearOverhang_vals), 0,
30816 NULL, HFILL }},
30817 { &hf_cpmv1_trailerWidth,
30818 { "trailerWidth", "cpmv1.trailerWidth",
30819 FT_UINT32, BASE_CUSTOM, CF_FUNC(its_vehicle_width_fmt), 0,
30820 "VehicleWidth", HFILL }},
30821 { &hf_cpmv1_hitchAngle,
30822 { "hitchAngle", "cpmv1.hitchAngle_element",
30823 FT_NONE, BASE_NONE, NULL, 0,
30824 "CartesianAngle", HFILL }},
30825 { &hf_cpmv1_longitudinalLanePositionValue,
30826 { "longitudinalLanePositionValue", "cpmv1.longitudinalLanePositionValue",
30827 FT_UINT32, BASE_DEC, VALS(cpmv1_LongitudinalLanePositionValue_vals), 0,
30828 NULL, HFILL }},
30829 { &hf_cpmv1_longitudinalLanePositionConfidence,
30830 { "longitudinalLanePositionConfidence", "cpmv1.longitudinalLanePositionConfidence",
30831 FT_UINT32, BASE_DEC, VALS(cpmv1_LongitudinalLanePositionConfidence_vals), 0,
30832 NULL, HFILL }},
30833 { &hf_cpmv1_laneID,
30834 { "laneID", "cpmv1.laneID",
30835 FT_UINT32, BASE_DEC, NULL, 0,
30836 NULL, HFILL }},
30837 { &hf_cpmv1_longitudinalLanePosition,
30838 { "longitudinalLanePosition", "cpmv1.longitudinalLanePosition_element",
30839 FT_NONE, BASE_NONE, NULL, 0,
30840 NULL, HFILL }},
30841 { &hf_cpmv1_totalMsgSegments,
30842 { "totalMsgSegments", "cpmv1.totalMsgSegments",
30843 FT_UINT32, BASE_DEC, NULL, 0,
30844 "SegmentCount", HFILL }},
30845 { &hf_cpmv1_thisSegmentNum,
30846 { "thisSegmentNum", "cpmv1.thisSegmentNum",
30847 FT_UINT32, BASE_DEC, NULL, 0,
30848 "SegmentCount", HFILL }},
30849 { &hf_cpmv1_ObjectClassDescription_item,
30850 { "ObjectClass", "cpmv1.ObjectClass_element",
30851 FT_NONE, BASE_NONE, NULL, 0,
30852 NULL, HFILL }},
30853 { &hf_cpmv1_confidence_04,
30854 { "confidence", "cpmv1.confidence",
30855 FT_UINT32, BASE_CUSTOM, CF_FUNC(cpm_general_confidence_fmt), 0,
30856 "ClassConfidence", HFILL }},
30857 { &hf_cpmv1_class,
30858 { "class", "cpmv1.class",
30859 FT_UINT32, BASE_DEC, VALS(cpmv1_T_class_vals), 0,
30860 NULL, HFILL }},
30861 { &hf_cpmv1_vehicle,
30862 { "vehicle", "cpmv1.vehicle_element",
30863 FT_NONE, BASE_NONE, NULL, 0,
30864 "VehicleSubclass", HFILL }},
30865 { &hf_cpmv1_person,
30866 { "person", "cpmv1.person_element",
30867 FT_NONE, BASE_NONE, NULL, 0,
30868 "PersonSubclass", HFILL }},
30869 { &hf_cpmv1_animal,
30870 { "animal", "cpmv1.animal_element",
30871 FT_NONE, BASE_NONE, NULL, 0,
30872 "AnimalSubclass", HFILL }},
30873 { &hf_cpmv1_other,
30874 { "other", "cpmv1.other_element",
30875 FT_NONE, BASE_NONE, NULL, 0,
30876 "OtherSubclass", HFILL }},
30877 { &hf_cpmv1_type_01,
30878 { "type", "cpmv1.type",
30879 FT_UINT32, BASE_DEC, VALS(cpmv1_VehicleSubclassType_vals), 0,
30880 "VehicleSubclassType", HFILL }},
30881 { &hf_cpmv1_type_02,
30882 { "type", "cpmv1.type",
30883 FT_UINT32, BASE_DEC, VALS(cpmv1_PersonSubclassType_vals), 0,
30884 "PersonSubclassType", HFILL }},
30885 { &hf_cpmv1_type_03,
30886 { "type", "cpmv1.type",
30887 FT_UINT32, BASE_DEC, VALS(cpmv1_AnimalSubclassType_vals), 0,
30888 "AnimalSubclassType", HFILL }},
30889 { &hf_cpmv1_type_04,
30890 { "type", "cpmv1.type",
30891 FT_UINT32, BASE_DEC, VALS(cpmv1_OtherSublassType_vals), 0,
30892 "OtherSublassType", HFILL }},
30893 { &hf_cpmv1_nodeOffsetPointxy,
30894 { "nodeOffsetPointxy", "cpmv1.nodeOffsetPointxy",
30895 FT_UINT32, BASE_DEC, VALS(dsrc_NodeOffsetPointXY_vals), 0,
30896 NULL, HFILL }},
30897 { &hf_cpmv1_nodeOffsetPointZ,
30898 { "nodeOffsetPointZ", "cpmv1.nodeOffsetPointZ",
30899 FT_UINT32, BASE_DEC, VALS(cpmv1_NodeOffsetPointZ_vals), 0,
30900 NULL, HFILL }},
30901 { &hf_cpmv1_node_Z1,
30902 { "node-Z1", "cpmv1.node_Z1",
30903 FT_INT32, BASE_DEC, NULL, 0,
30904 "Offset_B10", HFILL }},
30905 { &hf_cpmv1_node_Z2,
30906 { "node-Z2", "cpmv1.node_Z2",
30907 FT_INT32, BASE_DEC, NULL, 0,
30908 "Offset_B11", HFILL }},
30909 { &hf_cpmv1_node_Z3,
30910 { "node-Z3", "cpmv1.node_Z3",
30911 FT_INT32, BASE_DEC, NULL, 0,
30912 "Offset_B12", HFILL }},
30913 { &hf_cpmv1_node_Z4,
30914 { "node-Z4", "cpmv1.node_Z4",
30915 FT_INT32, BASE_DEC, NULL, 0,
30916 "Offset_B13", HFILL }},
30917 { &hf_cpmv1_node_Z5,
30918 { "node-Z5", "cpmv1.node_Z5",
30919 FT_INT32, BASE_DEC, NULL, 0,
30920 "Offset_B14", HFILL }},
30921 { &hf_cpmv1_node_Z6,
30922 { "node-Z6", "cpmv1.node_Z6",
30923 FT_INT32, BASE_DEC, NULL, 0,
30924 "Offset_B16", HFILL }},
30926 /* --- Module CPM-PDU-Descriptions --- --- --- */
30928 { &hf_cpm_cpm_CpmPayload_PDU,
30929 { "CpmPayload", "cpm.CpmPayload_element",
30930 FT_NONE, BASE_NONE, NULL, 0,
30931 NULL, HFILL }},
30932 { &hf_cpm_managementContainer,
30933 { "managementContainer", "cpm.managementContainer_element",
30934 FT_NONE, BASE_NONE, NULL, 0,
30935 NULL, HFILL }},
30936 { &hf_cpm_cpmContainers,
30937 { "cpmContainers", "cpm.cpmContainers",
30938 FT_UINT32, BASE_DEC, NULL, 0,
30939 "ConstraintWrappedCpmContainers", HFILL }},
30940 { &hf_cpm_referenceTime,
30941 { "referenceTime", "cpm.referenceTime",
30942 FT_UINT64, BASE_CUSTOM, CF_FUNC(its_timestamp_fmt), 0,
30943 "TimestampIts", HFILL }},
30944 { &hf_cpm_referencePosition,
30945 { "referencePosition", "cpm.referencePosition_element",
30946 FT_NONE, BASE_NONE, NULL, 0,
30947 NULL, HFILL }},
30948 { &hf_cpm_segmentationInfo,
30949 { "segmentationInfo", "cpm.segmentationInfo_element",
30950 FT_NONE, BASE_NONE, NULL, 0,
30951 "MessageSegmentationInfo", HFILL }},
30952 { &hf_cpm_messageRateRange,
30953 { "messageRateRange", "cpm.messageRateRange_element",
30954 FT_NONE, BASE_NONE, NULL, 0,
30955 NULL, HFILL }},
30956 { &hf_cpm_containerId,
30957 { "containerId", "cpm.containerId",
30958 FT_UINT32, BASE_DEC, VALS(cpm_CpmContainerId_vals), 0,
30959 "CpmContainerId", HFILL }},
30960 { &hf_cpm_containerData,
30961 { "containerData", "cpm.containerData_element",
30962 FT_NONE, BASE_NONE, NULL, 0,
30963 NULL, HFILL }},
30964 { &hf_cpm_WrappedCpmContainers_item,
30965 { "WrappedCpmContainer", "cpm.WrappedCpmContainer_element",
30966 FT_NONE, BASE_NONE, NULL, 0,
30967 NULL, HFILL }},
30968 { &hf_cpm_messageRateMin,
30969 { "messageRateMin", "cpm.messageRateMin_element",
30970 FT_NONE, BASE_NONE, NULL, 0,
30971 "MessageRateHz", HFILL }},
30972 { &hf_cpm_messageRateMax,
30973 { "messageRateMax", "cpm.messageRateMax_element",
30974 FT_NONE, BASE_NONE, NULL, 0,
30975 "MessageRateHz", HFILL }},
30977 /* --- Module CPM-PerceivedObjectContainer --- --- --- */
30979 { &hf_cpm_cpm_PerceivedObjectContainer_PDU,
30980 { "PerceivedObjectContainer", "cpm.PerceivedObjectContainer_element",
30981 FT_NONE, BASE_NONE, NULL, 0,
30982 NULL, HFILL }},
30983 { &hf_cpm_numberOfPerceivedObjects,
30984 { "numberOfPerceivedObjects", "cpm.numberOfPerceivedObjects",
30985 FT_UINT32, BASE_DEC, NULL, 0,
30986 "CardinalNumber1B", HFILL }},
30987 { &hf_cpm_perceivedObjects,
30988 { "perceivedObjects", "cpm.perceivedObjects",
30989 FT_UINT32, BASE_DEC, NULL, 0,
30990 NULL, HFILL }},
30991 { &hf_cpm_PerceivedObjects_item,
30992 { "PerceivedObject", "cpm.PerceivedObject_element",
30993 FT_NONE, BASE_NONE, NULL, 0,
30994 NULL, HFILL }},
30996 /* --- Module CPM-PerceptionRegionContainer --- --- --- */
30998 { &hf_cpm_cpm_PerceptionRegionContainer_PDU,
30999 { "PerceptionRegionContainer", "cpm.PerceptionRegionContainer",
31000 FT_UINT32, BASE_DEC, NULL, 0,
31001 NULL, HFILL }},
31002 { &hf_cpm_PerceptionRegionContainer_item,
31003 { "PerceptionRegion", "cpm.PerceptionRegion_element",
31004 FT_NONE, BASE_NONE, NULL, 0,
31005 NULL, HFILL }},
31006 { &hf_cpm_measurementDeltaTime,
31007 { "measurementDeltaTime", "cpm.measurementDeltaTime",
31008 FT_INT32, BASE_DEC, NULL, 0,
31009 "DeltaTimeMilliSecondSigned", HFILL }},
31010 { &hf_cpm_perceptionRegionPerceptionRegionConfidence,
31011 { "perceptionRegionConfidence", "cpm.perceptionRegionConfidence",
31012 FT_UINT32, BASE_DEC, VALS(its_ConfidenceLevel_vals), 0,
31013 "ConfidenceLevel", HFILL }},
31014 { &hf_cpm_perceptionRegionPerceptionRegionShape,
31015 { "perceptionRegionShape", "cpm.perceptionRegionShape",
31016 FT_UINT32, BASE_DEC, VALS(its_Shape_vals), 0,
31017 "Shape", HFILL }},
31018 { &hf_cpm_perceptionRegionShadowingApplies,
31019 { "shadowingApplies", "cpm.shadowingApplies",
31020 FT_BOOLEAN, BASE_NONE, NULL, 0,
31021 "T_PerceptionRegionShadowingApplies", HFILL }},
31022 { &hf_cpm_sensorIdList,
31023 { "sensorIdList", "cpm.sensorIdList",
31024 FT_UINT32, BASE_DEC, NULL, 0,
31025 "SequenceOfIdentifier1B", HFILL }},
31026 { &hf_cpm_perceptionRegionNumberOfPerceivedObjects,
31027 { "numberOfPerceivedObjects", "cpm.numberOfPerceivedObjects",
31028 FT_UINT32, BASE_DEC, NULL, 0,
31029 "T_PerceptionRegionNumberOfPerceivedObjects", HFILL }},
31030 { &hf_cpm_perceivedObjectIds,
31031 { "perceivedObjectIds", "cpm.perceivedObjectIds",
31032 FT_UINT32, BASE_DEC, NULL, 0,
31033 NULL, HFILL }},
31034 { &hf_cpm_PerceivedObjectIds_item,
31035 { "Identifier2B", "cpm.Identifier2B",
31036 FT_UINT32, BASE_DEC, NULL, 0,
31037 NULL, HFILL }},
31039 /* --- Module CPM-SensorInformationContainer --- --- --- */
31041 { &hf_cpm_cpm_SensorInformationContainer_PDU,
31042 { "SensorInformationContainer", "cpm.SensorInformationContainer",
31043 FT_UINT32, BASE_DEC, NULL, 0,
31044 NULL, HFILL }},
31045 { &hf_cpm_SensorInformationContainer_item,
31046 { "SensorInformation", "cpm.SensorInformation_element",
31047 FT_NONE, BASE_NONE, NULL, 0,
31048 NULL, HFILL }},
31049 { &hf_cpm_sensorId,
31050 { "sensorId", "cpm.sensorId",
31051 FT_UINT32, BASE_DEC, NULL, 0,
31052 "Identifier1B", HFILL }},
31053 { &hf_cpm_sensorType,
31054 { "sensorType", "cpm.sensorType",
31055 FT_UINT32, BASE_DEC, VALS(its_SensorType_vals), 0,
31056 NULL, HFILL }},
31057 { &hf_cpm_perceptionRegionShape,
31058 { "perceptionRegionShape", "cpm.perceptionRegionShape",
31059 FT_UINT32, BASE_DEC, VALS(its_Shape_vals), 0,
31060 "Shape", HFILL }},
31061 { &hf_cpm_perceptionRegionConfidence,
31062 { "perceptionRegionConfidence", "cpm.perceptionRegionConfidence",
31063 FT_UINT32, BASE_DEC, VALS(its_ConfidenceLevel_vals), 0,
31064 "ConfidenceLevel", HFILL }},
31065 { &hf_cpm_shadowingApplies,
31066 { "shadowingApplies", "cpm.shadowingApplies",
31067 FT_BOOLEAN, BASE_NONE, NULL, 0,
31068 "BOOLEAN", HFILL }},
31070 /* --- Module VAM-PDU-Descriptions --- --- --- */
31072 { &hf_vam_vam_VruAwareness_PDU,
31073 { "VruAwareness", "vam.VruAwareness_element",
31074 FT_NONE, BASE_NONE, NULL, 0,
31075 NULL, HFILL }},
31076 { &hf_vam_generationDeltaTime,
31077 { "generationDeltaTime", "vam.generationDeltaTime",
31078 FT_UINT32, BASE_DEC, NULL, 0,
31079 NULL, HFILL }},
31080 { &hf_vam_vamParameters,
31081 { "vamParameters", "vam.vamParameters_element",
31082 FT_NONE, BASE_NONE, NULL, 0,
31083 NULL, HFILL }},
31084 { &hf_vam_basicContainer,
31085 { "basicContainer", "vam.basicContainer_element",
31086 FT_NONE, BASE_NONE, NULL, 0,
31087 NULL, HFILL }},
31088 { &hf_vam_vruHighFrequencyContainer,
31089 { "vruHighFrequencyContainer", "vam.vruHighFrequencyContainer_element",
31090 FT_NONE, BASE_NONE, NULL, 0,
31091 NULL, HFILL }},
31092 { &hf_vam_vruLowFrequencyContainer,
31093 { "vruLowFrequencyContainer", "vam.vruLowFrequencyContainer_element",
31094 FT_NONE, BASE_NONE, NULL, 0,
31095 NULL, HFILL }},
31096 { &hf_vam_vruClusterInformationContainer,
31097 { "vruClusterInformationContainer", "vam.vruClusterInformationContainer_element",
31098 FT_NONE, BASE_NONE, NULL, 0,
31099 NULL, HFILL }},
31100 { &hf_vam_vruClusterOperationContainer,
31101 { "vruClusterOperationContainer", "vam.vruClusterOperationContainer_element",
31102 FT_NONE, BASE_NONE, NULL, 0,
31103 NULL, HFILL }},
31104 { &hf_vam_vruMotionPredictionContainer,
31105 { "vruMotionPredictionContainer", "vam.vruMotionPredictionContainer_element",
31106 FT_NONE, BASE_NONE, NULL, 0,
31107 NULL, HFILL }},
31108 { &hf_vam_heading,
31109 { "heading", "vam.heading_element",
31110 FT_NONE, BASE_NONE, NULL, 0,
31111 "Wgs84Angle", HFILL }},
31112 { &hf_vam_speed,
31113 { "speed", "vam.speed_element",
31114 FT_NONE, BASE_NONE, NULL, 0,
31115 NULL, HFILL }},
31116 { &hf_vam_longitudinalAcceleration,
31117 { "longitudinalAcceleration", "vam.longitudinalAcceleration_element",
31118 FT_NONE, BASE_NONE, NULL, 0,
31119 NULL, HFILL }},
31120 { &hf_vam_curvature,
31121 { "curvature", "vam.curvature_element",
31122 FT_NONE, BASE_NONE, NULL, 0,
31123 NULL, HFILL }},
31124 { &hf_vam_curvatureCalculationMode,
31125 { "curvatureCalculationMode", "vam.curvatureCalculationMode",
31126 FT_UINT32, BASE_DEC, VALS(its_CurvatureCalculationMode_vals), 0,
31127 NULL, HFILL }},
31128 { &hf_vam_yawRate,
31129 { "yawRate", "vam.yawRate_element",
31130 FT_NONE, BASE_NONE, NULL, 0,
31131 NULL, HFILL }},
31132 { &hf_vam_lateralAcceleration,
31133 { "lateralAcceleration", "vam.lateralAcceleration_element",
31134 FT_NONE, BASE_NONE, NULL, 0,
31135 NULL, HFILL }},
31136 { &hf_vam_verticalAcceleration,
31137 { "verticalAcceleration", "vam.verticalAcceleration_element",
31138 FT_NONE, BASE_NONE, NULL, 0,
31139 NULL, HFILL }},
31140 { &hf_vam_vruLanePosition,
31141 { "vruLanePosition", "vam.vruLanePosition_element",
31142 FT_NONE, BASE_NONE, NULL, 0,
31143 "GeneralizedLanePosition", HFILL }},
31144 { &hf_vam_environment,
31145 { "environment", "vam.environment",
31146 FT_UINT32, BASE_DEC, VALS(its_VruEnvironment_vals), 0,
31147 "VruEnvironment", HFILL }},
31148 { &hf_vam_movementControl,
31149 { "movementControl", "vam.movementControl",
31150 FT_UINT32, BASE_DEC, VALS(its_VruMovementControl_vals), 0,
31151 "VruMovementControl", HFILL }},
31152 { &hf_vam_orientation,
31153 { "orientation", "vam.orientation_element",
31154 FT_NONE, BASE_NONE, NULL, 0,
31155 "Wgs84Angle", HFILL }},
31156 { &hf_vam_rollAngle,
31157 { "rollAngle", "vam.rollAngle_element",
31158 FT_NONE, BASE_NONE, NULL, 0,
31159 "CartesianAngle", HFILL }},
31160 { &hf_vam_deviceUsage,
31161 { "deviceUsage", "vam.deviceUsage",
31162 FT_UINT32, BASE_DEC, VALS(its_VruDeviceUsage_vals), 0,
31163 "VruDeviceUsage", HFILL }},
31164 { &hf_vam_profileAndSubprofile,
31165 { "profileAndSubprofile", "vam.profileAndSubprofile",
31166 FT_UINT32, BASE_DEC, VALS(its_VruProfileAndSubprofile_vals), 0,
31167 "VruProfileAndSubprofile", HFILL }},
31168 { &hf_vam_sizeClass,
31169 { "sizeClass", "vam.sizeClass",
31170 FT_UINT32, BASE_DEC, VALS(its_VruSizeClass_vals), 0,
31171 "VruSizeClass", HFILL }},
31172 { &hf_vam_exteriorLights,
31173 { "exteriorLights", "vam.exteriorLights_element",
31174 FT_NONE, BASE_NONE, NULL, 0,
31175 "VruExteriorLights", HFILL }},
31176 { &hf_vam_vruClusterInformation,
31177 { "vruClusterInformation", "vam.vruClusterInformation_element",
31178 FT_NONE, BASE_NONE, NULL, 0,
31179 NULL, HFILL }},
31180 { &hf_vam_clusterJoinInfo,
31181 { "clusterJoinInfo", "vam.clusterJoinInfo_element",
31182 FT_NONE, BASE_NONE, NULL, 0,
31183 NULL, HFILL }},
31184 { &hf_vam_clusterLeaveInfo,
31185 { "clusterLeaveInfo", "vam.clusterLeaveInfo_element",
31186 FT_NONE, BASE_NONE, NULL, 0,
31187 NULL, HFILL }},
31188 { &hf_vam_clusterBreakupInfo,
31189 { "clusterBreakupInfo", "vam.clusterBreakupInfo_element",
31190 FT_NONE, BASE_NONE, NULL, 0,
31191 NULL, HFILL }},
31192 { &hf_vam_clusterIdChangeTimeInfo,
31193 { "clusterIdChangeTimeInfo", "vam.clusterIdChangeTimeInfo",
31194 FT_UINT32, BASE_DEC, VALS(its_DeltaTimeQuarterSecond_vals), 0,
31195 "DeltaTimeQuarterSecond", HFILL }},
31196 { &hf_vam_pathHistory,
31197 { "pathHistory", "vam.pathHistory",
31198 FT_UINT32, BASE_DEC, NULL, 0,
31199 NULL, HFILL }},
31200 { &hf_vam_pathPrediction,
31201 { "pathPrediction", "vam.pathPrediction",
31202 FT_UINT32, BASE_DEC, NULL, 0,
31203 "PathPredicted", HFILL }},
31204 { &hf_vam_safeDistance,
31205 { "safeDistance", "vam.safeDistance",
31206 FT_UINT32, BASE_DEC, NULL, 0,
31207 "SequenceOfSafeDistanceIndication", HFILL }},
31208 { &hf_vam_trajectoryInterceptionIndication,
31209 { "trajectoryInterceptionIndication", "vam.trajectoryInterceptionIndication",
31210 FT_UINT32, BASE_DEC, NULL, 0,
31211 "SequenceOfTrajectoryInterceptionIndication", HFILL }},
31212 { &hf_vam_accelerationChangeIndication,
31213 { "accelerationChangeIndication", "vam.accelerationChangeIndication_element",
31214 FT_NONE, BASE_NONE, NULL, 0,
31215 NULL, HFILL }},
31216 { &hf_vam_headingChangeIndication,
31217 { "headingChangeIndication", "vam.headingChangeIndication_element",
31218 FT_NONE, BASE_NONE, NULL, 0,
31219 NULL, HFILL }},
31220 { &hf_vam_stabilityChangeIndication,
31221 { "stabilityChangeIndication", "vam.stabilityChangeIndication_element",
31222 FT_NONE, BASE_NONE, NULL, 0,
31223 NULL, HFILL }},
31225 /* --- Module IMZM-PDU-Descriptions --- --- --- */
31227 { &hf_imzm_imzm_InterferenceManagementZoneMessage_PDU,
31228 { "InterferenceManagementZoneMessage", "imzm.InterferenceManagementZoneMessage_element",
31229 FT_NONE, BASE_NONE, NULL, 0,
31230 NULL, HFILL }},
31231 { &hf_imzm_generationDeltaTime,
31232 { "generationDeltaTime", "imzm.generationDeltaTime",
31233 FT_UINT32, BASE_DEC, NULL, 0,
31234 NULL, HFILL }},
31235 { &hf_imzm_imzmParameters,
31236 { "imzmParameters", "imzm.imzmParameters_element",
31237 FT_NONE, BASE_NONE, NULL, 0,
31238 NULL, HFILL }},
31239 { &hf_imzm_basicContainer,
31240 { "basicContainer", "imzm.basicContainer_element",
31241 FT_NONE, BASE_NONE, NULL, 0,
31242 NULL, HFILL }},
31243 { &hf_imzm_imzmContainer,
31244 { "imzmContainer", "imzm.imzmContainer_element",
31245 FT_NONE, BASE_NONE, NULL, 0,
31246 NULL, HFILL }},
31247 { &hf_imzm_interferenceManagementZones,
31248 { "interferenceManagementZones", "imzm.interferenceManagementZones",
31249 FT_UINT32, BASE_DEC, NULL, 0,
31250 NULL, HFILL }},
31254 * DENM SSP
31256 { &hf_denmssp_version, { "Version", "its.ssp.denm.version", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
31257 { &hf_denmssp_flags, { "Allowed to sign", "its.ssp.denm.flags", FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL }},
31258 { &hf_denmssp_trafficCondition,
31259 { "trafficCondition", "its.denm.ssp.trafficCondition",
31260 FT_UINT24, BASE_DEC, NULL, 0x800000, NULL, HFILL }},
31261 { &hf_denmssp_accident,
31262 { "accident", "its.denm.ssp.accident",
31263 FT_UINT24, BASE_DEC, NULL, 0x400000, NULL, HFILL }},
31264 { &hf_denmssp_roadworks,
31265 { "roadworks", "its.denm.ssp.roadworks",
31266 FT_UINT24, BASE_DEC, NULL, 0x200000, NULL, HFILL }},
31267 { &hf_denmssp_adverseWeatherConditionAdhesion,
31268 { "adverseWeatherConditionAdhesion", "its.denm.ssp.advWxConditionAdhesion",
31269 FT_UINT24, BASE_DEC, NULL, 0x100000, NULL, HFILL }},
31270 { &hf_denmssp_hazardousLocationSurfaceCondition,
31271 { "hazardousLocationSurfaceCondition", "its.denm.ssp.hazLocationSurfaceCondition",
31272 FT_UINT24, BASE_DEC, NULL, 0x080000, NULL, HFILL }},
31273 { &hf_denmssp_hazardousLocationObstacleOnTheRoad,
31274 { "hazardousLocationObstacleOnTheRoad", "its.denm.ssp.hazLocationObstacleOnTheRoad",
31275 FT_UINT24, BASE_DEC, NULL, 0x040000, NULL, HFILL }},
31276 { &hf_denmssp_hazardousLocationAnimalOnTheRoad,
31277 { "hazardousLocationAnimalOnTheRoad", "its.denm.ssp.hazLocationAnimalOnTheRoad",
31278 FT_UINT24, BASE_DEC, NULL, 0x020000, NULL, HFILL }},
31279 { &hf_denmssp_humanPresenceOnTheRoad,
31280 { "humanPresenceOnTheRoad", "its.denm.ssp.humanPresenceOnTheRoad",
31281 FT_UINT24, BASE_DEC, NULL, 0x010000, NULL, HFILL }},
31282 { &hf_denmssp_wrongWayDriving,
31283 { "wrongWayDriving", "its.denm.ssp.wrongWayDriving",
31284 FT_UINT24, BASE_DEC, NULL, 0x008000, NULL, HFILL }},
31285 { &hf_denmssp_rescueAndRecoveryWorkInProgress,
31286 { "rescueAndRecoveryWorkInProgress", "its.denm.ssp.rescueAndRecoveryWorkInProgress",
31287 FT_UINT24, BASE_DEC, NULL, 0x004000, NULL, HFILL }},
31288 { &hf_denmssp_ExtremeWeatherCondition,
31289 { "ExtremeWeatherCondition", "its.denm.ssp.ExtremeWxCondition",
31290 FT_UINT24, BASE_DEC, NULL, 0x002000, NULL, HFILL }},
31291 { &hf_denmssp_adverseWeatherConditionVisibility,
31292 { "adverseWeatherConditionVisibility", "its.denm.ssp.advWxConditionVisibility",
31293 FT_UINT24, BASE_DEC, NULL, 0x001000, NULL, HFILL }},
31294 { &hf_denmssp_adverseWeatherConditionPrecipitation,
31295 { "adverseWeatherConditionPrecipitation", "its.denm.ssp.advWxConditionPrecipitation",
31296 FT_UINT24, BASE_DEC, NULL, 0x000800, NULL, HFILL }},
31297 { &hf_denmssp_slowVehicle,
31298 { "slowVehicle", "its.denm.ssp.slowVehicle",
31299 FT_UINT24, BASE_DEC, NULL, 0x000400, NULL, HFILL }},
31300 { &hf_denmssp_dangerousEndOfQueue,
31301 { "dangerousEndOfQueue", "its.denm.ssp.dangerousEndOfQueue",
31302 FT_UINT24, BASE_DEC, NULL, 0x000200, NULL, HFILL }},
31303 { &hf_denmssp_vehicleBreakdown,
31304 { "vehicleBreakdown", "its.denm.ssp.vehicleBreakdown",
31305 FT_UINT24, BASE_DEC, NULL, 0x000100, NULL, HFILL }},
31306 { &hf_denmssp_postCrash,
31307 { "postCrash", "its.denm.ssp.postCrash",
31308 FT_UINT24, BASE_DEC, NULL, 0x000080, NULL, HFILL }},
31309 { &hf_denmssp_humanProblem,
31310 { "humanProblem", "its.denm.ssp.humanProblem",
31311 FT_UINT24, BASE_DEC, NULL, 0x000040, NULL, HFILL }},
31312 { &hf_denmssp_stationaryVehicle,
31313 { "stationaryVehicle", "its.denm.ssp.stationaryVehicle",
31314 FT_UINT24, BASE_DEC, NULL, 0x000020, NULL, HFILL }},
31315 { &hf_denmssp_emergencyVehicleApproaching,
31316 { "emergencyVehicleApproaching", "its.denm.ssp.emergencyVehicleApproaching",
31317 FT_UINT24, BASE_DEC, NULL, 0x000010, NULL, HFILL }},
31318 { &hf_denmssp_hazardousLocationDangerousCurve,
31319 { "hazardousLocationDangerousCurve", "its.denm.ssp.hazLocationDangerousCurve",
31320 FT_UINT24, BASE_DEC, NULL, 0x000008, NULL, HFILL }},
31321 { &hf_denmssp_collisionRisk,
31322 { "collisionRisk", "its.denm.ssp.collisionRisk",
31323 FT_UINT24, BASE_DEC, NULL, 0x000004, NULL, HFILL }},
31324 { &hf_denmssp_signalViolation,
31325 { "signalViolation", "its.denm.ssp.signalViolation",
31326 FT_UINT24, BASE_DEC, NULL, 0x000002, NULL, HFILL }},
31327 { &hf_denmssp_dangerousSituation,
31328 { "dangerousSituation", "its.denm.ssp.dangerousSituation",
31329 FT_UINT24, BASE_DEC, NULL, 0x000001, NULL, HFILL }},
31332 * CAM SSP
31334 { &hf_camssp_version, { "Version", "its.ssp.cam.version", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
31335 { &hf_camssp_flags, { "Allowed to sign", "its.ssp.cam.flags", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }},
31336 { &hf_camssp_cenDsrcTollingZone, { "cenDsrcTollingZone", "its.ssp.cam.cenDsrcTollingZone", FT_UINT16, BASE_DEC, NULL, 0x8000, NULL, HFILL }},
31337 { &hf_camssp_publicTransport, { "publicTransport", "its.ssp.cam.publicTransport", FT_UINT16, BASE_DEC, NULL, 0x4000, NULL, HFILL }},
31338 { &hf_camssp_specialTransport, { "specialTransport", "its.ssp.cam.specialTransport", FT_UINT16, BASE_DEC, NULL, 0x2000, NULL, HFILL }},
31339 { &hf_camssp_dangerousGoods, { "dangerousGoods", "its.ssp.cam.dangerousGoods", FT_UINT16, BASE_DEC, NULL, 0x1000, NULL, HFILL }},
31340 { &hf_camssp_roadwork, { "roadwork", "its.ssp.cam.roadwork", FT_UINT16, BASE_DEC, NULL, 0x0800, NULL, HFILL }},
31341 { &hf_camssp_rescue, { "rescue", "its.ssp.cam.rescue", FT_UINT16, BASE_DEC, NULL, 0x0400, NULL, HFILL }},
31342 { &hf_camssp_emergency, { "emergency", "its.ssp.cam.emergency", FT_UINT16, BASE_DEC, NULL, 0x0200, NULL, HFILL }},
31343 { &hf_camssp_safetyCar, { "safetyCar", "its.ssp.cam.safetyCar", FT_UINT16, BASE_DEC, NULL, 0x0100, NULL, HFILL }},
31344 { &hf_camssp_closedLanes, { "closedLanes", "its.ssp.cam.closedLanes", FT_UINT16, BASE_DEC, NULL, 0x0080, NULL, HFILL }},
31345 { &hf_camssp_requestForRightOfWay, { "requestForRightOfWay", "its.ssp.cam.requestForRightOfWay", FT_UINT16, BASE_DEC, NULL, 0x0040, NULL, HFILL }},
31346 { &hf_camssp_requestForFreeCrossingAtATrafficLight, { "reqFreeCrossTrafLight", "its.ssp.cam.requestForFreeCrossingAtATrafficLight", FT_UINT16, BASE_DEC, NULL, 0x0020, NULL, HFILL }},
31347 { &hf_camssp_noPassing, { "noPassing", "its.ssp.cam.noPassing", FT_UINT16, BASE_DEC, NULL, 0x0010, NULL, HFILL }},
31348 { &hf_camssp_noPassingForTrucks, { "noPassingForTrucks", "its.ssp.cam.noPassingForTrucks", FT_UINT16, BASE_DEC, NULL, 0x0008, NULL, HFILL }},
31349 { &hf_camssp_speedLimit, { "speedLimit", "its.ssp.cam.speedLimit", FT_UINT16, BASE_DEC, NULL, 0x0004, NULL, HFILL }},
31350 { &hf_camssp_reserved, { "reserved", "its.ssp.cam.reserved", FT_UINT16, BASE_DEC, NULL, 0x0003, NULL, HFILL }},
31353 static int *ett[] = {
31354 &ett_its,
31355 &ett_denmssp_flags,
31356 &ett_camssp_flags,
31358 /* --- Module ETSI-ITS-CDD --- --- --- */
31360 &ett_its_AccelerationControl,
31361 &ett_its_EmergencyPriority,
31362 &ett_its_EnergyStorageType,
31363 &ett_its_ExteriorLights,
31364 &ett_its_LightBarSirenInUse,
31365 &ett_its_MatrixIncludedComponents,
31366 &ett_its_PositionOfOccupants,
31367 &ett_its_SensorTypes,
31368 &ett_its_SpecialTransportType,
31369 &ett_its_StoredInformationType,
31370 &ett_its_VruClusterProfiles,
31371 &ett_its_VruSpecificExteriorLights,
31372 &ett_its_Acceleration3dWithConfidence,
31373 &ett_its_AccelerationPolarWithZ,
31374 &ett_its_AccelerationCartesian,
31375 &ett_its_AccelerationComponent,
31376 &ett_its_AccelerationChangeIndication,
31377 &ett_its_AccelerationMagnitude,
31378 &ett_its_ActionId,
31379 &ett_its_ActionID,
31380 &ett_its_ActionIdList,
31381 &ett_its_Altitude,
31382 &ett_its_BasicContainer,
31383 &ett_its_CartesianAngle,
31384 &ett_its_CartesianAngularVelocityComponent,
31385 &ett_its_CartesianCoordinateWithConfidence,
31386 &ett_its_CartesianPosition3d,
31387 &ett_its_CartesianPosition3dWithConfidence,
31388 &ett_its_CauseCode,
31389 &ett_its_CauseCodeChoice,
31390 &ett_its_CauseCodeV2,
31391 &ett_its_CenDsrcTollingZone,
31392 &ett_its_CircularShape,
31393 &ett_its_ClosedLanes,
31394 &ett_its_ClusterBreakupInfo,
31395 &ett_its_ClusterJoinInfo,
31396 &ett_its_ClusterLeaveInfo,
31397 &ett_its_CorrelationColumn,
31398 &ett_its_Curvature,
31399 &ett_its_DangerousGoodsExtended,
31400 &ett_its_DeltaReferencePosition,
31401 &ett_its_DigitalMap,
31402 &ett_its_EllipticalShape,
31403 &ett_its_EulerAnglesWithConfidence,
31404 &ett_its_EuVehicleCategoryCode,
31405 &ett_its_EventHistory,
31406 &ett_its_EventPoint,
31407 &ett_its_GeneralizedLanePosition,
31408 &ett_its_Heading,
31409 &ett_its_HeadingChangeIndication,
31410 &ett_its_InterferenceManagementChannel,
31411 &ett_its_InterferenceManagementZone,
31412 &ett_its_InterferenceManagementZoneDefinition,
31413 &ett_its_InterferenceManagementInfo,
31414 &ett_its_InterferenceManagementInfoPerChannel,
31415 &ett_its_InterferenceManagementZones,
31416 &ett_its_IntersectionReferenceId,
31417 &ett_its_ItineraryPath,
31418 &ett_its_ItsPduHeader,
31419 &ett_its_LanePositionAndType,
31420 &ett_its_LanePositionOptions,
31421 &ett_its_LanePositionWithLateralDetails,
31422 &ett_its_LateralAcceleration,
31423 &ett_its_LongitudinalAcceleration,
31424 &ett_its_LongitudinalLanePosition,
31425 &ett_its_LowerTriangularPositiveSemidefiniteMatrices,
31426 &ett_its_LowerTriangularPositiveSemidefiniteMatrix,
31427 &ett_its_LowerTriangularPositiveSemidefiniteMatrixColumns,
31428 &ett_its_MapPosition,
31429 &ett_its_MapReference,
31430 &ett_its_MessageRateHz,
31431 &ett_its_MessageSegmentationInfo,
31432 &ett_its_MetaInformation,
31433 &ett_its_MitigationForTechnologies,
31434 &ett_its_MitigationPerTechnologyClass,
31435 &ett_its_ObjectClass,
31436 &ett_its_ObjectClassDescription,
31437 &ett_its_ObjectClassWithConfidence,
31438 &ett_its_ObjectDimension,
31439 &ett_its_Path,
31440 &ett_its_PathDeltaTimeChoice,
31441 &ett_its_PathHistory,
31442 &ett_its_PathPredicted,
31443 &ett_its_PathPoint,
31444 &ett_its_PathPointPredicted,
31445 &ett_its_PerceivedObject,
31446 &ett_its_PolygonalShape,
31447 &ett_its_PosConfidenceEllipse,
31448 &ett_its_PositionConfidenceEllipse,
31449 &ett_its_PositionOfPillars,
31450 &ett_its_ProtectedCommunicationZone,
31451 &ett_its_ProtectedCommunicationZonesRSU,
31452 &ett_its_PtActivation,
31453 &ett_its_RadialShape,
31454 &ett_its_RadialShapes,
31455 &ett_its_RadialShapesList,
31456 &ett_its_RadialShapeDetails,
31457 &ett_its_RectangularShape,
31458 &ett_its_ReferencePosition,
31459 &ett_its_ReferencePositionWithConfidence,
31460 &ett_its_RestrictedTypes,
31461 &ett_its_RoadSegmentReferenceId,
31462 &ett_its_SafeDistanceIndication,
31463 &ett_its_SequenceOfCartesianPosition3d,
31464 &ett_its_SequenceOfIdentifier1B,
31465 &ett_its_SequenceOfSafeDistanceIndication,
31466 &ett_its_SequenceOfTrajectoryInterceptionIndication,
31467 &ett_its_Shape,
31468 &ett_its_Speed,
31469 &ett_its_StabilityChangeIndication,
31470 &ett_its_SteeringWheelAngle,
31471 &ett_its_Traces,
31472 &ett_its_TrafficIslandPosition,
31473 &ett_its_TrailerData,
31474 &ett_its_TrajectoryInterceptionIndication,
31475 &ett_its_VarLengthNumber,
31476 &ett_its_Ext1,
31477 &ett_its_Ext2,
31478 &ett_its_VerticalAcceleration,
31479 &ett_its_VehicleIdentification,
31480 &ett_its_VehicleLength,
31481 &ett_its_Velocity3dWithConfidence,
31482 &ett_its_VelocityCartesian,
31483 &ett_its_VelocityComponent,
31484 &ett_its_VelocityPolarWithZ,
31485 &ett_its_VruClusterInformation,
31486 &ett_its_VruExteriorLights,
31487 &ett_its_VruProfileAndSubprofile,
31488 &ett_its_Wgs84Angle,
31489 &ett_its_YawRate,
31491 /* --- Module ITS-ContainerV1 --- --- --- */
31493 &ett_itsv1_ReferencePosition,
31494 &ett_itsv1_DeltaReferencePosition,
31495 &ett_itsv1_Altitude,
31496 &ett_itsv1_PosConfidenceEllipse,
31497 &ett_itsv1_PathPoint,
31498 &ett_itsv1_PtActivation,
31499 &ett_itsv1_AccelerationControl,
31500 &ett_itsv1_CauseCode,
31501 &ett_itsv1_Curvature,
31502 &ett_itsv1_Heading,
31503 &ett_itsv1_ClosedLanes,
31504 &ett_itsv1_DrivingLaneStatus,
31505 &ett_itsv1_Speed,
31506 &ett_itsv1_LongitudinalAcceleration,
31507 &ett_itsv1_LateralAcceleration,
31508 &ett_itsv1_VerticalAcceleration,
31509 &ett_itsv1_ExteriorLights,
31510 &ett_itsv1_DangerousGoodsExtended,
31511 &ett_itsv1_SpecialTransportType,
31512 &ett_itsv1_LightBarSirenInUse,
31513 &ett_itsv1_PositionOfOccupants,
31514 &ett_itsv1_VehicleIdentification,
31515 &ett_itsv1_EnergyStorageType,
31516 &ett_itsv1_VehicleLength,
31517 &ett_itsv1_PathHistory,
31518 &ett_itsv1_EmergencyPriority,
31519 &ett_itsv1_SteeringWheelAngle,
31520 &ett_itsv1_YawRate,
31521 &ett_itsv1_ActionID,
31522 &ett_itsv1_ItineraryPath,
31523 &ett_itsv1_ProtectedCommunicationZone,
31524 &ett_itsv1_Traces,
31525 &ett_itsv1_PositionOfPillars,
31526 &ett_itsv1_RestrictedTypes,
31527 &ett_itsv1_EventHistory,
31528 &ett_itsv1_EventPoint,
31529 &ett_itsv1_ProtectedCommunicationZonesRSU,
31530 &ett_itsv1_CenDsrcTollingZone,
31532 /* --- Module AVIAEINumberingAndDataStructures --- --- --- */
31535 /* --- Module EfcDsrcApplication --- --- --- */
31537 &ett_dsrc_app_AxleWeightLimits,
31538 &ett_dsrc_app_DieselEmissionValues,
31539 &ett_dsrc_app_T_particulate,
31540 &ett_dsrc_app_EnvironmentalCharacteristics,
31541 &ett_dsrc_app_ExhaustEmissionValues,
31542 &ett_dsrc_app_PassengerCapacity,
31543 &ett_dsrc_app_Provider,
31544 &ett_dsrc_app_SoundLevel,
31545 &ett_dsrc_app_VehicleDimensions,
31546 &ett_dsrc_app_VehicleWeightLimits,
31548 /* --- Module DSRC --- --- --- */
31550 &ett_dsrc_RegionalExtension,
31551 &ett_dsrc_MapData,
31552 &ett_dsrc_T_MAPRegional,
31553 &ett_dsrc_RTCMcorrections,
31554 &ett_dsrc_SEQUENCE_SIZE_1_4_OF_RegionalExtension,
31555 &ett_dsrc_SPAT,
31556 &ett_dsrc_T_SPATRegional,
31557 &ett_dsrc_SignalRequestMessage,
31558 &ett_dsrc_T_SRMRegional,
31559 &ett_dsrc_SignalStatusMessage,
31560 &ett_dsrc_T_SSMRegional,
31561 &ett_dsrc_AdvisorySpeed,
31562 &ett_dsrc_T_AdvisorySpeedRegional,
31563 &ett_dsrc_AdvisorySpeedList,
31564 &ett_dsrc_AntennaOffsetSet,
31565 &ett_dsrc_ComputedLane,
31566 &ett_dsrc_T_offsetXaxis,
31567 &ett_dsrc_T_offsetYaxis,
31568 &ett_dsrc_T_ComputedLaneRegional,
31569 &ett_dsrc_ConnectsToList,
31570 &ett_dsrc_ConnectingLane,
31571 &ett_dsrc_Connection,
31572 &ett_dsrc_ConnectionManeuverAssist,
31573 &ett_dsrc_T_ConnectionManeuverAssistRegional,
31574 &ett_dsrc_DataParameters,
31575 &ett_dsrc_DDateTime,
31576 &ett_dsrc_EnabledLaneList,
31577 &ett_dsrc_FullPositionVector,
31578 &ett_dsrc_GenericLane,
31579 &ett_dsrc_T_GenericLaneRegional,
31580 &ett_dsrc_IntersectionAccessPoint,
31581 &ett_dsrc_IntersectionGeometry,
31582 &ett_dsrc_T_IntersectionGeometryRegional,
31583 &ett_dsrc_IntersectionGeometryList,
31584 &ett_dsrc_IntersectionReferenceID,
31585 &ett_dsrc_IntersectionState,
31586 &ett_dsrc_T_IntersectionStateRegional,
31587 &ett_dsrc_IntersectionStateList,
31588 &ett_dsrc_LaneAttributes,
31589 &ett_dsrc_LaneDataAttribute,
31590 &ett_dsrc_T_LaneDataAttributeRegional,
31591 &ett_dsrc_LaneDataAttributeList,
31592 &ett_dsrc_LaneList,
31593 &ett_dsrc_LaneSharing,
31594 &ett_dsrc_LaneTypeAttributes,
31595 &ett_dsrc_ManeuverAssistList,
31596 &ett_dsrc_MovementEvent,
31597 &ett_dsrc_T_MovementEventRegional,
31598 &ett_dsrc_MovementEventList,
31599 &ett_dsrc_MovementList,
31600 &ett_dsrc_MovementState,
31601 &ett_dsrc_T_MovementStateRegional,
31602 &ett_dsrc_NodeAttributeSetXY,
31603 &ett_dsrc_T_NodeAttributeSetXYRegional,
31604 &ett_dsrc_NodeAttributeXYList,
31605 &ett_dsrc_Node_LLmD_64b,
31606 &ett_dsrc_Node_XY_20b,
31607 &ett_dsrc_Node_XY_22b,
31608 &ett_dsrc_Node_XY_24b,
31609 &ett_dsrc_Node_XY_26b,
31610 &ett_dsrc_Node_XY_28b,
31611 &ett_dsrc_Node_XY_32b,
31612 &ett_dsrc_NodeListXY,
31613 &ett_dsrc_NodeOffsetPointXY,
31614 &ett_dsrc_NodeXY,
31615 &ett_dsrc_NodeSetXY,
31616 &ett_dsrc_OverlayLaneList,
31617 &ett_dsrc_PositionalAccuracy,
31618 &ett_dsrc_PositionConfidenceSet,
31619 &ett_dsrc_Position3D,
31620 &ett_dsrc_T_Position3DRegional,
31621 &ett_dsrc_PreemptPriorityList,
31622 &ett_dsrc_RegulatorySpeedLimit,
31623 &ett_dsrc_RequestorDescription,
31624 &ett_dsrc_T_RequestorDescriptionRegional,
31625 &ett_dsrc_RequestorPositionVector,
31626 &ett_dsrc_RequestorType,
31627 &ett_dsrc_RestrictionClassAssignment,
31628 &ett_dsrc_RestrictionClassList,
31629 &ett_dsrc_RestrictionUserType,
31630 &ett_dsrc_T_RestrictionUserTypeRegional,
31631 &ett_dsrc_RestrictionUserTypeList,
31632 &ett_dsrc_RoadLaneSetList,
31633 &ett_dsrc_RoadSegmentReferenceID,
31634 &ett_dsrc_RoadSegment,
31635 &ett_dsrc_T_RoadSegmentRegional,
31636 &ett_dsrc_RoadSegmentList,
31637 &ett_dsrc_RTCMheader,
31638 &ett_dsrc_RTCMmessageList,
31639 &ett_dsrc_SegmentAttributeXYList,
31640 &ett_dsrc_SignalControlZone,
31641 &ett_dsrc_SignalRequesterInfo,
31642 &ett_dsrc_SignalRequest,
31643 &ett_dsrc_T_SignalRequestRegional,
31644 &ett_dsrc_SignalRequestList,
31645 &ett_dsrc_SignalRequestPackage,
31646 &ett_dsrc_T_SignalRequestPackageRegional,
31647 &ett_dsrc_SignalStatus,
31648 &ett_dsrc_T_SignalStatusRegional,
31649 &ett_dsrc_SignalStatusList,
31650 &ett_dsrc_SignalStatusPackageList,
31651 &ett_dsrc_SignalStatusPackage,
31652 &ett_dsrc_T_SignalStatusPackageRegional,
31653 &ett_dsrc_SpeedandHeadingandThrottleConfidence,
31654 &ett_dsrc_SpeedLimitList,
31655 &ett_dsrc_TimeChangeDetails,
31656 &ett_dsrc_TransmissionAndSpeed,
31657 &ett_dsrc_VehicleID,
31658 &ett_dsrc_AllowedManeuvers,
31659 &ett_dsrc_GNSSstatus,
31660 &ett_dsrc_IntersectionStatusObject,
31661 &ett_dsrc_LaneAttributes_Barrier,
31662 &ett_dsrc_LaneAttributes_Bike,
31663 &ett_dsrc_LaneAttributes_Crosswalk,
31664 &ett_dsrc_LaneAttributes_Parking,
31665 &ett_dsrc_LaneAttributes_Sidewalk,
31666 &ett_dsrc_LaneAttributes_Striping,
31667 &ett_dsrc_LaneAttributes_TrackedVehicle,
31668 &ett_dsrc_LaneAttributes_Vehicle,
31669 &ett_dsrc_LaneDirection,
31670 &ett_dsrc_TransitVehicleStatus,
31672 /* --- Module AddGrpC --- --- --- */
31674 &ett_AddGrpC_ConnectionManeuverAssist_addGrpC,
31675 &ett_AddGrpC_ConnectionTrajectory_addGrpC,
31676 &ett_AddGrpC_IntersectionState_addGrpC,
31677 &ett_AddGrpC_LaneAttributes_addGrpC,
31678 &ett_AddGrpC_MapData_addGrpC,
31679 &ett_AddGrpC_MovementEvent_addGrpC,
31680 &ett_AddGrpC_NodeAttributeSet_addGrpC,
31681 &ett_AddGrpC_Position3D_addGrpC,
31682 &ett_AddGrpC_RestrictionUserType_addGrpC,
31683 &ett_AddGrpC_RequestorDescription_addGrpC,
31684 &ett_AddGrpC_SignalStatusPackage_addGrpC,
31685 &ett_AddGrpC_ItsStationPosition,
31686 &ett_AddGrpC_ItsStationPositionList,
31687 &ett_AddGrpC_Node,
31688 &ett_AddGrpC_NodeLink,
31689 &ett_AddGrpC_PrioritizationResponse,
31690 &ett_AddGrpC_PrioritizationResponseList,
31691 &ett_AddGrpC_SignalHeadLocation,
31692 &ett_AddGrpC_SignalHeadLocationList,
31694 /* --- Module REGION --- --- --- */
31697 /* --- Module GDD --- --- --- */
31699 &ett_gdd_GddStructure,
31700 &ett_gdd_Pictogram,
31701 &ett_gdd_Pictogram_serviceCategory,
31702 &ett_gdd_Pictogram_category,
31703 &ett_gdd_GddAttributes,
31704 &ett_gdd_GddAttributes_item,
31705 &ett_gdd_InternationalSign_applicablePeriod,
31706 &ett_gdd_T_year,
31707 &ett_gdd_T_month_day,
31708 &ett_gdd_T_hourMinutes,
31709 &ett_gdd_MonthDay,
31710 &ett_gdd_HoursMinutes,
31711 &ett_gdd_RPDT,
31712 &ett_gdd_DayOfWeek,
31713 &ett_gdd_InternationalSign_section,
31714 &ett_gdd_InternationalSign_applicableVehicleDimensions,
31715 &ett_gdd_Distance,
31716 &ett_gdd_Weight,
31717 &ett_gdd_InternationalSign_speedLimits,
31718 &ett_gdd_InternationalSign_destinationInformation,
31719 &ett_gdd_SEQUENCE_SIZE_1_8__OF_DestinationInformationIO,
31720 &ett_gdd_DestinationInformationIO,
31721 &ett_gdd_SEQUENCE_SIZE_1_4__OF_DestinationPlace,
31722 &ett_gdd_SEQUENCE_SIZE_1_4__OF_DestinationRoad,
31723 &ett_gdd_DestinationPlace,
31724 &ett_gdd_DestinationRoad,
31725 &ett_gdd_DistanceOrDuration,
31727 /* --- Module IVI --- --- --- */
31729 &ett_ivi_IviStructure,
31730 &ett_ivi_IviContainers,
31731 &ett_ivi_IviContainer,
31732 &ett_ivi_IviManagementContainer,
31733 &ett_ivi_GeographicLocationContainer,
31734 &ett_ivi_GlcParts,
31735 &ett_ivi_GlcPart,
31736 &ett_ivi_GeneralIviContainer,
31737 &ett_ivi_GicPart,
31738 &ett_ivi_RoadConfigurationContainer,
31739 &ett_ivi_RccPart,
31740 &ett_ivi_RoadSurfaceContainer,
31741 &ett_ivi_RscPart,
31742 &ett_ivi_TextContainer,
31743 &ett_ivi_TcPart,
31744 &ett_ivi_LayoutContainer,
31745 &ett_ivi_AutomatedVehicleContainer,
31746 &ett_ivi_AvcPart,
31747 &ett_ivi_MapLocationContainer,
31748 &ett_ivi_MlcParts,
31749 &ett_ivi_MlcPart,
31750 &ett_ivi_AbsolutePositions,
31751 &ett_ivi_AbsolutePositionsWAltitude,
31752 &ett_ivi_AutomatedVehicleRules,
31753 &ett_ivi_ConnectedDenms,
31754 &ett_ivi_DeltaPositions,
31755 &ett_ivi_DeltaReferencePositions,
31756 &ett_ivi_ConstraintTextLines1,
31757 &ett_ivi_ConstraintTextLines2,
31758 &ett_ivi_IviIdentificationNumbers,
31759 &ett_ivi_ISO14823Attributes,
31760 &ett_ivi_LaneConfiguration,
31761 &ett_ivi_LaneIds,
31762 &ett_ivi_LanePositions,
31763 &ett_ivi_LayoutComponents,
31764 &ett_ivi_PlatooningRules,
31765 &ett_ivi_RoadSignCodes,
31766 &ett_ivi_TextLines,
31767 &ett_ivi_TrailerCharacteristicsList,
31768 &ett_ivi_TrailerCharacteristicsFixValuesList,
31769 &ett_ivi_TrailerCharacteristicsRangesList,
31770 &ett_ivi_SaeAutomationLevels,
31771 &ett_ivi_VehicleCharacteristicsFixValuesList,
31772 &ett_ivi_VehicleCharacteristicsList,
31773 &ett_ivi_VehicleCharacteristicsRangesList,
31774 &ett_ivi_ValidityPeriods,
31775 &ett_ivi_ZoneIds,
31776 &ett_ivi_AbsolutePosition,
31777 &ett_ivi_AbsolutePositionWAltitude,
31778 &ett_ivi_AnyCatalogue,
31779 &ett_ivi_AutomatedVehicleRule,
31780 &ett_ivi_CompleteVehicleCharacteristics,
31781 &ett_ivi_ComputedSegment,
31782 &ett_ivi_DeltaPosition,
31783 &ett_ivi_ISO14823Attribute,
31784 &ett_ivi_ISO14823Code,
31785 &ett_ivi_T_icPictogramCode,
31786 &ett_ivi_T_serviceCategoryCode,
31787 &ett_ivi_T_pictogramCategoryCode,
31788 &ett_ivi_LaneInformation,
31789 &ett_ivi_LaneCharacteristics,
31790 &ett_ivi_LayoutComponent,
31791 &ett_ivi_LoadType,
31792 &ett_ivi_MapReference,
31793 &ett_ivi_PlatooningRule,
31794 &ett_ivi_PolygonalLine,
31795 &ett_ivi_RoadSurfaceDynamicCharacteristics,
31796 &ett_ivi_RoadSurfaceStaticCharacteristics,
31797 &ett_ivi_RSCode,
31798 &ett_ivi_T_code,
31799 &ett_ivi_Segment,
31800 &ett_ivi_Text,
31801 &ett_ivi_TractorCharacteristics,
31802 &ett_ivi_TrailerCharacteristics,
31803 &ett_ivi_VcCode,
31804 &ett_ivi_VehicleCharacteristicsFixValues,
31805 &ett_ivi_VehicleCharacteristicsRanges,
31806 &ett_ivi_T_limits,
31807 &ett_ivi_Zone,
31809 /* --- Module SPATEM-PDU-Descriptions --- --- --- */
31812 /* --- Module MAPEM-PDU-Descriptions --- --- --- */
31815 /* --- Module IVIM-PDU-Descriptions --- --- --- */
31818 /* --- Module SREM-PDU-Descriptions --- --- --- */
31821 /* --- Module SSEM-PDU-Descriptions --- --- --- */
31824 /* --- Module RTCMEM-PDU-Descriptions --- --- --- */
31827 /* --- Module CAMv1-PDU-Descriptions --- --- --- */
31829 &ett_camv1_CoopAwarenessV1,
31830 &ett_camv1_CamParameters,
31831 &ett_camv1_HighFrequencyContainer,
31832 &ett_camv1_LowFrequencyContainer,
31833 &ett_camv1_SpecialVehicleContainer,
31834 &ett_camv1_BasicContainer,
31835 &ett_camv1_BasicVehicleContainerHighFrequency,
31836 &ett_camv1_BasicVehicleContainerLowFrequency,
31837 &ett_camv1_PublicTransportContainer,
31838 &ett_camv1_SpecialTransportContainer,
31839 &ett_camv1_DangerousGoodsContainer,
31840 &ett_camv1_RoadWorksContainerBasic,
31841 &ett_camv1_RescueContainer,
31842 &ett_camv1_EmergencyContainer,
31843 &ett_camv1_SafetyCarContainer,
31844 &ett_camv1_RSUContainerHighFrequency,
31846 /* --- Module CAM-PDU-Descriptions --- --- --- */
31848 &ett_cam_CamPayload,
31849 &ett_cam_CamParameters,
31850 &ett_cam_HighFrequencyContainer,
31851 &ett_cam_LowFrequencyContainer,
31852 &ett_cam_SpecialVehicleContainer,
31853 &ett_cam_BasicVehicleContainerHighFrequency,
31854 &ett_cam_BasicVehicleContainerLowFrequency,
31855 &ett_cam_PublicTransportContainer,
31856 &ett_cam_SpecialTransportContainer,
31857 &ett_cam_DangerousGoodsContainer,
31858 &ett_cam_RoadWorksContainerBasic,
31859 &ett_cam_RescueContainer,
31860 &ett_cam_EmergencyContainer,
31861 &ett_cam_SafetyCarContainer,
31862 &ett_cam_RSUContainerHighFrequency,
31864 /* --- Module DENMv1-PDU-Descriptions --- --- --- */
31866 &ett_denmv1_DecentralizedEnvironmentalNotificationMessageV1,
31867 &ett_denmv1_ManagementContainer,
31868 &ett_denmv1_SituationContainer,
31869 &ett_denmv1_LocationContainer,
31870 &ett_denmv1_ImpactReductionContainer,
31871 &ett_denmv1_RoadWorksContainerExtended,
31872 &ett_denmv1_StationaryVehicleContainer,
31873 &ett_denmv1_AlacarteContainer,
31874 &ett_denmv1_ReferenceDenms,
31876 /* --- Module DENM-PDU-Description --- --- --- */
31878 &ett_denm_DenmPayload,
31879 &ett_denm_ManagementContainer,
31880 &ett_denm_SituationContainer,
31881 &ett_denm_LocationContainer,
31882 &ett_denm_ImpactReductionContainer,
31883 &ett_denm_RoadWorksContainerExtended,
31884 &ett_denm_StationaryVehicleContainer,
31885 &ett_denm_AlacarteContainer,
31887 /* --- Module TIS-TPG-Transactions-Descriptions --- --- --- */
31889 &ett_tistpg_TisTpgTransaction,
31890 &ett_tistpg_TisTpgDRM,
31891 &ett_tistpg_TisTpgDRM_Management,
31892 &ett_tistpg_TisTpgDRM_Situation,
31893 &ett_tistpg_TisTpgDRM_Location,
31894 &ett_tistpg_TisTpgSNM,
31895 &ett_tistpg_TisTpgSNM_Management,
31896 &ett_tistpg_TisTpgTRM,
31897 &ett_tistpg_TisTpgTRM_Management,
31898 &ett_tistpg_TisTpgTRM_Situation,
31899 &ett_tistpg_TisTpgTRM_Location,
31900 &ett_tistpg_TisTpgTCM,
31901 &ett_tistpg_TisTpgTCM_Management,
31902 &ett_tistpg_TisTpgTCM_Situation,
31903 &ett_tistpg_TisTpgTCM_Location,
31904 &ett_tistpg_TisTpgVDRM,
31905 &ett_tistpg_TisTpgVDRM_Management,
31906 &ett_tistpg_TisTpgVDPM,
31907 &ett_tistpg_TisTpgVDPM_Management,
31908 &ett_tistpg_VehicleSpecificData,
31909 &ett_tistpg_TisTpgEOFM,
31910 &ett_tistpg_TisTpgEOFM_Management,
31911 &ett_tistpg_PlacardTable,
31912 &ett_tistpg_TyreSetVariant,
31913 &ett_tistpg_PressureVariantsList,
31914 &ett_tistpg_PressureVariant,
31915 &ett_tistpg_TyreData,
31916 &ett_tistpg_T_currentTyrePressure,
31917 &ett_tistpg_T_tyreSidewallInformation,
31918 &ett_tistpg_T_currentInsideAirTemperature,
31919 &ett_tistpg_T_recommendedTyrePressure,
31920 &ett_tistpg_T_tin,
31921 &ett_tistpg_T_sensorState,
31922 &ett_tistpg_AppliedTyrePressure,
31923 &ett_tistpg_TpgStationData,
31924 &ett_tistpg_AppliedTyrePressures,
31925 &ett_tistpg_TpgNotifContainer,
31926 &ett_tistpg_TpgAutomation,
31927 &ett_tistpg_TisProfile,
31929 /* --- Module EVCSN-PDU-Descriptions --- --- --- */
31931 &ett_evcsn_EVChargingSpotNotificationPOIMessage,
31932 &ett_evcsn_ItsPOIHeader,
31933 &ett_evcsn_ItsEVCSNData,
31934 &ett_evcsn_SEQUENCE_SIZE_1_256_OF_ItsChargingStationData,
31935 &ett_evcsn_ItsChargingStationData,
31936 &ett_evcsn_ItsChargingSpots,
31937 &ett_evcsn_ItsChargingSpotDataElements,
31938 &ett_evcsn_ChargingSpotType,
31939 &ett_evcsn_ParkingPlacesData,
31940 &ett_evcsn_SpotAvailability,
31942 /* --- Module EV-RechargingSpotReservation-PDU-Descriptions --- --- --- */
31944 &ett_evrsr_EV_RSR_MessageBody,
31945 &ett_evrsr_PreReservationRequestMessage,
31946 &ett_evrsr_PreReservationResponseMessage,
31947 &ett_evrsr_ReservationRequestMessage,
31948 &ett_evrsr_ReservationResponseMessage,
31949 &ett_evrsr_CancellationRequestMessage,
31950 &ett_evrsr_CancellationResponseMessage,
31951 &ett_evrsr_UpdateRequestMessage,
31952 &ett_evrsr_UpdateResponseMessage,
31953 &ett_evrsr_Payment_ID,
31954 &ett_evrsr_RechargingType,
31955 &ett_evrsr_SupportedPaymentTypes,
31957 /* --- Module CPM-OriginatingStationContainers --- --- --- */
31959 &ett_cpm_OriginatingVehicleContainer,
31960 &ett_cpm_OriginatingRsuContainer,
31961 &ett_cpm_TrailerDataSet,
31963 /* --- Module CPM-PDU-Descriptionsv1 --- --- --- */
31965 &ett_cpmv1_CollectivePerceptionMessagev1,
31966 &ett_cpmv1_CpmParameters,
31967 &ett_cpmv1_CpmManagementContainer,
31968 &ett_cpmv1_StationDataContainer,
31969 &ett_cpmv1_OriginatingVehicleContainerV1,
31970 &ett_cpmv1_OriginatingRSUContainer,
31971 &ett_cpmv1_SensorInformationContainerv1,
31972 &ett_cpmv1_SensorInformationv1,
31973 &ett_cpmv1_PerceivedObjectContainerv1,
31974 &ett_cpmv1_PerceivedObjectv1,
31975 &ett_cpmv1_DetectionArea,
31976 &ett_cpmv1_VehicleSensor,
31977 &ett_cpmv1_VehicleSensorPropertyList,
31978 &ett_cpmv1_VehicleSensorProperties,
31979 &ett_cpmv1_AreaCircular,
31980 &ett_cpmv1_AreaEllipse,
31981 &ett_cpmv1_AreaRectangle,
31982 &ett_cpmv1_AreaPolygon,
31983 &ett_cpmv1_PolyPointList,
31984 &ett_cpmv1_AreaRadial,
31985 &ett_cpmv1_FreeSpaceAddendumContainer,
31986 &ett_cpmv1_FreeSpaceAddendum,
31987 &ett_cpmv1_FreeSpaceArea,
31988 &ett_cpmv1_ObjectDistanceWithConfidence,
31989 &ett_cpmv1_ObjectDimension,
31990 &ett_cpmv1_CartesianAngle,
31991 &ett_cpmv1_WGS84Angle,
31992 &ett_cpmv1_SpeedExtended,
31993 &ett_cpmv1_SensorIdList,
31994 &ett_cpmv1_TrailerDataContainer,
31995 &ett_cpmv1_TrailerData,
31996 &ett_cpmv1_LongitudinalLanePosition,
31997 &ett_cpmv1_MatchedPosition,
31998 &ett_cpmv1_PerceivedObjectContainerSegmentInfo,
31999 &ett_cpmv1_ObjectClassDescription,
32000 &ett_cpmv1_ObjectClass,
32001 &ett_cpmv1_T_class,
32002 &ett_cpmv1_VehicleSubclass,
32003 &ett_cpmv1_PersonSubclass,
32004 &ett_cpmv1_AnimalSubclass,
32005 &ett_cpmv1_OtherSubclass,
32006 &ett_cpmv1_OffsetPoint,
32007 &ett_cpmv1_NodeOffsetPointZ,
32009 /* --- Module CPM-PDU-Descriptions --- --- --- */
32011 &ett_cpm_CpmPayload,
32012 &ett_cpm_ManagementContainer,
32013 &ett_cpm_WrappedCpmContainer,
32014 &ett_cpm_WrappedCpmContainers,
32015 &ett_cpm_MessageRateRange,
32017 /* --- Module CPM-PerceivedObjectContainer --- --- --- */
32019 &ett_cpm_PerceivedObjectContainer,
32020 &ett_cpm_PerceivedObjects,
32022 /* --- Module CPM-PerceptionRegionContainer --- --- --- */
32024 &ett_cpm_PerceptionRegionContainer,
32025 &ett_cpm_PerceptionRegion,
32026 &ett_cpm_PerceivedObjectIds,
32028 /* --- Module CPM-SensorInformationContainer --- --- --- */
32030 &ett_cpm_SensorInformationContainer,
32031 &ett_cpm_SensorInformation,
32033 /* --- Module VAM-PDU-Descriptions --- --- --- */
32035 &ett_vam_VruAwareness,
32036 &ett_vam_VamParameters,
32037 &ett_vam_VruHighFrequencyContainer,
32038 &ett_vam_VruLowFrequencyContainer,
32039 &ett_vam_VruClusterInformationContainer,
32040 &ett_vam_VruClusterOperationContainer,
32041 &ett_vam_VruMotionPredictionContainer,
32043 /* --- Module IMZM-PDU-Descriptions --- --- --- */
32045 &ett_imzm_InterferenceManagementZoneMessage,
32046 &ett_imzm_ImzmParameters,
32047 &ett_imzm_ImzmContainer,
32050 static ei_register_info ei[] = {
32051 { &ei_its_no_sub_dis, { "its.no_subdissector", PI_PROTOCOL, PI_NOTE, "No subdissector found for this Message id/protocol version combination", EXPFILL }},
32054 expert_module_t* expert_its;
32056 proto_its = proto_register_protocol("Intelligent Transport Systems", "ITS", "its");
32058 proto_register_field_array(proto_its, hf_its, array_length(hf_its));
32060 proto_register_subtree_array(ett, array_length(ett));
32062 expert_its = expert_register_protocol(proto_its);
32064 expert_register_field_array(expert_its, ei, array_length(ei));
32066 its_handle = register_dissector("its", dissect_its_PDU, proto_its);
32068 // Register subdissector table
32069 its_version_subdissector_table = register_dissector_table("its.version", "ITS version", proto_its, FT_UINT8, BASE_DEC);
32070 its_msgid_subdissector_table = register_dissector_table("its.msg_id", "ITS message id", proto_its, FT_UINT32, BASE_DEC);
32071 regionid_subdissector_table = register_dissector_table("dsrc.regionid", "DSRC RegionId", proto_its, FT_UINT32, BASE_DEC);
32072 cpmcontainer_subdissector_table = register_dissector_table("cpm.container", "CPM Containers id", proto_its, FT_UINT32, BASE_DEC);
32073 cam_pt_activation_table = register_dissector_table("cam.ptat", "CAM PtActivationType", proto_its, FT_UINT32, BASE_DEC);
32075 proto_its_denm = proto_register_protocol_in_name_only("ITS message - DENM", "DENM", "its.message.denm", proto_its, FT_BYTES);
32076 proto_its_denmv1 = proto_register_protocol_in_name_only("ITS message - DENMv1", "DENMv1", "its.message.denmv1", proto_its, FT_BYTES);
32077 proto_its_cam = proto_register_protocol_in_name_only("ITS message - CAM", "CAM", "its.message.cam", proto_its, FT_BYTES);
32078 proto_its_camv1 = proto_register_protocol_in_name_only("ITS message - CAMv1", "CAMv1", "its.message.camv1", proto_its, FT_BYTES);
32079 proto_its_spatemv1 = proto_register_protocol_in_name_only("ITS message - SPATEMv1", "SPATEMv1", "its.message.spatemv1", proto_its, FT_BYTES);
32080 proto_its_spatem = proto_register_protocol_in_name_only("ITS message - SPATEM", "SPATEM", "its.message.spatem", proto_its, FT_BYTES);
32081 proto_its_mapemv1 = proto_register_protocol_in_name_only("ITS message - MAPEMv1", "MAPEMv1", "its.message.mapemv1", proto_its, FT_BYTES);
32082 proto_its_mapem = proto_register_protocol_in_name_only("ITS message - MAPEM", "MAPEM", "its.message.mapem", proto_its, FT_BYTES);
32083 proto_its_ivimv1 = proto_register_protocol_in_name_only("ITS message - IVIMv1", "IVIMv1", "its.message.ivimv1", proto_its, FT_BYTES);
32084 proto_its_ivim = proto_register_protocol_in_name_only("ITS message - IVIM", "IVIM", "its.message.ivim", proto_its, FT_BYTES);
32085 proto_its_evrsr = proto_register_protocol_in_name_only("ITS message - EVRSR", "EVRSR", "its.message.evrsr", proto_its, FT_BYTES);
32086 proto_its_srem = proto_register_protocol_in_name_only("ITS message - SREM", "SREM", "its.message.srem", proto_its, FT_BYTES);
32087 proto_its_ssem = proto_register_protocol_in_name_only("ITS message - SSEM", "SSEM", "its.message.ssem", proto_its, FT_BYTES);
32088 proto_its_rtcmemv1 = proto_register_protocol_in_name_only("ITS message - RTCMEMv1", "RTCMEMv1", "its.message.rtcmemv1", proto_its, FT_BYTES);
32089 proto_its_rtcmem = proto_register_protocol_in_name_only("ITS message - RTCMEM", "RTCMEM", "its.message.rtcmem", proto_its, FT_BYTES);
32090 proto_its_evcsn = proto_register_protocol_in_name_only("ITS message - EVCSN", "EVCSN", "its.message.evcsn", proto_its, FT_BYTES);
32091 proto_its_tistpg = proto_register_protocol_in_name_only("ITS message - TISTPG", "TISTPG", "its.message.tistpg", proto_its, FT_BYTES);
32092 proto_its_cpmv1 = proto_register_protocol_in_name_only("ITS message - CPMv1", "CPMvi", "its.message.cpmv1", proto_its, FT_BYTES);
32093 proto_its_cpm = proto_register_protocol_in_name_only("ITS message - CPM", "CPM", "its.message.cpm", proto_its, FT_BYTES);
32094 proto_its_vam = proto_register_protocol_in_name_only("ITS message - VAM", "VAM", "its.message.vam", proto_its, FT_BYTES);
32095 proto_its_imzm = proto_register_protocol_in_name_only("ITS message - IMZM", "IMZM", "its.message.imzm", proto_its, FT_BYTES);
32097 proto_addgrpc = proto_register_protocol_in_name_only("DSRC Addition Grp C (EU)", "ADDGRPC", "dsrc.addgrpc", proto_its, FT_BYTES);
32099 // Decode as
32100 static build_valid_func its_da_build_value[1] = {its_msgid_value};
32101 static decode_as_value_t its_da_values = {its_msgid_prompt, 1, its_da_build_value};
32102 static decode_as_t its_da = {"its", "its.msg_id", 1, 0, &its_da_values, NULL, NULL,
32103 decode_as_default_populate_list, decode_as_default_reset, decode_as_default_change, NULL};
32105 register_decode_as(&its_da);
32107 its_tap = register_tap("its");
32110 #define BTP_SUBDISS_SZ 2
32111 #define BTP_PORTS_SZ 13
32113 #define ITS_CAM_PROT_VER 2
32114 #define ITS_CAM_PROT_VERv1 1
32115 #define ITS_DENM_PROT_VER 2
32116 #define ITS_DENM_PROT_VERv1 1
32117 #define ITS_SPATEM_PROT_VERv1 1
32118 #define ITS_SPATEM_PROT_VER 2
32119 #define ITS_MAPEM_PROT_VERv1 1
32120 #define ITS_MAPEM_PROT_VER 2
32121 #define ITS_IVIM_PROT_VERv1 1
32122 #define ITS_IVIM_PROT_VER 2
32123 #define ITS_SREM_PROT_VER 2
32124 #define ITS_SSEM_PROT_VER 2
32125 #define ITS_RTCMEM_PROT_VERv1 1
32126 #define ITS_RTCMEM_PROT_VER 2
32127 #define ITS_TIS_TPG_PROT_VER 1
32128 #define ITS_CPM_PROT_VERv1 1
32129 #define ITS_CPM_PROT_VER 2
32130 #define ITS_VAM_PROT_VER 2
32131 #define ITS_IMZM_PROT_VER 2
32133 void proto_reg_handoff_its(void)
32135 static const char *subdissector[BTP_SUBDISS_SZ] = { "btpa.port", "btpb.port" };
32136 static const uint16_t ports[BTP_PORTS_SZ] = { ITS_WKP_DEN, ITS_WKP_CA, ITS_WKP_EVCSN, ITS_WKP_CHARGING, ITS_WKP_IVI, ITS_WKP_TPG, ITS_WKP_TLC_SSEM, ITS_WKP_GPC, ITS_WKP_TLC_SREM, ITS_WKP_RLT, ITS_WKP_TLM, ITS_WKP_CPS, ITS_WKP_VA };
32137 int sdIdx, pIdx;
32139 // Register well known ports to btp subdissector table (BTP A and B)
32140 for (sdIdx=0; sdIdx < BTP_SUBDISS_SZ; sdIdx++) {
32141 for (pIdx=0; pIdx < BTP_PORTS_SZ; pIdx++) {
32142 dissector_add_uint(subdissector[sdIdx], ports[pIdx], its_handle);
32146 // Enable decode as for its pdu's send via udp
32147 dissector_add_for_decode_as("udp.port", its_handle);
32149 dissector_add_uint("its.msg_id", (ITS_DENM_PROT_VER << 16) + ITS_DENM, create_dissector_handle(dissect_denm_DenmPayload_PDU, proto_its_denm ));
32150 dissector_add_uint("its.msg_id", (ITS_DENM_PROT_VERv1 << 16) + ITS_DENM, create_dissector_handle(dissect_denmv1_DecentralizedEnvironmentalNotificationMessageV1_PDU, proto_its_denmv1 ));
32151 dissector_add_uint("its.msg_id", (ITS_CAM_PROT_VER << 16) + ITS_CAM, create_dissector_handle( dissect_cam_CamPayload_PDU, proto_its_cam ));
32152 dissector_add_uint("its.msg_id", (ITS_CAM_PROT_VERv1 << 16) + ITS_CAM, create_dissector_handle( dissect_camv1_CoopAwarenessV1_PDU, proto_its_camv1));
32153 dissector_add_uint("its.msg_id", (ITS_SPATEM_PROT_VERv1 << 16) + ITS_SPATEM, create_dissector_handle( dissect_dsrc_SPAT_PDU, proto_its_spatemv1 ));
32154 dissector_add_uint("its.msg_id", (ITS_SPATEM_PROT_VER << 16) + ITS_SPATEM, create_dissector_handle( dissect_dsrc_SPAT_PDU, proto_its_spatem ));
32155 dissector_add_uint("its.msg_id", (ITS_MAPEM_PROT_VERv1 << 16) + ITS_MAPEM, create_dissector_handle( dissect_dsrc_MapData_PDU, proto_its_mapemv1 ));
32156 dissector_add_uint("its.msg_id", (ITS_MAPEM_PROT_VER << 16) + ITS_MAPEM, create_dissector_handle( dissect_dsrc_MapData_PDU, proto_its_mapem ));
32157 dissector_add_uint("its.msg_id", (ITS_IVIM_PROT_VERv1 << 16) + ITS_IVIM, create_dissector_handle( dissect_ivi_IviStructure_PDU, proto_its_ivimv1 ));
32158 dissector_add_uint("its.msg_id", (ITS_IVIM_PROT_VER << 16) + ITS_IVIM, create_dissector_handle( dissect_ivi_IviStructure_PDU, proto_its_ivim ));
32159 dissector_add_uint("its.msg_id", ITS_RFU1 , create_dissector_handle( dissect_evrsr_EV_RSR_MessageBody_PDU, proto_its_evrsr ));
32160 dissector_add_uint("its.msg_id", (ITS_SREM_PROT_VER << 16) + ITS_SREM, create_dissector_handle( dissect_dsrc_SignalRequestMessage_PDU, proto_its_srem ));
32161 dissector_add_uint("its.msg_id", (ITS_SSEM_PROT_VER << 16) + ITS_SSEM, create_dissector_handle( dissect_dsrc_SignalStatusMessage_PDU, proto_its_ssem ));
32162 dissector_add_uint("its.msg_id", (ITS_RTCMEM_PROT_VERv1 << 16) + ITS_RTCMEM, create_dissector_handle( dissect_dsrc_RTCMcorrections_PDU, proto_its_rtcmemv1));
32163 dissector_add_uint("its.msg_id", (ITS_RTCMEM_PROT_VER << 16) + ITS_RTCMEM, create_dissector_handle(dissect_dsrc_RTCMcorrections_PDU, proto_its_rtcmem));
32164 dissector_add_uint("its.msg_id", ITS_EVCSN, create_dissector_handle( dissect_evcsn_EVChargingSpotNotificationPOIMessage_PDU, proto_its_evcsn ));
32165 dissector_add_uint("its.msg_id", (ITS_TIS_TPG_PROT_VER << 16) + ITS_RFU2, create_dissector_handle( dissect_tistpg_TisTpgTransaction_PDU, proto_its_tistpg ));
32166 dissector_add_uint("its.msg_id", (ITS_CPM_PROT_VERv1 << 16) + ITS_CPM, create_dissector_handle(dissect_cpmv1_CollectivePerceptionMessagev1_PDU, proto_its_cpmv1));
32167 dissector_add_uint("its.msg_id", (ITS_CPM_PROT_VER << 16) + ITS_CPM, create_dissector_handle(dissect_cpm_CpmPayload_PDU, proto_its_cpm));
32168 dissector_add_uint("its.msg_id", (ITS_IMZM_PROT_VER << 16) + ITS_IMZM, create_dissector_handle(dissect_imzm_InterferenceManagementZoneMessage_PDU, proto_its_imzm));
32169 dissector_add_uint("its.msg_id", (ITS_VAM_PROT_VER << 16) + ITS_VAM, create_dissector_handle(dissect_vam_VruAwareness_PDU, proto_its_vam));
32171 /* Missing definitions: ITS_POI, ITS_SAEM */
32173 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_ConnectionManeuverAssist, create_dissector_handle(dissect_AddGrpC_ConnectionManeuverAssist_addGrpC_PDU, proto_addgrpc ));
32174 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_GenericLane, create_dissector_handle(dissect_AddGrpC_ConnectionTrajectory_addGrpC_PDU, proto_addgrpc ));
32175 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_NodeAttributeSetXY, create_dissector_handle(dissect_AddGrpC_NodeAttributeSet_addGrpC_PDU, proto_addgrpc ));
32176 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_IntersectionState, create_dissector_handle(dissect_AddGrpC_IntersectionState_addGrpC_PDU, proto_addgrpc ));
32177 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_MapData,create_dissector_handle(dissect_AddGrpC_MapData_addGrpC_PDU, proto_addgrpc ));
32178 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_Position3D, create_dissector_handle(dissect_AddGrpC_Position3D_addGrpC_PDU, proto_addgrpc ));
32179 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_RestrictionUserType, create_dissector_handle(dissect_AddGrpC_RestrictionUserType_addGrpC_PDU, proto_addgrpc ));
32180 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_SignalStatusPackage, create_dissector_handle(dissect_AddGrpC_SignalStatusPackage_addGrpC_PDU, proto_addgrpc ));
32181 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_LaneAttributes, create_dissector_handle(dissect_AddGrpC_LaneAttributes_addGrpC_PDU, proto_addgrpc ));
32182 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_MovementEvent, create_dissector_handle(dissect_AddGrpC_MovementEvent_addGrpC_PDU, proto_addgrpc ));
32183 dissector_add_uint("dsrc.regionid", (addGrpC<<16)+Reg_RequestorDescription, create_dissector_handle(dissect_AddGrpC_RequestorDescription_addGrpC_PDU, proto_addgrpc ));
32185 dissector_add_uint("ieee1609dot2.ssp", psid_den_basic_services, create_dissector_handle(dissect_denmssp_pdu, proto_its_denm));
32186 dissector_add_uint("ieee1609dot2.ssp", psid_ca_basic_services, create_dissector_handle(dissect_camssp_pdu, proto_its_cam));
32187 dissector_add_uint("geonw.ssp", psid_den_basic_services, create_dissector_handle(dissect_denmssp_pdu, proto_its_denm));
32188 dissector_add_uint("geonw.ssp", psid_ca_basic_services, create_dissector_handle(dissect_camssp_pdu, proto_its_cam));
32190 dissector_add_uint("cpm.container", 1, create_dissector_handle(dissect_cpm_OriginatingVehicleContainer_PDU, proto_its_cpm));
32191 dissector_add_uint("cpm.container", 2, create_dissector_handle(dissect_cpm_OriginatingRsuContainer_PDU, proto_its_cpm));
32192 dissector_add_uint("cpm.container", 3, create_dissector_handle(dissect_cpm_SensorInformationContainer_PDU, proto_its_cpm));
32193 dissector_add_uint("cpm.container", 4, create_dissector_handle(dissect_cpm_PerceptionRegionContainer_PDU, proto_its_cpm));
32194 dissector_add_uint("cpm.container", 5, create_dissector_handle(dissect_cpm_PerceivedObjectContainer_PDU, proto_its_cpm));
32198 * Editor modelines - https://www.wireshark.org/tools/modelines.html
32200 * Local variables:
32201 * c-basic-offset: 4
32202 * tab-width: 8
32203 * indent-tabs-mode: nil
32204 * End:
32206 * vi: set shiftwidth=4 tabstop=8 expandtab:
32207 * :indentSize=4:tabSize=8:noTabs=true: