Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-atn-cpdlc.c
blob65851a9aa940e5a5cde62d2552c756d9e08d6257
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-atn-cpdlc.c */
4 /* asn2wrs.py -u -q -L -p atn-cpdlc -c ./atn-cpdlc.cnf -s ./packet-atn-cpdlc-template -D . -O ../.. atn-cpdlc.asn */
6 /* packet-atn-cpdlc-template.c
7 * By Mathias Guettler <guettler@web.de>
8 * Copyright 2013
10 * Routines for ATN Cpdlcc protocol packet disassembly
12 * details see:
13 * https://en.wikipedia.org/wiki/CPDLC
14 * https://members.optusnet.com.au/~cjr/introduction.htm
16 * standards:
17 * We are dealing with ATN/CPDLC aka ICAO Doc 9705 Second Edition here
18 * (CPDLC may also be transmitted via ACARS/AOA aka "FANS-1/A ").
19 * https://www.icao.int/safety/acp/repository/_%20Doc9705_ed2_1999.pdf
21 * Wireshark - Network traffic analyzer
22 * By Gerald Combs <gerald@wireshark.org>
23 * Copyright 1998 Gerald Combs
25 * SPDX-License-Identifier: GPL-2.0-or-later
29 developper comments:
30 Which CPDLC messages are supported ?
31 Protected Mode CPDLC (AeQualifier 22) and Plain Old CPDLC (AeQualifier 2)
32 The dissector has been tested with ICAO doc9705 Edition2 compliant traffic.
35 #include "config.h"
37 #include <epan/packet.h>
38 #include <epan/exceptions.h>
39 #include <epan/conversation.h>
40 #include <wsutil/array.h>
41 #include "packet-ber.h"
42 #include "packet-per.h"
43 #include "packet-atn-ulcs.h"
45 #define ATN_CPDLC_PROTO "ICAO Doc9705 CPDLC"
47 void proto_register_atn_cpdlc(void);
48 void proto_reg_handoff_atn_cpdlc(void);
50 static const char *object_identifier_id;
52 /* IA5 charset (7-bit) for PER IA5 decoding */
53 static const char ia5alpha[] = {
54 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, \
55 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, \
56 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, \
57 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, \
58 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, \
59 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, \
60 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, \
61 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, \
62 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, '\0'
65 /* forward declarations */
66 static int dissect_GroundPDUs_PDU(
67 tvbuff_t *tvb _U_,
68 packet_info *pinfo _U_,
69 proto_tree *tree _U_,
70 void *data _U_);
71 static int dissect_AircraftPDUs_PDU(
72 tvbuff_t *tvb _U_,
73 packet_info *pinfo _U_,
74 proto_tree *tree _U_,
75 void *data _U_);
76 static int dissect_ProtectedGroundPDUs_PDU(
77 tvbuff_t *tvb _U_,
78 packet_info *pinfo _U_,
79 proto_tree *tree _U_,
80 void *data _U_);
81 static int dissect_ProtectedAircraftPDUs_PDU(
82 tvbuff_t *tvb _U_,
83 packet_info *pinfo _U_,
84 proto_tree *tree _U_,
85 void *data _U_);
87 static int hf_atn_cpdlc_GroundPDUs_PDU; /* GroundPDUs */
88 static int hf_atn_cpdlc_AircraftPDUs_PDU; /* AircraftPDUs */
89 static int hf_atn_cpdlc_ProtectedGroundPDUs_PDU; /* ProtectedGroundPDUs */
90 static int hf_atn_cpdlc_ProtectedAircraftPDUs_PDU; /* ProtectedAircraftPDUs */
91 static int hf_atn_cpdlc_abortUser; /* CPDLCUserAbortReason */
92 static int hf_atn_cpdlc_abortProvider; /* CPDLCProviderAbortReason */
93 static int hf_atn_cpdlc_startup; /* UplinkMessage */
94 static int hf_atn_cpdlc_groundpdus_send; /* ATCUplinkMessage */
95 static int hf_atn_cpdlc_forward; /* ATCForwardMessage */
96 static int hf_atn_cpdlc_forwardresponse; /* ATCForwardResponse */
97 static int hf_atn_cpdlc_noMessage; /* NULL */
98 static int hf_atn_cpdlc_aTCUplinkMessage; /* ATCUplinkMessage */
99 static int hf_atn_cpdlc_startdown; /* StartDownMessage */
100 static int hf_atn_cpdlc_aircraftpdus_send; /* ATCDownlinkMessage */
101 static int hf_atn_cpdlc_mode; /* Mode */
102 static int hf_atn_cpdlc_startDownlinkMessage; /* DownlinkMessage */
103 static int hf_atn_cpdlc_aTCDownlinkMessage; /* ATCDownlinkMessage */
104 static int hf_atn_cpdlc_pmcpdlcuserabortreason; /* PMCPDLCUserAbortReason */
105 static int hf_atn_cpdlc_pmcpdlcproviderabortreason; /* PMCPDLCProviderAbortReason */
106 static int hf_atn_cpdlc_protecteduplinkmessage; /* ProtectedUplinkMessage */
107 static int hf_atn_cpdlc_algorithmIdentifier; /* AlgorithmIdentifier */
108 static int hf_atn_cpdlc_protectedMessage; /* CPDLCMessage */
109 static int hf_atn_cpdlc_integrityCheck; /* BIT_STRING */
110 static int hf_atn_cpdlc_forwardHeader; /* ForwardHeader */
111 static int hf_atn_cpdlc_forwardMessage; /* ForwardMessage */
112 static int hf_atn_cpdlc_dateTime; /* DateTimeGroup */
113 static int hf_atn_cpdlc_aircraftID; /* AircraftFlightIdentification */
114 static int hf_atn_cpdlc_aircraftAddress; /* AircraftAddress */
115 static int hf_atn_cpdlc_upElementIDs; /* BIT_STRING */
116 static int hf_atn_cpdlc_downElementIDs; /* BIT_STRING */
117 static int hf_atn_cpdlc_protectedstartDownmessage; /* ProtectedStartDownMessage */
118 static int hf_atn_cpdlc_send; /* ProtectedDownlinkMessage */
119 static int hf_atn_cpdlc_protectedmode; /* ProtectedMode */
120 static int hf_atn_cpdlc_protecteddownlinkmessage; /* ProtectedDownlinkMessage */
121 static int hf_atn_cpdlc_header; /* ATCMessageHeader */
122 static int hf_atn_cpdlc_atcuplinkmessage_messagedata; /* ATCUplinkMessageData */
123 static int hf_atn_cpdlc_atcuplinkmessagedata_elementids; /* SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId */
124 static int hf_atn_cpdlc_atcuplinkmessagedata_elementids_item; /* ATCUplinkMsgElementId */
125 static int hf_atn_cpdlc_atcuplinkmessagedata_constraineddata; /* T_atcuplinkmessagedata_constraineddata */
126 static int hf_atn_cpdlc_routeClearanceData; /* SEQUENCE_SIZE_1_2_OF_RouteClearance */
127 static int hf_atn_cpdlc_routeClearanceData_item; /* RouteClearance */
128 static int hf_atn_cpdlc_atcdownlinkmessage_messagedata; /* ATCDownlinkMessageData */
129 static int hf_atn_cpdlc_atcdownlinkmessagedata_elementids; /* SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId */
130 static int hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item; /* ATCDownlinkMsgElementId */
131 static int hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata; /* T_atcdownlinkmessagedata_constraineddata */
132 static int hf_atn_cpdlc_messageIdNumber; /* MsgIdentificationNumber */
133 static int hf_atn_cpdlc_messageRefNumber; /* MsgReferenceNumber */
134 static int hf_atn_cpdlc_logicalAck; /* LogicalAck */
135 static int hf_atn_cpdlc_uM0NULL; /* NULL */
136 static int hf_atn_cpdlc_uM1NULL; /* NULL */
137 static int hf_atn_cpdlc_uM2NULL; /* NULL */
138 static int hf_atn_cpdlc_uM3NULL; /* NULL */
139 static int hf_atn_cpdlc_uM4NULL; /* NULL */
140 static int hf_atn_cpdlc_uM5NULL; /* NULL */
141 static int hf_atn_cpdlc_uM6Level; /* Level */
142 static int hf_atn_cpdlc_uM7Time; /* Time */
143 static int hf_atn_cpdlc_uM8Position; /* Position */
144 static int hf_atn_cpdlc_uM9Time; /* Time */
145 static int hf_atn_cpdlc_uM10Position; /* Position */
146 static int hf_atn_cpdlc_uM11Time; /* Time */
147 static int hf_atn_cpdlc_uM12Position; /* Position */
148 static int hf_atn_cpdlc_uM13TimeLevel; /* TimeLevel */
149 static int hf_atn_cpdlc_uM14PositionLevel; /* PositionLevel */
150 static int hf_atn_cpdlc_uM15TimeLevel; /* TimeLevel */
151 static int hf_atn_cpdlc_uM16PositionLevel; /* PositionLevel */
152 static int hf_atn_cpdlc_uM17TimeLevel; /* TimeLevel */
153 static int hf_atn_cpdlc_uM18PositionLevel; /* PositionLevel */
154 static int hf_atn_cpdlc_uM19Level; /* Level */
155 static int hf_atn_cpdlc_uM20Level; /* Level */
156 static int hf_atn_cpdlc_uM21TimeLevel; /* TimeLevel */
157 static int hf_atn_cpdlc_uM22PositionLevel; /* PositionLevel */
158 static int hf_atn_cpdlc_uM23Level; /* Level */
159 static int hf_atn_cpdlc_uM24TimeLevel; /* TimeLevel */
160 static int hf_atn_cpdlc_uM25PositionLevel; /* PositionLevel */
161 static int hf_atn_cpdlc_uM26LevelTime; /* LevelTime */
162 static int hf_atn_cpdlc_uM27LevelPosition; /* LevelPosition */
163 static int hf_atn_cpdlc_uM28LevelTime; /* LevelTime */
164 static int hf_atn_cpdlc_uM29LevelPosition; /* LevelPosition */
165 static int hf_atn_cpdlc_uM30LevelLevel; /* LevelLevel */
166 static int hf_atn_cpdlc_uM31LevelLevel; /* LevelLevel */
167 static int hf_atn_cpdlc_uM32LevelLevel; /* LevelLevel */
168 static int hf_atn_cpdlc_uM33NULL; /* NULL */
169 static int hf_atn_cpdlc_uM34Level; /* Level */
170 static int hf_atn_cpdlc_uM35Level; /* Level */
171 static int hf_atn_cpdlc_uM36Level; /* Level */
172 static int hf_atn_cpdlc_uM37Level; /* Level */
173 static int hf_atn_cpdlc_uM38Level; /* Level */
174 static int hf_atn_cpdlc_uM39Level; /* Level */
175 static int hf_atn_cpdlc_uM40NULL; /* NULL */
176 static int hf_atn_cpdlc_uM41NULL; /* NULL */
177 static int hf_atn_cpdlc_uM42PositionLevel; /* PositionLevel */
178 static int hf_atn_cpdlc_uM43PositionLevel; /* PositionLevel */
179 static int hf_atn_cpdlc_uM44PositionLevel; /* PositionLevel */
180 static int hf_atn_cpdlc_uM45PositionLevel; /* PositionLevel */
181 static int hf_atn_cpdlc_uM46PositionLevel; /* PositionLevel */
182 static int hf_atn_cpdlc_uM47PositionLevel; /* PositionLevel */
183 static int hf_atn_cpdlc_uM48PositionLevel; /* PositionLevel */
184 static int hf_atn_cpdlc_uM49PositionLevel; /* PositionLevel */
185 static int hf_atn_cpdlc_uM50PositionLevelLevel; /* PositionLevelLevel */
186 static int hf_atn_cpdlc_uM51PositionTime; /* PositionTime */
187 static int hf_atn_cpdlc_uM52PositionTime; /* PositionTime */
188 static int hf_atn_cpdlc_uM53PositionTime; /* PositionTime */
189 static int hf_atn_cpdlc_uM54PositionTimeTime; /* PositionTimeTime */
190 static int hf_atn_cpdlc_uM55PositionSpeed; /* PositionSpeed */
191 static int hf_atn_cpdlc_uM56PositionSpeed; /* PositionSpeed */
192 static int hf_atn_cpdlc_uM57PositionSpeed; /* PositionSpeed */
193 static int hf_atn_cpdlc_uM58PositionTimeLevel; /* PositionTimeLevel */
194 static int hf_atn_cpdlc_uM59PositionTimeLevel; /* PositionTimeLevel */
195 static int hf_atn_cpdlc_uM60PositionTimeLevel; /* PositionTimeLevel */
196 static int hf_atn_cpdlc_uM61PositionLevelSpeed; /* PositionLevelSpeed */
197 static int hf_atn_cpdlc_uM62TimePositionLevel; /* TimePositionLevel */
198 static int hf_atn_cpdlc_uM63TimePositionLevelSpeed; /* TimePositionLevelSpeed */
199 static int hf_atn_cpdlc_uM64DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */
200 static int hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection; /* PositionDistanceSpecifiedDirection */
201 static int hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection; /* TimeDistanceSpecifiedDirection */
202 static int hf_atn_cpdlc_uM67NULL; /* NULL */
203 static int hf_atn_cpdlc_uM68Position; /* Position */
204 static int hf_atn_cpdlc_uM69Time; /* Time */
205 static int hf_atn_cpdlc_uM70Position; /* Position */
206 static int hf_atn_cpdlc_uM71Time; /* Time */
207 static int hf_atn_cpdlc_uM72NULL; /* NULL */
208 static int hf_atn_cpdlc_uM73DepartureClearance; /* DepartureClearance */
209 static int hf_atn_cpdlc_uM74Position; /* Position */
210 static int hf_atn_cpdlc_uM75Position; /* Position */
211 static int hf_atn_cpdlc_uM76TimePosition; /* TimePosition */
212 static int hf_atn_cpdlc_uM77PositionPosition; /* PositionPosition */
213 static int hf_atn_cpdlc_uM78LevelPosition; /* LevelPosition */
214 static int hf_atn_cpdlc_uM79PositionRouteClearance; /* PositionRouteClearanceIndex */
215 static int hf_atn_cpdlc_uM80RouteClearance; /* RouteClearanceIndex */
216 static int hf_atn_cpdlc_uM81ProcedureName; /* ProcedureName */
217 static int hf_atn_cpdlc_uM82DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */
218 static int hf_atn_cpdlc_uM83PositionRouteClearance; /* PositionRouteClearanceIndex */
219 static int hf_atn_cpdlc_uM84PositionProcedureName; /* PositionProcedureName */
220 static int hf_atn_cpdlc_uM85RouteClearance; /* RouteClearanceIndex */
221 static int hf_atn_cpdlc_uM86PositionRouteClearance; /* PositionRouteClearanceIndex */
222 static int hf_atn_cpdlc_uM87Position; /* Position */
223 static int hf_atn_cpdlc_uM88PositionPosition; /* PositionPosition */
224 static int hf_atn_cpdlc_uM89TimePosition; /* TimePosition */
225 static int hf_atn_cpdlc_uM90LevelPosition; /* LevelPosition */
226 static int hf_atn_cpdlc_uM91HoldClearance; /* HoldClearance */
227 static int hf_atn_cpdlc_uM92PositionLevel; /* PositionLevel */
228 static int hf_atn_cpdlc_uM93Time; /* Time */
229 static int hf_atn_cpdlc_uM94DirectionDegrees; /* DirectionDegrees */
230 static int hf_atn_cpdlc_uM95DirectionDegrees; /* DirectionDegrees */
231 static int hf_atn_cpdlc_uM96NULL; /* NULL */
232 static int hf_atn_cpdlc_uM97PositionDegrees; /* PositionDegrees */
233 static int hf_atn_cpdlc_uM98DirectionDegrees; /* DirectionDegrees */
234 static int hf_atn_cpdlc_uM99ProcedureName; /* ProcedureName */
235 static int hf_atn_cpdlc_uM100TimeSpeed; /* TimeSpeed */
236 static int hf_atn_cpdlc_uM101PositionSpeed; /* PositionSpeed */
237 static int hf_atn_cpdlc_uM102LevelSpeed; /* LevelSpeed */
238 static int hf_atn_cpdlc_uM103TimeSpeedSpeed; /* TimeSpeedSpeed */
239 static int hf_atn_cpdlc_uM104PositionSpeedSpeed; /* PositionSpeedSpeed */
240 static int hf_atn_cpdlc_uM105LevelSpeedSpeed; /* LevelSpeedSpeed */
241 static int hf_atn_cpdlc_uM106Speed; /* Speed */
242 static int hf_atn_cpdlc_uM107NULL; /* NULL */
243 static int hf_atn_cpdlc_uM108Speed; /* Speed */
244 static int hf_atn_cpdlc_uM109Speed; /* Speed */
245 static int hf_atn_cpdlc_uM110SpeedSpeed; /* SpeedSpeed */
246 static int hf_atn_cpdlc_uM111Speed; /* Speed */
247 static int hf_atn_cpdlc_uM112Speed; /* Speed */
248 static int hf_atn_cpdlc_uM113Speed; /* Speed */
249 static int hf_atn_cpdlc_uM114Speed; /* Speed */
250 static int hf_atn_cpdlc_uM115Speed; /* Speed */
251 static int hf_atn_cpdlc_uM116NULL; /* NULL */
252 static int hf_atn_cpdlc_uM117UnitNameFrequency; /* UnitNameFrequency */
253 static int hf_atn_cpdlc_uM118PositionUnitNameFrequency; /* PositionUnitNameFrequency */
254 static int hf_atn_cpdlc_uM119TimeUnitNameFrequency; /* TimeUnitNameFrequency */
255 static int hf_atn_cpdlc_uM120UnitNameFrequency; /* UnitNameFrequency */
256 static int hf_atn_cpdlc_uM121PositionUnitNameFrequency; /* PositionUnitNameFrequency */
257 static int hf_atn_cpdlc_uM122TimeUnitNameFrequency; /* TimeUnitNameFrequency */
258 static int hf_atn_cpdlc_uM123Code; /* Code */
259 static int hf_atn_cpdlc_uM124NULL; /* NULL */
260 static int hf_atn_cpdlc_uM125NULL; /* NULL */
261 static int hf_atn_cpdlc_uM126NULL; /* NULL */
262 static int hf_atn_cpdlc_uM127NULL; /* NULL */
263 static int hf_atn_cpdlc_uM128Level; /* Level */
264 static int hf_atn_cpdlc_uM129Level; /* Level */
265 static int hf_atn_cpdlc_uM130Position; /* Position */
266 static int hf_atn_cpdlc_uM131NULL; /* NULL */
267 static int hf_atn_cpdlc_uM132NULL; /* NULL */
268 static int hf_atn_cpdlc_uM133NULL; /* NULL */
269 static int hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType; /* SpeedTypeSpeedTypeSpeedType */
270 static int hf_atn_cpdlc_uM135NULL; /* NULL */
271 static int hf_atn_cpdlc_uM136NULL; /* NULL */
272 static int hf_atn_cpdlc_uM137NULL; /* NULL */
273 static int hf_atn_cpdlc_uM138NULL; /* NULL */
274 static int hf_atn_cpdlc_uM139NULL; /* NULL */
275 static int hf_atn_cpdlc_uM140NULL; /* NULL */
276 static int hf_atn_cpdlc_uM141NULL; /* NULL */
277 static int hf_atn_cpdlc_uM142NULL; /* NULL */
278 static int hf_atn_cpdlc_uM143NULL; /* NULL */
279 static int hf_atn_cpdlc_uM144NULL; /* NULL */
280 static int hf_atn_cpdlc_uM145NULL; /* NULL */
281 static int hf_atn_cpdlc_uM146NULL; /* NULL */
282 static int hf_atn_cpdlc_uM147NULL; /* NULL */
283 static int hf_atn_cpdlc_uM148Level; /* Level */
284 static int hf_atn_cpdlc_uM149LevelPosition; /* LevelPosition */
285 static int hf_atn_cpdlc_uM150LevelTime; /* LevelTime */
286 static int hf_atn_cpdlc_uM151Speed; /* Speed */
287 static int hf_atn_cpdlc_uM152DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */
288 static int hf_atn_cpdlc_uM153Altimeter; /* Altimeter */
289 static int hf_atn_cpdlc_uM154NULL; /* NULL */
290 static int hf_atn_cpdlc_uM155Position; /* Position */
291 static int hf_atn_cpdlc_uM156NULL; /* NULL */
292 static int hf_atn_cpdlc_uM157Frequency; /* Frequency */
293 static int hf_atn_cpdlc_uM158AtisCode; /* ATISCode */
294 static int hf_atn_cpdlc_uM159ErrorInformation; /* ErrorInformation */
295 static int hf_atn_cpdlc_uM160Facility; /* Facility */
296 static int hf_atn_cpdlc_uM161NULL; /* NULL */
297 static int hf_atn_cpdlc_uM162NULL; /* NULL */
298 static int hf_atn_cpdlc_uM163FacilityDesignation; /* FacilityDesignation */
299 static int hf_atn_cpdlc_uM164NULL; /* NULL */
300 static int hf_atn_cpdlc_uM165NULL; /* NULL */
301 static int hf_atn_cpdlc_uM166TrafficType; /* TrafficType */
302 static int hf_atn_cpdlc_uM167NULL; /* NULL */
303 static int hf_atn_cpdlc_uM168NULL; /* NULL */
304 static int hf_atn_cpdlc_uM169FreeText; /* FreeText */
305 static int hf_atn_cpdlc_uM170FreeText; /* FreeText */
306 static int hf_atn_cpdlc_uM171VerticalRate; /* VerticalRate */
307 static int hf_atn_cpdlc_uM172VerticalRate; /* VerticalRate */
308 static int hf_atn_cpdlc_uM173VerticalRate; /* VerticalRate */
309 static int hf_atn_cpdlc_uM174VerticalRate; /* VerticalRate */
310 static int hf_atn_cpdlc_uM175Level; /* Level */
311 static int hf_atn_cpdlc_uM176NULL; /* NULL */
312 static int hf_atn_cpdlc_uM177NULL; /* NULL */
313 static int hf_atn_cpdlc_uM178NULL; /* NULL */
314 static int hf_atn_cpdlc_uM179NULL; /* NULL */
315 static int hf_atn_cpdlc_uM180LevelLevel; /* LevelLevel */
316 static int hf_atn_cpdlc_uM181ToFromPosition; /* ToFromPosition */
317 static int hf_atn_cpdlc_uM182NULL; /* NULL */
318 static int hf_atn_cpdlc_uM183FreeText; /* FreeText */
319 static int hf_atn_cpdlc_uM184TimeToFromPosition; /* TimeToFromPosition */
320 static int hf_atn_cpdlc_uM185PositionLevel; /* PositionLevel */
321 static int hf_atn_cpdlc_uM186PositionLevel; /* PositionLevel */
322 static int hf_atn_cpdlc_uM187FreeText; /* FreeText */
323 static int hf_atn_cpdlc_uM188PositionSpeed; /* PositionSpeed */
324 static int hf_atn_cpdlc_uM189Speed; /* Speed */
325 static int hf_atn_cpdlc_uM190Degrees; /* Degrees */
326 static int hf_atn_cpdlc_uM191NULL; /* NULL */
327 static int hf_atn_cpdlc_uM192LevelTime; /* LevelTime */
328 static int hf_atn_cpdlc_uM193NULL; /* NULL */
329 static int hf_atn_cpdlc_uM194FreeText; /* FreeText */
330 static int hf_atn_cpdlc_uM195FreeText; /* FreeText */
331 static int hf_atn_cpdlc_uM196FreeText; /* FreeText */
332 static int hf_atn_cpdlc_uM197FreeText; /* FreeText */
333 static int hf_atn_cpdlc_uM198FreeText; /* FreeText */
334 static int hf_atn_cpdlc_uM199FreeText; /* FreeText */
335 static int hf_atn_cpdlc_uM200NULL; /* NULL */
336 static int hf_atn_cpdlc_uM201NULL; /* NULL */
337 static int hf_atn_cpdlc_uM202NULL; /* NULL */
338 static int hf_atn_cpdlc_uM203FreeText; /* FreeText */
339 static int hf_atn_cpdlc_uM204FreeText; /* FreeText */
340 static int hf_atn_cpdlc_uM205FreeText; /* FreeText */
341 static int hf_atn_cpdlc_uM206FreeText; /* FreeText */
342 static int hf_atn_cpdlc_uM207FreeText; /* FreeText */
343 static int hf_atn_cpdlc_uM208FreeText; /* FreeText */
344 static int hf_atn_cpdlc_uM209LevelPosition; /* LevelPosition */
345 static int hf_atn_cpdlc_uM210Position; /* Position */
346 static int hf_atn_cpdlc_uM211NULL; /* NULL */
347 static int hf_atn_cpdlc_uM212FacilityDesignationATISCode; /* FacilityDesignationATISCode */
348 static int hf_atn_cpdlc_uM213FacilityDesignationAltimeter; /* FacilityDesignationAltimeter */
349 static int hf_atn_cpdlc_uM214RunwayRVR; /* RunwayRVR */
350 static int hf_atn_cpdlc_uM215DirectionDegrees; /* DirectionDegrees */
351 static int hf_atn_cpdlc_uM216NULL; /* NULL */
352 static int hf_atn_cpdlc_uM217NULL; /* NULL */
353 static int hf_atn_cpdlc_uM218NULL; /* NULL */
354 static int hf_atn_cpdlc_uM219Level; /* Level */
355 static int hf_atn_cpdlc_uM220Level; /* Level */
356 static int hf_atn_cpdlc_uM221Degrees; /* Degrees */
357 static int hf_atn_cpdlc_uM222NULL; /* NULL */
358 static int hf_atn_cpdlc_uM223NULL; /* NULL */
359 static int hf_atn_cpdlc_uM224NULL; /* NULL */
360 static int hf_atn_cpdlc_uM225NULL; /* NULL */
361 static int hf_atn_cpdlc_uM226Time; /* Time */
362 static int hf_atn_cpdlc_uM227NULL; /* NULL */
363 static int hf_atn_cpdlc_uM228Position; /* Position */
364 static int hf_atn_cpdlc_uM229NULL; /* NULL */
365 static int hf_atn_cpdlc_uM230NULL; /* NULL */
366 static int hf_atn_cpdlc_uM231NULL; /* NULL */
367 static int hf_atn_cpdlc_uM232NULL; /* NULL */
368 static int hf_atn_cpdlc_uM233NULL; /* NULL */
369 static int hf_atn_cpdlc_uM234NULL; /* NULL */
370 static int hf_atn_cpdlc_uM235NULL; /* NULL */
371 static int hf_atn_cpdlc_uM236NULL; /* NULL */
372 static int hf_atn_cpdlc_uM237NULL; /* NULL */
373 static int hf_atn_cpdlc_dM0NULL; /* NULL */
374 static int hf_atn_cpdlc_dM1NULL; /* NULL */
375 static int hf_atn_cpdlc_dM2NULL; /* NULL */
376 static int hf_atn_cpdlc_dM3NULL; /* NULL */
377 static int hf_atn_cpdlc_dM4NULL; /* NULL */
378 static int hf_atn_cpdlc_dM5NULL; /* NULL */
379 static int hf_atn_cpdlc_dM6Level; /* Level */
380 static int hf_atn_cpdlc_dM7LevelLevel; /* LevelLevel */
381 static int hf_atn_cpdlc_dM8Level; /* Level */
382 static int hf_atn_cpdlc_dM9Level; /* Level */
383 static int hf_atn_cpdlc_dM10Level; /* Level */
384 static int hf_atn_cpdlc_dM11PositionLevel; /* PositionLevel */
385 static int hf_atn_cpdlc_dM12PositionLevel; /* PositionLevel */
386 static int hf_atn_cpdlc_dM13TimeLevel; /* TimeLevel */
387 static int hf_atn_cpdlc_dM14TimeLevel; /* TimeLevel */
388 static int hf_atn_cpdlc_dM15DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */
389 static int hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection; /* PositionDistanceSpecifiedDirection */
390 static int hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection; /* TimeDistanceSpecifiedDirection */
391 static int hf_atn_cpdlc_dM18Speed; /* Speed */
392 static int hf_atn_cpdlc_dM19SpeedSpeed; /* SpeedSpeed */
393 static int hf_atn_cpdlc_dM20NULL; /* NULL */
394 static int hf_atn_cpdlc_dM21Frequency; /* Frequency */
395 static int hf_atn_cpdlc_dM22Position; /* Position */
396 static int hf_atn_cpdlc_dM23ProcedureName; /* ProcedureName */
397 static int hf_atn_cpdlc_dM24RouteClearance; /* RouteClearanceIndex */
398 static int hf_atn_cpdlc_dM25ClearanceType; /* ClearanceType */
399 static int hf_atn_cpdlc_dM26PositionRouteClearance; /* PositionRouteClearanceIndex */
400 static int hf_atn_cpdlc_dM27DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */
401 static int hf_atn_cpdlc_dM28Level; /* Level */
402 static int hf_atn_cpdlc_dM29Level; /* Level */
403 static int hf_atn_cpdlc_dM30Level; /* Level */
404 static int hf_atn_cpdlc_dM31Position; /* Position */
405 static int hf_atn_cpdlc_dM32Level; /* Level */
406 static int hf_atn_cpdlc_dM33Position; /* Position */
407 static int hf_atn_cpdlc_dM34Speed; /* Speed */
408 static int hf_atn_cpdlc_dM35Degrees; /* Degrees */
409 static int hf_atn_cpdlc_dM36Degrees; /* Degrees */
410 static int hf_atn_cpdlc_dM37Level; /* Level */
411 static int hf_atn_cpdlc_dM38Level; /* Level */
412 static int hf_atn_cpdlc_dM39Speed; /* Speed */
413 static int hf_atn_cpdlc_dM40RouteClearance; /* RouteClearanceIndex */
414 static int hf_atn_cpdlc_dM41NULL; /* NULL */
415 static int hf_atn_cpdlc_dM42Position; /* Position */
416 static int hf_atn_cpdlc_dM43Time; /* Time */
417 static int hf_atn_cpdlc_dM44Position; /* Position */
418 static int hf_atn_cpdlc_dM45Position; /* Position */
419 static int hf_atn_cpdlc_dM46Time; /* Time */
420 static int hf_atn_cpdlc_dM47Code; /* Code */
421 static int hf_atn_cpdlc_dM48PositionReport; /* PositionReport */
422 static int hf_atn_cpdlc_dM49Speed; /* Speed */
423 static int hf_atn_cpdlc_dM50SpeedSpeed; /* SpeedSpeed */
424 static int hf_atn_cpdlc_dM51NULL; /* NULL */
425 static int hf_atn_cpdlc_dM52NULL; /* NULL */
426 static int hf_atn_cpdlc_dM53NULL; /* NULL */
427 static int hf_atn_cpdlc_dM54Level; /* Level */
428 static int hf_atn_cpdlc_dM55NULL; /* NULL */
429 static int hf_atn_cpdlc_dM56NULL; /* NULL */
430 static int hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard; /* RemainingFuelPersonsOnBoard */
431 static int hf_atn_cpdlc_dM58NULL; /* NULL */
432 static int hf_atn_cpdlc_dM59PositionRouteClearance; /* PositionRouteClearanceIndex */
433 static int hf_atn_cpdlc_dM60DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */
434 static int hf_atn_cpdlc_dM61Level; /* Level */
435 static int hf_atn_cpdlc_dM62ErrorInformation; /* ErrorInformation */
436 static int hf_atn_cpdlc_dM63NULL; /* NULL */
437 static int hf_atn_cpdlc_dM64FacilityDesignation; /* FacilityDesignation */
438 static int hf_atn_cpdlc_dM65NULL; /* NULL */
439 static int hf_atn_cpdlc_dM66NULL; /* NULL */
440 static int hf_atn_cpdlc_dM67FreeText; /* FreeText */
441 static int hf_atn_cpdlc_dM68FreeText; /* FreeText */
442 static int hf_atn_cpdlc_dM69NULL; /* NULL */
443 static int hf_atn_cpdlc_dM70Degrees; /* Degrees */
444 static int hf_atn_cpdlc_dM71Degrees; /* Degrees */
445 static int hf_atn_cpdlc_dM72Level; /* Level */
446 static int hf_atn_cpdlc_dM73Versionnumber; /* VersionNumber */
447 static int hf_atn_cpdlc_dM74NULL; /* NULL */
448 static int hf_atn_cpdlc_dM75NULL; /* NULL */
449 static int hf_atn_cpdlc_dM76LevelLevel; /* LevelLevel */
450 static int hf_atn_cpdlc_dM77LevelLevel; /* LevelLevel */
451 static int hf_atn_cpdlc_dM78TimeDistanceToFromPosition; /* TimeDistanceToFromPosition */
452 static int hf_atn_cpdlc_dM79AtisCode; /* ATISCode */
453 static int hf_atn_cpdlc_dM80DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */
454 static int hf_atn_cpdlc_dM81LevelTime; /* LevelTime */
455 static int hf_atn_cpdlc_dM82Level; /* Level */
456 static int hf_atn_cpdlc_dM83SpeedTime; /* SpeedTime */
457 static int hf_atn_cpdlc_dM84Speed; /* Speed */
458 static int hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime; /* DistanceSpecifiedDirectionTime */
459 static int hf_atn_cpdlc_dM86DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */
460 static int hf_atn_cpdlc_dM87Level; /* Level */
461 static int hf_atn_cpdlc_dM88Level; /* Level */
462 static int hf_atn_cpdlc_dM89UnitnameFrequency; /* UnitNameFrequency */
463 static int hf_atn_cpdlc_dM90FreeText; /* FreeText */
464 static int hf_atn_cpdlc_dM91FreeText; /* FreeText */
465 static int hf_atn_cpdlc_dM92FreeText; /* FreeText */
466 static int hf_atn_cpdlc_dM93FreeText; /* FreeText */
467 static int hf_atn_cpdlc_dM94FreeText; /* FreeText */
468 static int hf_atn_cpdlc_dM95FreeText; /* FreeText */
469 static int hf_atn_cpdlc_dM96FreeText; /* FreeText */
470 static int hf_atn_cpdlc_dM97FreeText; /* FreeText */
471 static int hf_atn_cpdlc_dM98FreeText; /* FreeText */
472 static int hf_atn_cpdlc_dM99NULL; /* NULL */
473 static int hf_atn_cpdlc_dM100NULL; /* NULL */
474 static int hf_atn_cpdlc_dM101NULL; /* NULL */
475 static int hf_atn_cpdlc_dM102NULL; /* NULL */
476 static int hf_atn_cpdlc_dM103NULL; /* NULL */
477 static int hf_atn_cpdlc_dM104PositionTime; /* PositionTime */
478 static int hf_atn_cpdlc_dM105Airport; /* Airport */
479 static int hf_atn_cpdlc_dM106Level; /* Level */
480 static int hf_atn_cpdlc_dM107NULL; /* NULL */
481 static int hf_atn_cpdlc_dM108NULL; /* NULL */
482 static int hf_atn_cpdlc_dM109Time; /* Time */
483 static int hf_atn_cpdlc_dM110Position; /* Position */
484 static int hf_atn_cpdlc_dM111TimePosition; /* TimePosition */
485 static int hf_atn_cpdlc_dM112NULL; /* NULL */
486 static int hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed; /* SpeedTypeSpeedTypeSpeedTypeSpeed */
487 static int hf_atn_cpdlc_altimeterEnglish; /* AltimeterEnglish */
488 static int hf_atn_cpdlc_altimeterMetric; /* AltimeterMetric */
489 static int hf_atn_cpdlc_position; /* Position */
490 static int hf_atn_cpdlc_aTWDistance; /* ATWDistance */
491 static int hf_atn_cpdlc_speed; /* Speed */
492 static int hf_atn_cpdlc_aTWLevels; /* ATWLevelSequence */
493 static int hf_atn_cpdlc_atw; /* ATWLevelTolerance */
494 static int hf_atn_cpdlc_level; /* Level */
495 static int hf_atn_cpdlc_ATWLevelSequence_item; /* ATWLevel */
496 static int hf_atn_cpdlc_atwDistanceTolerance; /* ATWDistanceTolerance */
497 static int hf_atn_cpdlc_distance; /* Distance */
498 static int hf_atn_cpdlc_Code_item; /* CodeOctalDigit */
499 static int hf_atn_cpdlc_time; /* Time */
500 static int hf_atn_cpdlc_timeTolerance; /* TimeTolerance */
501 static int hf_atn_cpdlc_year; /* Year */
502 static int hf_atn_cpdlc_month; /* Month */
503 static int hf_atn_cpdlc_day; /* Day */
504 static int hf_atn_cpdlc_date; /* Date */
505 static int hf_atn_cpdlc_timehhmmss; /* Timehhmmss */
506 static int hf_atn_cpdlc_degreesMagnetic; /* DegreesMagnetic */
507 static int hf_atn_cpdlc_degreesTrue; /* DegreesTrue */
508 static int hf_atn_cpdlc_aircraftFlightIdentification; /* AircraftFlightIdentification */
509 static int hf_atn_cpdlc_clearanceLimit; /* Position */
510 static int hf_atn_cpdlc_flightInformation; /* FlightInformation */
511 static int hf_atn_cpdlc_furtherInstructions; /* FurtherInstructions */
512 static int hf_atn_cpdlc_direction; /* Direction */
513 static int hf_atn_cpdlc_degrees; /* Degrees */
514 static int hf_atn_cpdlc_distanceNm; /* DistanceNm */
515 static int hf_atn_cpdlc_distanceKm; /* DistanceKm */
516 static int hf_atn_cpdlc_distanceSpecifiedNm; /* DistanceSpecifiedNm */
517 static int hf_atn_cpdlc_distanceSpecifiedKm; /* DistanceSpecifiedKm */
518 static int hf_atn_cpdlc_distanceSpecified; /* DistanceSpecified */
519 static int hf_atn_cpdlc_distanceSpecifiedDirection; /* DistanceSpecifiedDirection */
520 static int hf_atn_cpdlc_noFacility; /* NULL */
521 static int hf_atn_cpdlc_facilityDesignation; /* FacilityDesignation */
522 static int hf_atn_cpdlc_altimeter; /* Altimeter */
523 static int hf_atn_cpdlc_aTISCode; /* ATISCode */
524 static int hf_atn_cpdlc_fixname_name; /* Fix */
525 static int hf_atn_cpdlc_latlon; /* LatitudeLongitude */
526 static int hf_atn_cpdlc_routeOfFlight; /* RouteInformation */
527 static int hf_atn_cpdlc_levelsOfFlight; /* LevelsOfFlight */
528 static int hf_atn_cpdlc_routeAndLevels; /* RouteAndLevels */
529 static int hf_atn_cpdlc_frequencyhf; /* Frequencyhf */
530 static int hf_atn_cpdlc_frequencyvhf; /* Frequencyvhf */
531 static int hf_atn_cpdlc_frequencyuhf; /* Frequencyuhf */
532 static int hf_atn_cpdlc_frequencysatchannel; /* Frequencysatchannel */
533 static int hf_atn_cpdlc_code; /* Code */
534 static int hf_atn_cpdlc_frequencyDeparture; /* UnitNameFrequency */
535 static int hf_atn_cpdlc_clearanceExpiryTime; /* Time */
536 static int hf_atn_cpdlc_airportDeparture; /* Airport */
537 static int hf_atn_cpdlc_airportDestination; /* Airport */
538 static int hf_atn_cpdlc_timeDeparture; /* TimeDeparture */
539 static int hf_atn_cpdlc_runwayDeparture; /* Runway */
540 static int hf_atn_cpdlc_revisionNumber; /* RevisionNumber */
541 static int hf_atn_cpdlc_holdatwaypointspeedlow; /* Speed */
542 static int hf_atn_cpdlc_aTWlevel; /* ATWLevel */
543 static int hf_atn_cpdlc_holdatwaypointspeedhigh; /* Speed */
544 static int hf_atn_cpdlc_eFCtime; /* Time */
545 static int hf_atn_cpdlc_legtype; /* LegType */
546 static int hf_atn_cpdlc_legType; /* LegType */
547 static int hf_atn_cpdlc_fromSelection; /* InterceptCourseFromSelection */
548 static int hf_atn_cpdlc_publishedIdentifier; /* PublishedIdentifier */
549 static int hf_atn_cpdlc_latitudeLongitude; /* LatitudeLongitude */
550 static int hf_atn_cpdlc_placeBearingPlaceBearing; /* PlaceBearingPlaceBearing */
551 static int hf_atn_cpdlc_placeBearingDistance; /* PlaceBearingDistance */
552 static int hf_atn_cpdlc_latitudeType; /* LatitudeType */
553 static int hf_atn_cpdlc_latitudeDirection; /* LatitudeDirection */
554 static int hf_atn_cpdlc_latitudeWholeDegrees; /* LatitudeWholeDegrees */
555 static int hf_atn_cpdlc_minutesLatLon; /* MinutesLatLon */
556 static int hf_atn_cpdlc_latlonWholeMinutes; /* LatLonWholeMinutes */
557 static int hf_atn_cpdlc_secondsLatLon; /* SecondsLatLon */
558 static int hf_atn_cpdlc_latitude; /* Latitude */
559 static int hf_atn_cpdlc_longitude; /* Longitude */
560 static int hf_atn_cpdlc_latitudeDegrees; /* LatitudeDegrees */
561 static int hf_atn_cpdlc_latitudeDegreesMinutes; /* LatitudeDegreesMinutes */
562 static int hf_atn_cpdlc_latitudeDMS; /* LatitudeDegreesMinutesSeconds */
563 static int hf_atn_cpdlc_latitudeReportingPoints; /* LatitudeReportingPoints */
564 static int hf_atn_cpdlc_longitudeReportingPoints; /* LongitudeReportingPoints */
565 static int hf_atn_cpdlc_legDistanceEnglish; /* LegDistanceEnglish */
566 static int hf_atn_cpdlc_legDistanceMetric; /* LegDistanceMetric */
567 static int hf_atn_cpdlc_legDistance; /* LegDistance */
568 static int hf_atn_cpdlc_legTime; /* LegTime */
569 static int hf_atn_cpdlc_singleLevel; /* LevelType */
570 static int hf_atn_cpdlc_blockLevel; /* SEQUENCE_SIZE_2_OF_LevelType */
571 static int hf_atn_cpdlc_blockLevel_item; /* LevelType */
572 static int hf_atn_cpdlc_LevelLevel_item; /* Level */
573 static int hf_atn_cpdlc_procedureName; /* ProcedureName */
574 static int hf_atn_cpdlc_levelProcedureName; /* LevelProcedureName */
575 static int hf_atn_cpdlc_levelspeed_speed; /* SpeedSpeed */
576 static int hf_atn_cpdlc_speeds; /* SpeedSpeed */
577 static int hf_atn_cpdlc_levelFeet; /* LevelFeet */
578 static int hf_atn_cpdlc_levelMeters; /* LevelMeters */
579 static int hf_atn_cpdlc_levelFlightLevel; /* LevelFlightLevel */
580 static int hf_atn_cpdlc_levelFlightLevelMetric; /* LevelFlightLevelMetric */
581 static int hf_atn_cpdlc_longitudeType; /* LongitudeType */
582 static int hf_atn_cpdlc_longitudeDirection; /* LongitudeDirection */
583 static int hf_atn_cpdlc_longitudeWholeDegrees; /* LongitudeWholeDegrees */
584 static int hf_atn_cpdlc_latLonWholeMinutes; /* LatLonWholeMinutes */
585 static int hf_atn_cpdlc_longitudeDegrees; /* LongitudeDegrees */
586 static int hf_atn_cpdlc_longitudeDegreesMinutes; /* LongitudeDegreesMinutes */
587 static int hf_atn_cpdlc_longitudeDMS; /* LongitudeDegreesMinutesSeconds */
588 static int hf_atn_cpdlc_navaid_name; /* NavaidName */
589 static int hf_atn_cpdlc_PlaceBearingPlaceBearing_item; /* PlaceBearing */
590 static int hf_atn_cpdlc_fixName; /* FixName */
591 static int hf_atn_cpdlc_navaid; /* Navaid */
592 static int hf_atn_cpdlc_airport; /* Airport */
593 static int hf_atn_cpdlc_levels; /* LevelLevel */
594 static int hf_atn_cpdlc_positionlevel; /* PositionLevel */
595 static int hf_atn_cpdlc_PositionPosition_item; /* Position */
596 static int hf_atn_cpdlc_positioncurrent; /* Position */
597 static int hf_atn_cpdlc_timeatpositioncurrent; /* Time */
598 static int hf_atn_cpdlc_fixnext; /* Position */
599 static int hf_atn_cpdlc_timeetaatfixnext; /* Time */
600 static int hf_atn_cpdlc_fixnextplusone; /* Position */
601 static int hf_atn_cpdlc_timeetaatdestination; /* Time */
602 static int hf_atn_cpdlc_remainingFuel; /* RemainingFuel */
603 static int hf_atn_cpdlc_temperature; /* Temperature */
604 static int hf_atn_cpdlc_winds; /* Winds */
605 static int hf_atn_cpdlc_turbulence; /* Turbulence */
606 static int hf_atn_cpdlc_icing; /* Icing */
607 static int hf_atn_cpdlc_speedground; /* SpeedGround */
608 static int hf_atn_cpdlc_verticalChange; /* VerticalChange */
609 static int hf_atn_cpdlc_trackAngle; /* Degrees */
610 static int hf_atn_cpdlc_heading; /* Degrees */
611 static int hf_atn_cpdlc_humidity; /* Humidity */
612 static int hf_atn_cpdlc_reportedWaypointPosition; /* Position */
613 static int hf_atn_cpdlc_reportedWaypointTime; /* Time */
614 static int hf_atn_cpdlc_reportedWaypointLevel; /* Level */
615 static int hf_atn_cpdlc_routeClearanceIndex; /* RouteClearanceIndex */
616 static int hf_atn_cpdlc_positionTime; /* PositionTime */
617 static int hf_atn_cpdlc_times; /* TimeTime */
618 static int hf_atn_cpdlc_unitname; /* UnitName */
619 static int hf_atn_cpdlc_frequency; /* Frequency */
620 static int hf_atn_cpdlc_type; /* ProcedureType */
621 static int hf_atn_cpdlc_procedure; /* Procedure */
622 static int hf_atn_cpdlc_transition; /* ProcedureTransition */
623 static int hf_atn_cpdlc_personsOnBoard; /* PersonsOnBoard */
624 static int hf_atn_cpdlc_latLonReportingPoints; /* LatLonReportingPoints */
625 static int hf_atn_cpdlc_degreeIncrement; /* DegreeIncrement */
626 static int hf_atn_cpdlc_procedureDeparture; /* ProcedureName */
627 static int hf_atn_cpdlc_runwayArrival; /* Runway */
628 static int hf_atn_cpdlc_procedureApproach; /* ProcedureName */
629 static int hf_atn_cpdlc_procedureArrival; /* ProcedureName */
630 static int hf_atn_cpdlc_routeInformations; /* SEQUENCE_SIZE_1_128_OF_RouteInformation */
631 static int hf_atn_cpdlc_routeInformations_item; /* RouteInformation */
632 static int hf_atn_cpdlc_routeInformationAdditional; /* RouteInformationAdditional */
633 static int hf_atn_cpdlc_aTSRouteDesignator; /* ATSRouteDesignator */
634 static int hf_atn_cpdlc_aTWAlongTrackWaypoints; /* SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint */
635 static int hf_atn_cpdlc_aTWAlongTrackWaypoints_item; /* ATWAlongTrackWaypoint */
636 static int hf_atn_cpdlc_reportingpoints; /* ReportingPoints */
637 static int hf_atn_cpdlc_interceptCourseFroms; /* SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom */
638 static int hf_atn_cpdlc_interceptCourseFroms_item; /* InterceptCourseFrom */
639 static int hf_atn_cpdlc_holdAtWaypoints; /* SEQUENCE_SIZE_1_8_OF_Holdatwaypoint */
640 static int hf_atn_cpdlc_holdAtWaypoints_item; /* Holdatwaypoint */
641 static int hf_atn_cpdlc_waypointSpeedLevels; /* SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel */
642 static int hf_atn_cpdlc_waypointSpeedLevels_item; /* WaypointSpeedLevel */
643 static int hf_atn_cpdlc_rTARequiredTimeArrivals; /* SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival */
644 static int hf_atn_cpdlc_rTARequiredTimeArrivals_item; /* RTARequiredTimeArrival */
645 static int hf_atn_cpdlc_rTATime; /* RTATime */
646 static int hf_atn_cpdlc_rTATolerance; /* RTATolerance */
647 static int hf_atn_cpdlc_runway_direction; /* RunwayDirection */
648 static int hf_atn_cpdlc_configuration; /* RunwayConfiguration */
649 static int hf_atn_cpdlc_runway; /* Runway */
650 static int hf_atn_cpdlc_rVR; /* RVR */
651 static int hf_atn_cpdlc_rVRFeet; /* RVRFeet */
652 static int hf_atn_cpdlc_rVRMeters; /* RVRMeters */
653 static int hf_atn_cpdlc_speedIndicated; /* SpeedIndicated */
654 static int hf_atn_cpdlc_speedIndicatedMetric; /* SpeedIndicatedMetric */
655 static int hf_atn_cpdlc_speedTrue; /* SpeedTrue */
656 static int hf_atn_cpdlc_speedTrueMetric; /* SpeedTrueMetric */
657 static int hf_atn_cpdlc_speedGround; /* SpeedGround */
658 static int hf_atn_cpdlc_speedGroundMetric; /* SpeedGroundMetric */
659 static int hf_atn_cpdlc_speedMach; /* SpeedMach */
660 static int hf_atn_cpdlc_SpeedSpeed_item; /* Speed */
661 static int hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item; /* SpeedType */
662 static int hf_atn_cpdlc_speedTypes; /* SpeedTypeSpeedTypeSpeedType */
663 static int hf_atn_cpdlc_hours; /* TimeHours */
664 static int hf_atn_cpdlc_minutes; /* TimeMinutes */
665 static int hf_atn_cpdlc_timeDepartureAllocated; /* Time */
666 static int hf_atn_cpdlc_timeDepartureControlled; /* ControlledTime */
667 static int hf_atn_cpdlc_timeDepartureClearanceExpected; /* Time */
668 static int hf_atn_cpdlc_departureMinimumInterval; /* DepartureMinimumInterval */
669 static int hf_atn_cpdlc_tofrom; /* ToFrom */
670 static int hf_atn_cpdlc_hoursminutes; /* Time */
671 static int hf_atn_cpdlc_seconds; /* TimeSeconds */
672 static int hf_atn_cpdlc_unitName; /* UnitName */
673 static int hf_atn_cpdlc_timeposition; /* TimePosition */
674 static int hf_atn_cpdlc_levelspeed; /* LevelSpeed */
675 static int hf_atn_cpdlc_speedspeed; /* SpeedSpeed */
676 static int hf_atn_cpdlc_TimeTime_item; /* Time */
677 static int hf_atn_cpdlc_toFrom; /* ToFrom */
678 static int hf_atn_cpdlc_facilityName; /* FacilityName */
679 static int hf_atn_cpdlc_facilityFunction; /* FacilityFunction */
680 static int hf_atn_cpdlc_vertical_direction; /* VerticalDirection */
681 static int hf_atn_cpdlc_rate; /* VerticalRate */
682 static int hf_atn_cpdlc_verticalRateEnglish; /* VerticalRateEnglish */
683 static int hf_atn_cpdlc_verticalRateMetric; /* VerticalRateMetric */
684 static int hf_atn_cpdlc_winds_direction; /* WindDirection */
685 static int hf_atn_cpdlc_winds_speed; /* WindSpeed */
686 static int hf_atn_cpdlc_windSpeedEnglish; /* WindSpeedEnglish */
687 static int hf_atn_cpdlc_windSpeedMetric; /* WindSpeedMetric */
689 static int ett_atn_cpdlc_GroundPDUs;
690 static int ett_atn_cpdlc_UplinkMessage;
691 static int ett_atn_cpdlc_AircraftPDUs;
692 static int ett_atn_cpdlc_StartDownMessage;
693 static int ett_atn_cpdlc_DownlinkMessage;
694 static int ett_atn_cpdlc_ProtectedGroundPDUs;
695 static int ett_atn_cpdlc_ProtectedUplinkMessage;
696 static int ett_atn_cpdlc_ATCForwardMessage;
697 static int ett_atn_cpdlc_ForwardHeader;
698 static int ett_atn_cpdlc_ForwardMessage;
699 static int ett_atn_cpdlc_ProtectedAircraftPDUs;
700 static int ett_atn_cpdlc_ProtectedStartDownMessage;
701 static int ett_atn_cpdlc_ProtectedDownlinkMessage;
702 static int ett_atn_cpdlc_ATCUplinkMessage;
703 static int ett_atn_cpdlc_ATCUplinkMessageData;
704 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId;
705 static int ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata;
706 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance;
707 static int ett_atn_cpdlc_ATCDownlinkMessage;
708 static int ett_atn_cpdlc_ATCDownlinkMessageData;
709 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId;
710 static int ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata;
711 static int ett_atn_cpdlc_ATCMessageHeader;
712 static int ett_atn_cpdlc_ATCUplinkMsgElementId;
713 static int ett_atn_cpdlc_ATCDownlinkMsgElementId;
714 static int ett_atn_cpdlc_Altimeter;
715 static int ett_atn_cpdlc_ATWAlongTrackWaypoint;
716 static int ett_atn_cpdlc_ATWLevel;
717 static int ett_atn_cpdlc_ATWLevelSequence;
718 static int ett_atn_cpdlc_ATWDistance;
719 static int ett_atn_cpdlc_Code;
720 static int ett_atn_cpdlc_ControlledTime;
721 static int ett_atn_cpdlc_Date;
722 static int ett_atn_cpdlc_DateTimeGroup;
723 static int ett_atn_cpdlc_Degrees;
724 static int ett_atn_cpdlc_DepartureClearance;
725 static int ett_atn_cpdlc_DirectionDegrees;
726 static int ett_atn_cpdlc_Distance;
727 static int ett_atn_cpdlc_DistanceSpecified;
728 static int ett_atn_cpdlc_DistanceSpecifiedDirection;
729 static int ett_atn_cpdlc_DistanceSpecifiedDirectionTime;
730 static int ett_atn_cpdlc_Facility;
731 static int ett_atn_cpdlc_FacilityDesignationAltimeter;
732 static int ett_atn_cpdlc_FacilityDesignationATISCode;
733 static int ett_atn_cpdlc_FixName;
734 static int ett_atn_cpdlc_FlightInformation;
735 static int ett_atn_cpdlc_Frequency;
736 static int ett_atn_cpdlc_FurtherInstructions;
737 static int ett_atn_cpdlc_Holdatwaypoint;
738 static int ett_atn_cpdlc_HoldClearance;
739 static int ett_atn_cpdlc_InterceptCourseFrom;
740 static int ett_atn_cpdlc_InterceptCourseFromSelection;
741 static int ett_atn_cpdlc_Latitude;
742 static int ett_atn_cpdlc_LatitudeDegreesMinutes;
743 static int ett_atn_cpdlc_LatitudeDegreesMinutesSeconds;
744 static int ett_atn_cpdlc_LatitudeLongitude;
745 static int ett_atn_cpdlc_LatitudeReportingPoints;
746 static int ett_atn_cpdlc_LatitudeType;
747 static int ett_atn_cpdlc_LatLonReportingPoints;
748 static int ett_atn_cpdlc_LegDistance;
749 static int ett_atn_cpdlc_LegType;
750 static int ett_atn_cpdlc_Level;
751 static int ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType;
752 static int ett_atn_cpdlc_LevelLevel;
753 static int ett_atn_cpdlc_LevelPosition;
754 static int ett_atn_cpdlc_LevelProcedureName;
755 static int ett_atn_cpdlc_LevelsOfFlight;
756 static int ett_atn_cpdlc_LevelSpeed;
757 static int ett_atn_cpdlc_LevelSpeedSpeed;
758 static int ett_atn_cpdlc_LevelTime;
759 static int ett_atn_cpdlc_LevelType;
760 static int ett_atn_cpdlc_Longitude;
761 static int ett_atn_cpdlc_LongitudeDegreesMinutes;
762 static int ett_atn_cpdlc_LongitudeDegreesMinutesSeconds;
763 static int ett_atn_cpdlc_LongitudeReportingPoints;
764 static int ett_atn_cpdlc_LongitudeType;
765 static int ett_atn_cpdlc_Navaid;
766 static int ett_atn_cpdlc_PlaceBearing;
767 static int ett_atn_cpdlc_PlaceBearingDistance;
768 static int ett_atn_cpdlc_PlaceBearingPlaceBearing;
769 static int ett_atn_cpdlc_Position;
770 static int ett_atn_cpdlc_PositionDegrees;
771 static int ett_atn_cpdlc_PositionDistanceSpecifiedDirection;
772 static int ett_atn_cpdlc_PositionLevel;
773 static int ett_atn_cpdlc_PositionLevelLevel;
774 static int ett_atn_cpdlc_PositionLevelSpeed;
775 static int ett_atn_cpdlc_PositionPosition;
776 static int ett_atn_cpdlc_PositionProcedureName;
777 static int ett_atn_cpdlc_PositionReport;
778 static int ett_atn_cpdlc_PositionRouteClearanceIndex;
779 static int ett_atn_cpdlc_PositionSpeed;
780 static int ett_atn_cpdlc_PositionSpeedSpeed;
781 static int ett_atn_cpdlc_PositionTime;
782 static int ett_atn_cpdlc_PositionTimeLevel;
783 static int ett_atn_cpdlc_PositionTimeTime;
784 static int ett_atn_cpdlc_PositionUnitNameFrequency;
785 static int ett_atn_cpdlc_ProcedureName;
786 static int ett_atn_cpdlc_PublishedIdentifier;
787 static int ett_atn_cpdlc_RemainingFuelPersonsOnBoard;
788 static int ett_atn_cpdlc_ReportingPoints;
789 static int ett_atn_cpdlc_RouteAndLevels;
790 static int ett_atn_cpdlc_RouteClearance;
791 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation;
792 static int ett_atn_cpdlc_RouteInformation;
793 static int ett_atn_cpdlc_RouteInformationAdditional;
794 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint;
795 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom;
796 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint;
797 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel;
798 static int ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival;
799 static int ett_atn_cpdlc_RTARequiredTimeArrival;
800 static int ett_atn_cpdlc_RTATime;
801 static int ett_atn_cpdlc_Runway;
802 static int ett_atn_cpdlc_RunwayRVR;
803 static int ett_atn_cpdlc_RVR;
804 static int ett_atn_cpdlc_Speed;
805 static int ett_atn_cpdlc_SpeedSpeed;
806 static int ett_atn_cpdlc_SpeedTime;
807 static int ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType;
808 static int ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed;
809 static int ett_atn_cpdlc_Time;
810 static int ett_atn_cpdlc_TimeLevel;
811 static int ett_atn_cpdlc_TimeDeparture;
812 static int ett_atn_cpdlc_TimeDistanceSpecifiedDirection;
813 static int ett_atn_cpdlc_TimeDistanceToFromPosition;
814 static int ett_atn_cpdlc_Timehhmmss;
815 static int ett_atn_cpdlc_TimeUnitNameFrequency;
816 static int ett_atn_cpdlc_TimePosition;
817 static int ett_atn_cpdlc_TimePositionLevel;
818 static int ett_atn_cpdlc_TimePositionLevelSpeed;
819 static int ett_atn_cpdlc_TimeSpeed;
820 static int ett_atn_cpdlc_TimeSpeedSpeed;
821 static int ett_atn_cpdlc_TimeTime;
822 static int ett_atn_cpdlc_TimeToFromPosition;
823 static int ett_atn_cpdlc_ToFromPosition;
824 static int ett_atn_cpdlc_UnitName;
825 static int ett_atn_cpdlc_UnitNameFrequency;
826 static int ett_atn_cpdlc_VerticalChange;
827 static int ett_atn_cpdlc_VerticalRate;
828 static int ett_atn_cpdlc_WaypointSpeedLevel;
829 static int ett_atn_cpdlc_Winds;
830 static int ett_atn_cpdlc_WindSpeed;
831 static int ett_atn_cpdlc;
834 static const value_string atn_cpdlc_CPDLCUserAbortReason_vals[] = {
835 { 0, "undefined" },
836 { 1, "no-message-identification-numbers-available" },
837 { 2, "duplicate-message-identification-numbers" },
838 { 3, "no-longer-next-data-authority" },
839 { 4, "current-data-authority-abort" },
840 { 5, "commanded-termination" },
841 { 6, "invalid-response" },
842 { 0, NULL }
846 static int
847 dissect_atn_cpdlc_CPDLCUserAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
848 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
849 7, NULL, true, 0, NULL);
851 return offset;
855 static const value_string atn_cpdlc_CPDLCProviderAbortReason_vals[] = {
856 { 0, "timer-expired" },
857 { 1, "undefined-error" },
858 { 2, "invalid-PDU" },
859 { 3, "protocol-error" },
860 { 4, "communication-service-error" },
861 { 5, "communication-service-failure" },
862 { 6, "invalid-QOS-parameter" },
863 { 7, "expected-PDU-missing" },
864 { 0, NULL }
868 static int
869 dissect_atn_cpdlc_CPDLCProviderAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
870 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
871 8, NULL, true, 0, NULL);
873 return offset;
878 static int
879 dissect_atn_cpdlc_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
880 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
882 return offset;
887 static int
888 dissect_atn_cpdlc_MsgIdentificationNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
889 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
890 0U, 63U, NULL, false);
892 return offset;
897 static int
898 dissect_atn_cpdlc_MsgReferenceNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
899 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
900 0U, 63U, NULL, false);
902 return offset;
907 static int
908 dissect_atn_cpdlc_Year(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
909 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
910 1996U, 2095U, NULL, false);
912 return offset;
917 static int
918 dissect_atn_cpdlc_Month(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
919 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
920 1U, 12U, NULL, false);
922 return offset;
927 static int
928 dissect_atn_cpdlc_Day(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
929 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
930 1U, 31U, NULL, false);
932 return offset;
936 static const per_sequence_t Date_sequence[] = {
937 { &hf_atn_cpdlc_year , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Year },
938 { &hf_atn_cpdlc_month , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Month },
939 { &hf_atn_cpdlc_day , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Day },
940 { NULL, 0, 0, NULL }
943 static int
944 dissect_atn_cpdlc_Date(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
945 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
946 ett_atn_cpdlc_Date, Date_sequence);
948 return offset;
953 static int
954 dissect_atn_cpdlc_TimeHours(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
955 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
956 0U, 23U, NULL, false);
958 return offset;
963 static int
964 dissect_atn_cpdlc_TimeMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
965 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
966 0U, 59U, NULL, false);
968 return offset;
972 static const per_sequence_t Time_sequence[] = {
973 { &hf_atn_cpdlc_hours , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeHours },
974 { &hf_atn_cpdlc_minutes , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeMinutes },
975 { NULL, 0, 0, NULL }
978 static int
979 dissect_atn_cpdlc_Time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
980 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
981 ett_atn_cpdlc_Time, Time_sequence);
983 return offset;
988 static int
989 dissect_atn_cpdlc_TimeSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
990 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
991 0U, 59U, NULL, false);
993 return offset;
997 static const per_sequence_t Timehhmmss_sequence[] = {
998 { &hf_atn_cpdlc_hoursminutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
999 { &hf_atn_cpdlc_seconds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeSeconds },
1000 { NULL, 0, 0, NULL }
1003 static int
1004 dissect_atn_cpdlc_Timehhmmss(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1005 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1006 ett_atn_cpdlc_Timehhmmss, Timehhmmss_sequence);
1008 return offset;
1012 static const per_sequence_t DateTimeGroup_sequence[] = {
1013 { &hf_atn_cpdlc_date , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Date },
1014 { &hf_atn_cpdlc_timehhmmss, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Timehhmmss },
1015 { NULL, 0, 0, NULL }
1018 static int
1019 dissect_atn_cpdlc_DateTimeGroup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1020 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1021 ett_atn_cpdlc_DateTimeGroup, DateTimeGroup_sequence);
1023 return offset;
1027 static const value_string atn_cpdlc_LogicalAck_vals[] = {
1028 { 0, "required" },
1029 { 1, "notRequired" },
1030 { 0, NULL }
1034 static int
1035 dissect_atn_cpdlc_LogicalAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1036 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1037 2, NULL, false, 0, NULL);
1039 return offset;
1043 static const per_sequence_t ATCMessageHeader_sequence[] = {
1044 { &hf_atn_cpdlc_messageIdNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MsgIdentificationNumber },
1045 { &hf_atn_cpdlc_messageRefNumber, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_MsgReferenceNumber },
1046 { &hf_atn_cpdlc_dateTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DateTimeGroup },
1047 { &hf_atn_cpdlc_logicalAck, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LogicalAck },
1048 { NULL, 0, 0, NULL }
1051 static int
1052 dissect_atn_cpdlc_ATCMessageHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1053 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1054 ett_atn_cpdlc_ATCMessageHeader, ATCMessageHeader_sequence);
1056 return offset;
1061 static int
1062 dissect_atn_cpdlc_LevelFeet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1063 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1064 -60, 7000U, NULL, false);
1066 return offset;
1071 static int
1072 dissect_atn_cpdlc_LevelMeters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1073 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1074 -30, 25000U, NULL, false);
1076 return offset;
1081 static int
1082 dissect_atn_cpdlc_LevelFlightLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1083 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1084 30U, 700U, NULL, false);
1086 return offset;
1091 static int
1092 dissect_atn_cpdlc_LevelFlightLevelMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1093 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1094 100U, 2500U, NULL, false);
1096 return offset;
1100 static const value_string atn_cpdlc_LevelType_vals[] = {
1101 { 0, "levelFeet" },
1102 { 1, "levelMeters" },
1103 { 2, "levelFlightLevel" },
1104 { 3, "levelFlightLevelMetric" },
1105 { 0, NULL }
1108 static const per_choice_t LevelType_choice[] = {
1109 { 0, &hf_atn_cpdlc_levelFeet , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFeet },
1110 { 1, &hf_atn_cpdlc_levelMeters, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelMeters },
1111 { 2, &hf_atn_cpdlc_levelFlightLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFlightLevel },
1112 { 3, &hf_atn_cpdlc_levelFlightLevelMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFlightLevelMetric },
1113 { 0, NULL, 0, NULL }
1116 static int
1117 dissect_atn_cpdlc_LevelType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1118 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1119 ett_atn_cpdlc_LevelType, LevelType_choice,
1120 NULL);
1122 return offset;
1126 static const per_sequence_t SEQUENCE_SIZE_2_OF_LevelType_sequence_of[1] = {
1127 { &hf_atn_cpdlc_blockLevel_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelType },
1130 static int
1131 dissect_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1132 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1133 ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType, SEQUENCE_SIZE_2_OF_LevelType_sequence_of,
1134 2, 2, false);
1136 return offset;
1140 static const value_string atn_cpdlc_Level_vals[] = {
1141 { 0, "singleLevel" },
1142 { 1, "blockLevel" },
1143 { 0, NULL }
1146 static const per_choice_t Level_choice[] = {
1147 { 0, &hf_atn_cpdlc_singleLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelType },
1148 { 1, &hf_atn_cpdlc_blockLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType },
1149 { 0, NULL, 0, NULL }
1152 static int
1153 dissect_atn_cpdlc_Level(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1154 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1155 ett_atn_cpdlc_Level, Level_choice,
1156 NULL);
1158 return offset;
1163 static int
1164 dissect_atn_cpdlc_Fix(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1165 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, false, ia5alpha , 127, NULL);
1167 return offset;
1172 static int
1173 dissect_atn_cpdlc_LatitudeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1174 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1175 0U, 90000U, NULL, false);
1177 return offset;
1182 static int
1183 dissect_atn_cpdlc_LatitudeWholeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1184 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1185 0U, 89U, NULL, false);
1187 return offset;
1192 static int
1193 dissect_atn_cpdlc_MinutesLatLon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1194 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1195 0U, 5999U, NULL, false);
1197 return offset;
1201 static const per_sequence_t LatitudeDegreesMinutes_sequence[] = {
1202 { &hf_atn_cpdlc_latitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeWholeDegrees },
1203 { &hf_atn_cpdlc_minutesLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MinutesLatLon },
1204 { NULL, 0, 0, NULL }
1207 static int
1208 dissect_atn_cpdlc_LatitudeDegreesMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1209 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1210 ett_atn_cpdlc_LatitudeDegreesMinutes, LatitudeDegreesMinutes_sequence);
1212 return offset;
1217 static int
1218 dissect_atn_cpdlc_LatLonWholeMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1219 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1220 0U, 59U, NULL, false);
1222 return offset;
1227 static int
1228 dissect_atn_cpdlc_SecondsLatLon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1229 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1230 0U, 59U, NULL, false);
1232 return offset;
1236 static const per_sequence_t LatitudeDegreesMinutesSeconds_sequence[] = {
1237 { &hf_atn_cpdlc_latitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeWholeDegrees },
1238 { &hf_atn_cpdlc_latlonWholeMinutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonWholeMinutes },
1239 { &hf_atn_cpdlc_secondsLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SecondsLatLon },
1240 { NULL, 0, 0, NULL }
1243 static int
1244 dissect_atn_cpdlc_LatitudeDegreesMinutesSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1245 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1246 ett_atn_cpdlc_LatitudeDegreesMinutesSeconds, LatitudeDegreesMinutesSeconds_sequence);
1248 return offset;
1252 static const value_string atn_cpdlc_LatitudeType_vals[] = {
1253 { 0, "latitudeDegrees" },
1254 { 1, "latitudeDegreesMinutes" },
1255 { 2, "latitudeDMS" },
1256 { 0, NULL }
1259 static const per_choice_t LatitudeType_choice[] = {
1260 { 0, &hf_atn_cpdlc_latitudeDegrees, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegrees },
1261 { 1, &hf_atn_cpdlc_latitudeDegreesMinutes, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegreesMinutes },
1262 { 2, &hf_atn_cpdlc_latitudeDMS, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegreesMinutesSeconds },
1263 { 0, NULL, 0, NULL }
1266 static int
1267 dissect_atn_cpdlc_LatitudeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1268 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1269 ett_atn_cpdlc_LatitudeType, LatitudeType_choice,
1270 NULL);
1272 return offset;
1276 static const value_string atn_cpdlc_LatitudeDirection_vals[] = {
1277 { 0, "north" },
1278 { 1, "south" },
1279 { 0, NULL }
1283 static int
1284 dissect_atn_cpdlc_LatitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1285 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1286 2, NULL, false, 0, NULL);
1288 return offset;
1292 static const per_sequence_t Latitude_sequence[] = {
1293 { &hf_atn_cpdlc_latitudeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeType },
1294 { &hf_atn_cpdlc_latitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDirection },
1295 { NULL, 0, 0, NULL }
1298 static int
1299 dissect_atn_cpdlc_Latitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1300 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1301 ett_atn_cpdlc_Latitude, Latitude_sequence);
1303 return offset;
1308 static int
1309 dissect_atn_cpdlc_LongitudeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1310 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1311 0U, 180000U, NULL, false);
1313 return offset;
1318 static int
1319 dissect_atn_cpdlc_LongitudeWholeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1320 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1321 0U, 179U, NULL, false);
1323 return offset;
1327 static const per_sequence_t LongitudeDegreesMinutes_sequence[] = {
1328 { &hf_atn_cpdlc_longitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeWholeDegrees },
1329 { &hf_atn_cpdlc_minutesLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MinutesLatLon },
1330 { NULL, 0, 0, NULL }
1333 static int
1334 dissect_atn_cpdlc_LongitudeDegreesMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1335 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1336 ett_atn_cpdlc_LongitudeDegreesMinutes, LongitudeDegreesMinutes_sequence);
1338 return offset;
1342 static const per_sequence_t LongitudeDegreesMinutesSeconds_sequence[] = {
1343 { &hf_atn_cpdlc_longitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeWholeDegrees },
1344 { &hf_atn_cpdlc_latLonWholeMinutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonWholeMinutes },
1345 { &hf_atn_cpdlc_secondsLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SecondsLatLon },
1346 { NULL, 0, 0, NULL }
1349 static int
1350 dissect_atn_cpdlc_LongitudeDegreesMinutesSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1351 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1352 ett_atn_cpdlc_LongitudeDegreesMinutesSeconds, LongitudeDegreesMinutesSeconds_sequence);
1354 return offset;
1358 static const value_string atn_cpdlc_LongitudeType_vals[] = {
1359 { 0, "longitudeDegrees" },
1360 { 1, "longitudeDegreesMinutes" },
1361 { 2, "longitudeDMS" },
1362 { 0, NULL }
1365 static const per_choice_t LongitudeType_choice[] = {
1366 { 0, &hf_atn_cpdlc_longitudeDegrees, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegrees },
1367 { 1, &hf_atn_cpdlc_longitudeDegreesMinutes, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegreesMinutes },
1368 { 2, &hf_atn_cpdlc_longitudeDMS, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegreesMinutesSeconds },
1369 { 0, NULL, 0, NULL }
1372 static int
1373 dissect_atn_cpdlc_LongitudeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1374 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1375 ett_atn_cpdlc_LongitudeType, LongitudeType_choice,
1376 NULL);
1378 return offset;
1382 static const value_string atn_cpdlc_LongitudeDirection_vals[] = {
1383 { 0, "east" },
1384 { 1, "west" },
1385 { 0, NULL }
1389 static int
1390 dissect_atn_cpdlc_LongitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1391 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1392 2, NULL, false, 0, NULL);
1394 return offset;
1398 static const per_sequence_t Longitude_sequence[] = {
1399 { &hf_atn_cpdlc_longitudeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeType },
1400 { &hf_atn_cpdlc_longitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDirection },
1401 { NULL, 0, 0, NULL }
1404 static int
1405 dissect_atn_cpdlc_Longitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1406 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1407 ett_atn_cpdlc_Longitude, Longitude_sequence);
1409 return offset;
1413 static const per_sequence_t LatitudeLongitude_sequence[] = {
1414 { &hf_atn_cpdlc_latitude , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Latitude },
1415 { &hf_atn_cpdlc_longitude , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Longitude },
1416 { NULL, 0, 0, NULL }
1419 static int
1420 dissect_atn_cpdlc_LatitudeLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1421 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1422 ett_atn_cpdlc_LatitudeLongitude, LatitudeLongitude_sequence);
1424 return offset;
1428 static const per_sequence_t FixName_sequence[] = {
1429 { &hf_atn_cpdlc_fixname_name, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Fix },
1430 { &hf_atn_cpdlc_latlon , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LatitudeLongitude },
1431 { NULL, 0, 0, NULL }
1434 static int
1435 dissect_atn_cpdlc_FixName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1436 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1437 ett_atn_cpdlc_FixName, FixName_sequence);
1439 return offset;
1444 static int
1445 dissect_atn_cpdlc_NavaidName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1446 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 4, false, ia5alpha , 127, NULL);
1448 return offset;
1452 static const per_sequence_t Navaid_sequence[] = {
1453 { &hf_atn_cpdlc_navaid_name, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_NavaidName },
1454 { &hf_atn_cpdlc_latlon , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LatitudeLongitude },
1455 { NULL, 0, 0, NULL }
1458 static int
1459 dissect_atn_cpdlc_Navaid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1460 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1461 ett_atn_cpdlc_Navaid, Navaid_sequence);
1463 return offset;
1468 static int
1469 dissect_atn_cpdlc_Airport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1470 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 4, false, ia5alpha , 127, NULL);
1472 return offset;
1476 static const value_string atn_cpdlc_PublishedIdentifier_vals[] = {
1477 { 0, "fixName" },
1478 { 1, "navaid" },
1479 { 0, NULL }
1482 static const per_choice_t PublishedIdentifier_choice[] = {
1483 { 0, &hf_atn_cpdlc_fixName , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FixName },
1484 { 1, &hf_atn_cpdlc_navaid , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Navaid },
1485 { 0, NULL, 0, NULL }
1488 static int
1489 dissect_atn_cpdlc_PublishedIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1490 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1491 ett_atn_cpdlc_PublishedIdentifier, PublishedIdentifier_choice,
1492 NULL);
1494 return offset;
1499 static int
1500 dissect_atn_cpdlc_DegreesMagnetic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1501 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1502 1U, 360U, NULL, false);
1504 return offset;
1509 static int
1510 dissect_atn_cpdlc_DegreesTrue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1511 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1512 1U, 360U, NULL, false);
1514 return offset;
1518 static const value_string atn_cpdlc_Degrees_vals[] = {
1519 { 0, "degreesMagnetic" },
1520 { 1, "degreesTrue" },
1521 { 0, NULL }
1524 static const per_choice_t Degrees_choice[] = {
1525 { 0, &hf_atn_cpdlc_degreesMagnetic, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DegreesMagnetic },
1526 { 1, &hf_atn_cpdlc_degreesTrue, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DegreesTrue },
1527 { 0, NULL, 0, NULL }
1530 static int
1531 dissect_atn_cpdlc_Degrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1532 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1533 ett_atn_cpdlc_Degrees, Degrees_choice,
1534 NULL);
1536 return offset;
1541 static int
1542 dissect_atn_cpdlc_DistanceNm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1543 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1544 0U, 9999U, NULL, false);
1546 return offset;
1551 static int
1552 dissect_atn_cpdlc_DistanceKm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1553 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1554 0U, 8000U, NULL, false);
1556 return offset;
1560 static const value_string atn_cpdlc_Distance_vals[] = {
1561 { 0, "distanceNm" },
1562 { 1, "distanceKm" },
1563 { 0, NULL }
1566 static const per_choice_t Distance_choice[] = {
1567 { 0, &hf_atn_cpdlc_distanceNm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceNm },
1568 { 1, &hf_atn_cpdlc_distanceKm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceKm },
1569 { 0, NULL, 0, NULL }
1572 static int
1573 dissect_atn_cpdlc_Distance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1574 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1575 ett_atn_cpdlc_Distance, Distance_choice,
1576 NULL);
1578 return offset;
1582 static const per_sequence_t PlaceBearingDistance_sequence[] = {
1583 { &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PublishedIdentifier },
1584 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
1585 { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance },
1586 { NULL, 0, 0, NULL }
1589 static int
1590 dissect_atn_cpdlc_PlaceBearingDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1591 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1592 ett_atn_cpdlc_PlaceBearingDistance, PlaceBearingDistance_sequence);
1594 return offset;
1598 static const value_string atn_cpdlc_Position_vals[] = {
1599 { 0, "fixName" },
1600 { 1, "navaid" },
1601 { 2, "airport" },
1602 { 3, "latitudeLongitude" },
1603 { 4, "placeBearingDistance" },
1604 { 0, NULL }
1607 static const per_choice_t Position_choice[] = {
1608 { 0, &hf_atn_cpdlc_fixName , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FixName },
1609 { 1, &hf_atn_cpdlc_navaid , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Navaid },
1610 { 2, &hf_atn_cpdlc_airport , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Airport },
1611 { 3, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude },
1612 { 4, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance },
1613 { 0, NULL, 0, NULL }
1616 static int
1617 dissect_atn_cpdlc_Position(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1618 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1619 ett_atn_cpdlc_Position, Position_choice,
1620 NULL);
1622 return offset;
1626 static const per_sequence_t TimeLevel_sequence[] = {
1627 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1628 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1629 { NULL, 0, 0, NULL }
1632 static int
1633 dissect_atn_cpdlc_TimeLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1634 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1635 ett_atn_cpdlc_TimeLevel, TimeLevel_sequence);
1637 return offset;
1641 static const per_sequence_t PositionLevel_sequence[] = {
1642 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1643 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1644 { NULL, 0, 0, NULL }
1647 static int
1648 dissect_atn_cpdlc_PositionLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1649 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1650 ett_atn_cpdlc_PositionLevel, PositionLevel_sequence);
1652 return offset;
1656 static const per_sequence_t LevelTime_sequence[] = {
1657 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1658 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1659 { NULL, 0, 0, NULL }
1662 static int
1663 dissect_atn_cpdlc_LevelTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1664 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1665 ett_atn_cpdlc_LevelTime, LevelTime_sequence);
1667 return offset;
1671 static const per_sequence_t LevelPosition_sequence[] = {
1672 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1673 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1674 { NULL, 0, 0, NULL }
1677 static int
1678 dissect_atn_cpdlc_LevelPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1679 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1680 ett_atn_cpdlc_LevelPosition, LevelPosition_sequence);
1682 return offset;
1686 static const per_sequence_t LevelLevel_sequence_of[1] = {
1687 { &hf_atn_cpdlc_LevelLevel_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1690 static int
1691 dissect_atn_cpdlc_LevelLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1692 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1693 ett_atn_cpdlc_LevelLevel, LevelLevel_sequence_of,
1694 2, 2, false);
1696 return offset;
1700 static const per_sequence_t PositionLevelLevel_sequence[] = {
1701 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1702 { &hf_atn_cpdlc_levels , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelLevel },
1703 { NULL, 0, 0, NULL }
1706 static int
1707 dissect_atn_cpdlc_PositionLevelLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1708 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1709 ett_atn_cpdlc_PositionLevelLevel, PositionLevelLevel_sequence);
1711 return offset;
1715 static const per_sequence_t PositionTime_sequence[] = {
1716 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1717 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1718 { NULL, 0, 0, NULL }
1721 static int
1722 dissect_atn_cpdlc_PositionTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1723 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1724 ett_atn_cpdlc_PositionTime, PositionTime_sequence);
1726 return offset;
1730 static const per_sequence_t TimeTime_sequence_of[1] = {
1731 { &hf_atn_cpdlc_TimeTime_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1734 static int
1735 dissect_atn_cpdlc_TimeTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1736 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1737 ett_atn_cpdlc_TimeTime, TimeTime_sequence_of,
1738 2, 2, false);
1740 return offset;
1744 static const per_sequence_t PositionTimeTime_sequence[] = {
1745 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1746 { &hf_atn_cpdlc_times , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTime },
1747 { NULL, 0, 0, NULL }
1750 static int
1751 dissect_atn_cpdlc_PositionTimeTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1752 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1753 ett_atn_cpdlc_PositionTimeTime, PositionTimeTime_sequence);
1755 return offset;
1760 static int
1761 dissect_atn_cpdlc_SpeedIndicated(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1762 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1763 0U, 400U, NULL, false);
1765 return offset;
1770 static int
1771 dissect_atn_cpdlc_SpeedIndicatedMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1772 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1773 0U, 800U, NULL, false);
1775 return offset;
1780 static int
1781 dissect_atn_cpdlc_SpeedTrue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1782 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1783 0U, 2000U, NULL, false);
1785 return offset;
1790 static int
1791 dissect_atn_cpdlc_SpeedTrueMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1792 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1793 0U, 4000U, NULL, false);
1795 return offset;
1800 static int
1801 dissect_atn_cpdlc_SpeedGround(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1802 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1803 -50, 2000U, NULL, false);
1805 return offset;
1810 static int
1811 dissect_atn_cpdlc_SpeedGroundMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1812 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1813 -100, 4000U, NULL, false);
1815 return offset;
1820 static int
1821 dissect_atn_cpdlc_SpeedMach(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1822 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1823 500U, 4000U, NULL, false);
1825 return offset;
1829 static const value_string atn_cpdlc_Speed_vals[] = {
1830 { 0, "speedIndicated" },
1831 { 1, "speedIndicatedMetric" },
1832 { 2, "speedTrue" },
1833 { 3, "speedTrueMetric" },
1834 { 4, "speedGround" },
1835 { 5, "speedGroundMetric" },
1836 { 6, "speedMach" },
1837 { 0, NULL }
1840 static const per_choice_t Speed_choice[] = {
1841 { 0, &hf_atn_cpdlc_speedIndicated, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedIndicated },
1842 { 1, &hf_atn_cpdlc_speedIndicatedMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedIndicatedMetric },
1843 { 2, &hf_atn_cpdlc_speedTrue , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedTrue },
1844 { 3, &hf_atn_cpdlc_speedTrueMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedTrueMetric },
1845 { 4, &hf_atn_cpdlc_speedGround, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedGround },
1846 { 5, &hf_atn_cpdlc_speedGroundMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedGroundMetric },
1847 { 6, &hf_atn_cpdlc_speedMach , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedMach },
1848 { 0, NULL, 0, NULL }
1851 static int
1852 dissect_atn_cpdlc_Speed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1853 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1854 ett_atn_cpdlc_Speed, Speed_choice,
1855 NULL);
1857 return offset;
1861 static const per_sequence_t PositionSpeed_sequence[] = {
1862 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1863 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
1864 { NULL, 0, 0, NULL }
1867 static int
1868 dissect_atn_cpdlc_PositionSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1869 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1870 ett_atn_cpdlc_PositionSpeed, PositionSpeed_sequence);
1872 return offset;
1876 static const per_sequence_t PositionTimeLevel_sequence[] = {
1877 { &hf_atn_cpdlc_positionTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PositionTime },
1878 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1879 { NULL, 0, 0, NULL }
1882 static int
1883 dissect_atn_cpdlc_PositionTimeLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1884 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1885 ett_atn_cpdlc_PositionTimeLevel, PositionTimeLevel_sequence);
1887 return offset;
1891 static const per_sequence_t PositionLevelSpeed_sequence[] = {
1892 { &hf_atn_cpdlc_positionlevel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PositionLevel },
1893 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
1894 { NULL, 0, 0, NULL }
1897 static int
1898 dissect_atn_cpdlc_PositionLevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1899 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1900 ett_atn_cpdlc_PositionLevelSpeed, PositionLevelSpeed_sequence);
1902 return offset;
1906 static const per_sequence_t TimePosition_sequence[] = {
1907 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1908 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1909 { NULL, 0, 0, NULL }
1912 static int
1913 dissect_atn_cpdlc_TimePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1914 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1915 ett_atn_cpdlc_TimePosition, TimePosition_sequence);
1917 return offset;
1921 static const per_sequence_t TimePositionLevel_sequence[] = {
1922 { &hf_atn_cpdlc_timeposition, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimePosition },
1923 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1924 { NULL, 0, 0, NULL }
1927 static int
1928 dissect_atn_cpdlc_TimePositionLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1929 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1930 ett_atn_cpdlc_TimePositionLevel, TimePositionLevel_sequence);
1932 return offset;
1936 static const per_sequence_t SpeedSpeed_sequence_of[1] = {
1937 { &hf_atn_cpdlc_SpeedSpeed_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
1940 static int
1941 dissect_atn_cpdlc_SpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1942 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1943 ett_atn_cpdlc_SpeedSpeed, SpeedSpeed_sequence_of,
1944 2, 2, false);
1946 return offset;
1950 static const per_sequence_t LevelSpeed_sequence[] = {
1951 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1952 { &hf_atn_cpdlc_levelspeed_speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed },
1953 { NULL, 0, 0, NULL }
1956 static int
1957 dissect_atn_cpdlc_LevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1958 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1959 ett_atn_cpdlc_LevelSpeed, LevelSpeed_sequence);
1961 return offset;
1965 static const per_sequence_t TimePositionLevelSpeed_sequence[] = {
1966 { &hf_atn_cpdlc_timeposition, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimePosition },
1967 { &hf_atn_cpdlc_levelspeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelSpeed },
1968 { NULL, 0, 0, NULL }
1971 static int
1972 dissect_atn_cpdlc_TimePositionLevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1973 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1974 ett_atn_cpdlc_TimePositionLevelSpeed, TimePositionLevelSpeed_sequence);
1976 return offset;
1981 static int
1982 dissect_atn_cpdlc_DistanceSpecifiedNm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1983 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1984 1U, 250U, NULL, false);
1986 return offset;
1991 static int
1992 dissect_atn_cpdlc_DistanceSpecifiedKm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1993 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1994 1U, 500U, NULL, false);
1996 return offset;
2000 static const value_string atn_cpdlc_DistanceSpecified_vals[] = {
2001 { 0, "distanceSpecifiedNm" },
2002 { 1, "distanceSpecifiedKm" },
2003 { 0, NULL }
2006 static const per_choice_t DistanceSpecified_choice[] = {
2007 { 0, &hf_atn_cpdlc_distanceSpecifiedNm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceSpecifiedNm },
2008 { 1, &hf_atn_cpdlc_distanceSpecifiedKm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceSpecifiedKm },
2009 { 0, NULL, 0, NULL }
2012 static int
2013 dissect_atn_cpdlc_DistanceSpecified(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2014 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2015 ett_atn_cpdlc_DistanceSpecified, DistanceSpecified_choice,
2016 NULL);
2018 return offset;
2022 static const value_string atn_cpdlc_Direction_vals[] = {
2023 { 0, "left" },
2024 { 1, "right" },
2025 { 2, "eitherSide" },
2026 { 3, "north" },
2027 { 4, "south" },
2028 { 5, "east" },
2029 { 6, "west" },
2030 { 7, "northEast" },
2031 { 8, "northWest" },
2032 { 9, "southEast" },
2033 { 10, "southWest" },
2034 { 0, NULL }
2038 static int
2039 dissect_atn_cpdlc_Direction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2040 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2041 11, NULL, false, 0, NULL);
2043 return offset;
2047 static const per_sequence_t DistanceSpecifiedDirection_sequence[] = {
2048 { &hf_atn_cpdlc_distanceSpecified, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecified },
2049 { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction },
2050 { NULL, 0, 0, NULL }
2053 static int
2054 dissect_atn_cpdlc_DistanceSpecifiedDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2055 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2056 ett_atn_cpdlc_DistanceSpecifiedDirection, DistanceSpecifiedDirection_sequence);
2058 return offset;
2062 static const per_sequence_t PositionDistanceSpecifiedDirection_sequence[] = {
2063 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2064 { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection },
2065 { NULL, 0, 0, NULL }
2068 static int
2069 dissect_atn_cpdlc_PositionDistanceSpecifiedDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2070 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2071 ett_atn_cpdlc_PositionDistanceSpecifiedDirection, PositionDistanceSpecifiedDirection_sequence);
2073 return offset;
2077 static const per_sequence_t TimeDistanceSpecifiedDirection_sequence[] = {
2078 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2079 { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection },
2080 { NULL, 0, 0, NULL }
2083 static int
2084 dissect_atn_cpdlc_TimeDistanceSpecifiedDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2085 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2086 ett_atn_cpdlc_TimeDistanceSpecifiedDirection, TimeDistanceSpecifiedDirection_sequence);
2088 return offset;
2093 static int
2094 dissect_atn_cpdlc_AircraftFlightIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2095 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 8, false, ia5alpha , 127, NULL);
2097 return offset;
2101 static const per_sequence_t PlaceBearing_sequence[] = {
2102 { &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PublishedIdentifier },
2103 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
2104 { NULL, 0, 0, NULL }
2107 static int
2108 dissect_atn_cpdlc_PlaceBearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2109 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2110 ett_atn_cpdlc_PlaceBearing, PlaceBearing_sequence);
2112 return offset;
2116 static const per_sequence_t PlaceBearingPlaceBearing_sequence_of[1] = {
2117 { &hf_atn_cpdlc_PlaceBearingPlaceBearing_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PlaceBearing },
2120 static int
2121 dissect_atn_cpdlc_PlaceBearingPlaceBearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2122 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2123 ett_atn_cpdlc_PlaceBearingPlaceBearing, PlaceBearingPlaceBearing_sequence_of,
2124 2, 2, false);
2126 return offset;
2131 static int
2132 dissect_atn_cpdlc_ATSRouteDesignator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2133 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 7, false, ia5alpha , 127, NULL);
2135 return offset;
2139 static const value_string atn_cpdlc_RouteInformation_vals[] = {
2140 { 0, "publishedIdentifier" },
2141 { 1, "latitudeLongitude" },
2142 { 2, "placeBearingPlaceBearing" },
2143 { 3, "placeBearingDistance" },
2144 { 4, "aTSRouteDesignator" },
2145 { 0, NULL }
2148 static const per_choice_t RouteInformation_choice[] = {
2149 { 0, &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PublishedIdentifier },
2150 { 1, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude },
2151 { 2, &hf_atn_cpdlc_placeBearingPlaceBearing, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingPlaceBearing },
2152 { 3, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance },
2153 { 4, &hf_atn_cpdlc_aTSRouteDesignator, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATSRouteDesignator },
2154 { 0, NULL, 0, NULL }
2157 static int
2158 dissect_atn_cpdlc_RouteInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2159 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2160 ett_atn_cpdlc_RouteInformation, RouteInformation_choice,
2161 NULL);
2163 return offset;
2167 static const value_string atn_cpdlc_ProcedureType_vals[] = {
2168 { 0, "arrival" },
2169 { 1, "approach" },
2170 { 2, "departure" },
2171 { 0, NULL }
2175 static int
2176 dissect_atn_cpdlc_ProcedureType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2177 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2178 3, NULL, false, 0, NULL);
2180 return offset;
2185 static int
2186 dissect_atn_cpdlc_Procedure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2187 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 20, false, ia5alpha , 127, NULL);
2189 return offset;
2194 static int
2195 dissect_atn_cpdlc_ProcedureTransition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2196 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, false, ia5alpha , 127, NULL);
2198 return offset;
2202 static const per_sequence_t ProcedureName_sequence[] = {
2203 { &hf_atn_cpdlc_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureType },
2204 { &hf_atn_cpdlc_procedure , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Procedure },
2205 { &hf_atn_cpdlc_transition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureTransition },
2206 { NULL, 0, 0, NULL }
2209 static int
2210 dissect_atn_cpdlc_ProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2211 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2212 ett_atn_cpdlc_ProcedureName, ProcedureName_sequence);
2214 return offset;
2218 static const per_sequence_t LevelProcedureName_sequence[] = {
2219 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
2220 { &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureName },
2221 { NULL, 0, 0, NULL }
2224 static int
2225 dissect_atn_cpdlc_LevelProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2226 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2227 ett_atn_cpdlc_LevelProcedureName, LevelProcedureName_sequence);
2229 return offset;
2233 static const value_string atn_cpdlc_LevelsOfFlight_vals[] = {
2234 { 0, "level" },
2235 { 1, "procedureName" },
2236 { 2, "levelProcedureName" },
2237 { 0, NULL }
2240 static const per_choice_t LevelsOfFlight_choice[] = {
2241 { 0, &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Level },
2242 { 1, &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ProcedureName },
2243 { 2, &hf_atn_cpdlc_levelProcedureName, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelProcedureName },
2244 { 0, NULL, 0, NULL }
2247 static int
2248 dissect_atn_cpdlc_LevelsOfFlight(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2249 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2250 ett_atn_cpdlc_LevelsOfFlight, LevelsOfFlight_choice,
2251 NULL);
2253 return offset;
2257 static const per_sequence_t RouteAndLevels_sequence[] = {
2258 { &hf_atn_cpdlc_routeOfFlight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteInformation },
2259 { &hf_atn_cpdlc_levelsOfFlight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelsOfFlight },
2260 { NULL, 0, 0, NULL }
2263 static int
2264 dissect_atn_cpdlc_RouteAndLevels(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2265 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2266 ett_atn_cpdlc_RouteAndLevels, RouteAndLevels_sequence);
2268 return offset;
2272 static const value_string atn_cpdlc_FlightInformation_vals[] = {
2273 { 0, "routeOfFlight" },
2274 { 1, "levelsOfFlight" },
2275 { 2, "routeAndLevels" },
2276 { 0, NULL }
2279 static const per_choice_t FlightInformation_choice[] = {
2280 { 0, &hf_atn_cpdlc_routeOfFlight, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RouteInformation },
2281 { 1, &hf_atn_cpdlc_levelsOfFlight, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelsOfFlight },
2282 { 2, &hf_atn_cpdlc_routeAndLevels, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RouteAndLevels },
2283 { 0, NULL, 0, NULL }
2286 static int
2287 dissect_atn_cpdlc_FlightInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2288 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2289 ett_atn_cpdlc_FlightInformation, FlightInformation_choice,
2290 NULL);
2292 return offset;
2297 static int
2298 dissect_atn_cpdlc_CodeOctalDigit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2299 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2300 0U, 7U, NULL, false);
2302 return offset;
2306 static const per_sequence_t Code_sequence_of[1] = {
2307 { &hf_atn_cpdlc_Code_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_CodeOctalDigit },
2310 static int
2311 dissect_atn_cpdlc_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2312 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2313 ett_atn_cpdlc_Code, Code_sequence_of,
2314 4, 4, false);
2316 return offset;
2321 static int
2322 dissect_atn_cpdlc_FacilityDesignation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2323 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 8, false, ia5alpha , 127, NULL);
2325 return offset;
2330 static int
2331 dissect_atn_cpdlc_FacilityName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2332 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,3, 18, false, ia5alpha , 127, NULL);
2334 return offset;
2338 static const value_string atn_cpdlc_FacilityFunction_vals[] = {
2339 { 0, "center" },
2340 { 1, "approach" },
2341 { 2, "tower" },
2342 { 3, "final" },
2343 { 4, "groundControl" },
2344 { 5, "clearanceDelivery" },
2345 { 6, "departure" },
2346 { 7, "control" },
2347 { 8, "radio" },
2348 { 0, NULL }
2352 static int
2353 dissect_atn_cpdlc_FacilityFunction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2354 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2355 9, NULL, true, 0, NULL);
2357 return offset;
2361 static const per_sequence_t UnitName_sequence[] = {
2362 { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation },
2363 { &hf_atn_cpdlc_facilityName, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FacilityName },
2364 { &hf_atn_cpdlc_facilityFunction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityFunction },
2365 { NULL, 0, 0, NULL }
2368 static int
2369 dissect_atn_cpdlc_UnitName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2370 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2371 ett_atn_cpdlc_UnitName, UnitName_sequence);
2373 return offset;
2378 static int
2379 dissect_atn_cpdlc_Frequencyhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2380 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2381 2850U, 28000U, NULL, false);
2383 return offset;
2388 static int
2389 dissect_atn_cpdlc_Frequencyvhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2390 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2391 23600U, 27398U, NULL, false);
2393 return offset;
2398 static int
2399 dissect_atn_cpdlc_Frequencyuhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2400 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2401 9000U, 15999U, NULL, false);
2403 return offset;
2408 static int
2409 dissect_atn_cpdlc_Frequencysatchannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2410 offset = dissect_per_NumericString(tvb, offset, actx, tree, hf_index,
2411 12, 12, false,
2412 NULL);
2414 return offset;
2418 static const value_string atn_cpdlc_Frequency_vals[] = {
2419 { 0, "frequencyhf" },
2420 { 1, "frequencyvhf" },
2421 { 2, "frequencyuhf" },
2422 { 3, "frequencysatchannel" },
2423 { 0, NULL }
2426 static const per_choice_t Frequency_choice[] = {
2427 { 0, &hf_atn_cpdlc_frequencyhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyhf },
2428 { 1, &hf_atn_cpdlc_frequencyvhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyvhf },
2429 { 2, &hf_atn_cpdlc_frequencyuhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyuhf },
2430 { 3, &hf_atn_cpdlc_frequencysatchannel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencysatchannel },
2431 { 0, NULL, 0, NULL }
2434 static int
2435 dissect_atn_cpdlc_Frequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2436 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2437 ett_atn_cpdlc_Frequency, Frequency_choice,
2438 NULL);
2440 return offset;
2444 static const per_sequence_t UnitNameFrequency_sequence[] = {
2445 { &hf_atn_cpdlc_unitName , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName },
2446 { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency },
2447 { NULL, 0, 0, NULL }
2450 static int
2451 dissect_atn_cpdlc_UnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2452 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2453 ett_atn_cpdlc_UnitNameFrequency, UnitNameFrequency_sequence);
2455 return offset;
2459 static const value_string atn_cpdlc_TimeTolerance_vals[] = {
2460 { 0, "at" },
2461 { 1, "atorafter" },
2462 { 2, "atorbefore" },
2463 { 0, NULL }
2467 static int
2468 dissect_atn_cpdlc_TimeTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2469 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2470 3, NULL, false, 0, NULL);
2472 return offset;
2476 static const per_sequence_t ControlledTime_sequence[] = {
2477 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2478 { &hf_atn_cpdlc_timeTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTolerance },
2479 { NULL, 0, 0, NULL }
2482 static int
2483 dissect_atn_cpdlc_ControlledTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2484 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2485 ett_atn_cpdlc_ControlledTime, ControlledTime_sequence);
2487 return offset;
2492 static int
2493 dissect_atn_cpdlc_DepartureMinimumInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2494 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2495 1U, 150U, NULL, false);
2497 return offset;
2501 static const per_sequence_t TimeDeparture_sequence[] = {
2502 { &hf_atn_cpdlc_timeDepartureAllocated, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
2503 { &hf_atn_cpdlc_timeDepartureControlled, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ControlledTime },
2504 { &hf_atn_cpdlc_timeDepartureClearanceExpected, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
2505 { &hf_atn_cpdlc_departureMinimumInterval, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_DepartureMinimumInterval },
2506 { NULL, 0, 0, NULL }
2509 static int
2510 dissect_atn_cpdlc_TimeDeparture(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2511 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2512 ett_atn_cpdlc_TimeDeparture, TimeDeparture_sequence);
2514 return offset;
2519 static int
2520 dissect_atn_cpdlc_RunwayDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2521 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2522 1U, 36U, NULL, false);
2524 return offset;
2528 static const value_string atn_cpdlc_RunwayConfiguration_vals[] = {
2529 { 0, "left" },
2530 { 1, "right" },
2531 { 2, "center" },
2532 { 3, "none" },
2533 { 0, NULL }
2537 static int
2538 dissect_atn_cpdlc_RunwayConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2539 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2540 4, NULL, false, 0, NULL);
2542 return offset;
2546 static const per_sequence_t Runway_sequence[] = {
2547 { &hf_atn_cpdlc_runway_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RunwayDirection },
2548 { &hf_atn_cpdlc_configuration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RunwayConfiguration },
2549 { NULL, 0, 0, NULL }
2552 static int
2553 dissect_atn_cpdlc_Runway(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2554 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2555 ett_atn_cpdlc_Runway, Runway_sequence);
2557 return offset;
2562 static int
2563 dissect_atn_cpdlc_RevisionNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2564 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2565 1U, 16U, NULL, false);
2567 return offset;
2572 static int
2573 dissect_atn_cpdlc_ATISCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2574 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 1, false, ia5alpha , 127, NULL);
2576 return offset;
2580 static const per_sequence_t FurtherInstructions_sequence[] = {
2581 { &hf_atn_cpdlc_code , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Code },
2582 { &hf_atn_cpdlc_frequencyDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_UnitNameFrequency },
2583 { &hf_atn_cpdlc_clearanceExpiryTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
2584 { &hf_atn_cpdlc_airportDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport },
2585 { &hf_atn_cpdlc_airportDestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport },
2586 { &hf_atn_cpdlc_timeDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_TimeDeparture },
2587 { &hf_atn_cpdlc_runwayDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway },
2588 { &hf_atn_cpdlc_revisionNumber, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RevisionNumber },
2589 { &hf_atn_cpdlc_aTISCode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATISCode },
2590 { NULL, 0, 0, NULL }
2593 static int
2594 dissect_atn_cpdlc_FurtherInstructions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2595 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2596 ett_atn_cpdlc_FurtherInstructions, FurtherInstructions_sequence);
2598 return offset;
2602 static const per_sequence_t DepartureClearance_sequence[] = {
2603 { &hf_atn_cpdlc_aircraftFlightIdentification, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftFlightIdentification },
2604 { &hf_atn_cpdlc_clearanceLimit, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2605 { &hf_atn_cpdlc_flightInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FlightInformation },
2606 { &hf_atn_cpdlc_furtherInstructions, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FurtherInstructions },
2607 { NULL, 0, 0, NULL }
2610 static int
2611 dissect_atn_cpdlc_DepartureClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2612 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2613 ett_atn_cpdlc_DepartureClearance, DepartureClearance_sequence);
2615 return offset;
2619 static const per_sequence_t PositionPosition_sequence_of[1] = {
2620 { &hf_atn_cpdlc_PositionPosition_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2623 static int
2624 dissect_atn_cpdlc_PositionPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2625 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2626 ett_atn_cpdlc_PositionPosition, PositionPosition_sequence_of,
2627 2, 2, false);
2629 return offset;
2634 static int
2635 dissect_atn_cpdlc_RouteClearanceIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2636 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2637 1U, 2U, NULL, false);
2639 return offset;
2643 static const per_sequence_t PositionRouteClearanceIndex_sequence[] = {
2644 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2645 { &hf_atn_cpdlc_routeClearanceIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteClearanceIndex },
2646 { NULL, 0, 0, NULL }
2649 static int
2650 dissect_atn_cpdlc_PositionRouteClearanceIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2651 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2652 ett_atn_cpdlc_PositionRouteClearanceIndex, PositionRouteClearanceIndex_sequence);
2654 return offset;
2658 static const per_sequence_t PositionProcedureName_sequence[] = {
2659 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2660 { &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureName },
2661 { NULL, 0, 0, NULL }
2664 static int
2665 dissect_atn_cpdlc_PositionProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2666 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2667 ett_atn_cpdlc_PositionProcedureName, PositionProcedureName_sequence);
2669 return offset;
2674 static int
2675 dissect_atn_cpdlc_LegDistanceEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2676 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2677 0U, 50U, NULL, false);
2679 return offset;
2684 static int
2685 dissect_atn_cpdlc_LegDistanceMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2686 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2687 1U, 128U, NULL, false);
2689 return offset;
2693 static const value_string atn_cpdlc_LegDistance_vals[] = {
2694 { 0, "legDistanceEnglish" },
2695 { 1, "legDistanceMetric" },
2696 { 0, NULL }
2699 static const per_choice_t LegDistance_choice[] = {
2700 { 0, &hf_atn_cpdlc_legDistanceEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistanceEnglish },
2701 { 1, &hf_atn_cpdlc_legDistanceMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistanceMetric },
2702 { 0, NULL, 0, NULL }
2705 static int
2706 dissect_atn_cpdlc_LegDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2707 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2708 ett_atn_cpdlc_LegDistance, LegDistance_choice,
2709 NULL);
2711 return offset;
2716 static int
2717 dissect_atn_cpdlc_LegTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2718 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2719 0U, 10U, NULL, false);
2721 return offset;
2725 static const value_string atn_cpdlc_LegType_vals[] = {
2726 { 0, "legDistance" },
2727 { 1, "legTime" },
2728 { 0, NULL }
2731 static const per_choice_t LegType_choice[] = {
2732 { 0, &hf_atn_cpdlc_legDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistance },
2733 { 1, &hf_atn_cpdlc_legTime , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegTime },
2734 { 0, NULL, 0, NULL }
2737 static int
2738 dissect_atn_cpdlc_LegType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2739 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2740 ett_atn_cpdlc_LegType, LegType_choice,
2741 NULL);
2743 return offset;
2747 static const per_sequence_t HoldClearance_sequence[] = {
2748 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2749 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
2750 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
2751 { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction },
2752 { &hf_atn_cpdlc_legType , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LegType },
2753 { NULL, 0, 0, NULL }
2756 static int
2757 dissect_atn_cpdlc_HoldClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2758 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2759 ett_atn_cpdlc_HoldClearance, HoldClearance_sequence);
2761 return offset;
2765 static const per_sequence_t DirectionDegrees_sequence[] = {
2766 { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction },
2767 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
2768 { NULL, 0, 0, NULL }
2771 static int
2772 dissect_atn_cpdlc_DirectionDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2773 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2774 ett_atn_cpdlc_DirectionDegrees, DirectionDegrees_sequence);
2776 return offset;
2780 static const per_sequence_t PositionDegrees_sequence[] = {
2781 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2782 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
2783 { NULL, 0, 0, NULL }
2786 static int
2787 dissect_atn_cpdlc_PositionDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2788 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2789 ett_atn_cpdlc_PositionDegrees, PositionDegrees_sequence);
2791 return offset;
2795 static const per_sequence_t TimeSpeed_sequence[] = {
2796 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2797 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
2798 { NULL, 0, 0, NULL }
2801 static int
2802 dissect_atn_cpdlc_TimeSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2803 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2804 ett_atn_cpdlc_TimeSpeed, TimeSpeed_sequence);
2806 return offset;
2810 static const per_sequence_t TimeSpeedSpeed_sequence[] = {
2811 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2812 { &hf_atn_cpdlc_speedspeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed },
2813 { NULL, 0, 0, NULL }
2816 static int
2817 dissect_atn_cpdlc_TimeSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2818 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2819 ett_atn_cpdlc_TimeSpeedSpeed, TimeSpeedSpeed_sequence);
2821 return offset;
2825 static const per_sequence_t PositionSpeedSpeed_sequence[] = {
2826 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2827 { &hf_atn_cpdlc_speeds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed },
2828 { NULL, 0, 0, NULL }
2831 static int
2832 dissect_atn_cpdlc_PositionSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2833 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2834 ett_atn_cpdlc_PositionSpeedSpeed, PositionSpeedSpeed_sequence);
2836 return offset;
2840 static const per_sequence_t LevelSpeedSpeed_sequence[] = {
2841 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
2842 { &hf_atn_cpdlc_speeds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed },
2843 { NULL, 0, 0, NULL }
2846 static int
2847 dissect_atn_cpdlc_LevelSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2848 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2849 ett_atn_cpdlc_LevelSpeedSpeed, LevelSpeedSpeed_sequence);
2851 return offset;
2855 static const per_sequence_t PositionUnitNameFrequency_sequence[] = {
2856 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2857 { &hf_atn_cpdlc_unitname , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName },
2858 { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency },
2859 { NULL, 0, 0, NULL }
2862 static int
2863 dissect_atn_cpdlc_PositionUnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2864 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2865 ett_atn_cpdlc_PositionUnitNameFrequency, PositionUnitNameFrequency_sequence);
2867 return offset;
2871 static const per_sequence_t TimeUnitNameFrequency_sequence[] = {
2872 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2873 { &hf_atn_cpdlc_unitName , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName },
2874 { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency },
2875 { NULL, 0, 0, NULL }
2878 static int
2879 dissect_atn_cpdlc_TimeUnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2880 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2881 ett_atn_cpdlc_TimeUnitNameFrequency, TimeUnitNameFrequency_sequence);
2883 return offset;
2887 static const value_string atn_cpdlc_SpeedType_vals[] = {
2888 { 0, "noneSpecified" },
2889 { 1, "indicated" },
2890 { 2, "true" },
2891 { 3, "ground" },
2892 { 4, "mach" },
2893 { 5, "approach" },
2894 { 6, "cruise" },
2895 { 7, "minimum" },
2896 { 8, "maximum" },
2897 { 0, NULL }
2901 static int
2902 dissect_atn_cpdlc_SpeedType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2903 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2904 9, NULL, true, 0, NULL);
2906 return offset;
2910 static const per_sequence_t SpeedTypeSpeedTypeSpeedType_sequence_of[1] = {
2911 { &hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedType },
2914 static int
2915 dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2916 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2917 ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType, SpeedTypeSpeedTypeSpeedType_sequence_of,
2918 3, 3, false);
2920 return offset;
2925 static int
2926 dissect_atn_cpdlc_AltimeterEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2927 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2928 2200U, 3200U, NULL, false);
2930 return offset;
2935 static int
2936 dissect_atn_cpdlc_AltimeterMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2937 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2938 7500U, 12500U, NULL, false);
2940 return offset;
2944 static const value_string atn_cpdlc_Altimeter_vals[] = {
2945 { 0, "altimeterEnglish" },
2946 { 1, "altimeterMetric" },
2947 { 0, NULL }
2950 static const per_choice_t Altimeter_choice[] = {
2951 { 0, &hf_atn_cpdlc_altimeterEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_AltimeterEnglish },
2952 { 1, &hf_atn_cpdlc_altimeterMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_AltimeterMetric },
2953 { 0, NULL, 0, NULL }
2956 static int
2957 dissect_atn_cpdlc_Altimeter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2958 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2959 ett_atn_cpdlc_Altimeter, Altimeter_choice,
2960 NULL);
2962 return offset;
2966 static const value_string atn_cpdlc_ErrorInformation_vals[] = {
2967 { 0, "unrecognizedMsgReferenceNumber" },
2968 { 1, "logicalAcknowledgmentNotAccepted" },
2969 { 2, "insufficientResources" },
2970 { 3, "invalidMessageElementCombination" },
2971 { 4, "invalidMessageElement" },
2972 { 0, NULL }
2976 static int
2977 dissect_atn_cpdlc_ErrorInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2978 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2979 5, NULL, true, 0, NULL);
2981 return offset;
2985 static const value_string atn_cpdlc_Facility_vals[] = {
2986 { 0, "noFacility" },
2987 { 1, "facilityDesignation" },
2988 { 0, NULL }
2991 static const per_choice_t Facility_choice[] = {
2992 { 0, &hf_atn_cpdlc_noFacility, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL },
2993 { 1, &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FacilityDesignation },
2994 { 0, NULL, 0, NULL }
2997 static int
2998 dissect_atn_cpdlc_Facility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2999 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3000 ett_atn_cpdlc_Facility, Facility_choice,
3001 NULL);
3003 return offset;
3007 static const value_string atn_cpdlc_TrafficType_vals[] = {
3008 { 0, "noneSpecified" },
3009 { 1, "oppositeDirection" },
3010 { 2, "sameDirection" },
3011 { 3, "converging" },
3012 { 4, "crossing" },
3013 { 5, "diverging" },
3014 { 0, NULL }
3018 static int
3019 dissect_atn_cpdlc_TrafficType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3020 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3021 6, NULL, true, 0, NULL);
3023 return offset;
3028 static int
3029 dissect_atn_cpdlc_FreeText(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3030 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 256, false, ia5alpha , 127, NULL);
3032 return offset;
3037 static int
3038 dissect_atn_cpdlc_VerticalRateEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3039 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3040 0U, 3000U, NULL, false);
3042 return offset;
3047 static int
3048 dissect_atn_cpdlc_VerticalRateMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3049 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3050 0U, 1000U, NULL, false);
3052 return offset;
3056 static const value_string atn_cpdlc_VerticalRate_vals[] = {
3057 { 0, "verticalRateEnglish" },
3058 { 1, "verticalRateMetric" },
3059 { 0, NULL }
3062 static const per_choice_t VerticalRate_choice[] = {
3063 { 0, &hf_atn_cpdlc_verticalRateEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_VerticalRateEnglish },
3064 { 1, &hf_atn_cpdlc_verticalRateMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_VerticalRateMetric },
3065 { 0, NULL, 0, NULL }
3068 static int
3069 dissect_atn_cpdlc_VerticalRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3070 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3071 ett_atn_cpdlc_VerticalRate, VerticalRate_choice,
3072 NULL);
3074 return offset;
3078 static const value_string atn_cpdlc_ToFrom_vals[] = {
3079 { 0, "to" },
3080 { 1, "from" },
3081 { 0, NULL }
3085 static int
3086 dissect_atn_cpdlc_ToFrom(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3087 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3088 2, NULL, false, 0, NULL);
3090 return offset;
3094 static const per_sequence_t ToFromPosition_sequence[] = {
3095 { &hf_atn_cpdlc_toFrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom },
3096 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
3097 { NULL, 0, 0, NULL }
3100 static int
3101 dissect_atn_cpdlc_ToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3102 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3103 ett_atn_cpdlc_ToFromPosition, ToFromPosition_sequence);
3105 return offset;
3109 static const per_sequence_t TimeToFromPosition_sequence[] = {
3110 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
3111 { &hf_atn_cpdlc_tofrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom },
3112 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
3113 { NULL, 0, 0, NULL }
3116 static int
3117 dissect_atn_cpdlc_TimeToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3118 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3119 ett_atn_cpdlc_TimeToFromPosition, TimeToFromPosition_sequence);
3121 return offset;
3125 static const per_sequence_t FacilityDesignationATISCode_sequence[] = {
3126 { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation },
3127 { &hf_atn_cpdlc_aTISCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATISCode },
3128 { NULL, 0, 0, NULL }
3131 static int
3132 dissect_atn_cpdlc_FacilityDesignationATISCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3133 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3134 ett_atn_cpdlc_FacilityDesignationATISCode, FacilityDesignationATISCode_sequence);
3136 return offset;
3140 static const per_sequence_t FacilityDesignationAltimeter_sequence[] = {
3141 { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation },
3142 { &hf_atn_cpdlc_altimeter , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Altimeter },
3143 { NULL, 0, 0, NULL }
3146 static int
3147 dissect_atn_cpdlc_FacilityDesignationAltimeter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3148 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3149 ett_atn_cpdlc_FacilityDesignationAltimeter, FacilityDesignationAltimeter_sequence);
3151 return offset;
3156 static int
3157 dissect_atn_cpdlc_RVRFeet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3158 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3159 0U, 6100U, NULL, false);
3161 return offset;
3166 static int
3167 dissect_atn_cpdlc_RVRMeters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3168 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3169 0U, 1500U, NULL, false);
3171 return offset;
3175 static const value_string atn_cpdlc_RVR_vals[] = {
3176 { 0, "rVRFeet" },
3177 { 1, "rVRMeters" },
3178 { 0, NULL }
3181 static const per_choice_t RVR_choice[] = {
3182 { 0, &hf_atn_cpdlc_rVRFeet , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RVRFeet },
3183 { 1, &hf_atn_cpdlc_rVRMeters , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RVRMeters },
3184 { 0, NULL, 0, NULL }
3187 static int
3188 dissect_atn_cpdlc_RVR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3189 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3190 ett_atn_cpdlc_RVR, RVR_choice,
3191 NULL);
3193 return offset;
3197 static const per_sequence_t RunwayRVR_sequence[] = {
3198 { &hf_atn_cpdlc_runway , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Runway },
3199 { &hf_atn_cpdlc_rVR , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RVR },
3200 { NULL, 0, 0, NULL }
3203 static int
3204 dissect_atn_cpdlc_RunwayRVR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3205 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3206 ett_atn_cpdlc_RunwayRVR, RunwayRVR_sequence);
3208 return offset;
3212 static const value_string atn_cpdlc_ATCUplinkMsgElementId_vals[] = {
3213 { 0, "uM0NULL" },
3214 { 1, "uM1NULL" },
3215 { 2, "uM2NULL" },
3216 { 3, "uM3NULL" },
3217 { 4, "uM4NULL" },
3218 { 5, "uM5NULL" },
3219 { 6, "uM6Level" },
3220 { 7, "uM7Time" },
3221 { 8, "uM8Position" },
3222 { 9, "uM9Time" },
3223 { 10, "uM10Position" },
3224 { 11, "uM11Time" },
3225 { 12, "uM12Position" },
3226 { 13, "uM13TimeLevel" },
3227 { 14, "uM14PositionLevel" },
3228 { 15, "uM15TimeLevel" },
3229 { 16, "uM16PositionLevel" },
3230 { 17, "uM17TimeLevel" },
3231 { 18, "uM18PositionLevel" },
3232 { 19, "uM19Level" },
3233 { 20, "uM20Level" },
3234 { 21, "uM21TimeLevel" },
3235 { 22, "uM22PositionLevel" },
3236 { 23, "uM23Level" },
3237 { 24, "uM24TimeLevel" },
3238 { 25, "uM25PositionLevel" },
3239 { 26, "uM26LevelTime" },
3240 { 27, "uM27LevelPosition" },
3241 { 28, "uM28LevelTime" },
3242 { 29, "uM29LevelPosition" },
3243 { 30, "uM30LevelLevel" },
3244 { 31, "uM31LevelLevel" },
3245 { 32, "uM32LevelLevel" },
3246 { 33, "uM33NULL" },
3247 { 34, "uM34Level" },
3248 { 35, "uM35Level" },
3249 { 36, "uM36Level" },
3250 { 37, "uM37Level" },
3251 { 38, "uM38Level" },
3252 { 39, "uM39Level" },
3253 { 40, "uM40NULL" },
3254 { 41, "uM41NULL" },
3255 { 42, "uM42PositionLevel" },
3256 { 43, "uM43PositionLevel" },
3257 { 44, "uM44PositionLevel" },
3258 { 45, "uM45PositionLevel" },
3259 { 46, "uM46PositionLevel" },
3260 { 47, "uM47PositionLevel" },
3261 { 48, "uM48PositionLevel" },
3262 { 49, "uM49PositionLevel" },
3263 { 50, "uM50PositionLevelLevel" },
3264 { 51, "uM51PositionTime" },
3265 { 52, "uM52PositionTime" },
3266 { 53, "uM53PositionTime" },
3267 { 54, "uM54PositionTimeTime" },
3268 { 55, "uM55PositionSpeed" },
3269 { 56, "uM56PositionSpeed" },
3270 { 57, "uM57PositionSpeed" },
3271 { 58, "uM58PositionTimeLevel" },
3272 { 59, "uM59PositionTimeLevel" },
3273 { 60, "uM60PositionTimeLevel" },
3274 { 61, "uM61PositionLevelSpeed" },
3275 { 62, "uM62TimePositionLevel" },
3276 { 63, "uM63TimePositionLevelSpeed" },
3277 { 64, "uM64DistanceSpecifiedDirection" },
3278 { 65, "uM65PositionDistanceSpecifiedDirection" },
3279 { 66, "uM66TimeDistanceSpecifiedDirection" },
3280 { 67, "uM67NULL" },
3281 { 68, "uM68Position" },
3282 { 69, "uM69Time" },
3283 { 70, "uM70Position" },
3284 { 71, "uM71Time" },
3285 { 72, "uM72NULL" },
3286 { 73, "uM73DepartureClearance" },
3287 { 74, "uM74Position" },
3288 { 75, "uM75Position" },
3289 { 76, "uM76TimePosition" },
3290 { 77, "uM77PositionPosition" },
3291 { 78, "uM78LevelPosition" },
3292 { 79, "uM79PositionRouteClearance" },
3293 { 80, "uM80RouteClearance" },
3294 { 81, "uM81ProcedureName" },
3295 { 82, "uM82DistanceSpecifiedDirection" },
3296 { 83, "uM83PositionRouteClearance" },
3297 { 84, "uM84PositionProcedureName" },
3298 { 85, "uM85RouteClearance" },
3299 { 86, "uM86PositionRouteClearance" },
3300 { 87, "uM87Position" },
3301 { 88, "uM88PositionPosition" },
3302 { 89, "uM89TimePosition" },
3303 { 90, "uM90LevelPosition" },
3304 { 91, "uM91HoldClearance" },
3305 { 92, "uM92PositionLevel" },
3306 { 93, "uM93Time" },
3307 { 94, "uM94DirectionDegrees" },
3308 { 95, "uM95DirectionDegrees" },
3309 { 96, "uM96NULL" },
3310 { 97, "uM97PositionDegrees" },
3311 { 98, "uM98DirectionDegrees" },
3312 { 99, "uM99ProcedureName" },
3313 { 100, "uM100TimeSpeed" },
3314 { 101, "uM101PositionSpeed" },
3315 { 102, "uM102LevelSpeed" },
3316 { 103, "uM103TimeSpeedSpeed" },
3317 { 104, "uM104PositionSpeedSpeed" },
3318 { 105, "uM105LevelSpeedSpeed" },
3319 { 106, "uM106Speed" },
3320 { 107, "uM107NULL" },
3321 { 108, "uM108Speed" },
3322 { 109, "uM109Speed" },
3323 { 110, "uM110SpeedSpeed" },
3324 { 111, "uM111Speed" },
3325 { 112, "uM112Speed" },
3326 { 113, "uM113Speed" },
3327 { 114, "uM114Speed" },
3328 { 115, "uM115Speed" },
3329 { 116, "uM116NULL" },
3330 { 117, "uM117UnitNameFrequency" },
3331 { 118, "uM118PositionUnitNameFrequency" },
3332 { 119, "uM119TimeUnitNameFrequency" },
3333 { 120, "uM120UnitNameFrequency" },
3334 { 121, "uM121PositionUnitNameFrequency" },
3335 { 122, "uM122TimeUnitNameFrequency" },
3336 { 123, "uM123Code" },
3337 { 124, "uM124NULL" },
3338 { 125, "uM125NULL" },
3339 { 126, "uM126NULL" },
3340 { 127, "uM127NULL" },
3341 { 128, "uM128Level" },
3342 { 129, "uM129Level" },
3343 { 130, "uM130Position" },
3344 { 131, "uM131NULL" },
3345 { 132, "uM132NULL" },
3346 { 133, "uM133NULL" },
3347 { 134, "uM134SpeedTypeSpeedTypeSpeedType" },
3348 { 135, "uM135NULL" },
3349 { 136, "uM136NULL" },
3350 { 137, "uM137NULL" },
3351 { 138, "uM138NULL" },
3352 { 139, "uM139NULL" },
3353 { 140, "uM140NULL" },
3354 { 141, "uM141NULL" },
3355 { 142, "uM142NULL" },
3356 { 143, "uM143NULL" },
3357 { 144, "uM144NULL" },
3358 { 145, "uM145NULL" },
3359 { 146, "uM146NULL" },
3360 { 147, "uM147NULL" },
3361 { 148, "uM148Level" },
3362 { 149, "uM149LevelPosition" },
3363 { 150, "uM150LevelTime" },
3364 { 151, "uM151Speed" },
3365 { 152, "uM152DistanceSpecifiedDirection" },
3366 { 153, "uM153Altimeter" },
3367 { 154, "uM154NULL" },
3368 { 155, "uM155Position" },
3369 { 156, "uM156NULL" },
3370 { 157, "uM157Frequency" },
3371 { 158, "uM158AtisCode" },
3372 { 159, "uM159ErrorInformation" },
3373 { 160, "uM160Facility" },
3374 { 161, "uM161NULL" },
3375 { 162, "uM162NULL" },
3376 { 163, "uM163FacilityDesignation" },
3377 { 164, "uM164NULL" },
3378 { 165, "uM165NULL" },
3379 { 166, "uM166TrafficType" },
3380 { 167, "uM167NULL" },
3381 { 168, "uM168NULL" },
3382 { 169, "uM169FreeText" },
3383 { 170, "uM170FreeText" },
3384 { 171, "uM171VerticalRate" },
3385 { 172, "uM172VerticalRate" },
3386 { 173, "uM173VerticalRate" },
3387 { 174, "uM174VerticalRate" },
3388 { 175, "uM175Level" },
3389 { 176, "uM176NULL" },
3390 { 177, "uM177NULL" },
3391 { 178, "uM178NULL" },
3392 { 179, "uM179NULL" },
3393 { 180, "uM180LevelLevel" },
3394 { 181, "uM181ToFromPosition" },
3395 { 182, "uM182NULL" },
3396 { 183, "uM183FreeText" },
3397 { 184, "uM184TimeToFromPosition" },
3398 { 185, "uM185PositionLevel" },
3399 { 186, "uM186PositionLevel" },
3400 { 187, "uM187FreeText" },
3401 { 188, "uM188PositionSpeed" },
3402 { 189, "uM189Speed" },
3403 { 190, "uM190Degrees" },
3404 { 191, "uM191NULL" },
3405 { 192, "uM192LevelTime" },
3406 { 193, "uM193NULL" },
3407 { 194, "uM194FreeText" },
3408 { 195, "uM195FreeText" },
3409 { 196, "uM196FreeText" },
3410 { 197, "uM197FreeText" },
3411 { 198, "uM198FreeText" },
3412 { 199, "uM199FreeText" },
3413 { 200, "uM200NULL" },
3414 { 201, "uM201NULL" },
3415 { 202, "uM202NULL" },
3416 { 203, "uM203FreeText" },
3417 { 204, "uM204FreeText" },
3418 { 205, "uM205FreeText" },
3419 { 206, "uM206FreeText" },
3420 { 207, "uM207FreeText" },
3421 { 208, "uM208FreeText" },
3422 { 209, "uM209LevelPosition" },
3423 { 210, "uM210Position" },
3424 { 211, "uM211NULL" },
3425 { 212, "uM212FacilityDesignationATISCode" },
3426 { 213, "uM213FacilityDesignationAltimeter" },
3427 { 214, "uM214RunwayRVR" },
3428 { 215, "uM215DirectionDegrees" },
3429 { 216, "uM216NULL" },
3430 { 217, "uM217NULL" },
3431 { 218, "uM218NULL" },
3432 { 219, "uM219Level" },
3433 { 220, "uM220Level" },
3434 { 221, "uM221Degrees" },
3435 { 222, "uM222NULL" },
3436 { 223, "uM223NULL" },
3437 { 224, "uM224NULL" },
3438 { 225, "uM225NULL" },
3439 { 226, "uM226Time" },
3440 { 227, "uM227NULL" },
3441 { 228, "uM228Position" },
3442 { 229, "uM229NULL" },
3443 { 230, "uM230NULL" },
3444 { 231, "uM231NULL" },
3445 { 232, "uM232NULL" },
3446 { 233, "uM233NULL" },
3447 { 234, "uM234NULL" },
3448 { 235, "uM235NULL" },
3449 { 236, "uM236NULL" },
3450 { 237, "uM237NULL" },
3451 { 0, NULL }
3454 static const per_choice_t ATCUplinkMsgElementId_choice[] = {
3455 { 0, &hf_atn_cpdlc_uM0NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3456 { 1, &hf_atn_cpdlc_uM1NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3457 { 2, &hf_atn_cpdlc_uM2NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3458 { 3, &hf_atn_cpdlc_uM3NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3459 { 4, &hf_atn_cpdlc_uM4NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3460 { 5, &hf_atn_cpdlc_uM5NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3461 { 6, &hf_atn_cpdlc_uM6Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3462 { 7, &hf_atn_cpdlc_uM7Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3463 { 8, &hf_atn_cpdlc_uM8Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3464 { 9, &hf_atn_cpdlc_uM9Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3465 { 10, &hf_atn_cpdlc_uM10Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3466 { 11, &hf_atn_cpdlc_uM11Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3467 { 12, &hf_atn_cpdlc_uM12Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3468 { 13, &hf_atn_cpdlc_uM13TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3469 { 14, &hf_atn_cpdlc_uM14PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3470 { 15, &hf_atn_cpdlc_uM15TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3471 { 16, &hf_atn_cpdlc_uM16PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3472 { 17, &hf_atn_cpdlc_uM17TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3473 { 18, &hf_atn_cpdlc_uM18PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3474 { 19, &hf_atn_cpdlc_uM19Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3475 { 20, &hf_atn_cpdlc_uM20Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3476 { 21, &hf_atn_cpdlc_uM21TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3477 { 22, &hf_atn_cpdlc_uM22PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3478 { 23, &hf_atn_cpdlc_uM23Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3479 { 24, &hf_atn_cpdlc_uM24TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3480 { 25, &hf_atn_cpdlc_uM25PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3481 { 26, &hf_atn_cpdlc_uM26LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
3482 { 27, &hf_atn_cpdlc_uM27LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3483 { 28, &hf_atn_cpdlc_uM28LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
3484 { 29, &hf_atn_cpdlc_uM29LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3485 { 30, &hf_atn_cpdlc_uM30LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
3486 { 31, &hf_atn_cpdlc_uM31LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
3487 { 32, &hf_atn_cpdlc_uM32LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
3488 { 33, &hf_atn_cpdlc_uM33NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3489 { 34, &hf_atn_cpdlc_uM34Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3490 { 35, &hf_atn_cpdlc_uM35Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3491 { 36, &hf_atn_cpdlc_uM36Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3492 { 37, &hf_atn_cpdlc_uM37Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3493 { 38, &hf_atn_cpdlc_uM38Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3494 { 39, &hf_atn_cpdlc_uM39Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3495 { 40, &hf_atn_cpdlc_uM40NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3496 { 41, &hf_atn_cpdlc_uM41NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3497 { 42, &hf_atn_cpdlc_uM42PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3498 { 43, &hf_atn_cpdlc_uM43PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3499 { 44, &hf_atn_cpdlc_uM44PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3500 { 45, &hf_atn_cpdlc_uM45PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3501 { 46, &hf_atn_cpdlc_uM46PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3502 { 47, &hf_atn_cpdlc_uM47PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3503 { 48, &hf_atn_cpdlc_uM48PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3504 { 49, &hf_atn_cpdlc_uM49PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3505 { 50, &hf_atn_cpdlc_uM50PositionLevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevelLevel },
3506 { 51, &hf_atn_cpdlc_uM51PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime },
3507 { 52, &hf_atn_cpdlc_uM52PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime },
3508 { 53, &hf_atn_cpdlc_uM53PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime },
3509 { 54, &hf_atn_cpdlc_uM54PositionTimeTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeTime },
3510 { 55, &hf_atn_cpdlc_uM55PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3511 { 56, &hf_atn_cpdlc_uM56PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3512 { 57, &hf_atn_cpdlc_uM57PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3513 { 58, &hf_atn_cpdlc_uM58PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel },
3514 { 59, &hf_atn_cpdlc_uM59PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel },
3515 { 60, &hf_atn_cpdlc_uM60PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel },
3516 { 61, &hf_atn_cpdlc_uM61PositionLevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevelSpeed },
3517 { 62, &hf_atn_cpdlc_uM62TimePositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePositionLevel },
3518 { 63, &hf_atn_cpdlc_uM63TimePositionLevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePositionLevelSpeed },
3519 { 64, &hf_atn_cpdlc_uM64DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
3520 { 65, &hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDistanceSpecifiedDirection },
3521 { 66, &hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceSpecifiedDirection },
3522 { 67, &hf_atn_cpdlc_uM67NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3523 { 68, &hf_atn_cpdlc_uM68Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3524 { 69, &hf_atn_cpdlc_uM69Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3525 { 70, &hf_atn_cpdlc_uM70Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3526 { 71, &hf_atn_cpdlc_uM71Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3527 { 72, &hf_atn_cpdlc_uM72NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3528 { 73, &hf_atn_cpdlc_uM73DepartureClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DepartureClearance },
3529 { 74, &hf_atn_cpdlc_uM74Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3530 { 75, &hf_atn_cpdlc_uM75Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3531 { 76, &hf_atn_cpdlc_uM76TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition },
3532 { 77, &hf_atn_cpdlc_uM77PositionPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionPosition },
3533 { 78, &hf_atn_cpdlc_uM78LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3534 { 79, &hf_atn_cpdlc_uM79PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
3535 { 80, &hf_atn_cpdlc_uM80RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex },
3536 { 81, &hf_atn_cpdlc_uM81ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName },
3537 { 82, &hf_atn_cpdlc_uM82DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
3538 { 83, &hf_atn_cpdlc_uM83PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
3539 { 84, &hf_atn_cpdlc_uM84PositionProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionProcedureName },
3540 { 85, &hf_atn_cpdlc_uM85RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex },
3541 { 86, &hf_atn_cpdlc_uM86PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
3542 { 87, &hf_atn_cpdlc_uM87Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3543 { 88, &hf_atn_cpdlc_uM88PositionPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionPosition },
3544 { 89, &hf_atn_cpdlc_uM89TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition },
3545 { 90, &hf_atn_cpdlc_uM90LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3546 { 91, &hf_atn_cpdlc_uM91HoldClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_HoldClearance },
3547 { 92, &hf_atn_cpdlc_uM92PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3548 { 93, &hf_atn_cpdlc_uM93Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3549 { 94, &hf_atn_cpdlc_uM94DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees },
3550 { 95, &hf_atn_cpdlc_uM95DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees },
3551 { 96, &hf_atn_cpdlc_uM96NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3552 { 97, &hf_atn_cpdlc_uM97PositionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDegrees },
3553 { 98, &hf_atn_cpdlc_uM98DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees },
3554 { 99, &hf_atn_cpdlc_uM99ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName },
3555 { 100, &hf_atn_cpdlc_uM100TimeSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeSpeed },
3556 { 101, &hf_atn_cpdlc_uM101PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3557 { 102, &hf_atn_cpdlc_uM102LevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelSpeed },
3558 { 103, &hf_atn_cpdlc_uM103TimeSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeSpeedSpeed },
3559 { 104, &hf_atn_cpdlc_uM104PositionSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeedSpeed },
3560 { 105, &hf_atn_cpdlc_uM105LevelSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelSpeedSpeed },
3561 { 106, &hf_atn_cpdlc_uM106Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3562 { 107, &hf_atn_cpdlc_uM107NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3563 { 108, &hf_atn_cpdlc_uM108Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3564 { 109, &hf_atn_cpdlc_uM109Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3565 { 110, &hf_atn_cpdlc_uM110SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed },
3566 { 111, &hf_atn_cpdlc_uM111Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3567 { 112, &hf_atn_cpdlc_uM112Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3568 { 113, &hf_atn_cpdlc_uM113Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3569 { 114, &hf_atn_cpdlc_uM114Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3570 { 115, &hf_atn_cpdlc_uM115Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3571 { 116, &hf_atn_cpdlc_uM116NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3572 { 117, &hf_atn_cpdlc_uM117UnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency },
3573 { 118, &hf_atn_cpdlc_uM118PositionUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionUnitNameFrequency },
3574 { 119, &hf_atn_cpdlc_uM119TimeUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeUnitNameFrequency },
3575 { 120, &hf_atn_cpdlc_uM120UnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency },
3576 { 121, &hf_atn_cpdlc_uM121PositionUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionUnitNameFrequency },
3577 { 122, &hf_atn_cpdlc_uM122TimeUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeUnitNameFrequency },
3578 { 123, &hf_atn_cpdlc_uM123Code , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Code },
3579 { 124, &hf_atn_cpdlc_uM124NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3580 { 125, &hf_atn_cpdlc_uM125NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3581 { 126, &hf_atn_cpdlc_uM126NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3582 { 127, &hf_atn_cpdlc_uM127NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3583 { 128, &hf_atn_cpdlc_uM128Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3584 { 129, &hf_atn_cpdlc_uM129Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3585 { 130, &hf_atn_cpdlc_uM130Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3586 { 131, &hf_atn_cpdlc_uM131NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3587 { 132, &hf_atn_cpdlc_uM132NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3588 { 133, &hf_atn_cpdlc_uM133NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3589 { 134, &hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType },
3590 { 135, &hf_atn_cpdlc_uM135NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3591 { 136, &hf_atn_cpdlc_uM136NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3592 { 137, &hf_atn_cpdlc_uM137NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3593 { 138, &hf_atn_cpdlc_uM138NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3594 { 139, &hf_atn_cpdlc_uM139NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3595 { 140, &hf_atn_cpdlc_uM140NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3596 { 141, &hf_atn_cpdlc_uM141NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3597 { 142, &hf_atn_cpdlc_uM142NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3598 { 143, &hf_atn_cpdlc_uM143NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3599 { 144, &hf_atn_cpdlc_uM144NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3600 { 145, &hf_atn_cpdlc_uM145NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3601 { 146, &hf_atn_cpdlc_uM146NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3602 { 147, &hf_atn_cpdlc_uM147NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3603 { 148, &hf_atn_cpdlc_uM148Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3604 { 149, &hf_atn_cpdlc_uM149LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3605 { 150, &hf_atn_cpdlc_uM150LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
3606 { 151, &hf_atn_cpdlc_uM151Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3607 { 152, &hf_atn_cpdlc_uM152DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
3608 { 153, &hf_atn_cpdlc_uM153Altimeter, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Altimeter },
3609 { 154, &hf_atn_cpdlc_uM154NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3610 { 155, &hf_atn_cpdlc_uM155Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3611 { 156, &hf_atn_cpdlc_uM156NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3612 { 157, &hf_atn_cpdlc_uM157Frequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Frequency },
3613 { 158, &hf_atn_cpdlc_uM158AtisCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATISCode },
3614 { 159, &hf_atn_cpdlc_uM159ErrorInformation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ErrorInformation },
3615 { 160, &hf_atn_cpdlc_uM160Facility, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Facility },
3616 { 161, &hf_atn_cpdlc_uM161NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3617 { 162, &hf_atn_cpdlc_uM162NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3618 { 163, &hf_atn_cpdlc_uM163FacilityDesignation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignation },
3619 { 164, &hf_atn_cpdlc_uM164NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3620 { 165, &hf_atn_cpdlc_uM165NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3621 { 166, &hf_atn_cpdlc_uM166TrafficType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TrafficType },
3622 { 167, &hf_atn_cpdlc_uM167NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3623 { 168, &hf_atn_cpdlc_uM168NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3624 { 169, &hf_atn_cpdlc_uM169FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3625 { 170, &hf_atn_cpdlc_uM170FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3626 { 171, &hf_atn_cpdlc_uM171VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate },
3627 { 172, &hf_atn_cpdlc_uM172VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate },
3628 { 173, &hf_atn_cpdlc_uM173VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate },
3629 { 174, &hf_atn_cpdlc_uM174VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate },
3630 { 175, &hf_atn_cpdlc_uM175Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3631 { 176, &hf_atn_cpdlc_uM176NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3632 { 177, &hf_atn_cpdlc_uM177NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3633 { 178, &hf_atn_cpdlc_uM178NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3634 { 179, &hf_atn_cpdlc_uM179NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3635 { 180, &hf_atn_cpdlc_uM180LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
3636 { 181, &hf_atn_cpdlc_uM181ToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ToFromPosition },
3637 { 182, &hf_atn_cpdlc_uM182NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3638 { 183, &hf_atn_cpdlc_uM183FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3639 { 184, &hf_atn_cpdlc_uM184TimeToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeToFromPosition },
3640 { 185, &hf_atn_cpdlc_uM185PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3641 { 186, &hf_atn_cpdlc_uM186PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3642 { 187, &hf_atn_cpdlc_uM187FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3643 { 188, &hf_atn_cpdlc_uM188PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3644 { 189, &hf_atn_cpdlc_uM189Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3645 { 190, &hf_atn_cpdlc_uM190Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
3646 { 191, &hf_atn_cpdlc_uM191NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3647 { 192, &hf_atn_cpdlc_uM192LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
3648 { 193, &hf_atn_cpdlc_uM193NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3649 { 194, &hf_atn_cpdlc_uM194FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3650 { 195, &hf_atn_cpdlc_uM195FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3651 { 196, &hf_atn_cpdlc_uM196FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3652 { 197, &hf_atn_cpdlc_uM197FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3653 { 198, &hf_atn_cpdlc_uM198FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3654 { 199, &hf_atn_cpdlc_uM199FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3655 { 200, &hf_atn_cpdlc_uM200NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3656 { 201, &hf_atn_cpdlc_uM201NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3657 { 202, &hf_atn_cpdlc_uM202NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3658 { 203, &hf_atn_cpdlc_uM203FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3659 { 204, &hf_atn_cpdlc_uM204FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3660 { 205, &hf_atn_cpdlc_uM205FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3661 { 206, &hf_atn_cpdlc_uM206FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3662 { 207, &hf_atn_cpdlc_uM207FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3663 { 208, &hf_atn_cpdlc_uM208FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3664 { 209, &hf_atn_cpdlc_uM209LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3665 { 210, &hf_atn_cpdlc_uM210Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3666 { 211, &hf_atn_cpdlc_uM211NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3667 { 212, &hf_atn_cpdlc_uM212FacilityDesignationATISCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignationATISCode },
3668 { 213, &hf_atn_cpdlc_uM213FacilityDesignationAltimeter, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignationAltimeter },
3669 { 214, &hf_atn_cpdlc_uM214RunwayRVR, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RunwayRVR },
3670 { 215, &hf_atn_cpdlc_uM215DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees },
3671 { 216, &hf_atn_cpdlc_uM216NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3672 { 217, &hf_atn_cpdlc_uM217NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3673 { 218, &hf_atn_cpdlc_uM218NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3674 { 219, &hf_atn_cpdlc_uM219Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3675 { 220, &hf_atn_cpdlc_uM220Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3676 { 221, &hf_atn_cpdlc_uM221Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
3677 { 222, &hf_atn_cpdlc_uM222NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3678 { 223, &hf_atn_cpdlc_uM223NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3679 { 224, &hf_atn_cpdlc_uM224NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3680 { 225, &hf_atn_cpdlc_uM225NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3681 { 226, &hf_atn_cpdlc_uM226Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3682 { 227, &hf_atn_cpdlc_uM227NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3683 { 228, &hf_atn_cpdlc_uM228Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3684 { 229, &hf_atn_cpdlc_uM229NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3685 { 230, &hf_atn_cpdlc_uM230NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3686 { 231, &hf_atn_cpdlc_uM231NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3687 { 232, &hf_atn_cpdlc_uM232NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3688 { 233, &hf_atn_cpdlc_uM233NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3689 { 234, &hf_atn_cpdlc_uM234NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3690 { 235, &hf_atn_cpdlc_uM235NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3691 { 236, &hf_atn_cpdlc_uM236NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3692 { 237, &hf_atn_cpdlc_uM237NULL , ASN1_NOT_EXTENSION_ROOT, dissect_atn_cpdlc_NULL },
3693 { 0, NULL, 0, NULL }
3696 static int
3697 dissect_atn_cpdlc_ATCUplinkMsgElementId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3698 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3699 ett_atn_cpdlc_ATCUplinkMsgElementId, ATCUplinkMsgElementId_choice,
3700 NULL);
3702 return offset;
3706 static const per_sequence_t SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId_sequence_of[1] = {
3707 { &hf_atn_cpdlc_atcuplinkmessagedata_elementids_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCUplinkMsgElementId },
3710 static int
3711 dissect_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3712 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3713 ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId, SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId_sequence_of,
3714 1, 5, false);
3716 return offset;
3720 static const per_sequence_t SEQUENCE_SIZE_1_128_OF_RouteInformation_sequence_of[1] = {
3721 { &hf_atn_cpdlc_routeInformations_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteInformation },
3724 static int
3725 dissect_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3726 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3727 ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation, SEQUENCE_SIZE_1_128_OF_RouteInformation_sequence_of,
3728 1, 128, false);
3730 return offset;
3734 static const value_string atn_cpdlc_ATWDistanceTolerance_vals[] = {
3735 { 0, "plus" },
3736 { 1, "minus" },
3737 { 0, NULL }
3741 static int
3742 dissect_atn_cpdlc_ATWDistanceTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3743 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3744 2, NULL, false, 0, NULL);
3746 return offset;
3750 static const per_sequence_t ATWDistance_sequence[] = {
3751 { &hf_atn_cpdlc_atwDistanceTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWDistanceTolerance },
3752 { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance },
3753 { NULL, 0, 0, NULL }
3756 static int
3757 dissect_atn_cpdlc_ATWDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3758 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3759 ett_atn_cpdlc_ATWDistance, ATWDistance_sequence);
3761 return offset;
3765 static const value_string atn_cpdlc_ATWLevelTolerance_vals[] = {
3766 { 0, "at" },
3767 { 1, "atorabove" },
3768 { 2, "atorbelow" },
3769 { 0, NULL }
3773 static int
3774 dissect_atn_cpdlc_ATWLevelTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3775 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3776 3, NULL, false, 0, NULL);
3778 return offset;
3782 static const per_sequence_t ATWLevel_sequence[] = {
3783 { &hf_atn_cpdlc_atw , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWLevelTolerance },
3784 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
3785 { NULL, 0, 0, NULL }
3788 static int
3789 dissect_atn_cpdlc_ATWLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3790 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3791 ett_atn_cpdlc_ATWLevel, ATWLevel_sequence);
3793 return offset;
3797 static const per_sequence_t ATWLevelSequence_sequence_of[1] = {
3798 { &hf_atn_cpdlc_ATWLevelSequence_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWLevel },
3801 static int
3802 dissect_atn_cpdlc_ATWLevelSequence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3803 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3804 ett_atn_cpdlc_ATWLevelSequence, ATWLevelSequence_sequence_of,
3805 1, 2, false);
3807 return offset;
3811 static const per_sequence_t ATWAlongTrackWaypoint_sequence[] = {
3812 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
3813 { &hf_atn_cpdlc_aTWDistance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWDistance },
3814 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
3815 { &hf_atn_cpdlc_aTWLevels , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevelSequence },
3816 { NULL, 0, 0, NULL }
3819 static int
3820 dissect_atn_cpdlc_ATWAlongTrackWaypoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3821 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3822 ett_atn_cpdlc_ATWAlongTrackWaypoint, ATWAlongTrackWaypoint_sequence);
3824 return offset;
3828 static const per_sequence_t SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint_sequence_of[1] = {
3829 { &hf_atn_cpdlc_aTWAlongTrackWaypoints_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWAlongTrackWaypoint },
3832 static int
3833 dissect_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3834 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3835 ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint, SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint_sequence_of,
3836 1, 8, false);
3838 return offset;
3842 static const per_sequence_t LatitudeReportingPoints_sequence[] = {
3843 { &hf_atn_cpdlc_latitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDirection },
3844 { &hf_atn_cpdlc_latitudeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDegrees },
3845 { NULL, 0, 0, NULL }
3848 static int
3849 dissect_atn_cpdlc_LatitudeReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3850 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3851 ett_atn_cpdlc_LatitudeReportingPoints, LatitudeReportingPoints_sequence);
3853 return offset;
3857 static const per_sequence_t LongitudeReportingPoints_sequence[] = {
3858 { &hf_atn_cpdlc_longitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDirection },
3859 { &hf_atn_cpdlc_longitudeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDegrees },
3860 { NULL, 0, 0, NULL }
3863 static int
3864 dissect_atn_cpdlc_LongitudeReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3865 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3866 ett_atn_cpdlc_LongitudeReportingPoints, LongitudeReportingPoints_sequence);
3868 return offset;
3872 static const value_string atn_cpdlc_LatLonReportingPoints_vals[] = {
3873 { 0, "latitudeReportingPoints" },
3874 { 1, "longitudeReportingPoints" },
3875 { 0, NULL }
3878 static const per_choice_t LatLonReportingPoints_choice[] = {
3879 { 0, &hf_atn_cpdlc_latitudeReportingPoints, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeReportingPoints },
3880 { 1, &hf_atn_cpdlc_longitudeReportingPoints, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeReportingPoints },
3881 { 0, NULL, 0, NULL }
3884 static int
3885 dissect_atn_cpdlc_LatLonReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3886 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3887 ett_atn_cpdlc_LatLonReportingPoints, LatLonReportingPoints_choice,
3888 NULL);
3890 return offset;
3895 static int
3896 dissect_atn_cpdlc_DegreeIncrement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3897 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3898 1U, 20U, NULL, false);
3900 return offset;
3904 static const per_sequence_t ReportingPoints_sequence[] = {
3905 { &hf_atn_cpdlc_latLonReportingPoints, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonReportingPoints },
3906 { &hf_atn_cpdlc_degreeIncrement, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_DegreeIncrement },
3907 { NULL, 0, 0, NULL }
3910 static int
3911 dissect_atn_cpdlc_ReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3912 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3913 ett_atn_cpdlc_ReportingPoints, ReportingPoints_sequence);
3915 return offset;
3919 static const value_string atn_cpdlc_InterceptCourseFromSelection_vals[] = {
3920 { 0, "publishedIdentifier" },
3921 { 1, "latitudeLongitude" },
3922 { 2, "placeBearingPlaceBearing" },
3923 { 3, "placeBearingDistance" },
3924 { 0, NULL }
3927 static const per_choice_t InterceptCourseFromSelection_choice[] = {
3928 { 0, &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PublishedIdentifier },
3929 { 1, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude },
3930 { 2, &hf_atn_cpdlc_placeBearingPlaceBearing, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingPlaceBearing },
3931 { 3, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance },
3932 { 0, NULL, 0, NULL }
3935 static int
3936 dissect_atn_cpdlc_InterceptCourseFromSelection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3937 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3938 ett_atn_cpdlc_InterceptCourseFromSelection, InterceptCourseFromSelection_choice,
3939 NULL);
3941 return offset;
3945 static const per_sequence_t InterceptCourseFrom_sequence[] = {
3946 { &hf_atn_cpdlc_fromSelection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_InterceptCourseFromSelection },
3947 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
3948 { NULL, 0, 0, NULL }
3951 static int
3952 dissect_atn_cpdlc_InterceptCourseFrom(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3953 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3954 ett_atn_cpdlc_InterceptCourseFrom, InterceptCourseFrom_sequence);
3956 return offset;
3960 static const per_sequence_t SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom_sequence_of[1] = {
3961 { &hf_atn_cpdlc_interceptCourseFroms_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_InterceptCourseFrom },
3964 static int
3965 dissect_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3966 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3967 ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom, SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom_sequence_of,
3968 1, 4, false);
3970 return offset;
3974 static const per_sequence_t Holdatwaypoint_sequence[] = {
3975 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
3976 { &hf_atn_cpdlc_holdatwaypointspeedlow, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
3977 { &hf_atn_cpdlc_aTWlevel , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevel },
3978 { &hf_atn_cpdlc_holdatwaypointspeedhigh, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
3979 { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Direction },
3980 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees },
3981 { &hf_atn_cpdlc_eFCtime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
3982 { &hf_atn_cpdlc_legtype , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LegType },
3983 { NULL, 0, 0, NULL }
3986 static int
3987 dissect_atn_cpdlc_Holdatwaypoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3988 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3989 ett_atn_cpdlc_Holdatwaypoint, Holdatwaypoint_sequence);
3991 return offset;
3995 static const per_sequence_t SEQUENCE_SIZE_1_8_OF_Holdatwaypoint_sequence_of[1] = {
3996 { &hf_atn_cpdlc_holdAtWaypoints_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Holdatwaypoint },
3999 static int
4000 dissect_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4001 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4002 ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint, SEQUENCE_SIZE_1_8_OF_Holdatwaypoint_sequence_of,
4003 1, 8, false);
4005 return offset;
4009 static const per_sequence_t WaypointSpeedLevel_sequence[] = {
4010 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
4011 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
4012 { &hf_atn_cpdlc_aTWLevels , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevelSequence },
4013 { NULL, 0, 0, NULL }
4016 static int
4017 dissect_atn_cpdlc_WaypointSpeedLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4018 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4019 ett_atn_cpdlc_WaypointSpeedLevel, WaypointSpeedLevel_sequence);
4021 return offset;
4025 static const per_sequence_t SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel_sequence_of[1] = {
4026 { &hf_atn_cpdlc_waypointSpeedLevels_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WaypointSpeedLevel },
4029 static int
4030 dissect_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4031 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4032 ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel, SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel_sequence_of,
4033 1, 32, false);
4035 return offset;
4039 static const per_sequence_t RTATime_sequence[] = {
4040 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4041 { &hf_atn_cpdlc_timeTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTolerance },
4042 { NULL, 0, 0, NULL }
4045 static int
4046 dissect_atn_cpdlc_RTATime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4047 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4048 ett_atn_cpdlc_RTATime, RTATime_sequence);
4050 return offset;
4055 static int
4056 dissect_atn_cpdlc_RTATolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4057 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4058 1U, 150U, NULL, false);
4060 return offset;
4064 static const per_sequence_t RTARequiredTimeArrival_sequence[] = {
4065 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
4066 { &hf_atn_cpdlc_rTATime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RTATime },
4067 { &hf_atn_cpdlc_rTATolerance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RTATolerance },
4068 { NULL, 0, 0, NULL }
4071 static int
4072 dissect_atn_cpdlc_RTARequiredTimeArrival(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4073 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4074 ett_atn_cpdlc_RTARequiredTimeArrival, RTARequiredTimeArrival_sequence);
4076 return offset;
4080 static const per_sequence_t SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival_sequence_of[1] = {
4081 { &hf_atn_cpdlc_rTARequiredTimeArrivals_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RTARequiredTimeArrival },
4084 static int
4085 dissect_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4086 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4087 ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival, SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival_sequence_of,
4088 1, 32, false);
4090 return offset;
4094 static const per_sequence_t RouteInformationAdditional_sequence[] = {
4095 { &hf_atn_cpdlc_aTWAlongTrackWaypoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint },
4096 { &hf_atn_cpdlc_reportingpoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ReportingPoints },
4097 { &hf_atn_cpdlc_interceptCourseFroms, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom },
4098 { &hf_atn_cpdlc_holdAtWaypoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint },
4099 { &hf_atn_cpdlc_waypointSpeedLevels, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel },
4100 { &hf_atn_cpdlc_rTARequiredTimeArrivals, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival },
4101 { NULL, 0, 0, NULL }
4104 static int
4105 dissect_atn_cpdlc_RouteInformationAdditional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4106 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4107 ett_atn_cpdlc_RouteInformationAdditional, RouteInformationAdditional_sequence);
4109 return offset;
4113 static const per_sequence_t RouteClearance_sequence[] = {
4114 { &hf_atn_cpdlc_airportDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport },
4115 { &hf_atn_cpdlc_airportDestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport },
4116 { &hf_atn_cpdlc_runwayDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway },
4117 { &hf_atn_cpdlc_procedureDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName },
4118 { &hf_atn_cpdlc_runwayArrival, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway },
4119 { &hf_atn_cpdlc_procedureApproach, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName },
4120 { &hf_atn_cpdlc_procedureArrival, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName },
4121 { &hf_atn_cpdlc_routeInformations, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation },
4122 { &hf_atn_cpdlc_routeInformationAdditional, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RouteInformationAdditional },
4123 { NULL, 0, 0, NULL }
4126 static int
4127 dissect_atn_cpdlc_RouteClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4128 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4129 ett_atn_cpdlc_RouteClearance, RouteClearance_sequence);
4131 return offset;
4135 static const per_sequence_t SEQUENCE_SIZE_1_2_OF_RouteClearance_sequence_of[1] = {
4136 { &hf_atn_cpdlc_routeClearanceData_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteClearance },
4139 static int
4140 dissect_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4141 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4142 ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance, SEQUENCE_SIZE_1_2_OF_RouteClearance_sequence_of,
4143 1, 2, false);
4145 return offset;
4149 static const per_sequence_t T_atcuplinkmessagedata_constraineddata_sequence[] = {
4150 { &hf_atn_cpdlc_routeClearanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance },
4151 { NULL, 0, 0, NULL }
4154 static int
4155 dissect_atn_cpdlc_T_atcuplinkmessagedata_constraineddata(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4156 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4157 ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata, T_atcuplinkmessagedata_constraineddata_sequence);
4159 return offset;
4163 static const per_sequence_t ATCUplinkMessageData_sequence[] = {
4164 { &hf_atn_cpdlc_atcuplinkmessagedata_elementids, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId },
4165 { &hf_atn_cpdlc_atcuplinkmessagedata_constraineddata, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_T_atcuplinkmessagedata_constraineddata },
4166 { NULL, 0, 0, NULL }
4169 static int
4170 dissect_atn_cpdlc_ATCUplinkMessageData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4171 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4172 ett_atn_cpdlc_ATCUplinkMessageData, ATCUplinkMessageData_sequence);
4174 return offset;
4178 static const per_sequence_t ATCUplinkMessage_sequence[] = {
4179 { &hf_atn_cpdlc_header , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCMessageHeader },
4180 { &hf_atn_cpdlc_atcuplinkmessage_messagedata, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCUplinkMessageData },
4181 { NULL, 0, 0, NULL }
4184 static int
4185 dissect_atn_cpdlc_ATCUplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4186 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4187 ett_atn_cpdlc_ATCUplinkMessage, ATCUplinkMessage_sequence);
4189 return offset;
4193 static const value_string atn_cpdlc_UplinkMessage_vals[] = {
4194 { 0, "noMessage" },
4195 { 1, "aTCUplinkMessage" },
4196 { 0, NULL }
4199 static const per_choice_t UplinkMessage_choice[] = {
4200 { 0, &hf_atn_cpdlc_noMessage , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL },
4201 { 1, &hf_atn_cpdlc_aTCUplinkMessage, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATCUplinkMessage },
4202 { 0, NULL, 0, NULL }
4205 static int
4206 dissect_atn_cpdlc_UplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4207 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4208 ett_atn_cpdlc_UplinkMessage, UplinkMessage_choice,
4209 NULL);
4211 return offset;
4216 static int
4217 dissect_atn_cpdlc_AircraftAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4218 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4219 24, 24, false, NULL, 0, NULL, NULL);
4221 return offset;
4225 static const per_sequence_t ForwardHeader_sequence[] = {
4226 { &hf_atn_cpdlc_dateTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DateTimeGroup },
4227 { &hf_atn_cpdlc_aircraftID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftFlightIdentification },
4228 { &hf_atn_cpdlc_aircraftAddress, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftAddress },
4229 { NULL, 0, 0, NULL }
4232 static int
4233 dissect_atn_cpdlc_ForwardHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4234 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4235 ett_atn_cpdlc_ForwardHeader, ForwardHeader_sequence);
4237 return offset;
4242 static int
4243 dissect_atn_cpdlc_BIT_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4244 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4245 NO_BOUND, NO_BOUND, false, NULL, 0, NULL, NULL);
4247 return offset;
4251 static const value_string atn_cpdlc_ForwardMessage_vals[] = {
4252 { 0, "upElementIDs" },
4253 { 1, "downElementIDs" },
4254 { 0, NULL }
4257 static const per_choice_t ForwardMessage_choice[] = {
4258 { 0, &hf_atn_cpdlc_upElementIDs, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_BIT_STRING },
4259 { 1, &hf_atn_cpdlc_downElementIDs, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_BIT_STRING },
4260 { 0, NULL, 0, NULL }
4263 static int
4264 dissect_atn_cpdlc_ForwardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4265 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4266 ett_atn_cpdlc_ForwardMessage, ForwardMessage_choice,
4267 NULL);
4269 return offset;
4273 static const per_sequence_t ATCForwardMessage_sequence[] = {
4274 { &hf_atn_cpdlc_forwardHeader, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ForwardHeader },
4275 { &hf_atn_cpdlc_forwardMessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ForwardMessage },
4276 { NULL, 0, 0, NULL }
4279 static int
4280 dissect_atn_cpdlc_ATCForwardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4281 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4282 ett_atn_cpdlc_ATCForwardMessage, ATCForwardMessage_sequence);
4284 return offset;
4288 static const value_string atn_cpdlc_ATCForwardResponse_vals[] = {
4289 { 0, "success" },
4290 { 1, "service-not-supported" },
4291 { 2, "version-not-equal" },
4292 { 0, NULL }
4296 static int
4297 dissect_atn_cpdlc_ATCForwardResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4298 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4299 3, NULL, true, 0, NULL);
4301 return offset;
4305 static const value_string atn_cpdlc_GroundPDUs_vals[] = {
4306 { 0, "abortUser" },
4307 { 1, "abortProvider" },
4308 { 2, "startup" },
4309 { 3, "send" },
4310 { 4, "forward" },
4311 { 5, "forwardresponse" },
4312 { 0, NULL }
4315 static const per_choice_t GroundPDUs_choice[] = {
4316 { 0, &hf_atn_cpdlc_abortUser , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCUserAbortReason },
4317 { 1, &hf_atn_cpdlc_abortProvider, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCProviderAbortReason },
4318 { 2, &hf_atn_cpdlc_startup , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UplinkMessage },
4319 { 3, &hf_atn_cpdlc_groundpdus_send, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCUplinkMessage },
4320 { 4, &hf_atn_cpdlc_forward , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardMessage },
4321 { 5, &hf_atn_cpdlc_forwardresponse, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardResponse },
4322 { 0, NULL, 0, NULL }
4325 static int
4326 dissect_atn_cpdlc_GroundPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4327 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4328 ett_atn_cpdlc_GroundPDUs, GroundPDUs_choice,
4329 NULL);
4331 return offset;
4335 static const value_string atn_cpdlc_Mode_vals[] = {
4336 { 0, "cpdlc" },
4337 { 1, "dsc" },
4338 { 0, NULL }
4342 static int
4343 dissect_atn_cpdlc_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4344 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4345 2, NULL, false, 0, NULL);
4347 return offset;
4351 static const value_string atn_cpdlc_ClearanceType_vals[] = {
4352 { 0, "noneSpecified" },
4353 { 1, "approach" },
4354 { 2, "departure" },
4355 { 3, "further" },
4356 { 4, "start-up" },
4357 { 5, "pushback" },
4358 { 6, "taxi" },
4359 { 7, "take-off" },
4360 { 8, "landing" },
4361 { 9, "oceanic" },
4362 { 10, "en-route" },
4363 { 11, "downstream" },
4364 { 0, NULL }
4368 static int
4369 dissect_atn_cpdlc_ClearanceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4370 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4371 12, NULL, true, 0, NULL);
4373 return offset;
4378 static int
4379 dissect_atn_cpdlc_RemainingFuel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4380 offset = dissect_atn_cpdlc_Time(tvb, offset, actx, tree, hf_index);
4382 return offset;
4387 static int
4388 dissect_atn_cpdlc_Temperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4389 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4390 -100, 100U, NULL, false);
4392 return offset;
4397 static int
4398 dissect_atn_cpdlc_WindDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4399 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4400 1U, 360U, NULL, false);
4402 return offset;
4407 static int
4408 dissect_atn_cpdlc_WindSpeedEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4409 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4410 0U, 255U, NULL, false);
4412 return offset;
4417 static int
4418 dissect_atn_cpdlc_WindSpeedMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4419 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4420 0U, 511U, NULL, false);
4422 return offset;
4426 static const value_string atn_cpdlc_WindSpeed_vals[] = {
4427 { 0, "windSpeedEnglish" },
4428 { 1, "windSpeedMetric" },
4429 { 0, NULL }
4432 static const per_choice_t WindSpeed_choice[] = {
4433 { 0, &hf_atn_cpdlc_windSpeedEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_WindSpeedEnglish },
4434 { 1, &hf_atn_cpdlc_windSpeedMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_WindSpeedMetric },
4435 { 0, NULL, 0, NULL }
4438 static int
4439 dissect_atn_cpdlc_WindSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4440 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4441 ett_atn_cpdlc_WindSpeed, WindSpeed_choice,
4442 NULL);
4444 return offset;
4448 static const per_sequence_t Winds_sequence[] = {
4449 { &hf_atn_cpdlc_winds_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WindDirection },
4450 { &hf_atn_cpdlc_winds_speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WindSpeed },
4451 { NULL, 0, 0, NULL }
4454 static int
4455 dissect_atn_cpdlc_Winds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4456 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4457 ett_atn_cpdlc_Winds, Winds_sequence);
4459 return offset;
4463 static const value_string atn_cpdlc_Turbulence_vals[] = {
4464 { 0, "light" },
4465 { 1, "moderate" },
4466 { 2, "severe" },
4467 { 0, NULL }
4471 static int
4472 dissect_atn_cpdlc_Turbulence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4473 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4474 3, NULL, false, 0, NULL);
4476 return offset;
4480 static const value_string atn_cpdlc_Icing_vals[] = {
4481 { 0, "reserved" },
4482 { 1, "light" },
4483 { 2, "moderate" },
4484 { 3, "severe" },
4485 { 0, NULL }
4489 static int
4490 dissect_atn_cpdlc_Icing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4491 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4492 4, NULL, false, 0, NULL);
4494 return offset;
4498 static const value_string atn_cpdlc_VerticalDirection_vals[] = {
4499 { 0, "up" },
4500 { 1, "down" },
4501 { 0, NULL }
4505 static int
4506 dissect_atn_cpdlc_VerticalDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4507 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4508 2, NULL, false, 0, NULL);
4510 return offset;
4514 static const per_sequence_t VerticalChange_sequence[] = {
4515 { &hf_atn_cpdlc_vertical_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_VerticalDirection },
4516 { &hf_atn_cpdlc_rate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_VerticalRate },
4517 { NULL, 0, 0, NULL }
4520 static int
4521 dissect_atn_cpdlc_VerticalChange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4522 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4523 ett_atn_cpdlc_VerticalChange, VerticalChange_sequence);
4525 return offset;
4530 static int
4531 dissect_atn_cpdlc_Humidity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4532 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4533 0U, 100U, NULL, false);
4535 return offset;
4539 static const per_sequence_t PositionReport_sequence[] = {
4540 { &hf_atn_cpdlc_positioncurrent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
4541 { &hf_atn_cpdlc_timeatpositioncurrent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4542 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
4543 { &hf_atn_cpdlc_fixnext , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position },
4544 { &hf_atn_cpdlc_timeetaatfixnext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
4545 { &hf_atn_cpdlc_fixnextplusone, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position },
4546 { &hf_atn_cpdlc_timeetaatdestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
4547 { &hf_atn_cpdlc_remainingFuel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RemainingFuel },
4548 { &hf_atn_cpdlc_temperature, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Temperature },
4549 { &hf_atn_cpdlc_winds , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Winds },
4550 { &hf_atn_cpdlc_turbulence, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Turbulence },
4551 { &hf_atn_cpdlc_icing , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Icing },
4552 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
4553 { &hf_atn_cpdlc_speedground, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SpeedGround },
4554 { &hf_atn_cpdlc_verticalChange, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_VerticalChange },
4555 { &hf_atn_cpdlc_trackAngle, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees },
4556 { &hf_atn_cpdlc_heading , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees },
4557 { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Distance },
4558 { &hf_atn_cpdlc_humidity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Humidity },
4559 { &hf_atn_cpdlc_reportedWaypointPosition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position },
4560 { &hf_atn_cpdlc_reportedWaypointTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
4561 { &hf_atn_cpdlc_reportedWaypointLevel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Level },
4562 { NULL, 0, 0, NULL }
4565 static int
4566 dissect_atn_cpdlc_PositionReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4567 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4568 ett_atn_cpdlc_PositionReport, PositionReport_sequence);
4570 return offset;
4575 static int
4576 dissect_atn_cpdlc_PersonsOnBoard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4577 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4578 1U, 1024U, NULL, false);
4580 return offset;
4584 static const per_sequence_t RemainingFuelPersonsOnBoard_sequence[] = {
4585 { &hf_atn_cpdlc_remainingFuel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RemainingFuel },
4586 { &hf_atn_cpdlc_personsOnBoard, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PersonsOnBoard },
4587 { NULL, 0, 0, NULL }
4590 static int
4591 dissect_atn_cpdlc_RemainingFuelPersonsOnBoard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4592 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4593 ett_atn_cpdlc_RemainingFuelPersonsOnBoard, RemainingFuelPersonsOnBoard_sequence);
4595 return offset;
4600 static int
4601 dissect_atn_cpdlc_VersionNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4602 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4603 0U, 15U, NULL, false);
4605 return offset;
4609 static const per_sequence_t TimeDistanceToFromPosition_sequence[] = {
4610 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4611 { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance },
4612 { &hf_atn_cpdlc_tofrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom },
4613 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
4614 { NULL, 0, 0, NULL }
4617 static int
4618 dissect_atn_cpdlc_TimeDistanceToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4619 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4620 ett_atn_cpdlc_TimeDistanceToFromPosition, TimeDistanceToFromPosition_sequence);
4622 return offset;
4626 static const per_sequence_t SpeedTime_sequence[] = {
4627 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
4628 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4629 { NULL, 0, 0, NULL }
4632 static int
4633 dissect_atn_cpdlc_SpeedTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4634 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4635 ett_atn_cpdlc_SpeedTime, SpeedTime_sequence);
4637 return offset;
4641 static const per_sequence_t DistanceSpecifiedDirectionTime_sequence[] = {
4642 { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection },
4643 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4644 { NULL, 0, 0, NULL }
4647 static int
4648 dissect_atn_cpdlc_DistanceSpecifiedDirectionTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4649 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4650 ett_atn_cpdlc_DistanceSpecifiedDirectionTime, DistanceSpecifiedDirectionTime_sequence);
4652 return offset;
4656 static const per_sequence_t SpeedTypeSpeedTypeSpeedTypeSpeed_sequence[] = {
4657 { &hf_atn_cpdlc_speedTypes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType },
4658 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
4659 { NULL, 0, 0, NULL }
4662 static int
4663 dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4664 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4665 ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed, SpeedTypeSpeedTypeSpeedTypeSpeed_sequence);
4667 return offset;
4671 static const value_string atn_cpdlc_ATCDownlinkMsgElementId_vals[] = {
4672 { 0, "dM0NULL" },
4673 { 1, "dM1NULL" },
4674 { 2, "dM2NULL" },
4675 { 3, "dM3NULL" },
4676 { 4, "dM4NULL" },
4677 { 5, "dM5NULL" },
4678 { 6, "dM6Level" },
4679 { 7, "dM7LevelLevel" },
4680 { 8, "dM8Level" },
4681 { 9, "dM9Level" },
4682 { 10, "dM10Level" },
4683 { 11, "dM11PositionLevel" },
4684 { 12, "dM12PositionLevel" },
4685 { 13, "dM13TimeLevel" },
4686 { 14, "dM14TimeLevel" },
4687 { 15, "dM15DistanceSpecifiedDirection" },
4688 { 16, "dM16PositionDistanceSpecifiedDirection" },
4689 { 17, "dM17TimeDistanceSpecifiedDirection" },
4690 { 18, "dM18Speed" },
4691 { 19, "dM19SpeedSpeed" },
4692 { 20, "dM20NULL" },
4693 { 21, "dM21Frequency" },
4694 { 22, "dM22Position" },
4695 { 23, "dM23ProcedureName" },
4696 { 24, "dM24RouteClearance" },
4697 { 25, "dM25ClearanceType" },
4698 { 26, "dM26PositionRouteClearance" },
4699 { 27, "dM27DistanceSpecifiedDirection" },
4700 { 28, "dM28Level" },
4701 { 29, "dM29Level" },
4702 { 30, "dM30Level" },
4703 { 31, "dM31Position" },
4704 { 32, "dM32Level" },
4705 { 33, "dM33Position" },
4706 { 34, "dM34Speed" },
4707 { 35, "dM35Degrees" },
4708 { 36, "dM36Degrees" },
4709 { 37, "dM37Level" },
4710 { 38, "dM38Level" },
4711 { 39, "dM39Speed" },
4712 { 40, "dM40RouteClearance" },
4713 { 41, "dM41NULL" },
4714 { 42, "dM42Position" },
4715 { 43, "dM43Time" },
4716 { 44, "dM44Position" },
4717 { 45, "dM45Position" },
4718 { 46, "dM46Time" },
4719 { 47, "dM47Code" },
4720 { 48, "dM48PositionReport" },
4721 { 49, "dM49Speed" },
4722 { 50, "dM50SpeedSpeed" },
4723 { 51, "dM51NULL" },
4724 { 52, "dM52NULL" },
4725 { 53, "dM53NULL" },
4726 { 54, "dM54Level" },
4727 { 55, "dM55NULL" },
4728 { 56, "dM56NULL" },
4729 { 57, "dM57RemainingFuelPersonsOnBoard" },
4730 { 58, "dM58NULL" },
4731 { 59, "dM59PositionRouteClearance" },
4732 { 60, "dM60DistanceSpecifiedDirection" },
4733 { 61, "dM61Level" },
4734 { 62, "dM62ErrorInformation" },
4735 { 63, "dM63NULL" },
4736 { 64, "dM64FacilityDesignation" },
4737 { 65, "dM65NULL" },
4738 { 66, "dM66NULL" },
4739 { 67, "dM67FreeText" },
4740 { 68, "dM68FreeText" },
4741 { 69, "dM69NULL" },
4742 { 70, "dM70Degrees" },
4743 { 71, "dM71Degrees" },
4744 { 72, "dM72Level" },
4745 { 73, "dM73Versionnumber" },
4746 { 74, "dM74NULL" },
4747 { 75, "dM75NULL" },
4748 { 76, "dM76LevelLevel" },
4749 { 77, "dM77LevelLevel" },
4750 { 78, "dM78TimeDistanceToFromPosition" },
4751 { 79, "dM79AtisCode" },
4752 { 80, "dM80DistanceSpecifiedDirection" },
4753 { 81, "dM81LevelTime" },
4754 { 82, "dM82Level" },
4755 { 83, "dM83SpeedTime" },
4756 { 84, "dM84Speed" },
4757 { 85, "dM85DistanceSpecifiedDirectionTime" },
4758 { 86, "dM86DistanceSpecifiedDirection" },
4759 { 87, "dM87Level" },
4760 { 88, "dM88Level" },
4761 { 89, "dM89UnitnameFrequency" },
4762 { 90, "dM90FreeText" },
4763 { 91, "dM91FreeText" },
4764 { 92, "dM92FreeText" },
4765 { 93, "dM93FreeText" },
4766 { 94, "dM94FreeText" },
4767 { 95, "dM95FreeText" },
4768 { 96, "dM96FreeText" },
4769 { 97, "dM97FreeText" },
4770 { 98, "dM98FreeText" },
4771 { 99, "dM99NULL" },
4772 { 100, "dM100NULL" },
4773 { 101, "dM101NULL" },
4774 { 102, "dM102NULL" },
4775 { 103, "dM103NULL" },
4776 { 104, "dM104PositionTime" },
4777 { 105, "dM105Airport" },
4778 { 106, "dM106Level" },
4779 { 107, "dM107NULL" },
4780 { 108, "dM108NULL" },
4781 { 109, "dM109Time" },
4782 { 110, "dM110Position" },
4783 { 111, "dM111TimePosition" },
4784 { 112, "dM112NULL" },
4785 { 113, "dM113SpeedTypeSpeedTypeSpeedTypeSpeed" },
4786 { 0, NULL }
4789 static const per_choice_t ATCDownlinkMsgElementId_choice[] = {
4790 { 0, &hf_atn_cpdlc_dM0NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4791 { 1, &hf_atn_cpdlc_dM1NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4792 { 2, &hf_atn_cpdlc_dM2NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4793 { 3, &hf_atn_cpdlc_dM3NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4794 { 4, &hf_atn_cpdlc_dM4NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4795 { 5, &hf_atn_cpdlc_dM5NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4796 { 6, &hf_atn_cpdlc_dM6Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4797 { 7, &hf_atn_cpdlc_dM7LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
4798 { 8, &hf_atn_cpdlc_dM8Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4799 { 9, &hf_atn_cpdlc_dM9Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4800 { 10, &hf_atn_cpdlc_dM10Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4801 { 11, &hf_atn_cpdlc_dM11PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
4802 { 12, &hf_atn_cpdlc_dM12PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
4803 { 13, &hf_atn_cpdlc_dM13TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
4804 { 14, &hf_atn_cpdlc_dM14TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
4805 { 15, &hf_atn_cpdlc_dM15DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4806 { 16, &hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDistanceSpecifiedDirection },
4807 { 17, &hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceSpecifiedDirection },
4808 { 18, &hf_atn_cpdlc_dM18Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4809 { 19, &hf_atn_cpdlc_dM19SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed },
4810 { 20, &hf_atn_cpdlc_dM20NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4811 { 21, &hf_atn_cpdlc_dM21Frequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Frequency },
4812 { 22, &hf_atn_cpdlc_dM22Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4813 { 23, &hf_atn_cpdlc_dM23ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName },
4814 { 24, &hf_atn_cpdlc_dM24RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex },
4815 { 25, &hf_atn_cpdlc_dM25ClearanceType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ClearanceType },
4816 { 26, &hf_atn_cpdlc_dM26PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
4817 { 27, &hf_atn_cpdlc_dM27DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4818 { 28, &hf_atn_cpdlc_dM28Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4819 { 29, &hf_atn_cpdlc_dM29Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4820 { 30, &hf_atn_cpdlc_dM30Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4821 { 31, &hf_atn_cpdlc_dM31Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4822 { 32, &hf_atn_cpdlc_dM32Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4823 { 33, &hf_atn_cpdlc_dM33Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4824 { 34, &hf_atn_cpdlc_dM34Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4825 { 35, &hf_atn_cpdlc_dM35Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
4826 { 36, &hf_atn_cpdlc_dM36Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
4827 { 37, &hf_atn_cpdlc_dM37Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4828 { 38, &hf_atn_cpdlc_dM38Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4829 { 39, &hf_atn_cpdlc_dM39Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4830 { 40, &hf_atn_cpdlc_dM40RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex },
4831 { 41, &hf_atn_cpdlc_dM41NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4832 { 42, &hf_atn_cpdlc_dM42Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4833 { 43, &hf_atn_cpdlc_dM43Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
4834 { 44, &hf_atn_cpdlc_dM44Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4835 { 45, &hf_atn_cpdlc_dM45Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4836 { 46, &hf_atn_cpdlc_dM46Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
4837 { 47, &hf_atn_cpdlc_dM47Code , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Code },
4838 { 48, &hf_atn_cpdlc_dM48PositionReport, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionReport },
4839 { 49, &hf_atn_cpdlc_dM49Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4840 { 50, &hf_atn_cpdlc_dM50SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed },
4841 { 51, &hf_atn_cpdlc_dM51NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4842 { 52, &hf_atn_cpdlc_dM52NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4843 { 53, &hf_atn_cpdlc_dM53NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4844 { 54, &hf_atn_cpdlc_dM54Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4845 { 55, &hf_atn_cpdlc_dM55NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4846 { 56, &hf_atn_cpdlc_dM56NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4847 { 57, &hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RemainingFuelPersonsOnBoard },
4848 { 58, &hf_atn_cpdlc_dM58NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4849 { 59, &hf_atn_cpdlc_dM59PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
4850 { 60, &hf_atn_cpdlc_dM60DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4851 { 61, &hf_atn_cpdlc_dM61Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4852 { 62, &hf_atn_cpdlc_dM62ErrorInformation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ErrorInformation },
4853 { 63, &hf_atn_cpdlc_dM63NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4854 { 64, &hf_atn_cpdlc_dM64FacilityDesignation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignation },
4855 { 65, &hf_atn_cpdlc_dM65NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4856 { 66, &hf_atn_cpdlc_dM66NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4857 { 67, &hf_atn_cpdlc_dM67FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4858 { 68, &hf_atn_cpdlc_dM68FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4859 { 69, &hf_atn_cpdlc_dM69NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4860 { 70, &hf_atn_cpdlc_dM70Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
4861 { 71, &hf_atn_cpdlc_dM71Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
4862 { 72, &hf_atn_cpdlc_dM72Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4863 { 73, &hf_atn_cpdlc_dM73Versionnumber, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VersionNumber },
4864 { 74, &hf_atn_cpdlc_dM74NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4865 { 75, &hf_atn_cpdlc_dM75NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4866 { 76, &hf_atn_cpdlc_dM76LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
4867 { 77, &hf_atn_cpdlc_dM77LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
4868 { 78, &hf_atn_cpdlc_dM78TimeDistanceToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceToFromPosition },
4869 { 79, &hf_atn_cpdlc_dM79AtisCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATISCode },
4870 { 80, &hf_atn_cpdlc_dM80DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4871 { 81, &hf_atn_cpdlc_dM81LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
4872 { 82, &hf_atn_cpdlc_dM82Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4873 { 83, &hf_atn_cpdlc_dM83SpeedTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTime },
4874 { 84, &hf_atn_cpdlc_dM84Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4875 { 85, &hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirectionTime },
4876 { 86, &hf_atn_cpdlc_dM86DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4877 { 87, &hf_atn_cpdlc_dM87Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4878 { 88, &hf_atn_cpdlc_dM88Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4879 { 89, &hf_atn_cpdlc_dM89UnitnameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency },
4880 { 90, &hf_atn_cpdlc_dM90FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4881 { 91, &hf_atn_cpdlc_dM91FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4882 { 92, &hf_atn_cpdlc_dM92FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4883 { 93, &hf_atn_cpdlc_dM93FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4884 { 94, &hf_atn_cpdlc_dM94FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4885 { 95, &hf_atn_cpdlc_dM95FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4886 { 96, &hf_atn_cpdlc_dM96FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4887 { 97, &hf_atn_cpdlc_dM97FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4888 { 98, &hf_atn_cpdlc_dM98FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4889 { 99, &hf_atn_cpdlc_dM99NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4890 { 100, &hf_atn_cpdlc_dM100NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4891 { 101, &hf_atn_cpdlc_dM101NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4892 { 102, &hf_atn_cpdlc_dM102NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4893 { 103, &hf_atn_cpdlc_dM103NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4894 { 104, &hf_atn_cpdlc_dM104PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime },
4895 { 105, &hf_atn_cpdlc_dM105Airport, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Airport },
4896 { 106, &hf_atn_cpdlc_dM106Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4897 { 107, &hf_atn_cpdlc_dM107NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4898 { 108, &hf_atn_cpdlc_dM108NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4899 { 109, &hf_atn_cpdlc_dM109Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
4900 { 110, &hf_atn_cpdlc_dM110Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4901 { 111, &hf_atn_cpdlc_dM111TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition },
4902 { 112, &hf_atn_cpdlc_dM112NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4903 { 113, &hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed },
4904 { 0, NULL, 0, NULL }
4907 static int
4908 dissect_atn_cpdlc_ATCDownlinkMsgElementId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4909 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4910 ett_atn_cpdlc_ATCDownlinkMsgElementId, ATCDownlinkMsgElementId_choice,
4911 NULL);
4913 return offset;
4917 static const per_sequence_t SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId_sequence_of[1] = {
4918 { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCDownlinkMsgElementId },
4921 static int
4922 dissect_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId(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_sequence_of(tvb, offset, actx, tree, hf_index,
4924 ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId, SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId_sequence_of,
4925 1, 5, false);
4927 return offset;
4931 static const per_sequence_t T_atcdownlinkmessagedata_constraineddata_sequence[] = {
4932 { &hf_atn_cpdlc_routeClearanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance },
4933 { NULL, 0, 0, NULL }
4936 static int
4937 dissect_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4938 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4939 ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata, T_atcdownlinkmessagedata_constraineddata_sequence);
4941 return offset;
4945 static const per_sequence_t ATCDownlinkMessageData_sequence[] = {
4946 { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId },
4947 { &hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata },
4948 { NULL, 0, 0, NULL }
4951 static int
4952 dissect_atn_cpdlc_ATCDownlinkMessageData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4953 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4954 ett_atn_cpdlc_ATCDownlinkMessageData, ATCDownlinkMessageData_sequence);
4956 return offset;
4960 static const per_sequence_t ATCDownlinkMessage_sequence[] = {
4961 { &hf_atn_cpdlc_header , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCMessageHeader },
4962 { &hf_atn_cpdlc_atcdownlinkmessage_messagedata, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCDownlinkMessageData },
4963 { NULL, 0, 0, NULL }
4966 static int
4967 dissect_atn_cpdlc_ATCDownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4968 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4969 ett_atn_cpdlc_ATCDownlinkMessage, ATCDownlinkMessage_sequence);
4971 return offset;
4975 static const value_string atn_cpdlc_DownlinkMessage_vals[] = {
4976 { 0, "noMessage" },
4977 { 1, "aTCDownlinkMessage" },
4978 { 0, NULL }
4981 static const per_choice_t DownlinkMessage_choice[] = {
4982 { 0, &hf_atn_cpdlc_noMessage , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL },
4983 { 1, &hf_atn_cpdlc_aTCDownlinkMessage, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATCDownlinkMessage },
4984 { 0, NULL, 0, NULL }
4987 static int
4988 dissect_atn_cpdlc_DownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4989 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4990 ett_atn_cpdlc_DownlinkMessage, DownlinkMessage_choice,
4991 NULL);
4993 return offset;
4997 static const per_sequence_t StartDownMessage_sequence[] = {
4998 { &hf_atn_cpdlc_mode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Mode },
4999 { &hf_atn_cpdlc_startDownlinkMessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DownlinkMessage },
5000 { NULL, 0, 0, NULL }
5003 static int
5004 dissect_atn_cpdlc_StartDownMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5005 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5006 ett_atn_cpdlc_StartDownMessage, StartDownMessage_sequence);
5008 return offset;
5012 static const value_string atn_cpdlc_AircraftPDUs_vals[] = {
5013 { 0, "abortUser" },
5014 { 1, "abortProvider" },
5015 { 2, "startdown" },
5016 { 3, "send" },
5017 { 0, NULL }
5020 static const per_choice_t AircraftPDUs_choice[] = {
5021 { 0, &hf_atn_cpdlc_abortUser , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCUserAbortReason },
5022 { 1, &hf_atn_cpdlc_abortProvider, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCProviderAbortReason },
5023 { 2, &hf_atn_cpdlc_startdown , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_StartDownMessage },
5024 { 3, &hf_atn_cpdlc_aircraftpdus_send, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCDownlinkMessage },
5025 { 0, NULL, 0, NULL }
5028 static int
5029 dissect_atn_cpdlc_AircraftPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5030 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5031 ett_atn_cpdlc_AircraftPDUs, AircraftPDUs_choice,
5032 NULL);
5034 return offset;
5038 static const value_string atn_cpdlc_PMCPDLCUserAbortReason_vals[] = {
5039 { 0, "undefined" },
5040 { 1, "no-message-identification-numbers-available" },
5041 { 2, "duplicate-message-identification-numbers" },
5042 { 3, "no-longer-next-data-authority" },
5043 { 4, "current-data-authority-abort" },
5044 { 5, "commanded-termination" },
5045 { 6, "invalid-response" },
5046 { 7, "time-out-of-synchronisation" },
5047 { 8, "unknown-integrity-check" },
5048 { 9, "validation-failure" },
5049 { 10, "unable-to-decode-message" },
5050 { 11, "invalid-pdu" },
5051 { 12, "invalid-CPDLC-message" },
5052 { 0, NULL }
5056 static int
5057 dissect_atn_cpdlc_PMCPDLCUserAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5058 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5059 13, NULL, true, 0, NULL);
5061 return offset;
5065 static const value_string atn_cpdlc_PMCPDLCProviderAbortReason_vals[] = {
5066 { 0, "timer-expired" },
5067 { 1, "undefined-error" },
5068 { 2, "invalid-PDU" },
5069 { 3, "protocol-error" },
5070 { 4, "communication-service-error" },
5071 { 5, "communication-service-failure" },
5072 { 6, "invalid-QOS-parameter" },
5073 { 7, "expected-PDU-missing" },
5074 { 0, NULL }
5078 static int
5079 dissect_atn_cpdlc_PMCPDLCProviderAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5080 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5081 8, NULL, true, 0, NULL);
5083 return offset;
5088 static int
5089 dissect_atn_cpdlc_AlgorithmIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5090 proto_tree *top_tree=NULL;
5092 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree, NULL);
5095 return offset;
5100 static int
5101 dissect_atn_cpdlc_CPDLCMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5102 tvbuff_t *tvb_usr = NULL;
5104 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, false, NULL, 0, &tvb_usr, NULL);
5106 if (tvb_usr) {
5107 switch(check_heur_msg_type(actx->pinfo)){
5108 case dm:
5109 dissect_atn_cpdlc_ATCDownlinkMessage(tvb_new_subset_remaining(tvb_usr, 0), 0, actx, tree, hf_index);
5110 break;
5111 case um:
5112 dissect_atn_cpdlc_ATCUplinkMessage(tvb_new_subset_remaining(tvb_usr, 0), 0, actx , tree, hf_index);
5113 break;
5114 default:
5115 break;
5120 return offset;
5124 static const per_sequence_t ProtectedUplinkMessage_sequence[] = {
5125 { &hf_atn_cpdlc_algorithmIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_AlgorithmIdentifier },
5126 { &hf_atn_cpdlc_protectedMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_CPDLCMessage },
5127 { &hf_atn_cpdlc_integrityCheck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_BIT_STRING },
5128 { NULL, 0, 0, NULL }
5131 static int
5132 dissect_atn_cpdlc_ProtectedUplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5133 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5134 ett_atn_cpdlc_ProtectedUplinkMessage, ProtectedUplinkMessage_sequence);
5136 return offset;
5140 static const value_string atn_cpdlc_ProtectedGroundPDUs_vals[] = {
5141 { 0, "abortUser" },
5142 { 1, "abortProvider" },
5143 { 2, "startup" },
5144 { 3, "send" },
5145 { 4, "forward" },
5146 { 5, "forwardresponse" },
5147 { 0, NULL }
5150 static const per_choice_t ProtectedGroundPDUs_choice[] = {
5151 { 0, &hf_atn_cpdlc_pmcpdlcuserabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCUserAbortReason },
5152 { 1, &hf_atn_cpdlc_pmcpdlcproviderabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCProviderAbortReason },
5153 { 2, &hf_atn_cpdlc_protecteduplinkmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedUplinkMessage },
5154 { 3, &hf_atn_cpdlc_protecteduplinkmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedUplinkMessage },
5155 { 4, &hf_atn_cpdlc_forward , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardMessage },
5156 { 5, &hf_atn_cpdlc_forwardresponse, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardResponse },
5157 { 0, NULL, 0, NULL }
5160 static int
5161 dissect_atn_cpdlc_ProtectedGroundPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5162 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5163 ett_atn_cpdlc_ProtectedGroundPDUs, ProtectedGroundPDUs_choice,
5164 NULL);
5166 return offset;
5170 static const value_string atn_cpdlc_ProtectedMode_vals[] = {
5171 { 0, "cpdlc" },
5172 { 1, "dsc" },
5173 { 0, NULL }
5177 static int
5178 dissect_atn_cpdlc_ProtectedMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5179 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5180 2, NULL, false, 0, NULL);
5182 return offset;
5186 static const per_sequence_t ProtectedDownlinkMessage_sequence[] = {
5187 { &hf_atn_cpdlc_algorithmIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_AlgorithmIdentifier },
5188 { &hf_atn_cpdlc_protectedMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_CPDLCMessage },
5189 { &hf_atn_cpdlc_integrityCheck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_BIT_STRING },
5190 { NULL, 0, 0, NULL }
5193 static int
5194 dissect_atn_cpdlc_ProtectedDownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5195 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5196 ett_atn_cpdlc_ProtectedDownlinkMessage, ProtectedDownlinkMessage_sequence);
5198 return offset;
5202 static const per_sequence_t ProtectedStartDownMessage_sequence[] = {
5203 { &hf_atn_cpdlc_protectedmode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProtectedMode },
5204 { &hf_atn_cpdlc_protecteddownlinkmessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProtectedDownlinkMessage },
5205 { NULL, 0, 0, NULL }
5208 static int
5209 dissect_atn_cpdlc_ProtectedStartDownMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5210 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5211 ett_atn_cpdlc_ProtectedStartDownMessage, ProtectedStartDownMessage_sequence);
5213 return offset;
5217 static const value_string atn_cpdlc_ProtectedAircraftPDUs_vals[] = {
5218 { 0, "abortUser" },
5219 { 1, "abortProvider" },
5220 { 2, "startdown" },
5221 { 3, "send" },
5222 { 0, NULL }
5225 static const per_choice_t ProtectedAircraftPDUs_choice[] = {
5226 { 0, &hf_atn_cpdlc_pmcpdlcuserabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCUserAbortReason },
5227 { 1, &hf_atn_cpdlc_pmcpdlcproviderabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCProviderAbortReason },
5228 { 2, &hf_atn_cpdlc_protectedstartDownmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedStartDownMessage },
5229 { 3, &hf_atn_cpdlc_send , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedDownlinkMessage },
5230 { 0, NULL, 0, NULL }
5233 static int
5234 dissect_atn_cpdlc_ProtectedAircraftPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5235 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5236 ett_atn_cpdlc_ProtectedAircraftPDUs, ProtectedAircraftPDUs_choice,
5237 NULL);
5239 return offset;
5242 /*--- PDUs ---*/
5244 static int dissect_GroundPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
5245 int offset = 0;
5246 asn1_ctx_t asn1_ctx;
5247 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
5248 offset = dissect_atn_cpdlc_GroundPDUs(tvb, offset, &asn1_ctx, tree, hf_atn_cpdlc_GroundPDUs_PDU);
5249 offset += 7; offset >>= 3;
5250 return offset;
5252 static int dissect_AircraftPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
5253 int offset = 0;
5254 asn1_ctx_t asn1_ctx;
5255 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
5256 offset = dissect_atn_cpdlc_AircraftPDUs(tvb, offset, &asn1_ctx, tree, hf_atn_cpdlc_AircraftPDUs_PDU);
5257 offset += 7; offset >>= 3;
5258 return offset;
5260 static int dissect_ProtectedGroundPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
5261 int offset = 0;
5262 asn1_ctx_t asn1_ctx;
5263 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
5264 offset = dissect_atn_cpdlc_ProtectedGroundPDUs(tvb, offset, &asn1_ctx, tree, hf_atn_cpdlc_ProtectedGroundPDUs_PDU);
5265 offset += 7; offset >>= 3;
5266 return offset;
5268 static int dissect_ProtectedAircraftPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
5269 int offset = 0;
5270 asn1_ctx_t asn1_ctx;
5271 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo);
5272 offset = dissect_atn_cpdlc_ProtectedAircraftPDUs(tvb, offset, &asn1_ctx, tree, hf_atn_cpdlc_ProtectedAircraftPDUs_PDU);
5273 offset += 7; offset >>= 3;
5274 return offset;
5278 /* Wireshark ID of CPDLC protocol */
5279 static int proto_atn_cpdlc;
5282 static int
5283 dissect_atn_cpdlc(
5284 tvbuff_t *tvb,
5285 packet_info *pinfo,
5286 proto_tree *tree,
5287 void *data _U_)
5289 /* note: */
5290 /* there are two co-existing applications of CPDLC: */
5291 /* "plain old" (ae-qualifier 2) and */
5292 /* "protected mode" (ae-qualifier 22) CPDLC. */
5293 /* "protected mode" was introduced to cope with a */
5294 /* safety issue in which a message would sent to the wrong aircraft. */
5296 /* note:*/
5297 /* The protection is an additional checksum and covers the message content, */
5298 /* the 24-bit address of the aircraft, the current flight id and */
5299 /* the current ground facility so that an aircraft would be able to reject */
5300 /* messages which are unexpected (i.e. messages to another flight or */
5301 /* messages from the wrong center). */
5303 /*note:*/
5304 /* although "plain old" CPDLC is more or less deprecated */
5305 /* many aircraft cannot perform */
5306 /* "protected mode" for this largely depends on */
5307 /* upgraded avionics packages */
5309 /*note:*/
5310 /* The use of CPDLC is *optional* as the pilot */
5311 /* may always use a voice radio channel to talk to the controller.*/
5313 proto_tree *atn_cpdlc_tree = NULL;
5314 atn_conversation_t *atn_cv = NULL;
5316 /* note: */
5317 /* we need the ae qualifier stored within the conversation */
5318 /* to decode "plain old cpdlc" or */
5319 /* "protected mode cpdlc correctly " */
5321 /* DT: dstref present, srcref is always zero */
5322 if((pinfo->clnp_dstref) && (!pinfo->clnp_srcref)){
5323 atn_cv = find_atn_conversation(
5324 &pinfo->dst,
5325 pinfo->clnp_dstref,
5326 &pinfo->src );
5328 /* CR: srcref present, dstref is always zero */
5329 if((!pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
5330 atn_cv = find_atn_conversation(
5331 &pinfo->src,
5332 pinfo->clnp_srcref,
5333 &pinfo->dst );
5335 /* CC: srcref and dstref present, always use src/srcref & dst */
5336 if((pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
5337 atn_cv = find_atn_conversation(
5338 &pinfo->src,
5339 pinfo->clnp_srcref,
5340 &pinfo->dst );
5343 if(!atn_cv){ /* atn conversation not found */
5344 return 0; }
5346 atn_cpdlc_tree = proto_tree_add_subtree(
5347 tree, tvb, 0, -1, ett_atn_cpdlc, NULL,
5348 ATN_CPDLC_PROTO );
5350 switch(atn_cv->ae_qualifier){
5351 case pmcpdlc:
5352 if( check_heur_msg_type(pinfo) == um ) {
5353 /* uplink PDU's = Ground PDU's */
5354 dissect_ProtectedGroundPDUs_PDU(
5355 tvb,
5356 pinfo,
5357 atn_cpdlc_tree, NULL);
5358 }else { /* downlink PDU's = Aircraft PDU's */
5359 dissect_ProtectedAircraftPDUs_PDU(
5360 tvb,
5361 pinfo,
5362 atn_cpdlc_tree, NULL);
5364 break;
5365 case cpdlc:
5366 if( check_heur_msg_type(pinfo) == um ) {
5367 /* uplink PDU's = Ground PDU's */
5368 dissect_GroundPDUs_PDU(
5369 tvb,
5370 pinfo,
5371 atn_cpdlc_tree, NULL);
5372 }else { /* downlink PDU's = Aircraft PDU's */
5373 dissect_AircraftPDUs_PDU(
5374 tvb,
5375 pinfo,
5376 atn_cpdlc_tree, NULL);
5378 break;
5379 default:
5380 break;
5382 return tvb_reported_length_remaining(tvb, 0);
5385 static bool
5386 dissect_atn_cpdlc_heur(
5387 tvbuff_t *tvb,
5388 packet_info *pinfo,
5389 proto_tree *tree,
5390 void *data _U_)
5392 atn_conversation_t *volatile atn_cv = NULL;
5393 volatile bool is_atn_cpdlc = false;
5394 volatile bool is_pm = false;
5395 int type;
5397 type = check_heur_msg_type(pinfo);
5399 switch(type){
5400 case um:
5401 TRY {
5402 dissect_ProtectedGroundPDUs_PDU(tvb, pinfo, NULL, NULL);
5403 is_atn_cpdlc = true;
5404 is_pm = true;}
5405 CATCH_ALL{
5406 is_atn_cpdlc = false;
5407 is_pm = false;}
5408 ENDTRY;
5409 if (is_atn_cpdlc) {
5410 break;
5412 TRY {
5413 dissect_GroundPDUs_PDU(tvb, pinfo, NULL, NULL);
5414 is_pm = false;
5415 is_atn_cpdlc = true;}
5416 CATCH_ALL{
5417 is_atn_cpdlc = false;
5418 is_pm = false;}
5419 ENDTRY;
5420 break;
5421 case dm:
5422 TRY {
5423 dissect_ProtectedAircraftPDUs_PDU(tvb, pinfo, NULL, NULL);
5424 is_atn_cpdlc = true;
5425 is_pm = true;}
5426 CATCH_ALL {
5427 is_atn_cpdlc = false;
5428 is_pm = false; }
5429 ENDTRY;
5430 if (is_atn_cpdlc) {
5431 break;
5433 TRY{
5434 dissect_AircraftPDUs_PDU(tvb, pinfo, NULL, NULL);
5435 is_atn_cpdlc = true;
5436 is_pm = false;}
5437 CATCH_ALL{
5438 is_atn_cpdlc = false;
5439 is_pm = false;}
5440 ENDTRY;
5441 break;
5442 default:
5443 break;
5446 if(is_atn_cpdlc){
5447 /* note: */
5448 /* all subsequent PDU's belonging to this conversation */
5449 /* are considered CPDLC */
5450 /* if the first CPDLC PDU has been decoded successfully */
5451 /* (This is done in "atn-ulcs" by using "call_dissector_with_data()") */
5453 /* DT: dstref present, srcref is always zero */
5454 if((pinfo->clnp_dstref) && (!pinfo->clnp_srcref)){
5455 atn_cv = find_atn_conversation(&pinfo->dst,
5456 pinfo->clnp_dstref,
5457 &pinfo->src );
5459 /* CR: srcref present, dstref is always zero */
5460 if((!pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
5461 atn_cv = find_atn_conversation(&pinfo->src,
5462 pinfo->clnp_srcref,
5463 &pinfo->dst );
5465 /* CC: srcref and dstref present, always use src/srcref & dst */
5466 if((pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
5467 atn_cv = find_atn_conversation(&pinfo->src,
5468 pinfo->clnp_srcref,
5469 &pinfo->dst );
5472 if(atn_cv){ /* atn conversation found */
5473 if(is_pm == true) {
5474 atn_cv->ae_qualifier = pmcpdlc; }
5475 else {
5476 atn_cv->ae_qualifier = cpdlc; }
5477 dissect_atn_cpdlc(tvb, pinfo, tree, NULL);
5479 }else { /* there should *always* be an atn conversation */
5480 is_atn_cpdlc = false;
5483 return is_atn_cpdlc;
5488 void proto_register_atn_cpdlc (void)
5490 static hf_register_info hf_atn_cpdlc[] = {
5491 { &hf_atn_cpdlc_GroundPDUs_PDU,
5492 { "GroundPDUs", "atn-cpdlc.GroundPDUs",
5493 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_GroundPDUs_vals), 0,
5494 NULL, HFILL }},
5495 { &hf_atn_cpdlc_AircraftPDUs_PDU,
5496 { "AircraftPDUs", "atn-cpdlc.AircraftPDUs",
5497 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_AircraftPDUs_vals), 0,
5498 NULL, HFILL }},
5499 { &hf_atn_cpdlc_ProtectedGroundPDUs_PDU,
5500 { "ProtectedGroundPDUs", "atn-cpdlc.ProtectedGroundPDUs",
5501 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedGroundPDUs_vals), 0,
5502 NULL, HFILL }},
5503 { &hf_atn_cpdlc_ProtectedAircraftPDUs_PDU,
5504 { "ProtectedAircraftPDUs", "atn-cpdlc.ProtectedAircraftPDUs",
5505 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedAircraftPDUs_vals), 0,
5506 NULL, HFILL }},
5507 { &hf_atn_cpdlc_abortUser,
5508 { "abortUser", "atn-cpdlc.abortUser",
5509 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_CPDLCUserAbortReason_vals), 0,
5510 "CPDLCUserAbortReason", HFILL }},
5511 { &hf_atn_cpdlc_abortProvider,
5512 { "abortProvider", "atn-cpdlc.abortProvider",
5513 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_CPDLCProviderAbortReason_vals), 0,
5514 "CPDLCProviderAbortReason", HFILL }},
5515 { &hf_atn_cpdlc_startup,
5516 { "startup", "atn-cpdlc.startup",
5517 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_UplinkMessage_vals), 0,
5518 "UplinkMessage", HFILL }},
5519 { &hf_atn_cpdlc_groundpdus_send,
5520 { "send", "atn-cpdlc.send_element",
5521 FT_NONE, BASE_NONE, NULL, 0,
5522 "ATCUplinkMessage", HFILL }},
5523 { &hf_atn_cpdlc_forward,
5524 { "forward", "atn-cpdlc.forward_element",
5525 FT_NONE, BASE_NONE, NULL, 0,
5526 "ATCForwardMessage", HFILL }},
5527 { &hf_atn_cpdlc_forwardresponse,
5528 { "forwardresponse", "atn-cpdlc.forwardresponse",
5529 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCForwardResponse_vals), 0,
5530 "ATCForwardResponse", HFILL }},
5531 { &hf_atn_cpdlc_noMessage,
5532 { "noMessage", "atn-cpdlc.noMessage_element",
5533 FT_NONE, BASE_NONE, NULL, 0,
5534 NULL, HFILL }},
5535 { &hf_atn_cpdlc_aTCUplinkMessage,
5536 { "aTCUplinkMessage", "atn-cpdlc.aTCUplinkMessage_element",
5537 FT_NONE, BASE_NONE, NULL, 0,
5538 NULL, HFILL }},
5539 { &hf_atn_cpdlc_startdown,
5540 { "startdown", "atn-cpdlc.startdown_element",
5541 FT_NONE, BASE_NONE, NULL, 0,
5542 "StartDownMessage", HFILL }},
5543 { &hf_atn_cpdlc_aircraftpdus_send,
5544 { "send", "atn-cpdlc.send_element",
5545 FT_NONE, BASE_NONE, NULL, 0,
5546 "ATCDownlinkMessage", HFILL }},
5547 { &hf_atn_cpdlc_mode,
5548 { "mode", "atn-cpdlc.mode",
5549 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Mode_vals), 0,
5550 NULL, HFILL }},
5551 { &hf_atn_cpdlc_startDownlinkMessage,
5552 { "startDownlinkMessage", "atn-cpdlc.startDownlinkMessage",
5553 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_DownlinkMessage_vals), 0,
5554 "DownlinkMessage", HFILL }},
5555 { &hf_atn_cpdlc_aTCDownlinkMessage,
5556 { "aTCDownlinkMessage", "atn-cpdlc.aTCDownlinkMessage_element",
5557 FT_NONE, BASE_NONE, NULL, 0,
5558 NULL, HFILL }},
5559 { &hf_atn_cpdlc_pmcpdlcuserabortreason,
5560 { "abortUser", "atn-cpdlc.abortUser",
5561 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PMCPDLCUserAbortReason_vals), 0,
5562 "PMCPDLCUserAbortReason", HFILL }},
5563 { &hf_atn_cpdlc_pmcpdlcproviderabortreason,
5564 { "abortProvider", "atn-cpdlc.abortProvider",
5565 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PMCPDLCProviderAbortReason_vals), 0,
5566 "PMCPDLCProviderAbortReason", HFILL }},
5567 { &hf_atn_cpdlc_protecteduplinkmessage,
5568 { "startup", "atn-cpdlc.startup_element",
5569 FT_NONE, BASE_NONE, NULL, 0,
5570 "ProtectedUplinkMessage", HFILL }},
5571 { &hf_atn_cpdlc_algorithmIdentifier,
5572 { "algorithmIdentifier", "atn-cpdlc.algorithmIdentifier",
5573 FT_REL_OID, BASE_NONE, NULL, 0,
5574 NULL, HFILL }},
5575 { &hf_atn_cpdlc_protectedMessage,
5576 { "protectedMessage", "atn-cpdlc.protectedMessage",
5577 FT_BYTES, BASE_NONE, NULL, 0,
5578 "CPDLCMessage", HFILL }},
5579 { &hf_atn_cpdlc_integrityCheck,
5580 { "integrityCheck", "atn-cpdlc.integrityCheck",
5581 FT_BYTES, BASE_NONE, NULL, 0,
5582 "BIT_STRING", HFILL }},
5583 { &hf_atn_cpdlc_forwardHeader,
5584 { "forwardHeader", "atn-cpdlc.forwardHeader_element",
5585 FT_NONE, BASE_NONE, NULL, 0,
5586 NULL, HFILL }},
5587 { &hf_atn_cpdlc_forwardMessage,
5588 { "forwardMessage", "atn-cpdlc.forwardMessage",
5589 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ForwardMessage_vals), 0,
5590 NULL, HFILL }},
5591 { &hf_atn_cpdlc_dateTime,
5592 { "dateTime", "atn-cpdlc.dateTime_element",
5593 FT_NONE, BASE_NONE, NULL, 0,
5594 "DateTimeGroup", HFILL }},
5595 { &hf_atn_cpdlc_aircraftID,
5596 { "aircraftID", "atn-cpdlc.aircraftID",
5597 FT_STRING, BASE_NONE, NULL, 0,
5598 "AircraftFlightIdentification", HFILL }},
5599 { &hf_atn_cpdlc_aircraftAddress,
5600 { "aircraftAddress", "atn-cpdlc.aircraftAddress",
5601 FT_BYTES, BASE_NONE, NULL, 0,
5602 NULL, HFILL }},
5603 { &hf_atn_cpdlc_upElementIDs,
5604 { "upElementIDs", "atn-cpdlc.upElementIDs",
5605 FT_BYTES, BASE_NONE, NULL, 0,
5606 "BIT_STRING", HFILL }},
5607 { &hf_atn_cpdlc_downElementIDs,
5608 { "downElementIDs", "atn-cpdlc.downElementIDs",
5609 FT_BYTES, BASE_NONE, NULL, 0,
5610 "BIT_STRING", HFILL }},
5611 { &hf_atn_cpdlc_protectedstartDownmessage,
5612 { "startdown", "atn-cpdlc.startdown_element",
5613 FT_NONE, BASE_NONE, NULL, 0,
5614 "ProtectedStartDownMessage", HFILL }},
5615 { &hf_atn_cpdlc_send,
5616 { "send", "atn-cpdlc.send_element",
5617 FT_NONE, BASE_NONE, NULL, 0,
5618 "ProtectedDownlinkMessage", HFILL }},
5619 { &hf_atn_cpdlc_protectedmode,
5620 { "mode", "atn-cpdlc.mode",
5621 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedMode_vals), 0,
5622 "ProtectedMode", HFILL }},
5623 { &hf_atn_cpdlc_protecteddownlinkmessage,
5624 { "startDownlinkMessage", "atn-cpdlc.startDownlinkMessage_element",
5625 FT_NONE, BASE_NONE, NULL, 0,
5626 "ProtectedDownlinkMessage", HFILL }},
5627 { &hf_atn_cpdlc_header,
5628 { "header", "atn-cpdlc.header_element",
5629 FT_NONE, BASE_NONE, NULL, 0,
5630 "ATCMessageHeader", HFILL }},
5631 { &hf_atn_cpdlc_atcuplinkmessage_messagedata,
5632 { "messageData", "atn-cpdlc.messageData_element",
5633 FT_NONE, BASE_NONE, NULL, 0,
5634 "ATCUplinkMessageData", HFILL }},
5635 { &hf_atn_cpdlc_atcuplinkmessagedata_elementids,
5636 { "elementIds", "atn-cpdlc.elementIds",
5637 FT_UINT32, BASE_DEC, NULL, 0,
5638 "SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId", HFILL }},
5639 { &hf_atn_cpdlc_atcuplinkmessagedata_elementids_item,
5640 { "ATCUplinkMsgElementId", "atn-cpdlc.ATCUplinkMsgElementId",
5641 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCUplinkMsgElementId_vals), 0,
5642 NULL, HFILL }},
5643 { &hf_atn_cpdlc_atcuplinkmessagedata_constraineddata,
5644 { "constrainedData", "atn-cpdlc.constrainedData_element",
5645 FT_NONE, BASE_NONE, NULL, 0,
5646 "T_atcuplinkmessagedata_constraineddata", HFILL }},
5647 { &hf_atn_cpdlc_routeClearanceData,
5648 { "routeClearanceData", "atn-cpdlc.routeClearanceData",
5649 FT_UINT32, BASE_DEC, NULL, 0,
5650 "SEQUENCE_SIZE_1_2_OF_RouteClearance", HFILL }},
5651 { &hf_atn_cpdlc_routeClearanceData_item,
5652 { "RouteClearance", "atn-cpdlc.RouteClearance_element",
5653 FT_NONE, BASE_NONE, NULL, 0,
5654 NULL, HFILL }},
5655 { &hf_atn_cpdlc_atcdownlinkmessage_messagedata,
5656 { "messageData", "atn-cpdlc.messageData_element",
5657 FT_NONE, BASE_NONE, NULL, 0,
5658 "ATCDownlinkMessageData", HFILL }},
5659 { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids,
5660 { "elementIds", "atn-cpdlc.elementIds",
5661 FT_UINT32, BASE_DEC, NULL, 0,
5662 "SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId", HFILL }},
5663 { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item,
5664 { "ATCDownlinkMsgElementId", "atn-cpdlc.ATCDownlinkMsgElementId",
5665 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCDownlinkMsgElementId_vals), 0,
5666 NULL, HFILL }},
5667 { &hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata,
5668 { "constrainedData", "atn-cpdlc.constrainedData_element",
5669 FT_NONE, BASE_NONE, NULL, 0,
5670 "T_atcdownlinkmessagedata_constraineddata", HFILL }},
5671 { &hf_atn_cpdlc_messageIdNumber,
5672 { "messageIdNumber", "atn-cpdlc.messageIdNumber",
5673 FT_UINT32, BASE_DEC, NULL, 0,
5674 "MsgIdentificationNumber", HFILL }},
5675 { &hf_atn_cpdlc_messageRefNumber,
5676 { "messageRefNumber", "atn-cpdlc.messageRefNumber",
5677 FT_UINT32, BASE_DEC, NULL, 0,
5678 "MsgReferenceNumber", HFILL }},
5679 { &hf_atn_cpdlc_logicalAck,
5680 { "logicalAck", "atn-cpdlc.logicalAck",
5681 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LogicalAck_vals), 0,
5682 NULL, HFILL }},
5683 { &hf_atn_cpdlc_uM0NULL,
5684 { "uM0NULL", "atn-cpdlc.uM0NULL_element",
5685 FT_NONE, BASE_NONE, NULL, 0,
5686 NULL, HFILL }},
5687 { &hf_atn_cpdlc_uM1NULL,
5688 { "uM1NULL", "atn-cpdlc.uM1NULL_element",
5689 FT_NONE, BASE_NONE, NULL, 0,
5690 NULL, HFILL }},
5691 { &hf_atn_cpdlc_uM2NULL,
5692 { "uM2NULL", "atn-cpdlc.uM2NULL_element",
5693 FT_NONE, BASE_NONE, NULL, 0,
5694 NULL, HFILL }},
5695 { &hf_atn_cpdlc_uM3NULL,
5696 { "uM3NULL", "atn-cpdlc.uM3NULL_element",
5697 FT_NONE, BASE_NONE, NULL, 0,
5698 NULL, HFILL }},
5699 { &hf_atn_cpdlc_uM4NULL,
5700 { "uM4NULL", "atn-cpdlc.uM4NULL_element",
5701 FT_NONE, BASE_NONE, NULL, 0,
5702 NULL, HFILL }},
5703 { &hf_atn_cpdlc_uM5NULL,
5704 { "uM5NULL", "atn-cpdlc.uM5NULL_element",
5705 FT_NONE, BASE_NONE, NULL, 0,
5706 NULL, HFILL }},
5707 { &hf_atn_cpdlc_uM6Level,
5708 { "uM6Level", "atn-cpdlc.uM6Level",
5709 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5710 "Level", HFILL }},
5711 { &hf_atn_cpdlc_uM7Time,
5712 { "uM7Time", "atn-cpdlc.uM7Time_element",
5713 FT_NONE, BASE_NONE, NULL, 0,
5714 "Time", HFILL }},
5715 { &hf_atn_cpdlc_uM8Position,
5716 { "uM8Position", "atn-cpdlc.uM8Position",
5717 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5718 "Position", HFILL }},
5719 { &hf_atn_cpdlc_uM9Time,
5720 { "uM9Time", "atn-cpdlc.uM9Time_element",
5721 FT_NONE, BASE_NONE, NULL, 0,
5722 "Time", HFILL }},
5723 { &hf_atn_cpdlc_uM10Position,
5724 { "uM10Position", "atn-cpdlc.uM10Position",
5725 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5726 "Position", HFILL }},
5727 { &hf_atn_cpdlc_uM11Time,
5728 { "uM11Time", "atn-cpdlc.uM11Time_element",
5729 FT_NONE, BASE_NONE, NULL, 0,
5730 "Time", HFILL }},
5731 { &hf_atn_cpdlc_uM12Position,
5732 { "uM12Position", "atn-cpdlc.uM12Position",
5733 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5734 "Position", HFILL }},
5735 { &hf_atn_cpdlc_uM13TimeLevel,
5736 { "uM13TimeLevel", "atn-cpdlc.uM13TimeLevel_element",
5737 FT_NONE, BASE_NONE, NULL, 0,
5738 "TimeLevel", HFILL }},
5739 { &hf_atn_cpdlc_uM14PositionLevel,
5740 { "uM14PositionLevel", "atn-cpdlc.uM14PositionLevel_element",
5741 FT_NONE, BASE_NONE, NULL, 0,
5742 "PositionLevel", HFILL }},
5743 { &hf_atn_cpdlc_uM15TimeLevel,
5744 { "uM15TimeLevel", "atn-cpdlc.uM15TimeLevel_element",
5745 FT_NONE, BASE_NONE, NULL, 0,
5746 "TimeLevel", HFILL }},
5747 { &hf_atn_cpdlc_uM16PositionLevel,
5748 { "uM16PositionLevel", "atn-cpdlc.uM16PositionLevel_element",
5749 FT_NONE, BASE_NONE, NULL, 0,
5750 "PositionLevel", HFILL }},
5751 { &hf_atn_cpdlc_uM17TimeLevel,
5752 { "uM17TimeLevel", "atn-cpdlc.uM17TimeLevel_element",
5753 FT_NONE, BASE_NONE, NULL, 0,
5754 "TimeLevel", HFILL }},
5755 { &hf_atn_cpdlc_uM18PositionLevel,
5756 { "uM18PositionLevel", "atn-cpdlc.uM18PositionLevel_element",
5757 FT_NONE, BASE_NONE, NULL, 0,
5758 "PositionLevel", HFILL }},
5759 { &hf_atn_cpdlc_uM19Level,
5760 { "uM19Level", "atn-cpdlc.uM19Level",
5761 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5762 "Level", HFILL }},
5763 { &hf_atn_cpdlc_uM20Level,
5764 { "uM20Level", "atn-cpdlc.uM20Level",
5765 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5766 "Level", HFILL }},
5767 { &hf_atn_cpdlc_uM21TimeLevel,
5768 { "uM21TimeLevel", "atn-cpdlc.uM21TimeLevel_element",
5769 FT_NONE, BASE_NONE, NULL, 0,
5770 "TimeLevel", HFILL }},
5771 { &hf_atn_cpdlc_uM22PositionLevel,
5772 { "uM22PositionLevel", "atn-cpdlc.uM22PositionLevel_element",
5773 FT_NONE, BASE_NONE, NULL, 0,
5774 "PositionLevel", HFILL }},
5775 { &hf_atn_cpdlc_uM23Level,
5776 { "uM23Level", "atn-cpdlc.uM23Level",
5777 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5778 "Level", HFILL }},
5779 { &hf_atn_cpdlc_uM24TimeLevel,
5780 { "uM24TimeLevel", "atn-cpdlc.uM24TimeLevel_element",
5781 FT_NONE, BASE_NONE, NULL, 0,
5782 "TimeLevel", HFILL }},
5783 { &hf_atn_cpdlc_uM25PositionLevel,
5784 { "uM25PositionLevel", "atn-cpdlc.uM25PositionLevel_element",
5785 FT_NONE, BASE_NONE, NULL, 0,
5786 "PositionLevel", HFILL }},
5787 { &hf_atn_cpdlc_uM26LevelTime,
5788 { "uM26LevelTime", "atn-cpdlc.uM26LevelTime_element",
5789 FT_NONE, BASE_NONE, NULL, 0,
5790 "LevelTime", HFILL }},
5791 { &hf_atn_cpdlc_uM27LevelPosition,
5792 { "uM27LevelPosition", "atn-cpdlc.uM27LevelPosition_element",
5793 FT_NONE, BASE_NONE, NULL, 0,
5794 "LevelPosition", HFILL }},
5795 { &hf_atn_cpdlc_uM28LevelTime,
5796 { "uM28LevelTime", "atn-cpdlc.uM28LevelTime_element",
5797 FT_NONE, BASE_NONE, NULL, 0,
5798 "LevelTime", HFILL }},
5799 { &hf_atn_cpdlc_uM29LevelPosition,
5800 { "uM29LevelPosition", "atn-cpdlc.uM29LevelPosition_element",
5801 FT_NONE, BASE_NONE, NULL, 0,
5802 "LevelPosition", HFILL }},
5803 { &hf_atn_cpdlc_uM30LevelLevel,
5804 { "uM30LevelLevel", "atn-cpdlc.uM30LevelLevel",
5805 FT_UINT32, BASE_DEC, NULL, 0,
5806 "LevelLevel", HFILL }},
5807 { &hf_atn_cpdlc_uM31LevelLevel,
5808 { "uM31LevelLevel", "atn-cpdlc.uM31LevelLevel",
5809 FT_UINT32, BASE_DEC, NULL, 0,
5810 "LevelLevel", HFILL }},
5811 { &hf_atn_cpdlc_uM32LevelLevel,
5812 { "uM32LevelLevel", "atn-cpdlc.uM32LevelLevel",
5813 FT_UINT32, BASE_DEC, NULL, 0,
5814 "LevelLevel", HFILL }},
5815 { &hf_atn_cpdlc_uM33NULL,
5816 { "uM33NULL", "atn-cpdlc.uM33NULL_element",
5817 FT_NONE, BASE_NONE, NULL, 0,
5818 NULL, HFILL }},
5819 { &hf_atn_cpdlc_uM34Level,
5820 { "uM34Level", "atn-cpdlc.uM34Level",
5821 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5822 "Level", HFILL }},
5823 { &hf_atn_cpdlc_uM35Level,
5824 { "uM35Level", "atn-cpdlc.uM35Level",
5825 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5826 "Level", HFILL }},
5827 { &hf_atn_cpdlc_uM36Level,
5828 { "uM36Level", "atn-cpdlc.uM36Level",
5829 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5830 "Level", HFILL }},
5831 { &hf_atn_cpdlc_uM37Level,
5832 { "uM37Level", "atn-cpdlc.uM37Level",
5833 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5834 "Level", HFILL }},
5835 { &hf_atn_cpdlc_uM38Level,
5836 { "uM38Level", "atn-cpdlc.uM38Level",
5837 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5838 "Level", HFILL }},
5839 { &hf_atn_cpdlc_uM39Level,
5840 { "uM39Level", "atn-cpdlc.uM39Level",
5841 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5842 "Level", HFILL }},
5843 { &hf_atn_cpdlc_uM40NULL,
5844 { "uM40NULL", "atn-cpdlc.uM40NULL_element",
5845 FT_NONE, BASE_NONE, NULL, 0,
5846 NULL, HFILL }},
5847 { &hf_atn_cpdlc_uM41NULL,
5848 { "uM41NULL", "atn-cpdlc.uM41NULL_element",
5849 FT_NONE, BASE_NONE, NULL, 0,
5850 NULL, HFILL }},
5851 { &hf_atn_cpdlc_uM42PositionLevel,
5852 { "uM42PositionLevel", "atn-cpdlc.uM42PositionLevel_element",
5853 FT_NONE, BASE_NONE, NULL, 0,
5854 "PositionLevel", HFILL }},
5855 { &hf_atn_cpdlc_uM43PositionLevel,
5856 { "uM43PositionLevel", "atn-cpdlc.uM43PositionLevel_element",
5857 FT_NONE, BASE_NONE, NULL, 0,
5858 "PositionLevel", HFILL }},
5859 { &hf_atn_cpdlc_uM44PositionLevel,
5860 { "uM44PositionLevel", "atn-cpdlc.uM44PositionLevel_element",
5861 FT_NONE, BASE_NONE, NULL, 0,
5862 "PositionLevel", HFILL }},
5863 { &hf_atn_cpdlc_uM45PositionLevel,
5864 { "uM45PositionLevel", "atn-cpdlc.uM45PositionLevel_element",
5865 FT_NONE, BASE_NONE, NULL, 0,
5866 "PositionLevel", HFILL }},
5867 { &hf_atn_cpdlc_uM46PositionLevel,
5868 { "uM46PositionLevel", "atn-cpdlc.uM46PositionLevel_element",
5869 FT_NONE, BASE_NONE, NULL, 0,
5870 "PositionLevel", HFILL }},
5871 { &hf_atn_cpdlc_uM47PositionLevel,
5872 { "uM47PositionLevel", "atn-cpdlc.uM47PositionLevel_element",
5873 FT_NONE, BASE_NONE, NULL, 0,
5874 "PositionLevel", HFILL }},
5875 { &hf_atn_cpdlc_uM48PositionLevel,
5876 { "uM48PositionLevel", "atn-cpdlc.uM48PositionLevel_element",
5877 FT_NONE, BASE_NONE, NULL, 0,
5878 "PositionLevel", HFILL }},
5879 { &hf_atn_cpdlc_uM49PositionLevel,
5880 { "uM49PositionLevel", "atn-cpdlc.uM49PositionLevel_element",
5881 FT_NONE, BASE_NONE, NULL, 0,
5882 "PositionLevel", HFILL }},
5883 { &hf_atn_cpdlc_uM50PositionLevelLevel,
5884 { "uM50PositionLevelLevel", "atn-cpdlc.uM50PositionLevelLevel_element",
5885 FT_NONE, BASE_NONE, NULL, 0,
5886 "PositionLevelLevel", HFILL }},
5887 { &hf_atn_cpdlc_uM51PositionTime,
5888 { "uM51PositionTime", "atn-cpdlc.uM51PositionTime_element",
5889 FT_NONE, BASE_NONE, NULL, 0,
5890 "PositionTime", HFILL }},
5891 { &hf_atn_cpdlc_uM52PositionTime,
5892 { "uM52PositionTime", "atn-cpdlc.uM52PositionTime_element",
5893 FT_NONE, BASE_NONE, NULL, 0,
5894 "PositionTime", HFILL }},
5895 { &hf_atn_cpdlc_uM53PositionTime,
5896 { "uM53PositionTime", "atn-cpdlc.uM53PositionTime_element",
5897 FT_NONE, BASE_NONE, NULL, 0,
5898 "PositionTime", HFILL }},
5899 { &hf_atn_cpdlc_uM54PositionTimeTime,
5900 { "uM54PositionTimeTime", "atn-cpdlc.uM54PositionTimeTime_element",
5901 FT_NONE, BASE_NONE, NULL, 0,
5902 "PositionTimeTime", HFILL }},
5903 { &hf_atn_cpdlc_uM55PositionSpeed,
5904 { "uM55PositionSpeed", "atn-cpdlc.uM55PositionSpeed_element",
5905 FT_NONE, BASE_NONE, NULL, 0,
5906 "PositionSpeed", HFILL }},
5907 { &hf_atn_cpdlc_uM56PositionSpeed,
5908 { "uM56PositionSpeed", "atn-cpdlc.uM56PositionSpeed_element",
5909 FT_NONE, BASE_NONE, NULL, 0,
5910 "PositionSpeed", HFILL }},
5911 { &hf_atn_cpdlc_uM57PositionSpeed,
5912 { "uM57PositionSpeed", "atn-cpdlc.uM57PositionSpeed_element",
5913 FT_NONE, BASE_NONE, NULL, 0,
5914 "PositionSpeed", HFILL }},
5915 { &hf_atn_cpdlc_uM58PositionTimeLevel,
5916 { "uM58PositionTimeLevel", "atn-cpdlc.uM58PositionTimeLevel_element",
5917 FT_NONE, BASE_NONE, NULL, 0,
5918 "PositionTimeLevel", HFILL }},
5919 { &hf_atn_cpdlc_uM59PositionTimeLevel,
5920 { "uM59PositionTimeLevel", "atn-cpdlc.uM59PositionTimeLevel_element",
5921 FT_NONE, BASE_NONE, NULL, 0,
5922 "PositionTimeLevel", HFILL }},
5923 { &hf_atn_cpdlc_uM60PositionTimeLevel,
5924 { "uM60PositionTimeLevel", "atn-cpdlc.uM60PositionTimeLevel_element",
5925 FT_NONE, BASE_NONE, NULL, 0,
5926 "PositionTimeLevel", HFILL }},
5927 { &hf_atn_cpdlc_uM61PositionLevelSpeed,
5928 { "uM61PositionLevelSpeed", "atn-cpdlc.uM61PositionLevelSpeed_element",
5929 FT_NONE, BASE_NONE, NULL, 0,
5930 "PositionLevelSpeed", HFILL }},
5931 { &hf_atn_cpdlc_uM62TimePositionLevel,
5932 { "uM62TimePositionLevel", "atn-cpdlc.uM62TimePositionLevel_element",
5933 FT_NONE, BASE_NONE, NULL, 0,
5934 "TimePositionLevel", HFILL }},
5935 { &hf_atn_cpdlc_uM63TimePositionLevelSpeed,
5936 { "uM63TimePositionLevelSpeed", "atn-cpdlc.uM63TimePositionLevelSpeed_element",
5937 FT_NONE, BASE_NONE, NULL, 0,
5938 "TimePositionLevelSpeed", HFILL }},
5939 { &hf_atn_cpdlc_uM64DistanceSpecifiedDirection,
5940 { "uM64DistanceSpecifiedDirection", "atn-cpdlc.uM64DistanceSpecifiedDirection_element",
5941 FT_NONE, BASE_NONE, NULL, 0,
5942 "DistanceSpecifiedDirection", HFILL }},
5943 { &hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection,
5944 { "uM65PositionDistanceSpecifiedDirection", "atn-cpdlc.uM65PositionDistanceSpecifiedDirection_element",
5945 FT_NONE, BASE_NONE, NULL, 0,
5946 "PositionDistanceSpecifiedDirection", HFILL }},
5947 { &hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection,
5948 { "uM66TimeDistanceSpecifiedDirection", "atn-cpdlc.uM66TimeDistanceSpecifiedDirection_element",
5949 FT_NONE, BASE_NONE, NULL, 0,
5950 "TimeDistanceSpecifiedDirection", HFILL }},
5951 { &hf_atn_cpdlc_uM67NULL,
5952 { "uM67NULL", "atn-cpdlc.uM67NULL_element",
5953 FT_NONE, BASE_NONE, NULL, 0,
5954 NULL, HFILL }},
5955 { &hf_atn_cpdlc_uM68Position,
5956 { "uM68Position", "atn-cpdlc.uM68Position",
5957 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5958 "Position", HFILL }},
5959 { &hf_atn_cpdlc_uM69Time,
5960 { "uM69Time", "atn-cpdlc.uM69Time_element",
5961 FT_NONE, BASE_NONE, NULL, 0,
5962 "Time", HFILL }},
5963 { &hf_atn_cpdlc_uM70Position,
5964 { "uM70Position", "atn-cpdlc.uM70Position",
5965 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5966 "Position", HFILL }},
5967 { &hf_atn_cpdlc_uM71Time,
5968 { "uM71Time", "atn-cpdlc.uM71Time_element",
5969 FT_NONE, BASE_NONE, NULL, 0,
5970 "Time", HFILL }},
5971 { &hf_atn_cpdlc_uM72NULL,
5972 { "uM72NULL", "atn-cpdlc.uM72NULL_element",
5973 FT_NONE, BASE_NONE, NULL, 0,
5974 NULL, HFILL }},
5975 { &hf_atn_cpdlc_uM73DepartureClearance,
5976 { "uM73DepartureClearance", "atn-cpdlc.uM73DepartureClearance_element",
5977 FT_NONE, BASE_NONE, NULL, 0,
5978 "DepartureClearance", HFILL }},
5979 { &hf_atn_cpdlc_uM74Position,
5980 { "uM74Position", "atn-cpdlc.uM74Position",
5981 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5982 "Position", HFILL }},
5983 { &hf_atn_cpdlc_uM75Position,
5984 { "uM75Position", "atn-cpdlc.uM75Position",
5985 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5986 "Position", HFILL }},
5987 { &hf_atn_cpdlc_uM76TimePosition,
5988 { "uM76TimePosition", "atn-cpdlc.uM76TimePosition_element",
5989 FT_NONE, BASE_NONE, NULL, 0,
5990 "TimePosition", HFILL }},
5991 { &hf_atn_cpdlc_uM77PositionPosition,
5992 { "uM77PositionPosition", "atn-cpdlc.uM77PositionPosition",
5993 FT_UINT32, BASE_DEC, NULL, 0,
5994 "PositionPosition", HFILL }},
5995 { &hf_atn_cpdlc_uM78LevelPosition,
5996 { "uM78LevelPosition", "atn-cpdlc.uM78LevelPosition_element",
5997 FT_NONE, BASE_NONE, NULL, 0,
5998 "LevelPosition", HFILL }},
5999 { &hf_atn_cpdlc_uM79PositionRouteClearance,
6000 { "uM79PositionRouteClearance", "atn-cpdlc.uM79PositionRouteClearance_element",
6001 FT_NONE, BASE_NONE, NULL, 0,
6002 "PositionRouteClearanceIndex", HFILL }},
6003 { &hf_atn_cpdlc_uM80RouteClearance,
6004 { "uM80RouteClearance", "atn-cpdlc.uM80RouteClearance",
6005 FT_UINT32, BASE_DEC, NULL, 0,
6006 "RouteClearanceIndex", HFILL }},
6007 { &hf_atn_cpdlc_uM81ProcedureName,
6008 { "uM81ProcedureName", "atn-cpdlc.uM81ProcedureName_element",
6009 FT_NONE, BASE_NONE, NULL, 0,
6010 "ProcedureName", HFILL }},
6011 { &hf_atn_cpdlc_uM82DistanceSpecifiedDirection,
6012 { "uM82DistanceSpecifiedDirection", "atn-cpdlc.uM82DistanceSpecifiedDirection_element",
6013 FT_NONE, BASE_NONE, NULL, 0,
6014 "DistanceSpecifiedDirection", HFILL }},
6015 { &hf_atn_cpdlc_uM83PositionRouteClearance,
6016 { "uM83PositionRouteClearance", "atn-cpdlc.uM83PositionRouteClearance_element",
6017 FT_NONE, BASE_NONE, NULL, 0,
6018 "PositionRouteClearanceIndex", HFILL }},
6019 { &hf_atn_cpdlc_uM84PositionProcedureName,
6020 { "uM84PositionProcedureName", "atn-cpdlc.uM84PositionProcedureName_element",
6021 FT_NONE, BASE_NONE, NULL, 0,
6022 "PositionProcedureName", HFILL }},
6023 { &hf_atn_cpdlc_uM85RouteClearance,
6024 { "uM85RouteClearance", "atn-cpdlc.uM85RouteClearance",
6025 FT_UINT32, BASE_DEC, NULL, 0,
6026 "RouteClearanceIndex", HFILL }},
6027 { &hf_atn_cpdlc_uM86PositionRouteClearance,
6028 { "uM86PositionRouteClearance", "atn-cpdlc.uM86PositionRouteClearance_element",
6029 FT_NONE, BASE_NONE, NULL, 0,
6030 "PositionRouteClearanceIndex", HFILL }},
6031 { &hf_atn_cpdlc_uM87Position,
6032 { "uM87Position", "atn-cpdlc.uM87Position",
6033 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6034 "Position", HFILL }},
6035 { &hf_atn_cpdlc_uM88PositionPosition,
6036 { "uM88PositionPosition", "atn-cpdlc.uM88PositionPosition",
6037 FT_UINT32, BASE_DEC, NULL, 0,
6038 "PositionPosition", HFILL }},
6039 { &hf_atn_cpdlc_uM89TimePosition,
6040 { "uM89TimePosition", "atn-cpdlc.uM89TimePosition_element",
6041 FT_NONE, BASE_NONE, NULL, 0,
6042 "TimePosition", HFILL }},
6043 { &hf_atn_cpdlc_uM90LevelPosition,
6044 { "uM90LevelPosition", "atn-cpdlc.uM90LevelPosition_element",
6045 FT_NONE, BASE_NONE, NULL, 0,
6046 "LevelPosition", HFILL }},
6047 { &hf_atn_cpdlc_uM91HoldClearance,
6048 { "uM91HoldClearance", "atn-cpdlc.uM91HoldClearance_element",
6049 FT_NONE, BASE_NONE, NULL, 0,
6050 "HoldClearance", HFILL }},
6051 { &hf_atn_cpdlc_uM92PositionLevel,
6052 { "uM92PositionLevel", "atn-cpdlc.uM92PositionLevel_element",
6053 FT_NONE, BASE_NONE, NULL, 0,
6054 "PositionLevel", HFILL }},
6055 { &hf_atn_cpdlc_uM93Time,
6056 { "uM93Time", "atn-cpdlc.uM93Time_element",
6057 FT_NONE, BASE_NONE, NULL, 0,
6058 "Time", HFILL }},
6059 { &hf_atn_cpdlc_uM94DirectionDegrees,
6060 { "uM94DirectionDegrees", "atn-cpdlc.uM94DirectionDegrees_element",
6061 FT_NONE, BASE_NONE, NULL, 0,
6062 "DirectionDegrees", HFILL }},
6063 { &hf_atn_cpdlc_uM95DirectionDegrees,
6064 { "uM95DirectionDegrees", "atn-cpdlc.uM95DirectionDegrees_element",
6065 FT_NONE, BASE_NONE, NULL, 0,
6066 "DirectionDegrees", HFILL }},
6067 { &hf_atn_cpdlc_uM96NULL,
6068 { "uM96NULL", "atn-cpdlc.uM96NULL_element",
6069 FT_NONE, BASE_NONE, NULL, 0,
6070 NULL, HFILL }},
6071 { &hf_atn_cpdlc_uM97PositionDegrees,
6072 { "uM97PositionDegrees", "atn-cpdlc.uM97PositionDegrees_element",
6073 FT_NONE, BASE_NONE, NULL, 0,
6074 "PositionDegrees", HFILL }},
6075 { &hf_atn_cpdlc_uM98DirectionDegrees,
6076 { "uM98DirectionDegrees", "atn-cpdlc.uM98DirectionDegrees_element",
6077 FT_NONE, BASE_NONE, NULL, 0,
6078 "DirectionDegrees", HFILL }},
6079 { &hf_atn_cpdlc_uM99ProcedureName,
6080 { "uM99ProcedureName", "atn-cpdlc.uM99ProcedureName_element",
6081 FT_NONE, BASE_NONE, NULL, 0,
6082 "ProcedureName", HFILL }},
6083 { &hf_atn_cpdlc_uM100TimeSpeed,
6084 { "uM100TimeSpeed", "atn-cpdlc.uM100TimeSpeed_element",
6085 FT_NONE, BASE_NONE, NULL, 0,
6086 "TimeSpeed", HFILL }},
6087 { &hf_atn_cpdlc_uM101PositionSpeed,
6088 { "uM101PositionSpeed", "atn-cpdlc.uM101PositionSpeed_element",
6089 FT_NONE, BASE_NONE, NULL, 0,
6090 "PositionSpeed", HFILL }},
6091 { &hf_atn_cpdlc_uM102LevelSpeed,
6092 { "uM102LevelSpeed", "atn-cpdlc.uM102LevelSpeed_element",
6093 FT_NONE, BASE_NONE, NULL, 0,
6094 "LevelSpeed", HFILL }},
6095 { &hf_atn_cpdlc_uM103TimeSpeedSpeed,
6096 { "uM103TimeSpeedSpeed", "atn-cpdlc.uM103TimeSpeedSpeed_element",
6097 FT_NONE, BASE_NONE, NULL, 0,
6098 "TimeSpeedSpeed", HFILL }},
6099 { &hf_atn_cpdlc_uM104PositionSpeedSpeed,
6100 { "uM104PositionSpeedSpeed", "atn-cpdlc.uM104PositionSpeedSpeed_element",
6101 FT_NONE, BASE_NONE, NULL, 0,
6102 "PositionSpeedSpeed", HFILL }},
6103 { &hf_atn_cpdlc_uM105LevelSpeedSpeed,
6104 { "uM105LevelSpeedSpeed", "atn-cpdlc.uM105LevelSpeedSpeed_element",
6105 FT_NONE, BASE_NONE, NULL, 0,
6106 "LevelSpeedSpeed", HFILL }},
6107 { &hf_atn_cpdlc_uM106Speed,
6108 { "uM106Speed", "atn-cpdlc.uM106Speed",
6109 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6110 "Speed", HFILL }},
6111 { &hf_atn_cpdlc_uM107NULL,
6112 { "uM107NULL", "atn-cpdlc.uM107NULL_element",
6113 FT_NONE, BASE_NONE, NULL, 0,
6114 NULL, HFILL }},
6115 { &hf_atn_cpdlc_uM108Speed,
6116 { "uM108Speed", "atn-cpdlc.uM108Speed",
6117 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6118 "Speed", HFILL }},
6119 { &hf_atn_cpdlc_uM109Speed,
6120 { "uM109Speed", "atn-cpdlc.uM109Speed",
6121 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6122 "Speed", HFILL }},
6123 { &hf_atn_cpdlc_uM110SpeedSpeed,
6124 { "uM110SpeedSpeed", "atn-cpdlc.uM110SpeedSpeed",
6125 FT_UINT32, BASE_DEC, NULL, 0,
6126 "SpeedSpeed", HFILL }},
6127 { &hf_atn_cpdlc_uM111Speed,
6128 { "uM111Speed", "atn-cpdlc.uM111Speed",
6129 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6130 "Speed", HFILL }},
6131 { &hf_atn_cpdlc_uM112Speed,
6132 { "uM112Speed", "atn-cpdlc.uM112Speed",
6133 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6134 "Speed", HFILL }},
6135 { &hf_atn_cpdlc_uM113Speed,
6136 { "uM113Speed", "atn-cpdlc.uM113Speed",
6137 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6138 "Speed", HFILL }},
6139 { &hf_atn_cpdlc_uM114Speed,
6140 { "uM114Speed", "atn-cpdlc.uM114Speed",
6141 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6142 "Speed", HFILL }},
6143 { &hf_atn_cpdlc_uM115Speed,
6144 { "uM115Speed", "atn-cpdlc.uM115Speed",
6145 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6146 "Speed", HFILL }},
6147 { &hf_atn_cpdlc_uM116NULL,
6148 { "uM116NULL", "atn-cpdlc.uM116NULL_element",
6149 FT_NONE, BASE_NONE, NULL, 0,
6150 NULL, HFILL }},
6151 { &hf_atn_cpdlc_uM117UnitNameFrequency,
6152 { "uM117UnitNameFrequency", "atn-cpdlc.uM117UnitNameFrequency_element",
6153 FT_NONE, BASE_NONE, NULL, 0,
6154 "UnitNameFrequency", HFILL }},
6155 { &hf_atn_cpdlc_uM118PositionUnitNameFrequency,
6156 { "uM118PositionUnitNameFrequency", "atn-cpdlc.uM118PositionUnitNameFrequency_element",
6157 FT_NONE, BASE_NONE, NULL, 0,
6158 "PositionUnitNameFrequency", HFILL }},
6159 { &hf_atn_cpdlc_uM119TimeUnitNameFrequency,
6160 { "uM119TimeUnitNameFrequency", "atn-cpdlc.uM119TimeUnitNameFrequency_element",
6161 FT_NONE, BASE_NONE, NULL, 0,
6162 "TimeUnitNameFrequency", HFILL }},
6163 { &hf_atn_cpdlc_uM120UnitNameFrequency,
6164 { "uM120UnitNameFrequency", "atn-cpdlc.uM120UnitNameFrequency_element",
6165 FT_NONE, BASE_NONE, NULL, 0,
6166 "UnitNameFrequency", HFILL }},
6167 { &hf_atn_cpdlc_uM121PositionUnitNameFrequency,
6168 { "uM121PositionUnitNameFrequency", "atn-cpdlc.uM121PositionUnitNameFrequency_element",
6169 FT_NONE, BASE_NONE, NULL, 0,
6170 "PositionUnitNameFrequency", HFILL }},
6171 { &hf_atn_cpdlc_uM122TimeUnitNameFrequency,
6172 { "uM122TimeUnitNameFrequency", "atn-cpdlc.uM122TimeUnitNameFrequency_element",
6173 FT_NONE, BASE_NONE, NULL, 0,
6174 "TimeUnitNameFrequency", HFILL }},
6175 { &hf_atn_cpdlc_uM123Code,
6176 { "uM123Code", "atn-cpdlc.uM123Code",
6177 FT_UINT32, BASE_DEC, NULL, 0,
6178 "Code", HFILL }},
6179 { &hf_atn_cpdlc_uM124NULL,
6180 { "uM124NULL", "atn-cpdlc.uM124NULL_element",
6181 FT_NONE, BASE_NONE, NULL, 0,
6182 NULL, HFILL }},
6183 { &hf_atn_cpdlc_uM125NULL,
6184 { "uM125NULL", "atn-cpdlc.uM125NULL_element",
6185 FT_NONE, BASE_NONE, NULL, 0,
6186 NULL, HFILL }},
6187 { &hf_atn_cpdlc_uM126NULL,
6188 { "uM126NULL", "atn-cpdlc.uM126NULL_element",
6189 FT_NONE, BASE_NONE, NULL, 0,
6190 NULL, HFILL }},
6191 { &hf_atn_cpdlc_uM127NULL,
6192 { "uM127NULL", "atn-cpdlc.uM127NULL_element",
6193 FT_NONE, BASE_NONE, NULL, 0,
6194 NULL, HFILL }},
6195 { &hf_atn_cpdlc_uM128Level,
6196 { "uM128Level", "atn-cpdlc.uM128Level",
6197 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6198 "Level", HFILL }},
6199 { &hf_atn_cpdlc_uM129Level,
6200 { "uM129Level", "atn-cpdlc.uM129Level",
6201 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6202 "Level", HFILL }},
6203 { &hf_atn_cpdlc_uM130Position,
6204 { "uM130Position", "atn-cpdlc.uM130Position",
6205 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6206 "Position", HFILL }},
6207 { &hf_atn_cpdlc_uM131NULL,
6208 { "uM131NULL", "atn-cpdlc.uM131NULL_element",
6209 FT_NONE, BASE_NONE, NULL, 0,
6210 NULL, HFILL }},
6211 { &hf_atn_cpdlc_uM132NULL,
6212 { "uM132NULL", "atn-cpdlc.uM132NULL_element",
6213 FT_NONE, BASE_NONE, NULL, 0,
6214 NULL, HFILL }},
6215 { &hf_atn_cpdlc_uM133NULL,
6216 { "uM133NULL", "atn-cpdlc.uM133NULL_element",
6217 FT_NONE, BASE_NONE, NULL, 0,
6218 NULL, HFILL }},
6219 { &hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType,
6220 { "uM134SpeedTypeSpeedTypeSpeedType", "atn-cpdlc.uM134SpeedTypeSpeedTypeSpeedType",
6221 FT_UINT32, BASE_DEC, NULL, 0,
6222 "SpeedTypeSpeedTypeSpeedType", HFILL }},
6223 { &hf_atn_cpdlc_uM135NULL,
6224 { "uM135NULL", "atn-cpdlc.uM135NULL_element",
6225 FT_NONE, BASE_NONE, NULL, 0,
6226 NULL, HFILL }},
6227 { &hf_atn_cpdlc_uM136NULL,
6228 { "uM136NULL", "atn-cpdlc.uM136NULL_element",
6229 FT_NONE, BASE_NONE, NULL, 0,
6230 NULL, HFILL }},
6231 { &hf_atn_cpdlc_uM137NULL,
6232 { "uM137NULL", "atn-cpdlc.uM137NULL_element",
6233 FT_NONE, BASE_NONE, NULL, 0,
6234 NULL, HFILL }},
6235 { &hf_atn_cpdlc_uM138NULL,
6236 { "uM138NULL", "atn-cpdlc.uM138NULL_element",
6237 FT_NONE, BASE_NONE, NULL, 0,
6238 NULL, HFILL }},
6239 { &hf_atn_cpdlc_uM139NULL,
6240 { "uM139NULL", "atn-cpdlc.uM139NULL_element",
6241 FT_NONE, BASE_NONE, NULL, 0,
6242 NULL, HFILL }},
6243 { &hf_atn_cpdlc_uM140NULL,
6244 { "uM140NULL", "atn-cpdlc.uM140NULL_element",
6245 FT_NONE, BASE_NONE, NULL, 0,
6246 NULL, HFILL }},
6247 { &hf_atn_cpdlc_uM141NULL,
6248 { "uM141NULL", "atn-cpdlc.uM141NULL_element",
6249 FT_NONE, BASE_NONE, NULL, 0,
6250 NULL, HFILL }},
6251 { &hf_atn_cpdlc_uM142NULL,
6252 { "uM142NULL", "atn-cpdlc.uM142NULL_element",
6253 FT_NONE, BASE_NONE, NULL, 0,
6254 NULL, HFILL }},
6255 { &hf_atn_cpdlc_uM143NULL,
6256 { "uM143NULL", "atn-cpdlc.uM143NULL_element",
6257 FT_NONE, BASE_NONE, NULL, 0,
6258 NULL, HFILL }},
6259 { &hf_atn_cpdlc_uM144NULL,
6260 { "uM144NULL", "atn-cpdlc.uM144NULL_element",
6261 FT_NONE, BASE_NONE, NULL, 0,
6262 NULL, HFILL }},
6263 { &hf_atn_cpdlc_uM145NULL,
6264 { "uM145NULL", "atn-cpdlc.uM145NULL_element",
6265 FT_NONE, BASE_NONE, NULL, 0,
6266 NULL, HFILL }},
6267 { &hf_atn_cpdlc_uM146NULL,
6268 { "uM146NULL", "atn-cpdlc.uM146NULL_element",
6269 FT_NONE, BASE_NONE, NULL, 0,
6270 NULL, HFILL }},
6271 { &hf_atn_cpdlc_uM147NULL,
6272 { "uM147NULL", "atn-cpdlc.uM147NULL_element",
6273 FT_NONE, BASE_NONE, NULL, 0,
6274 NULL, HFILL }},
6275 { &hf_atn_cpdlc_uM148Level,
6276 { "uM148Level", "atn-cpdlc.uM148Level",
6277 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6278 "Level", HFILL }},
6279 { &hf_atn_cpdlc_uM149LevelPosition,
6280 { "uM149LevelPosition", "atn-cpdlc.uM149LevelPosition_element",
6281 FT_NONE, BASE_NONE, NULL, 0,
6282 "LevelPosition", HFILL }},
6283 { &hf_atn_cpdlc_uM150LevelTime,
6284 { "uM150LevelTime", "atn-cpdlc.uM150LevelTime_element",
6285 FT_NONE, BASE_NONE, NULL, 0,
6286 "LevelTime", HFILL }},
6287 { &hf_atn_cpdlc_uM151Speed,
6288 { "uM151Speed", "atn-cpdlc.uM151Speed",
6289 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6290 "Speed", HFILL }},
6291 { &hf_atn_cpdlc_uM152DistanceSpecifiedDirection,
6292 { "uM152DistanceSpecifiedDirection", "atn-cpdlc.uM152DistanceSpecifiedDirection_element",
6293 FT_NONE, BASE_NONE, NULL, 0,
6294 "DistanceSpecifiedDirection", HFILL }},
6295 { &hf_atn_cpdlc_uM153Altimeter,
6296 { "uM153Altimeter", "atn-cpdlc.uM153Altimeter",
6297 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Altimeter_vals), 0,
6298 "Altimeter", HFILL }},
6299 { &hf_atn_cpdlc_uM154NULL,
6300 { "uM154NULL", "atn-cpdlc.uM154NULL_element",
6301 FT_NONE, BASE_NONE, NULL, 0,
6302 NULL, HFILL }},
6303 { &hf_atn_cpdlc_uM155Position,
6304 { "uM155Position", "atn-cpdlc.uM155Position",
6305 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6306 "Position", HFILL }},
6307 { &hf_atn_cpdlc_uM156NULL,
6308 { "uM156NULL", "atn-cpdlc.uM156NULL_element",
6309 FT_NONE, BASE_NONE, NULL, 0,
6310 NULL, HFILL }},
6311 { &hf_atn_cpdlc_uM157Frequency,
6312 { "uM157Frequency", "atn-cpdlc.uM157Frequency",
6313 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0,
6314 "Frequency", HFILL }},
6315 { &hf_atn_cpdlc_uM158AtisCode,
6316 { "uM158AtisCode", "atn-cpdlc.uM158AtisCode",
6317 FT_STRING, BASE_NONE, NULL, 0,
6318 "ATISCode", HFILL }},
6319 { &hf_atn_cpdlc_uM159ErrorInformation,
6320 { "uM159ErrorInformation", "atn-cpdlc.uM159ErrorInformation",
6321 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ErrorInformation_vals), 0,
6322 "ErrorInformation", HFILL }},
6323 { &hf_atn_cpdlc_uM160Facility,
6324 { "uM160Facility", "atn-cpdlc.uM160Facility",
6325 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Facility_vals), 0,
6326 "Facility", HFILL }},
6327 { &hf_atn_cpdlc_uM161NULL,
6328 { "uM161NULL", "atn-cpdlc.uM161NULL_element",
6329 FT_NONE, BASE_NONE, NULL, 0,
6330 NULL, HFILL }},
6331 { &hf_atn_cpdlc_uM162NULL,
6332 { "uM162NULL", "atn-cpdlc.uM162NULL_element",
6333 FT_NONE, BASE_NONE, NULL, 0,
6334 NULL, HFILL }},
6335 { &hf_atn_cpdlc_uM163FacilityDesignation,
6336 { "uM163FacilityDesignation", "atn-cpdlc.uM163FacilityDesignation",
6337 FT_STRING, BASE_NONE, NULL, 0,
6338 "FacilityDesignation", HFILL }},
6339 { &hf_atn_cpdlc_uM164NULL,
6340 { "uM164NULL", "atn-cpdlc.uM164NULL_element",
6341 FT_NONE, BASE_NONE, NULL, 0,
6342 NULL, HFILL }},
6343 { &hf_atn_cpdlc_uM165NULL,
6344 { "uM165NULL", "atn-cpdlc.uM165NULL_element",
6345 FT_NONE, BASE_NONE, NULL, 0,
6346 NULL, HFILL }},
6347 { &hf_atn_cpdlc_uM166TrafficType,
6348 { "uM166TrafficType", "atn-cpdlc.uM166TrafficType",
6349 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_TrafficType_vals), 0,
6350 "TrafficType", HFILL }},
6351 { &hf_atn_cpdlc_uM167NULL,
6352 { "uM167NULL", "atn-cpdlc.uM167NULL_element",
6353 FT_NONE, BASE_NONE, NULL, 0,
6354 NULL, HFILL }},
6355 { &hf_atn_cpdlc_uM168NULL,
6356 { "uM168NULL", "atn-cpdlc.uM168NULL_element",
6357 FT_NONE, BASE_NONE, NULL, 0,
6358 NULL, HFILL }},
6359 { &hf_atn_cpdlc_uM169FreeText,
6360 { "uM169FreeText", "atn-cpdlc.uM169FreeText",
6361 FT_STRING, BASE_NONE, NULL, 0,
6362 "FreeText", HFILL }},
6363 { &hf_atn_cpdlc_uM170FreeText,
6364 { "uM170FreeText", "atn-cpdlc.uM170FreeText",
6365 FT_STRING, BASE_NONE, NULL, 0,
6366 "FreeText", HFILL }},
6367 { &hf_atn_cpdlc_uM171VerticalRate,
6368 { "uM171VerticalRate", "atn-cpdlc.uM171VerticalRate",
6369 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
6370 "VerticalRate", HFILL }},
6371 { &hf_atn_cpdlc_uM172VerticalRate,
6372 { "uM172VerticalRate", "atn-cpdlc.uM172VerticalRate",
6373 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
6374 "VerticalRate", HFILL }},
6375 { &hf_atn_cpdlc_uM173VerticalRate,
6376 { "uM173VerticalRate", "atn-cpdlc.uM173VerticalRate",
6377 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
6378 "VerticalRate", HFILL }},
6379 { &hf_atn_cpdlc_uM174VerticalRate,
6380 { "uM174VerticalRate", "atn-cpdlc.uM174VerticalRate",
6381 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
6382 "VerticalRate", HFILL }},
6383 { &hf_atn_cpdlc_uM175Level,
6384 { "uM175Level", "atn-cpdlc.uM175Level",
6385 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6386 "Level", HFILL }},
6387 { &hf_atn_cpdlc_uM176NULL,
6388 { "uM176NULL", "atn-cpdlc.uM176NULL_element",
6389 FT_NONE, BASE_NONE, NULL, 0,
6390 NULL, HFILL }},
6391 { &hf_atn_cpdlc_uM177NULL,
6392 { "uM177NULL", "atn-cpdlc.uM177NULL_element",
6393 FT_NONE, BASE_NONE, NULL, 0,
6394 NULL, HFILL }},
6395 { &hf_atn_cpdlc_uM178NULL,
6396 { "uM178NULL", "atn-cpdlc.uM178NULL_element",
6397 FT_NONE, BASE_NONE, NULL, 0,
6398 NULL, HFILL }},
6399 { &hf_atn_cpdlc_uM179NULL,
6400 { "uM179NULL", "atn-cpdlc.uM179NULL_element",
6401 FT_NONE, BASE_NONE, NULL, 0,
6402 NULL, HFILL }},
6403 { &hf_atn_cpdlc_uM180LevelLevel,
6404 { "uM180LevelLevel", "atn-cpdlc.uM180LevelLevel",
6405 FT_UINT32, BASE_DEC, NULL, 0,
6406 "LevelLevel", HFILL }},
6407 { &hf_atn_cpdlc_uM181ToFromPosition,
6408 { "uM181ToFromPosition", "atn-cpdlc.uM181ToFromPosition_element",
6409 FT_NONE, BASE_NONE, NULL, 0,
6410 "ToFromPosition", HFILL }},
6411 { &hf_atn_cpdlc_uM182NULL,
6412 { "uM182NULL", "atn-cpdlc.uM182NULL_element",
6413 FT_NONE, BASE_NONE, NULL, 0,
6414 NULL, HFILL }},
6415 { &hf_atn_cpdlc_uM183FreeText,
6416 { "uM183FreeText", "atn-cpdlc.uM183FreeText",
6417 FT_STRING, BASE_NONE, NULL, 0,
6418 "FreeText", HFILL }},
6419 { &hf_atn_cpdlc_uM184TimeToFromPosition,
6420 { "uM184TimeToFromPosition", "atn-cpdlc.uM184TimeToFromPosition_element",
6421 FT_NONE, BASE_NONE, NULL, 0,
6422 "TimeToFromPosition", HFILL }},
6423 { &hf_atn_cpdlc_uM185PositionLevel,
6424 { "uM185PositionLevel", "atn-cpdlc.uM185PositionLevel_element",
6425 FT_NONE, BASE_NONE, NULL, 0,
6426 "PositionLevel", HFILL }},
6427 { &hf_atn_cpdlc_uM186PositionLevel,
6428 { "uM186PositionLevel", "atn-cpdlc.uM186PositionLevel_element",
6429 FT_NONE, BASE_NONE, NULL, 0,
6430 "PositionLevel", HFILL }},
6431 { &hf_atn_cpdlc_uM187FreeText,
6432 { "uM187FreeText", "atn-cpdlc.uM187FreeText",
6433 FT_STRING, BASE_NONE, NULL, 0,
6434 "FreeText", HFILL }},
6435 { &hf_atn_cpdlc_uM188PositionSpeed,
6436 { "uM188PositionSpeed", "atn-cpdlc.uM188PositionSpeed_element",
6437 FT_NONE, BASE_NONE, NULL, 0,
6438 "PositionSpeed", HFILL }},
6439 { &hf_atn_cpdlc_uM189Speed,
6440 { "uM189Speed", "atn-cpdlc.uM189Speed",
6441 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6442 "Speed", HFILL }},
6443 { &hf_atn_cpdlc_uM190Degrees,
6444 { "uM190Degrees", "atn-cpdlc.uM190Degrees",
6445 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6446 "Degrees", HFILL }},
6447 { &hf_atn_cpdlc_uM191NULL,
6448 { "uM191NULL", "atn-cpdlc.uM191NULL_element",
6449 FT_NONE, BASE_NONE, NULL, 0,
6450 NULL, HFILL }},
6451 { &hf_atn_cpdlc_uM192LevelTime,
6452 { "uM192LevelTime", "atn-cpdlc.uM192LevelTime_element",
6453 FT_NONE, BASE_NONE, NULL, 0,
6454 "LevelTime", HFILL }},
6455 { &hf_atn_cpdlc_uM193NULL,
6456 { "uM193NULL", "atn-cpdlc.uM193NULL_element",
6457 FT_NONE, BASE_NONE, NULL, 0,
6458 NULL, HFILL }},
6459 { &hf_atn_cpdlc_uM194FreeText,
6460 { "uM194FreeText", "atn-cpdlc.uM194FreeText",
6461 FT_STRING, BASE_NONE, NULL, 0,
6462 "FreeText", HFILL }},
6463 { &hf_atn_cpdlc_uM195FreeText,
6464 { "uM195FreeText", "atn-cpdlc.uM195FreeText",
6465 FT_STRING, BASE_NONE, NULL, 0,
6466 "FreeText", HFILL }},
6467 { &hf_atn_cpdlc_uM196FreeText,
6468 { "uM196FreeText", "atn-cpdlc.uM196FreeText",
6469 FT_STRING, BASE_NONE, NULL, 0,
6470 "FreeText", HFILL }},
6471 { &hf_atn_cpdlc_uM197FreeText,
6472 { "uM197FreeText", "atn-cpdlc.uM197FreeText",
6473 FT_STRING, BASE_NONE, NULL, 0,
6474 "FreeText", HFILL }},
6475 { &hf_atn_cpdlc_uM198FreeText,
6476 { "uM198FreeText", "atn-cpdlc.uM198FreeText",
6477 FT_STRING, BASE_NONE, NULL, 0,
6478 "FreeText", HFILL }},
6479 { &hf_atn_cpdlc_uM199FreeText,
6480 { "uM199FreeText", "atn-cpdlc.uM199FreeText",
6481 FT_STRING, BASE_NONE, NULL, 0,
6482 "FreeText", HFILL }},
6483 { &hf_atn_cpdlc_uM200NULL,
6484 { "uM200NULL", "atn-cpdlc.uM200NULL_element",
6485 FT_NONE, BASE_NONE, NULL, 0,
6486 NULL, HFILL }},
6487 { &hf_atn_cpdlc_uM201NULL,
6488 { "uM201NULL", "atn-cpdlc.uM201NULL_element",
6489 FT_NONE, BASE_NONE, NULL, 0,
6490 NULL, HFILL }},
6491 { &hf_atn_cpdlc_uM202NULL,
6492 { "uM202NULL", "atn-cpdlc.uM202NULL_element",
6493 FT_NONE, BASE_NONE, NULL, 0,
6494 NULL, HFILL }},
6495 { &hf_atn_cpdlc_uM203FreeText,
6496 { "uM203FreeText", "atn-cpdlc.uM203FreeText",
6497 FT_STRING, BASE_NONE, NULL, 0,
6498 "FreeText", HFILL }},
6499 { &hf_atn_cpdlc_uM204FreeText,
6500 { "uM204FreeText", "atn-cpdlc.uM204FreeText",
6501 FT_STRING, BASE_NONE, NULL, 0,
6502 "FreeText", HFILL }},
6503 { &hf_atn_cpdlc_uM205FreeText,
6504 { "uM205FreeText", "atn-cpdlc.uM205FreeText",
6505 FT_STRING, BASE_NONE, NULL, 0,
6506 "FreeText", HFILL }},
6507 { &hf_atn_cpdlc_uM206FreeText,
6508 { "uM206FreeText", "atn-cpdlc.uM206FreeText",
6509 FT_STRING, BASE_NONE, NULL, 0,
6510 "FreeText", HFILL }},
6511 { &hf_atn_cpdlc_uM207FreeText,
6512 { "uM207FreeText", "atn-cpdlc.uM207FreeText",
6513 FT_STRING, BASE_NONE, NULL, 0,
6514 "FreeText", HFILL }},
6515 { &hf_atn_cpdlc_uM208FreeText,
6516 { "uM208FreeText", "atn-cpdlc.uM208FreeText",
6517 FT_STRING, BASE_NONE, NULL, 0,
6518 "FreeText", HFILL }},
6519 { &hf_atn_cpdlc_uM209LevelPosition,
6520 { "uM209LevelPosition", "atn-cpdlc.uM209LevelPosition_element",
6521 FT_NONE, BASE_NONE, NULL, 0,
6522 "LevelPosition", HFILL }},
6523 { &hf_atn_cpdlc_uM210Position,
6524 { "uM210Position", "atn-cpdlc.uM210Position",
6525 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6526 "Position", HFILL }},
6527 { &hf_atn_cpdlc_uM211NULL,
6528 { "uM211NULL", "atn-cpdlc.uM211NULL_element",
6529 FT_NONE, BASE_NONE, NULL, 0,
6530 NULL, HFILL }},
6531 { &hf_atn_cpdlc_uM212FacilityDesignationATISCode,
6532 { "uM212FacilityDesignationATISCode", "atn-cpdlc.uM212FacilityDesignationATISCode_element",
6533 FT_NONE, BASE_NONE, NULL, 0,
6534 "FacilityDesignationATISCode", HFILL }},
6535 { &hf_atn_cpdlc_uM213FacilityDesignationAltimeter,
6536 { "uM213FacilityDesignationAltimeter", "atn-cpdlc.uM213FacilityDesignationAltimeter_element",
6537 FT_NONE, BASE_NONE, NULL, 0,
6538 "FacilityDesignationAltimeter", HFILL }},
6539 { &hf_atn_cpdlc_uM214RunwayRVR,
6540 { "uM214RunwayRVR", "atn-cpdlc.uM214RunwayRVR_element",
6541 FT_NONE, BASE_NONE, NULL, 0,
6542 "RunwayRVR", HFILL }},
6543 { &hf_atn_cpdlc_uM215DirectionDegrees,
6544 { "uM215DirectionDegrees", "atn-cpdlc.uM215DirectionDegrees_element",
6545 FT_NONE, BASE_NONE, NULL, 0,
6546 "DirectionDegrees", HFILL }},
6547 { &hf_atn_cpdlc_uM216NULL,
6548 { "uM216NULL", "atn-cpdlc.uM216NULL_element",
6549 FT_NONE, BASE_NONE, NULL, 0,
6550 NULL, HFILL }},
6551 { &hf_atn_cpdlc_uM217NULL,
6552 { "uM217NULL", "atn-cpdlc.uM217NULL_element",
6553 FT_NONE, BASE_NONE, NULL, 0,
6554 NULL, HFILL }},
6555 { &hf_atn_cpdlc_uM218NULL,
6556 { "uM218NULL", "atn-cpdlc.uM218NULL_element",
6557 FT_NONE, BASE_NONE, NULL, 0,
6558 NULL, HFILL }},
6559 { &hf_atn_cpdlc_uM219Level,
6560 { "uM219Level", "atn-cpdlc.uM219Level",
6561 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6562 "Level", HFILL }},
6563 { &hf_atn_cpdlc_uM220Level,
6564 { "uM220Level", "atn-cpdlc.uM220Level",
6565 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6566 "Level", HFILL }},
6567 { &hf_atn_cpdlc_uM221Degrees,
6568 { "uM221Degrees", "atn-cpdlc.uM221Degrees",
6569 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6570 "Degrees", HFILL }},
6571 { &hf_atn_cpdlc_uM222NULL,
6572 { "uM222NULL", "atn-cpdlc.uM222NULL_element",
6573 FT_NONE, BASE_NONE, NULL, 0,
6574 NULL, HFILL }},
6575 { &hf_atn_cpdlc_uM223NULL,
6576 { "uM223NULL", "atn-cpdlc.uM223NULL_element",
6577 FT_NONE, BASE_NONE, NULL, 0,
6578 NULL, HFILL }},
6579 { &hf_atn_cpdlc_uM224NULL,
6580 { "uM224NULL", "atn-cpdlc.uM224NULL_element",
6581 FT_NONE, BASE_NONE, NULL, 0,
6582 NULL, HFILL }},
6583 { &hf_atn_cpdlc_uM225NULL,
6584 { "uM225NULL", "atn-cpdlc.uM225NULL_element",
6585 FT_NONE, BASE_NONE, NULL, 0,
6586 NULL, HFILL }},
6587 { &hf_atn_cpdlc_uM226Time,
6588 { "uM226Time", "atn-cpdlc.uM226Time_element",
6589 FT_NONE, BASE_NONE, NULL, 0,
6590 "Time", HFILL }},
6591 { &hf_atn_cpdlc_uM227NULL,
6592 { "uM227NULL", "atn-cpdlc.uM227NULL_element",
6593 FT_NONE, BASE_NONE, NULL, 0,
6594 NULL, HFILL }},
6595 { &hf_atn_cpdlc_uM228Position,
6596 { "uM228Position", "atn-cpdlc.uM228Position",
6597 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6598 "Position", HFILL }},
6599 { &hf_atn_cpdlc_uM229NULL,
6600 { "uM229NULL", "atn-cpdlc.uM229NULL_element",
6601 FT_NONE, BASE_NONE, NULL, 0,
6602 NULL, HFILL }},
6603 { &hf_atn_cpdlc_uM230NULL,
6604 { "uM230NULL", "atn-cpdlc.uM230NULL_element",
6605 FT_NONE, BASE_NONE, NULL, 0,
6606 NULL, HFILL }},
6607 { &hf_atn_cpdlc_uM231NULL,
6608 { "uM231NULL", "atn-cpdlc.uM231NULL_element",
6609 FT_NONE, BASE_NONE, NULL, 0,
6610 NULL, HFILL }},
6611 { &hf_atn_cpdlc_uM232NULL,
6612 { "uM232NULL", "atn-cpdlc.uM232NULL_element",
6613 FT_NONE, BASE_NONE, NULL, 0,
6614 NULL, HFILL }},
6615 { &hf_atn_cpdlc_uM233NULL,
6616 { "uM233NULL", "atn-cpdlc.uM233NULL_element",
6617 FT_NONE, BASE_NONE, NULL, 0,
6618 NULL, HFILL }},
6619 { &hf_atn_cpdlc_uM234NULL,
6620 { "uM234NULL", "atn-cpdlc.uM234NULL_element",
6621 FT_NONE, BASE_NONE, NULL, 0,
6622 NULL, HFILL }},
6623 { &hf_atn_cpdlc_uM235NULL,
6624 { "uM235NULL", "atn-cpdlc.uM235NULL_element",
6625 FT_NONE, BASE_NONE, NULL, 0,
6626 NULL, HFILL }},
6627 { &hf_atn_cpdlc_uM236NULL,
6628 { "uM236NULL", "atn-cpdlc.uM236NULL_element",
6629 FT_NONE, BASE_NONE, NULL, 0,
6630 NULL, HFILL }},
6631 { &hf_atn_cpdlc_uM237NULL,
6632 { "uM237NULL", "atn-cpdlc.uM237NULL_element",
6633 FT_NONE, BASE_NONE, NULL, 0,
6634 NULL, HFILL }},
6635 { &hf_atn_cpdlc_dM0NULL,
6636 { "dM0NULL", "atn-cpdlc.dM0NULL_element",
6637 FT_NONE, BASE_NONE, NULL, 0,
6638 NULL, HFILL }},
6639 { &hf_atn_cpdlc_dM1NULL,
6640 { "dM1NULL", "atn-cpdlc.dM1NULL_element",
6641 FT_NONE, BASE_NONE, NULL, 0,
6642 NULL, HFILL }},
6643 { &hf_atn_cpdlc_dM2NULL,
6644 { "dM2NULL", "atn-cpdlc.dM2NULL_element",
6645 FT_NONE, BASE_NONE, NULL, 0,
6646 NULL, HFILL }},
6647 { &hf_atn_cpdlc_dM3NULL,
6648 { "dM3NULL", "atn-cpdlc.dM3NULL_element",
6649 FT_NONE, BASE_NONE, NULL, 0,
6650 NULL, HFILL }},
6651 { &hf_atn_cpdlc_dM4NULL,
6652 { "dM4NULL", "atn-cpdlc.dM4NULL_element",
6653 FT_NONE, BASE_NONE, NULL, 0,
6654 NULL, HFILL }},
6655 { &hf_atn_cpdlc_dM5NULL,
6656 { "dM5NULL", "atn-cpdlc.dM5NULL_element",
6657 FT_NONE, BASE_NONE, NULL, 0,
6658 NULL, HFILL }},
6659 { &hf_atn_cpdlc_dM6Level,
6660 { "dM6Level", "atn-cpdlc.dM6Level",
6661 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6662 "Level", HFILL }},
6663 { &hf_atn_cpdlc_dM7LevelLevel,
6664 { "dM7LevelLevel", "atn-cpdlc.dM7LevelLevel",
6665 FT_UINT32, BASE_DEC, NULL, 0,
6666 "LevelLevel", HFILL }},
6667 { &hf_atn_cpdlc_dM8Level,
6668 { "dM8Level", "atn-cpdlc.dM8Level",
6669 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6670 "Level", HFILL }},
6671 { &hf_atn_cpdlc_dM9Level,
6672 { "dM9Level", "atn-cpdlc.dM9Level",
6673 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6674 "Level", HFILL }},
6675 { &hf_atn_cpdlc_dM10Level,
6676 { "dM10Level", "atn-cpdlc.dM10Level",
6677 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6678 "Level", HFILL }},
6679 { &hf_atn_cpdlc_dM11PositionLevel,
6680 { "dM11PositionLevel", "atn-cpdlc.dM11PositionLevel_element",
6681 FT_NONE, BASE_NONE, NULL, 0,
6682 "PositionLevel", HFILL }},
6683 { &hf_atn_cpdlc_dM12PositionLevel,
6684 { "dM12PositionLevel", "atn-cpdlc.dM12PositionLevel_element",
6685 FT_NONE, BASE_NONE, NULL, 0,
6686 "PositionLevel", HFILL }},
6687 { &hf_atn_cpdlc_dM13TimeLevel,
6688 { "dM13TimeLevel", "atn-cpdlc.dM13TimeLevel_element",
6689 FT_NONE, BASE_NONE, NULL, 0,
6690 "TimeLevel", HFILL }},
6691 { &hf_atn_cpdlc_dM14TimeLevel,
6692 { "dM14TimeLevel", "atn-cpdlc.dM14TimeLevel_element",
6693 FT_NONE, BASE_NONE, NULL, 0,
6694 "TimeLevel", HFILL }},
6695 { &hf_atn_cpdlc_dM15DistanceSpecifiedDirection,
6696 { "dM15DistanceSpecifiedDirection", "atn-cpdlc.dM15DistanceSpecifiedDirection_element",
6697 FT_NONE, BASE_NONE, NULL, 0,
6698 "DistanceSpecifiedDirection", HFILL }},
6699 { &hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection,
6700 { "dM16PositionDistanceSpecifiedDirection", "atn-cpdlc.dM16PositionDistanceSpecifiedDirection_element",
6701 FT_NONE, BASE_NONE, NULL, 0,
6702 "PositionDistanceSpecifiedDirection", HFILL }},
6703 { &hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection,
6704 { "dM17TimeDistanceSpecifiedDirection", "atn-cpdlc.dM17TimeDistanceSpecifiedDirection_element",
6705 FT_NONE, BASE_NONE, NULL, 0,
6706 "TimeDistanceSpecifiedDirection", HFILL }},
6707 { &hf_atn_cpdlc_dM18Speed,
6708 { "dM18Speed", "atn-cpdlc.dM18Speed",
6709 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6710 "Speed", HFILL }},
6711 { &hf_atn_cpdlc_dM19SpeedSpeed,
6712 { "dM19SpeedSpeed", "atn-cpdlc.dM19SpeedSpeed",
6713 FT_UINT32, BASE_DEC, NULL, 0,
6714 "SpeedSpeed", HFILL }},
6715 { &hf_atn_cpdlc_dM20NULL,
6716 { "dM20NULL", "atn-cpdlc.dM20NULL_element",
6717 FT_NONE, BASE_NONE, NULL, 0,
6718 NULL, HFILL }},
6719 { &hf_atn_cpdlc_dM21Frequency,
6720 { "dM21Frequency", "atn-cpdlc.dM21Frequency",
6721 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0,
6722 "Frequency", HFILL }},
6723 { &hf_atn_cpdlc_dM22Position,
6724 { "dM22Position", "atn-cpdlc.dM22Position",
6725 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6726 "Position", HFILL }},
6727 { &hf_atn_cpdlc_dM23ProcedureName,
6728 { "dM23ProcedureName", "atn-cpdlc.dM23ProcedureName_element",
6729 FT_NONE, BASE_NONE, NULL, 0,
6730 "ProcedureName", HFILL }},
6731 { &hf_atn_cpdlc_dM24RouteClearance,
6732 { "dM24RouteClearance", "atn-cpdlc.dM24RouteClearance",
6733 FT_UINT32, BASE_DEC, NULL, 0,
6734 "RouteClearanceIndex", HFILL }},
6735 { &hf_atn_cpdlc_dM25ClearanceType,
6736 { "dM25ClearanceType", "atn-cpdlc.dM25ClearanceType",
6737 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ClearanceType_vals), 0,
6738 "ClearanceType", HFILL }},
6739 { &hf_atn_cpdlc_dM26PositionRouteClearance,
6740 { "dM26PositionRouteClearance", "atn-cpdlc.dM26PositionRouteClearance_element",
6741 FT_NONE, BASE_NONE, NULL, 0,
6742 "PositionRouteClearanceIndex", HFILL }},
6743 { &hf_atn_cpdlc_dM27DistanceSpecifiedDirection,
6744 { "dM27DistanceSpecifiedDirection", "atn-cpdlc.dM27DistanceSpecifiedDirection_element",
6745 FT_NONE, BASE_NONE, NULL, 0,
6746 "DistanceSpecifiedDirection", HFILL }},
6747 { &hf_atn_cpdlc_dM28Level,
6748 { "dM28Level", "atn-cpdlc.dM28Level",
6749 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6750 "Level", HFILL }},
6751 { &hf_atn_cpdlc_dM29Level,
6752 { "dM29Level", "atn-cpdlc.dM29Level",
6753 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6754 "Level", HFILL }},
6755 { &hf_atn_cpdlc_dM30Level,
6756 { "dM30Level", "atn-cpdlc.dM30Level",
6757 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6758 "Level", HFILL }},
6759 { &hf_atn_cpdlc_dM31Position,
6760 { "dM31Position", "atn-cpdlc.dM31Position",
6761 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6762 "Position", HFILL }},
6763 { &hf_atn_cpdlc_dM32Level,
6764 { "dM32Level", "atn-cpdlc.dM32Level",
6765 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6766 "Level", HFILL }},
6767 { &hf_atn_cpdlc_dM33Position,
6768 { "dM33Position", "atn-cpdlc.dM33Position",
6769 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6770 "Position", HFILL }},
6771 { &hf_atn_cpdlc_dM34Speed,
6772 { "dM34Speed", "atn-cpdlc.dM34Speed",
6773 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6774 "Speed", HFILL }},
6775 { &hf_atn_cpdlc_dM35Degrees,
6776 { "dM35Degrees", "atn-cpdlc.dM35Degrees",
6777 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6778 "Degrees", HFILL }},
6779 { &hf_atn_cpdlc_dM36Degrees,
6780 { "dM36Degrees", "atn-cpdlc.dM36Degrees",
6781 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6782 "Degrees", HFILL }},
6783 { &hf_atn_cpdlc_dM37Level,
6784 { "dM37Level", "atn-cpdlc.dM37Level",
6785 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6786 "Level", HFILL }},
6787 { &hf_atn_cpdlc_dM38Level,
6788 { "dM38Level", "atn-cpdlc.dM38Level",
6789 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6790 "Level", HFILL }},
6791 { &hf_atn_cpdlc_dM39Speed,
6792 { "dM39Speed", "atn-cpdlc.dM39Speed",
6793 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6794 "Speed", HFILL }},
6795 { &hf_atn_cpdlc_dM40RouteClearance,
6796 { "dM40RouteClearance", "atn-cpdlc.dM40RouteClearance",
6797 FT_UINT32, BASE_DEC, NULL, 0,
6798 "RouteClearanceIndex", HFILL }},
6799 { &hf_atn_cpdlc_dM41NULL,
6800 { "dM41NULL", "atn-cpdlc.dM41NULL_element",
6801 FT_NONE, BASE_NONE, NULL, 0,
6802 NULL, HFILL }},
6803 { &hf_atn_cpdlc_dM42Position,
6804 { "dM42Position", "atn-cpdlc.dM42Position",
6805 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6806 "Position", HFILL }},
6807 { &hf_atn_cpdlc_dM43Time,
6808 { "dM43Time", "atn-cpdlc.dM43Time_element",
6809 FT_NONE, BASE_NONE, NULL, 0,
6810 "Time", HFILL }},
6811 { &hf_atn_cpdlc_dM44Position,
6812 { "dM44Position", "atn-cpdlc.dM44Position",
6813 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6814 "Position", HFILL }},
6815 { &hf_atn_cpdlc_dM45Position,
6816 { "dM45Position", "atn-cpdlc.dM45Position",
6817 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6818 "Position", HFILL }},
6819 { &hf_atn_cpdlc_dM46Time,
6820 { "dM46Time", "atn-cpdlc.dM46Time_element",
6821 FT_NONE, BASE_NONE, NULL, 0,
6822 "Time", HFILL }},
6823 { &hf_atn_cpdlc_dM47Code,
6824 { "dM47Code", "atn-cpdlc.dM47Code",
6825 FT_UINT32, BASE_DEC, NULL, 0,
6826 "Code", HFILL }},
6827 { &hf_atn_cpdlc_dM48PositionReport,
6828 { "dM48PositionReport", "atn-cpdlc.dM48PositionReport_element",
6829 FT_NONE, BASE_NONE, NULL, 0,
6830 "PositionReport", HFILL }},
6831 { &hf_atn_cpdlc_dM49Speed,
6832 { "dM49Speed", "atn-cpdlc.dM49Speed",
6833 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6834 "Speed", HFILL }},
6835 { &hf_atn_cpdlc_dM50SpeedSpeed,
6836 { "dM50SpeedSpeed", "atn-cpdlc.dM50SpeedSpeed",
6837 FT_UINT32, BASE_DEC, NULL, 0,
6838 "SpeedSpeed", HFILL }},
6839 { &hf_atn_cpdlc_dM51NULL,
6840 { "dM51NULL", "atn-cpdlc.dM51NULL_element",
6841 FT_NONE, BASE_NONE, NULL, 0,
6842 NULL, HFILL }},
6843 { &hf_atn_cpdlc_dM52NULL,
6844 { "dM52NULL", "atn-cpdlc.dM52NULL_element",
6845 FT_NONE, BASE_NONE, NULL, 0,
6846 NULL, HFILL }},
6847 { &hf_atn_cpdlc_dM53NULL,
6848 { "dM53NULL", "atn-cpdlc.dM53NULL_element",
6849 FT_NONE, BASE_NONE, NULL, 0,
6850 NULL, HFILL }},
6851 { &hf_atn_cpdlc_dM54Level,
6852 { "dM54Level", "atn-cpdlc.dM54Level",
6853 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6854 "Level", HFILL }},
6855 { &hf_atn_cpdlc_dM55NULL,
6856 { "dM55NULL", "atn-cpdlc.dM55NULL_element",
6857 FT_NONE, BASE_NONE, NULL, 0,
6858 NULL, HFILL }},
6859 { &hf_atn_cpdlc_dM56NULL,
6860 { "dM56NULL", "atn-cpdlc.dM56NULL_element",
6861 FT_NONE, BASE_NONE, NULL, 0,
6862 NULL, HFILL }},
6863 { &hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard,
6864 { "dM57RemainingFuelPersonsOnBoard", "atn-cpdlc.dM57RemainingFuelPersonsOnBoard_element",
6865 FT_NONE, BASE_NONE, NULL, 0,
6866 "RemainingFuelPersonsOnBoard", HFILL }},
6867 { &hf_atn_cpdlc_dM58NULL,
6868 { "dM58NULL", "atn-cpdlc.dM58NULL_element",
6869 FT_NONE, BASE_NONE, NULL, 0,
6870 NULL, HFILL }},
6871 { &hf_atn_cpdlc_dM59PositionRouteClearance,
6872 { "dM59PositionRouteClearance", "atn-cpdlc.dM59PositionRouteClearance_element",
6873 FT_NONE, BASE_NONE, NULL, 0,
6874 "PositionRouteClearanceIndex", HFILL }},
6875 { &hf_atn_cpdlc_dM60DistanceSpecifiedDirection,
6876 { "dM60DistanceSpecifiedDirection", "atn-cpdlc.dM60DistanceSpecifiedDirection_element",
6877 FT_NONE, BASE_NONE, NULL, 0,
6878 "DistanceSpecifiedDirection", HFILL }},
6879 { &hf_atn_cpdlc_dM61Level,
6880 { "dM61Level", "atn-cpdlc.dM61Level",
6881 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6882 "Level", HFILL }},
6883 { &hf_atn_cpdlc_dM62ErrorInformation,
6884 { "dM62ErrorInformation", "atn-cpdlc.dM62ErrorInformation",
6885 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ErrorInformation_vals), 0,
6886 "ErrorInformation", HFILL }},
6887 { &hf_atn_cpdlc_dM63NULL,
6888 { "dM63NULL", "atn-cpdlc.dM63NULL_element",
6889 FT_NONE, BASE_NONE, NULL, 0,
6890 NULL, HFILL }},
6891 { &hf_atn_cpdlc_dM64FacilityDesignation,
6892 { "dM64FacilityDesignation", "atn-cpdlc.dM64FacilityDesignation",
6893 FT_STRING, BASE_NONE, NULL, 0,
6894 "FacilityDesignation", HFILL }},
6895 { &hf_atn_cpdlc_dM65NULL,
6896 { "dM65NULL", "atn-cpdlc.dM65NULL_element",
6897 FT_NONE, BASE_NONE, NULL, 0,
6898 NULL, HFILL }},
6899 { &hf_atn_cpdlc_dM66NULL,
6900 { "dM66NULL", "atn-cpdlc.dM66NULL_element",
6901 FT_NONE, BASE_NONE, NULL, 0,
6902 NULL, HFILL }},
6903 { &hf_atn_cpdlc_dM67FreeText,
6904 { "dM67FreeText", "atn-cpdlc.dM67FreeText",
6905 FT_STRING, BASE_NONE, NULL, 0,
6906 "FreeText", HFILL }},
6907 { &hf_atn_cpdlc_dM68FreeText,
6908 { "dM68FreeText", "atn-cpdlc.dM68FreeText",
6909 FT_STRING, BASE_NONE, NULL, 0,
6910 "FreeText", HFILL }},
6911 { &hf_atn_cpdlc_dM69NULL,
6912 { "dM69NULL", "atn-cpdlc.dM69NULL_element",
6913 FT_NONE, BASE_NONE, NULL, 0,
6914 NULL, HFILL }},
6915 { &hf_atn_cpdlc_dM70Degrees,
6916 { "dM70Degrees", "atn-cpdlc.dM70Degrees",
6917 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6918 "Degrees", HFILL }},
6919 { &hf_atn_cpdlc_dM71Degrees,
6920 { "dM71Degrees", "atn-cpdlc.dM71Degrees",
6921 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6922 "Degrees", HFILL }},
6923 { &hf_atn_cpdlc_dM72Level,
6924 { "dM72Level", "atn-cpdlc.dM72Level",
6925 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6926 "Level", HFILL }},
6927 { &hf_atn_cpdlc_dM73Versionnumber,
6928 { "dM73Versionnumber", "atn-cpdlc.dM73Versionnumber",
6929 FT_UINT32, BASE_DEC, NULL, 0,
6930 "VersionNumber", HFILL }},
6931 { &hf_atn_cpdlc_dM74NULL,
6932 { "dM74NULL", "atn-cpdlc.dM74NULL_element",
6933 FT_NONE, BASE_NONE, NULL, 0,
6934 NULL, HFILL }},
6935 { &hf_atn_cpdlc_dM75NULL,
6936 { "dM75NULL", "atn-cpdlc.dM75NULL_element",
6937 FT_NONE, BASE_NONE, NULL, 0,
6938 NULL, HFILL }},
6939 { &hf_atn_cpdlc_dM76LevelLevel,
6940 { "dM76LevelLevel", "atn-cpdlc.dM76LevelLevel",
6941 FT_UINT32, BASE_DEC, NULL, 0,
6942 "LevelLevel", HFILL }},
6943 { &hf_atn_cpdlc_dM77LevelLevel,
6944 { "dM77LevelLevel", "atn-cpdlc.dM77LevelLevel",
6945 FT_UINT32, BASE_DEC, NULL, 0,
6946 "LevelLevel", HFILL }},
6947 { &hf_atn_cpdlc_dM78TimeDistanceToFromPosition,
6948 { "dM78TimeDistanceToFromPosition", "atn-cpdlc.dM78TimeDistanceToFromPosition_element",
6949 FT_NONE, BASE_NONE, NULL, 0,
6950 "TimeDistanceToFromPosition", HFILL }},
6951 { &hf_atn_cpdlc_dM79AtisCode,
6952 { "dM79AtisCode", "atn-cpdlc.dM79AtisCode",
6953 FT_STRING, BASE_NONE, NULL, 0,
6954 "ATISCode", HFILL }},
6955 { &hf_atn_cpdlc_dM80DistanceSpecifiedDirection,
6956 { "dM80DistanceSpecifiedDirection", "atn-cpdlc.dM80DistanceSpecifiedDirection_element",
6957 FT_NONE, BASE_NONE, NULL, 0,
6958 "DistanceSpecifiedDirection", HFILL }},
6959 { &hf_atn_cpdlc_dM81LevelTime,
6960 { "dM81LevelTime", "atn-cpdlc.dM81LevelTime_element",
6961 FT_NONE, BASE_NONE, NULL, 0,
6962 "LevelTime", HFILL }},
6963 { &hf_atn_cpdlc_dM82Level,
6964 { "dM82Level", "atn-cpdlc.dM82Level",
6965 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6966 "Level", HFILL }},
6967 { &hf_atn_cpdlc_dM83SpeedTime,
6968 { "dM83SpeedTime", "atn-cpdlc.dM83SpeedTime_element",
6969 FT_NONE, BASE_NONE, NULL, 0,
6970 "SpeedTime", HFILL }},
6971 { &hf_atn_cpdlc_dM84Speed,
6972 { "dM84Speed", "atn-cpdlc.dM84Speed",
6973 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6974 "Speed", HFILL }},
6975 { &hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime,
6976 { "dM85DistanceSpecifiedDirectionTime", "atn-cpdlc.dM85DistanceSpecifiedDirectionTime_element",
6977 FT_NONE, BASE_NONE, NULL, 0,
6978 "DistanceSpecifiedDirectionTime", HFILL }},
6979 { &hf_atn_cpdlc_dM86DistanceSpecifiedDirection,
6980 { "dM86DistanceSpecifiedDirection", "atn-cpdlc.dM86DistanceSpecifiedDirection_element",
6981 FT_NONE, BASE_NONE, NULL, 0,
6982 "DistanceSpecifiedDirection", HFILL }},
6983 { &hf_atn_cpdlc_dM87Level,
6984 { "dM87Level", "atn-cpdlc.dM87Level",
6985 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6986 "Level", HFILL }},
6987 { &hf_atn_cpdlc_dM88Level,
6988 { "dM88Level", "atn-cpdlc.dM88Level",
6989 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6990 "Level", HFILL }},
6991 { &hf_atn_cpdlc_dM89UnitnameFrequency,
6992 { "dM89UnitnameFrequency", "atn-cpdlc.dM89UnitnameFrequency_element",
6993 FT_NONE, BASE_NONE, NULL, 0,
6994 "UnitNameFrequency", HFILL }},
6995 { &hf_atn_cpdlc_dM90FreeText,
6996 { "dM90FreeText", "atn-cpdlc.dM90FreeText",
6997 FT_STRING, BASE_NONE, NULL, 0,
6998 "FreeText", HFILL }},
6999 { &hf_atn_cpdlc_dM91FreeText,
7000 { "dM91FreeText", "atn-cpdlc.dM91FreeText",
7001 FT_STRING, BASE_NONE, NULL, 0,
7002 "FreeText", HFILL }},
7003 { &hf_atn_cpdlc_dM92FreeText,
7004 { "dM92FreeText", "atn-cpdlc.dM92FreeText",
7005 FT_STRING, BASE_NONE, NULL, 0,
7006 "FreeText", HFILL }},
7007 { &hf_atn_cpdlc_dM93FreeText,
7008 { "dM93FreeText", "atn-cpdlc.dM93FreeText",
7009 FT_STRING, BASE_NONE, NULL, 0,
7010 "FreeText", HFILL }},
7011 { &hf_atn_cpdlc_dM94FreeText,
7012 { "dM94FreeText", "atn-cpdlc.dM94FreeText",
7013 FT_STRING, BASE_NONE, NULL, 0,
7014 "FreeText", HFILL }},
7015 { &hf_atn_cpdlc_dM95FreeText,
7016 { "dM95FreeText", "atn-cpdlc.dM95FreeText",
7017 FT_STRING, BASE_NONE, NULL, 0,
7018 "FreeText", HFILL }},
7019 { &hf_atn_cpdlc_dM96FreeText,
7020 { "dM96FreeText", "atn-cpdlc.dM96FreeText",
7021 FT_STRING, BASE_NONE, NULL, 0,
7022 "FreeText", HFILL }},
7023 { &hf_atn_cpdlc_dM97FreeText,
7024 { "dM97FreeText", "atn-cpdlc.dM97FreeText",
7025 FT_STRING, BASE_NONE, NULL, 0,
7026 "FreeText", HFILL }},
7027 { &hf_atn_cpdlc_dM98FreeText,
7028 { "dM98FreeText", "atn-cpdlc.dM98FreeText",
7029 FT_STRING, BASE_NONE, NULL, 0,
7030 "FreeText", HFILL }},
7031 { &hf_atn_cpdlc_dM99NULL,
7032 { "dM99NULL", "atn-cpdlc.dM99NULL_element",
7033 FT_NONE, BASE_NONE, NULL, 0,
7034 NULL, HFILL }},
7035 { &hf_atn_cpdlc_dM100NULL,
7036 { "dM100NULL", "atn-cpdlc.dM100NULL_element",
7037 FT_NONE, BASE_NONE, NULL, 0,
7038 NULL, HFILL }},
7039 { &hf_atn_cpdlc_dM101NULL,
7040 { "dM101NULL", "atn-cpdlc.dM101NULL_element",
7041 FT_NONE, BASE_NONE, NULL, 0,
7042 NULL, HFILL }},
7043 { &hf_atn_cpdlc_dM102NULL,
7044 { "dM102NULL", "atn-cpdlc.dM102NULL_element",
7045 FT_NONE, BASE_NONE, NULL, 0,
7046 NULL, HFILL }},
7047 { &hf_atn_cpdlc_dM103NULL,
7048 { "dM103NULL", "atn-cpdlc.dM103NULL_element",
7049 FT_NONE, BASE_NONE, NULL, 0,
7050 NULL, HFILL }},
7051 { &hf_atn_cpdlc_dM104PositionTime,
7052 { "dM104PositionTime", "atn-cpdlc.dM104PositionTime_element",
7053 FT_NONE, BASE_NONE, NULL, 0,
7054 "PositionTime", HFILL }},
7055 { &hf_atn_cpdlc_dM105Airport,
7056 { "dM105Airport", "atn-cpdlc.dM105Airport",
7057 FT_STRING, BASE_NONE, NULL, 0,
7058 "Airport", HFILL }},
7059 { &hf_atn_cpdlc_dM106Level,
7060 { "dM106Level", "atn-cpdlc.dM106Level",
7061 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7062 "Level", HFILL }},
7063 { &hf_atn_cpdlc_dM107NULL,
7064 { "dM107NULL", "atn-cpdlc.dM107NULL_element",
7065 FT_NONE, BASE_NONE, NULL, 0,
7066 NULL, HFILL }},
7067 { &hf_atn_cpdlc_dM108NULL,
7068 { "dM108NULL", "atn-cpdlc.dM108NULL_element",
7069 FT_NONE, BASE_NONE, NULL, 0,
7070 NULL, HFILL }},
7071 { &hf_atn_cpdlc_dM109Time,
7072 { "dM109Time", "atn-cpdlc.dM109Time_element",
7073 FT_NONE, BASE_NONE, NULL, 0,
7074 "Time", HFILL }},
7075 { &hf_atn_cpdlc_dM110Position,
7076 { "dM110Position", "atn-cpdlc.dM110Position",
7077 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7078 "Position", HFILL }},
7079 { &hf_atn_cpdlc_dM111TimePosition,
7080 { "dM111TimePosition", "atn-cpdlc.dM111TimePosition_element",
7081 FT_NONE, BASE_NONE, NULL, 0,
7082 "TimePosition", HFILL }},
7083 { &hf_atn_cpdlc_dM112NULL,
7084 { "dM112NULL", "atn-cpdlc.dM112NULL_element",
7085 FT_NONE, BASE_NONE, NULL, 0,
7086 NULL, HFILL }},
7087 { &hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed,
7088 { "dM113SpeedTypeSpeedTypeSpeedTypeSpeed", "atn-cpdlc.dM113SpeedTypeSpeedTypeSpeedTypeSpeed_element",
7089 FT_NONE, BASE_NONE, NULL, 0,
7090 "SpeedTypeSpeedTypeSpeedTypeSpeed", HFILL }},
7091 { &hf_atn_cpdlc_altimeterEnglish,
7092 { "altimeterEnglish", "atn-cpdlc.altimeterEnglish",
7093 FT_UINT32, BASE_DEC, NULL, 0,
7094 NULL, HFILL }},
7095 { &hf_atn_cpdlc_altimeterMetric,
7096 { "altimeterMetric", "atn-cpdlc.altimeterMetric",
7097 FT_UINT32, BASE_DEC, NULL, 0,
7098 NULL, HFILL }},
7099 { &hf_atn_cpdlc_position,
7100 { "position", "atn-cpdlc.position",
7101 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7102 NULL, HFILL }},
7103 { &hf_atn_cpdlc_aTWDistance,
7104 { "aTWDistance", "atn-cpdlc.aTWDistance_element",
7105 FT_NONE, BASE_NONE, NULL, 0,
7106 NULL, HFILL }},
7107 { &hf_atn_cpdlc_speed,
7108 { "speed", "atn-cpdlc.speed",
7109 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
7110 NULL, HFILL }},
7111 { &hf_atn_cpdlc_aTWLevels,
7112 { "aTWLevels", "atn-cpdlc.aTWLevels",
7113 FT_UINT32, BASE_DEC, NULL, 0,
7114 "ATWLevelSequence", HFILL }},
7115 { &hf_atn_cpdlc_atw,
7116 { "atw", "atn-cpdlc.atw",
7117 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATWLevelTolerance_vals), 0,
7118 "ATWLevelTolerance", HFILL }},
7119 { &hf_atn_cpdlc_level,
7120 { "level", "atn-cpdlc.level",
7121 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7122 NULL, HFILL }},
7123 { &hf_atn_cpdlc_ATWLevelSequence_item,
7124 { "ATWLevel", "atn-cpdlc.ATWLevel_element",
7125 FT_NONE, BASE_NONE, NULL, 0,
7126 NULL, HFILL }},
7127 { &hf_atn_cpdlc_atwDistanceTolerance,
7128 { "atwDistanceTolerance", "atn-cpdlc.atwDistanceTolerance",
7129 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATWDistanceTolerance_vals), 0,
7130 NULL, HFILL }},
7131 { &hf_atn_cpdlc_distance,
7132 { "distance", "atn-cpdlc.distance",
7133 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Distance_vals), 0,
7134 NULL, HFILL }},
7135 { &hf_atn_cpdlc_Code_item,
7136 { "CodeOctalDigit", "atn-cpdlc.CodeOctalDigit",
7137 FT_UINT32, BASE_DEC, NULL, 0,
7138 NULL, HFILL }},
7139 { &hf_atn_cpdlc_time,
7140 { "time", "atn-cpdlc.time_element",
7141 FT_NONE, BASE_NONE, NULL, 0,
7142 NULL, HFILL }},
7143 { &hf_atn_cpdlc_timeTolerance,
7144 { "timeTolerance", "atn-cpdlc.timeTolerance",
7145 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_TimeTolerance_vals), 0,
7146 NULL, HFILL }},
7147 { &hf_atn_cpdlc_year,
7148 { "year", "atn-cpdlc.year",
7149 FT_UINT32, BASE_DEC, NULL, 0,
7150 NULL, HFILL }},
7151 { &hf_atn_cpdlc_month,
7152 { "month", "atn-cpdlc.month",
7153 FT_UINT32, BASE_DEC, NULL, 0,
7154 NULL, HFILL }},
7155 { &hf_atn_cpdlc_day,
7156 { "day", "atn-cpdlc.day",
7157 FT_UINT32, BASE_DEC, NULL, 0,
7158 NULL, HFILL }},
7159 { &hf_atn_cpdlc_date,
7160 { "date", "atn-cpdlc.date_element",
7161 FT_NONE, BASE_NONE, NULL, 0,
7162 NULL, HFILL }},
7163 { &hf_atn_cpdlc_timehhmmss,
7164 { "timehhmmss", "atn-cpdlc.timehhmmss_element",
7165 FT_NONE, BASE_NONE, NULL, 0,
7166 NULL, HFILL }},
7167 { &hf_atn_cpdlc_degreesMagnetic,
7168 { "degreesMagnetic", "atn-cpdlc.degreesMagnetic",
7169 FT_UINT32, BASE_DEC, NULL, 0,
7170 NULL, HFILL }},
7171 { &hf_atn_cpdlc_degreesTrue,
7172 { "degreesTrue", "atn-cpdlc.degreesTrue",
7173 FT_UINT32, BASE_DEC, NULL, 0,
7174 NULL, HFILL }},
7175 { &hf_atn_cpdlc_aircraftFlightIdentification,
7176 { "aircraftFlightIdentification", "atn-cpdlc.aircraftFlightIdentification",
7177 FT_STRING, BASE_NONE, NULL, 0,
7178 NULL, HFILL }},
7179 { &hf_atn_cpdlc_clearanceLimit,
7180 { "clearanceLimit", "atn-cpdlc.clearanceLimit",
7181 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7182 "Position", HFILL }},
7183 { &hf_atn_cpdlc_flightInformation,
7184 { "flightInformation", "atn-cpdlc.flightInformation",
7185 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_FlightInformation_vals), 0,
7186 NULL, HFILL }},
7187 { &hf_atn_cpdlc_furtherInstructions,
7188 { "furtherInstructions", "atn-cpdlc.furtherInstructions_element",
7189 FT_NONE, BASE_NONE, NULL, 0,
7190 NULL, HFILL }},
7191 { &hf_atn_cpdlc_direction,
7192 { "direction", "atn-cpdlc.direction",
7193 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Direction_vals), 0,
7194 NULL, HFILL }},
7195 { &hf_atn_cpdlc_degrees,
7196 { "degrees", "atn-cpdlc.degrees",
7197 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
7198 NULL, HFILL }},
7199 { &hf_atn_cpdlc_distanceNm,
7200 { "distanceNm", "atn-cpdlc.distanceNm",
7201 FT_UINT32, BASE_DEC, NULL, 0,
7202 NULL, HFILL }},
7203 { &hf_atn_cpdlc_distanceKm,
7204 { "distanceKm", "atn-cpdlc.distanceKm",
7205 FT_UINT32, BASE_DEC, NULL, 0,
7206 NULL, HFILL }},
7207 { &hf_atn_cpdlc_distanceSpecifiedNm,
7208 { "distanceSpecifiedNm", "atn-cpdlc.distanceSpecifiedNm",
7209 FT_UINT32, BASE_DEC, NULL, 0,
7210 NULL, HFILL }},
7211 { &hf_atn_cpdlc_distanceSpecifiedKm,
7212 { "distanceSpecifiedKm", "atn-cpdlc.distanceSpecifiedKm",
7213 FT_UINT32, BASE_DEC, NULL, 0,
7214 NULL, HFILL }},
7215 { &hf_atn_cpdlc_distanceSpecified,
7216 { "distanceSpecified", "atn-cpdlc.distanceSpecified",
7217 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_DistanceSpecified_vals), 0,
7218 NULL, HFILL }},
7219 { &hf_atn_cpdlc_distanceSpecifiedDirection,
7220 { "distanceSpecifiedDirection", "atn-cpdlc.distanceSpecifiedDirection_element",
7221 FT_NONE, BASE_NONE, NULL, 0,
7222 NULL, HFILL }},
7223 { &hf_atn_cpdlc_noFacility,
7224 { "noFacility", "atn-cpdlc.noFacility_element",
7225 FT_NONE, BASE_NONE, NULL, 0,
7226 NULL, HFILL }},
7227 { &hf_atn_cpdlc_facilityDesignation,
7228 { "facilityDesignation", "atn-cpdlc.facilityDesignation",
7229 FT_STRING, BASE_NONE, NULL, 0,
7230 NULL, HFILL }},
7231 { &hf_atn_cpdlc_altimeter,
7232 { "altimeter", "atn-cpdlc.altimeter",
7233 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Altimeter_vals), 0,
7234 NULL, HFILL }},
7235 { &hf_atn_cpdlc_aTISCode,
7236 { "aTISCode", "atn-cpdlc.aTISCode",
7237 FT_STRING, BASE_NONE, NULL, 0,
7238 NULL, HFILL }},
7239 { &hf_atn_cpdlc_fixname_name,
7240 { "name", "atn-cpdlc.name",
7241 FT_STRING, BASE_NONE, NULL, 0,
7242 "Fix", HFILL }},
7243 { &hf_atn_cpdlc_latlon,
7244 { "latlon", "atn-cpdlc.latlon_element",
7245 FT_NONE, BASE_NONE, NULL, 0,
7246 "LatitudeLongitude", HFILL }},
7247 { &hf_atn_cpdlc_routeOfFlight,
7248 { "routeOfFlight", "atn-cpdlc.routeOfFlight",
7249 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RouteInformation_vals), 0,
7250 "RouteInformation", HFILL }},
7251 { &hf_atn_cpdlc_levelsOfFlight,
7252 { "levelsOfFlight", "atn-cpdlc.levelsOfFlight",
7253 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelsOfFlight_vals), 0,
7254 NULL, HFILL }},
7255 { &hf_atn_cpdlc_routeAndLevels,
7256 { "routeAndLevels", "atn-cpdlc.routeAndLevels_element",
7257 FT_NONE, BASE_NONE, NULL, 0,
7258 NULL, HFILL }},
7259 { &hf_atn_cpdlc_frequencyhf,
7260 { "frequencyhf", "atn-cpdlc.frequencyhf",
7261 FT_UINT32, BASE_DEC, NULL, 0,
7262 NULL, HFILL }},
7263 { &hf_atn_cpdlc_frequencyvhf,
7264 { "frequencyvhf", "atn-cpdlc.frequencyvhf",
7265 FT_UINT32, BASE_DEC, NULL, 0,
7266 NULL, HFILL }},
7267 { &hf_atn_cpdlc_frequencyuhf,
7268 { "frequencyuhf", "atn-cpdlc.frequencyuhf",
7269 FT_UINT32, BASE_DEC, NULL, 0,
7270 NULL, HFILL }},
7271 { &hf_atn_cpdlc_frequencysatchannel,
7272 { "frequencysatchannel", "atn-cpdlc.frequencysatchannel",
7273 FT_STRING, BASE_NONE, NULL, 0,
7274 NULL, HFILL }},
7275 { &hf_atn_cpdlc_code,
7276 { "code", "atn-cpdlc.code",
7277 FT_UINT32, BASE_DEC, NULL, 0,
7278 NULL, HFILL }},
7279 { &hf_atn_cpdlc_frequencyDeparture,
7280 { "frequencyDeparture", "atn-cpdlc.frequencyDeparture_element",
7281 FT_NONE, BASE_NONE, NULL, 0,
7282 "UnitNameFrequency", HFILL }},
7283 { &hf_atn_cpdlc_clearanceExpiryTime,
7284 { "clearanceExpiryTime", "atn-cpdlc.clearanceExpiryTime_element",
7285 FT_NONE, BASE_NONE, NULL, 0,
7286 "Time", HFILL }},
7287 { &hf_atn_cpdlc_airportDeparture,
7288 { "airportDeparture", "atn-cpdlc.airportDeparture",
7289 FT_STRING, BASE_NONE, NULL, 0,
7290 "Airport", HFILL }},
7291 { &hf_atn_cpdlc_airportDestination,
7292 { "airportDestination", "atn-cpdlc.airportDestination",
7293 FT_STRING, BASE_NONE, NULL, 0,
7294 "Airport", HFILL }},
7295 { &hf_atn_cpdlc_timeDeparture,
7296 { "timeDeparture", "atn-cpdlc.timeDeparture_element",
7297 FT_NONE, BASE_NONE, NULL, 0,
7298 NULL, HFILL }},
7299 { &hf_atn_cpdlc_runwayDeparture,
7300 { "runwayDeparture", "atn-cpdlc.runwayDeparture_element",
7301 FT_NONE, BASE_NONE, NULL, 0,
7302 "Runway", HFILL }},
7303 { &hf_atn_cpdlc_revisionNumber,
7304 { "revisionNumber", "atn-cpdlc.revisionNumber",
7305 FT_UINT32, BASE_DEC, NULL, 0,
7306 NULL, HFILL }},
7307 { &hf_atn_cpdlc_holdatwaypointspeedlow,
7308 { "holdatwaypointspeedlow", "atn-cpdlc.holdatwaypointspeedlow",
7309 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
7310 "Speed", HFILL }},
7311 { &hf_atn_cpdlc_aTWlevel,
7312 { "aTWlevel", "atn-cpdlc.aTWlevel_element",
7313 FT_NONE, BASE_NONE, NULL, 0,
7314 NULL, HFILL }},
7315 { &hf_atn_cpdlc_holdatwaypointspeedhigh,
7316 { "holdatwaypointspeedhigh", "atn-cpdlc.holdatwaypointspeedhigh",
7317 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
7318 "Speed", HFILL }},
7319 { &hf_atn_cpdlc_eFCtime,
7320 { "eFCtime", "atn-cpdlc.eFCtime_element",
7321 FT_NONE, BASE_NONE, NULL, 0,
7322 "Time", HFILL }},
7323 { &hf_atn_cpdlc_legtype,
7324 { "legtype", "atn-cpdlc.legtype",
7325 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegType_vals), 0,
7326 NULL, HFILL }},
7327 { &hf_atn_cpdlc_legType,
7328 { "legType", "atn-cpdlc.legType",
7329 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegType_vals), 0,
7330 NULL, HFILL }},
7331 { &hf_atn_cpdlc_fromSelection,
7332 { "fromSelection", "atn-cpdlc.fromSelection",
7333 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_InterceptCourseFromSelection_vals), 0,
7334 "InterceptCourseFromSelection", HFILL }},
7335 { &hf_atn_cpdlc_publishedIdentifier,
7336 { "publishedIdentifier", "atn-cpdlc.publishedIdentifier",
7337 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PublishedIdentifier_vals), 0,
7338 NULL, HFILL }},
7339 { &hf_atn_cpdlc_latitudeLongitude,
7340 { "latitudeLongitude", "atn-cpdlc.latitudeLongitude_element",
7341 FT_NONE, BASE_NONE, NULL, 0,
7342 NULL, HFILL }},
7343 { &hf_atn_cpdlc_placeBearingPlaceBearing,
7344 { "placeBearingPlaceBearing", "atn-cpdlc.placeBearingPlaceBearing",
7345 FT_UINT32, BASE_DEC, NULL, 0,
7346 NULL, HFILL }},
7347 { &hf_atn_cpdlc_placeBearingDistance,
7348 { "placeBearingDistance", "atn-cpdlc.placeBearingDistance_element",
7349 FT_NONE, BASE_NONE, NULL, 0,
7350 NULL, HFILL }},
7351 { &hf_atn_cpdlc_latitudeType,
7352 { "latitudeType", "atn-cpdlc.latitudeType",
7353 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatitudeType_vals), 0,
7354 NULL, HFILL }},
7355 { &hf_atn_cpdlc_latitudeDirection,
7356 { "latitudeDirection", "atn-cpdlc.latitudeDirection",
7357 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatitudeDirection_vals), 0,
7358 NULL, HFILL }},
7359 { &hf_atn_cpdlc_latitudeWholeDegrees,
7360 { "latitudeWholeDegrees", "atn-cpdlc.latitudeWholeDegrees",
7361 FT_UINT32, BASE_DEC, NULL, 0,
7362 NULL, HFILL }},
7363 { &hf_atn_cpdlc_minutesLatLon,
7364 { "minutesLatLon", "atn-cpdlc.minutesLatLon",
7365 FT_UINT32, BASE_DEC, NULL, 0,
7366 NULL, HFILL }},
7367 { &hf_atn_cpdlc_latlonWholeMinutes,
7368 { "latlonWholeMinutes", "atn-cpdlc.latlonWholeMinutes",
7369 FT_UINT32, BASE_DEC, NULL, 0,
7370 NULL, HFILL }},
7371 { &hf_atn_cpdlc_secondsLatLon,
7372 { "secondsLatLon", "atn-cpdlc.secondsLatLon",
7373 FT_UINT32, BASE_DEC, NULL, 0,
7374 NULL, HFILL }},
7375 { &hf_atn_cpdlc_latitude,
7376 { "latitude", "atn-cpdlc.latitude_element",
7377 FT_NONE, BASE_NONE, NULL, 0,
7378 NULL, HFILL }},
7379 { &hf_atn_cpdlc_longitude,
7380 { "longitude", "atn-cpdlc.longitude_element",
7381 FT_NONE, BASE_NONE, NULL, 0,
7382 NULL, HFILL }},
7383 { &hf_atn_cpdlc_latitudeDegrees,
7384 { "latitudeDegrees", "atn-cpdlc.latitudeDegrees",
7385 FT_UINT32, BASE_DEC, NULL, 0,
7386 NULL, HFILL }},
7387 { &hf_atn_cpdlc_latitudeDegreesMinutes,
7388 { "latitudeDegreesMinutes", "atn-cpdlc.latitudeDegreesMinutes_element",
7389 FT_NONE, BASE_NONE, NULL, 0,
7390 NULL, HFILL }},
7391 { &hf_atn_cpdlc_latitudeDMS,
7392 { "latitudeDMS", "atn-cpdlc.latitudeDMS_element",
7393 FT_NONE, BASE_NONE, NULL, 0,
7394 "LatitudeDegreesMinutesSeconds", HFILL }},
7395 { &hf_atn_cpdlc_latitudeReportingPoints,
7396 { "latitudeReportingPoints", "atn-cpdlc.latitudeReportingPoints_element",
7397 FT_NONE, BASE_NONE, NULL, 0,
7398 NULL, HFILL }},
7399 { &hf_atn_cpdlc_longitudeReportingPoints,
7400 { "longitudeReportingPoints", "atn-cpdlc.longitudeReportingPoints_element",
7401 FT_NONE, BASE_NONE, NULL, 0,
7402 NULL, HFILL }},
7403 { &hf_atn_cpdlc_legDistanceEnglish,
7404 { "legDistanceEnglish", "atn-cpdlc.legDistanceEnglish",
7405 FT_UINT32, BASE_DEC, NULL, 0,
7406 NULL, HFILL }},
7407 { &hf_atn_cpdlc_legDistanceMetric,
7408 { "legDistanceMetric", "atn-cpdlc.legDistanceMetric",
7409 FT_UINT32, BASE_DEC, NULL, 0,
7410 NULL, HFILL }},
7411 { &hf_atn_cpdlc_legDistance,
7412 { "legDistance", "atn-cpdlc.legDistance",
7413 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegDistance_vals), 0,
7414 NULL, HFILL }},
7415 { &hf_atn_cpdlc_legTime,
7416 { "legTime", "atn-cpdlc.legTime",
7417 FT_UINT32, BASE_DEC, NULL, 0,
7418 NULL, HFILL }},
7419 { &hf_atn_cpdlc_singleLevel,
7420 { "singleLevel", "atn-cpdlc.singleLevel",
7421 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelType_vals), 0,
7422 "LevelType", HFILL }},
7423 { &hf_atn_cpdlc_blockLevel,
7424 { "blockLevel", "atn-cpdlc.blockLevel",
7425 FT_UINT32, BASE_DEC, NULL, 0,
7426 "SEQUENCE_SIZE_2_OF_LevelType", HFILL }},
7427 { &hf_atn_cpdlc_blockLevel_item,
7428 { "LevelType", "atn-cpdlc.LevelType",
7429 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelType_vals), 0,
7430 NULL, HFILL }},
7431 { &hf_atn_cpdlc_LevelLevel_item,
7432 { "Level", "atn-cpdlc.Level",
7433 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7434 NULL, HFILL }},
7435 { &hf_atn_cpdlc_procedureName,
7436 { "procedureName", "atn-cpdlc.procedureName_element",
7437 FT_NONE, BASE_NONE, NULL, 0,
7438 NULL, HFILL }},
7439 { &hf_atn_cpdlc_levelProcedureName,
7440 { "levelProcedureName", "atn-cpdlc.levelProcedureName_element",
7441 FT_NONE, BASE_NONE, NULL, 0,
7442 NULL, HFILL }},
7443 { &hf_atn_cpdlc_levelspeed_speed,
7444 { "speed", "atn-cpdlc.speed",
7445 FT_UINT32, BASE_DEC, NULL, 0,
7446 "SpeedSpeed", HFILL }},
7447 { &hf_atn_cpdlc_speeds,
7448 { "speeds", "atn-cpdlc.speeds",
7449 FT_UINT32, BASE_DEC, NULL, 0,
7450 "SpeedSpeed", HFILL }},
7451 { &hf_atn_cpdlc_levelFeet,
7452 { "levelFeet", "atn-cpdlc.levelFeet",
7453 FT_INT32, BASE_DEC, NULL, 0,
7454 NULL, HFILL }},
7455 { &hf_atn_cpdlc_levelMeters,
7456 { "levelMeters", "atn-cpdlc.levelMeters",
7457 FT_INT32, BASE_DEC, NULL, 0,
7458 NULL, HFILL }},
7459 { &hf_atn_cpdlc_levelFlightLevel,
7460 { "levelFlightLevel", "atn-cpdlc.levelFlightLevel",
7461 FT_UINT32, BASE_DEC, NULL, 0,
7462 NULL, HFILL }},
7463 { &hf_atn_cpdlc_levelFlightLevelMetric,
7464 { "levelFlightLevelMetric", "atn-cpdlc.levelFlightLevelMetric",
7465 FT_UINT32, BASE_DEC, NULL, 0,
7466 NULL, HFILL }},
7467 { &hf_atn_cpdlc_longitudeType,
7468 { "longitudeType", "atn-cpdlc.longitudeType",
7469 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LongitudeType_vals), 0,
7470 NULL, HFILL }},
7471 { &hf_atn_cpdlc_longitudeDirection,
7472 { "longitudeDirection", "atn-cpdlc.longitudeDirection",
7473 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LongitudeDirection_vals), 0,
7474 NULL, HFILL }},
7475 { &hf_atn_cpdlc_longitudeWholeDegrees,
7476 { "longitudeWholeDegrees", "atn-cpdlc.longitudeWholeDegrees",
7477 FT_UINT32, BASE_DEC, NULL, 0,
7478 NULL, HFILL }},
7479 { &hf_atn_cpdlc_latLonWholeMinutes,
7480 { "latLonWholeMinutes", "atn-cpdlc.latLonWholeMinutes",
7481 FT_UINT32, BASE_DEC, NULL, 0,
7482 NULL, HFILL }},
7483 { &hf_atn_cpdlc_longitudeDegrees,
7484 { "longitudeDegrees", "atn-cpdlc.longitudeDegrees",
7485 FT_UINT32, BASE_DEC, NULL, 0,
7486 NULL, HFILL }},
7487 { &hf_atn_cpdlc_longitudeDegreesMinutes,
7488 { "longitudeDegreesMinutes", "atn-cpdlc.longitudeDegreesMinutes_element",
7489 FT_NONE, BASE_NONE, NULL, 0,
7490 NULL, HFILL }},
7491 { &hf_atn_cpdlc_longitudeDMS,
7492 { "longitudeDMS", "atn-cpdlc.longitudeDMS_element",
7493 FT_NONE, BASE_NONE, NULL, 0,
7494 "LongitudeDegreesMinutesSeconds", HFILL }},
7495 { &hf_atn_cpdlc_navaid_name,
7496 { "name", "atn-cpdlc.name",
7497 FT_STRING, BASE_NONE, NULL, 0,
7498 "NavaidName", HFILL }},
7499 { &hf_atn_cpdlc_PlaceBearingPlaceBearing_item,
7500 { "PlaceBearing", "atn-cpdlc.PlaceBearing_element",
7501 FT_NONE, BASE_NONE, NULL, 0,
7502 NULL, HFILL }},
7503 { &hf_atn_cpdlc_fixName,
7504 { "fixName", "atn-cpdlc.fixName_element",
7505 FT_NONE, BASE_NONE, NULL, 0,
7506 NULL, HFILL }},
7507 { &hf_atn_cpdlc_navaid,
7508 { "navaid", "atn-cpdlc.navaid_element",
7509 FT_NONE, BASE_NONE, NULL, 0,
7510 NULL, HFILL }},
7511 { &hf_atn_cpdlc_airport,
7512 { "airport", "atn-cpdlc.airport",
7513 FT_STRING, BASE_NONE, NULL, 0,
7514 NULL, HFILL }},
7515 { &hf_atn_cpdlc_levels,
7516 { "levels", "atn-cpdlc.levels",
7517 FT_UINT32, BASE_DEC, NULL, 0,
7518 "LevelLevel", HFILL }},
7519 { &hf_atn_cpdlc_positionlevel,
7520 { "positionlevel", "atn-cpdlc.positionlevel_element",
7521 FT_NONE, BASE_NONE, NULL, 0,
7522 NULL, HFILL }},
7523 { &hf_atn_cpdlc_PositionPosition_item,
7524 { "Position", "atn-cpdlc.Position",
7525 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7526 NULL, HFILL }},
7527 { &hf_atn_cpdlc_positioncurrent,
7528 { "positioncurrent", "atn-cpdlc.positioncurrent",
7529 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7530 "Position", HFILL }},
7531 { &hf_atn_cpdlc_timeatpositioncurrent,
7532 { "timeatpositioncurrent", "atn-cpdlc.timeatpositioncurrent_element",
7533 FT_NONE, BASE_NONE, NULL, 0,
7534 "Time", HFILL }},
7535 { &hf_atn_cpdlc_fixnext,
7536 { "fixnext", "atn-cpdlc.fixnext",
7537 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7538 "Position", HFILL }},
7539 { &hf_atn_cpdlc_timeetaatfixnext,
7540 { "timeetaatfixnext", "atn-cpdlc.timeetaatfixnext_element",
7541 FT_NONE, BASE_NONE, NULL, 0,
7542 "Time", HFILL }},
7543 { &hf_atn_cpdlc_fixnextplusone,
7544 { "fixnextplusone", "atn-cpdlc.fixnextplusone",
7545 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7546 "Position", HFILL }},
7547 { &hf_atn_cpdlc_timeetaatdestination,
7548 { "timeetaatdestination", "atn-cpdlc.timeetaatdestination_element",
7549 FT_NONE, BASE_NONE, NULL, 0,
7550 "Time", HFILL }},
7551 { &hf_atn_cpdlc_remainingFuel,
7552 { "remainingFuel", "atn-cpdlc.remainingFuel_element",
7553 FT_NONE, BASE_NONE, NULL, 0,
7554 NULL, HFILL }},
7555 { &hf_atn_cpdlc_temperature,
7556 { "temperature", "atn-cpdlc.temperature",
7557 FT_INT32, BASE_DEC, NULL, 0,
7558 NULL, HFILL }},
7559 { &hf_atn_cpdlc_winds,
7560 { "winds", "atn-cpdlc.winds_element",
7561 FT_NONE, BASE_NONE, NULL, 0,
7562 NULL, HFILL }},
7563 { &hf_atn_cpdlc_turbulence,
7564 { "turbulence", "atn-cpdlc.turbulence",
7565 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Turbulence_vals), 0,
7566 NULL, HFILL }},
7567 { &hf_atn_cpdlc_icing,
7568 { "icing", "atn-cpdlc.icing",
7569 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Icing_vals), 0,
7570 NULL, HFILL }},
7571 { &hf_atn_cpdlc_speedground,
7572 { "speedground", "atn-cpdlc.speedground",
7573 FT_INT32, BASE_DEC, NULL, 0,
7574 NULL, HFILL }},
7575 { &hf_atn_cpdlc_verticalChange,
7576 { "verticalChange", "atn-cpdlc.verticalChange_element",
7577 FT_NONE, BASE_NONE, NULL, 0,
7578 NULL, HFILL }},
7579 { &hf_atn_cpdlc_trackAngle,
7580 { "trackAngle", "atn-cpdlc.trackAngle",
7581 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
7582 "Degrees", HFILL }},
7583 { &hf_atn_cpdlc_heading,
7584 { "heading", "atn-cpdlc.heading",
7585 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
7586 "Degrees", HFILL }},
7587 { &hf_atn_cpdlc_humidity,
7588 { "humidity", "atn-cpdlc.humidity",
7589 FT_UINT32, BASE_DEC, NULL, 0,
7590 NULL, HFILL }},
7591 { &hf_atn_cpdlc_reportedWaypointPosition,
7592 { "reportedWaypointPosition", "atn-cpdlc.reportedWaypointPosition",
7593 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7594 "Position", HFILL }},
7595 { &hf_atn_cpdlc_reportedWaypointTime,
7596 { "reportedWaypointTime", "atn-cpdlc.reportedWaypointTime_element",
7597 FT_NONE, BASE_NONE, NULL, 0,
7598 "Time", HFILL }},
7599 { &hf_atn_cpdlc_reportedWaypointLevel,
7600 { "reportedWaypointLevel", "atn-cpdlc.reportedWaypointLevel",
7601 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7602 "Level", HFILL }},
7603 { &hf_atn_cpdlc_routeClearanceIndex,
7604 { "routeClearanceIndex", "atn-cpdlc.routeClearanceIndex",
7605 FT_UINT32, BASE_DEC, NULL, 0,
7606 NULL, HFILL }},
7607 { &hf_atn_cpdlc_positionTime,
7608 { "positionTime", "atn-cpdlc.positionTime_element",
7609 FT_NONE, BASE_NONE, NULL, 0,
7610 NULL, HFILL }},
7611 { &hf_atn_cpdlc_times,
7612 { "times", "atn-cpdlc.times",
7613 FT_UINT32, BASE_DEC, NULL, 0,
7614 "TimeTime", HFILL }},
7615 { &hf_atn_cpdlc_unitname,
7616 { "unitname", "atn-cpdlc.unitname_element",
7617 FT_NONE, BASE_NONE, NULL, 0,
7618 NULL, HFILL }},
7619 { &hf_atn_cpdlc_frequency,
7620 { "frequency", "atn-cpdlc.frequency",
7621 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0,
7622 NULL, HFILL }},
7623 { &hf_atn_cpdlc_type,
7624 { "type", "atn-cpdlc.type",
7625 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProcedureType_vals), 0,
7626 "ProcedureType", HFILL }},
7627 { &hf_atn_cpdlc_procedure,
7628 { "procedure", "atn-cpdlc.procedure",
7629 FT_STRING, BASE_NONE, NULL, 0,
7630 NULL, HFILL }},
7631 { &hf_atn_cpdlc_transition,
7632 { "transition", "atn-cpdlc.transition",
7633 FT_STRING, BASE_NONE, NULL, 0,
7634 "ProcedureTransition", HFILL }},
7635 { &hf_atn_cpdlc_personsOnBoard,
7636 { "personsOnBoard", "atn-cpdlc.personsOnBoard",
7637 FT_UINT32, BASE_DEC, NULL, 0,
7638 NULL, HFILL }},
7639 { &hf_atn_cpdlc_latLonReportingPoints,
7640 { "latLonReportingPoints", "atn-cpdlc.latLonReportingPoints",
7641 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatLonReportingPoints_vals), 0,
7642 NULL, HFILL }},
7643 { &hf_atn_cpdlc_degreeIncrement,
7644 { "degreeIncrement", "atn-cpdlc.degreeIncrement",
7645 FT_UINT32, BASE_DEC, NULL, 0,
7646 NULL, HFILL }},
7647 { &hf_atn_cpdlc_procedureDeparture,
7648 { "procedureDeparture", "atn-cpdlc.procedureDeparture_element",
7649 FT_NONE, BASE_NONE, NULL, 0,
7650 "ProcedureName", HFILL }},
7651 { &hf_atn_cpdlc_runwayArrival,
7652 { "runwayArrival", "atn-cpdlc.runwayArrival_element",
7653 FT_NONE, BASE_NONE, NULL, 0,
7654 "Runway", HFILL }},
7655 { &hf_atn_cpdlc_procedureApproach,
7656 { "procedureApproach", "atn-cpdlc.procedureApproach_element",
7657 FT_NONE, BASE_NONE, NULL, 0,
7658 "ProcedureName", HFILL }},
7659 { &hf_atn_cpdlc_procedureArrival,
7660 { "procedureArrival", "atn-cpdlc.procedureArrival_element",
7661 FT_NONE, BASE_NONE, NULL, 0,
7662 "ProcedureName", HFILL }},
7663 { &hf_atn_cpdlc_routeInformations,
7664 { "routeInformations", "atn-cpdlc.routeInformations",
7665 FT_UINT32, BASE_DEC, NULL, 0,
7666 "SEQUENCE_SIZE_1_128_OF_RouteInformation", HFILL }},
7667 { &hf_atn_cpdlc_routeInformations_item,
7668 { "RouteInformation", "atn-cpdlc.RouteInformation",
7669 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RouteInformation_vals), 0,
7670 NULL, HFILL }},
7671 { &hf_atn_cpdlc_routeInformationAdditional,
7672 { "routeInformationAdditional", "atn-cpdlc.routeInformationAdditional_element",
7673 FT_NONE, BASE_NONE, NULL, 0,
7674 NULL, HFILL }},
7675 { &hf_atn_cpdlc_aTSRouteDesignator,
7676 { "aTSRouteDesignator", "atn-cpdlc.aTSRouteDesignator",
7677 FT_STRING, BASE_NONE, NULL, 0,
7678 NULL, HFILL }},
7679 { &hf_atn_cpdlc_aTWAlongTrackWaypoints,
7680 { "aTWAlongTrackWaypoints", "atn-cpdlc.aTWAlongTrackWaypoints",
7681 FT_UINT32, BASE_DEC, NULL, 0,
7682 "SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint", HFILL }},
7683 { &hf_atn_cpdlc_aTWAlongTrackWaypoints_item,
7684 { "ATWAlongTrackWaypoint", "atn-cpdlc.ATWAlongTrackWaypoint_element",
7685 FT_NONE, BASE_NONE, NULL, 0,
7686 NULL, HFILL }},
7687 { &hf_atn_cpdlc_reportingpoints,
7688 { "reportingpoints", "atn-cpdlc.reportingpoints_element",
7689 FT_NONE, BASE_NONE, NULL, 0,
7690 NULL, HFILL }},
7691 { &hf_atn_cpdlc_interceptCourseFroms,
7692 { "interceptCourseFroms", "atn-cpdlc.interceptCourseFroms",
7693 FT_UINT32, BASE_DEC, NULL, 0,
7694 "SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom", HFILL }},
7695 { &hf_atn_cpdlc_interceptCourseFroms_item,
7696 { "InterceptCourseFrom", "atn-cpdlc.InterceptCourseFrom_element",
7697 FT_NONE, BASE_NONE, NULL, 0,
7698 NULL, HFILL }},
7699 { &hf_atn_cpdlc_holdAtWaypoints,
7700 { "holdAtWaypoints", "atn-cpdlc.holdAtWaypoints",
7701 FT_UINT32, BASE_DEC, NULL, 0,
7702 "SEQUENCE_SIZE_1_8_OF_Holdatwaypoint", HFILL }},
7703 { &hf_atn_cpdlc_holdAtWaypoints_item,
7704 { "Holdatwaypoint", "atn-cpdlc.Holdatwaypoint_element",
7705 FT_NONE, BASE_NONE, NULL, 0,
7706 NULL, HFILL }},
7707 { &hf_atn_cpdlc_waypointSpeedLevels,
7708 { "waypointSpeedLevels", "atn-cpdlc.waypointSpeedLevels",
7709 FT_UINT32, BASE_DEC, NULL, 0,
7710 "SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel", HFILL }},
7711 { &hf_atn_cpdlc_waypointSpeedLevels_item,
7712 { "WaypointSpeedLevel", "atn-cpdlc.WaypointSpeedLevel_element",
7713 FT_NONE, BASE_NONE, NULL, 0,
7714 NULL, HFILL }},
7715 { &hf_atn_cpdlc_rTARequiredTimeArrivals,
7716 { "rTARequiredTimeArrivals", "atn-cpdlc.rTARequiredTimeArrivals",
7717 FT_UINT32, BASE_DEC, NULL, 0,
7718 "SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival", HFILL }},
7719 { &hf_atn_cpdlc_rTARequiredTimeArrivals_item,
7720 { "RTARequiredTimeArrival", "atn-cpdlc.RTARequiredTimeArrival_element",
7721 FT_NONE, BASE_NONE, NULL, 0,
7722 NULL, HFILL }},
7723 { &hf_atn_cpdlc_rTATime,
7724 { "rTATime", "atn-cpdlc.rTATime_element",
7725 FT_NONE, BASE_NONE, NULL, 0,
7726 NULL, HFILL }},
7727 { &hf_atn_cpdlc_rTATolerance,
7728 { "rTATolerance", "atn-cpdlc.rTATolerance",
7729 FT_UINT32, BASE_DEC, NULL, 0,
7730 NULL, HFILL }},
7731 { &hf_atn_cpdlc_runway_direction,
7732 { "direction", "atn-cpdlc.direction",
7733 FT_UINT32, BASE_DEC, NULL, 0,
7734 "RunwayDirection", HFILL }},
7735 { &hf_atn_cpdlc_configuration,
7736 { "configuration", "atn-cpdlc.configuration",
7737 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RunwayConfiguration_vals), 0,
7738 "RunwayConfiguration", HFILL }},
7739 { &hf_atn_cpdlc_runway,
7740 { "runway", "atn-cpdlc.runway_element",
7741 FT_NONE, BASE_NONE, NULL, 0,
7742 NULL, HFILL }},
7743 { &hf_atn_cpdlc_rVR,
7744 { "rVR", "atn-cpdlc.rVR",
7745 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RVR_vals), 0,
7746 NULL, HFILL }},
7747 { &hf_atn_cpdlc_rVRFeet,
7748 { "rVRFeet", "atn-cpdlc.rVRFeet",
7749 FT_UINT32, BASE_DEC, NULL, 0,
7750 NULL, HFILL }},
7751 { &hf_atn_cpdlc_rVRMeters,
7752 { "rVRMeters", "atn-cpdlc.rVRMeters",
7753 FT_UINT32, BASE_DEC, NULL, 0,
7754 NULL, HFILL }},
7755 { &hf_atn_cpdlc_speedIndicated,
7756 { "speedIndicated", "atn-cpdlc.speedIndicated",
7757 FT_UINT32, BASE_DEC, NULL, 0,
7758 NULL, HFILL }},
7759 { &hf_atn_cpdlc_speedIndicatedMetric,
7760 { "speedIndicatedMetric", "atn-cpdlc.speedIndicatedMetric",
7761 FT_UINT32, BASE_DEC, NULL, 0,
7762 NULL, HFILL }},
7763 { &hf_atn_cpdlc_speedTrue,
7764 { "speedTrue", "atn-cpdlc.speedTrue",
7765 FT_UINT32, BASE_DEC, NULL, 0,
7766 NULL, HFILL }},
7767 { &hf_atn_cpdlc_speedTrueMetric,
7768 { "speedTrueMetric", "atn-cpdlc.speedTrueMetric",
7769 FT_UINT32, BASE_DEC, NULL, 0,
7770 NULL, HFILL }},
7771 { &hf_atn_cpdlc_speedGround,
7772 { "speedGround", "atn-cpdlc.speedGround",
7773 FT_INT32, BASE_DEC, NULL, 0,
7774 NULL, HFILL }},
7775 { &hf_atn_cpdlc_speedGroundMetric,
7776 { "speedGroundMetric", "atn-cpdlc.speedGroundMetric",
7777 FT_INT32, BASE_DEC, NULL, 0,
7778 NULL, HFILL }},
7779 { &hf_atn_cpdlc_speedMach,
7780 { "speedMach", "atn-cpdlc.speedMach",
7781 FT_UINT32, BASE_DEC, NULL, 0,
7782 NULL, HFILL }},
7783 { &hf_atn_cpdlc_SpeedSpeed_item,
7784 { "Speed", "atn-cpdlc.Speed",
7785 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
7786 NULL, HFILL }},
7787 { &hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item,
7788 { "SpeedType", "atn-cpdlc.SpeedType",
7789 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_SpeedType_vals), 0,
7790 NULL, HFILL }},
7791 { &hf_atn_cpdlc_speedTypes,
7792 { "speedTypes", "atn-cpdlc.speedTypes",
7793 FT_UINT32, BASE_DEC, NULL, 0,
7794 "SpeedTypeSpeedTypeSpeedType", HFILL }},
7795 { &hf_atn_cpdlc_hours,
7796 { "hours", "atn-cpdlc.hours",
7797 FT_UINT32, BASE_DEC, NULL, 0,
7798 "TimeHours", HFILL }},
7799 { &hf_atn_cpdlc_minutes,
7800 { "minutes", "atn-cpdlc.minutes",
7801 FT_UINT32, BASE_DEC, NULL, 0,
7802 "TimeMinutes", HFILL }},
7803 { &hf_atn_cpdlc_timeDepartureAllocated,
7804 { "timeDepartureAllocated", "atn-cpdlc.timeDepartureAllocated_element",
7805 FT_NONE, BASE_NONE, NULL, 0,
7806 "Time", HFILL }},
7807 { &hf_atn_cpdlc_timeDepartureControlled,
7808 { "timeDepartureControlled", "atn-cpdlc.timeDepartureControlled_element",
7809 FT_NONE, BASE_NONE, NULL, 0,
7810 "ControlledTime", HFILL }},
7811 { &hf_atn_cpdlc_timeDepartureClearanceExpected,
7812 { "timeDepartureClearanceExpected", "atn-cpdlc.timeDepartureClearanceExpected_element",
7813 FT_NONE, BASE_NONE, NULL, 0,
7814 "Time", HFILL }},
7815 { &hf_atn_cpdlc_departureMinimumInterval,
7816 { "departureMinimumInterval", "atn-cpdlc.departureMinimumInterval",
7817 FT_UINT32, BASE_DEC, NULL, 0,
7818 NULL, HFILL }},
7819 { &hf_atn_cpdlc_tofrom,
7820 { "tofrom", "atn-cpdlc.tofrom",
7821 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ToFrom_vals), 0,
7822 NULL, HFILL }},
7823 { &hf_atn_cpdlc_hoursminutes,
7824 { "hoursminutes", "atn-cpdlc.hoursminutes_element",
7825 FT_NONE, BASE_NONE, NULL, 0,
7826 "Time", HFILL }},
7827 { &hf_atn_cpdlc_seconds,
7828 { "seconds", "atn-cpdlc.seconds",
7829 FT_UINT32, BASE_DEC, NULL, 0,
7830 "TimeSeconds", HFILL }},
7831 { &hf_atn_cpdlc_unitName,
7832 { "unitName", "atn-cpdlc.unitName_element",
7833 FT_NONE, BASE_NONE, NULL, 0,
7834 NULL, HFILL }},
7835 { &hf_atn_cpdlc_timeposition,
7836 { "timeposition", "atn-cpdlc.timeposition_element",
7837 FT_NONE, BASE_NONE, NULL, 0,
7838 NULL, HFILL }},
7839 { &hf_atn_cpdlc_levelspeed,
7840 { "levelspeed", "atn-cpdlc.levelspeed_element",
7841 FT_NONE, BASE_NONE, NULL, 0,
7842 NULL, HFILL }},
7843 { &hf_atn_cpdlc_speedspeed,
7844 { "speedspeed", "atn-cpdlc.speedspeed",
7845 FT_UINT32, BASE_DEC, NULL, 0,
7846 NULL, HFILL }},
7847 { &hf_atn_cpdlc_TimeTime_item,
7848 { "Time", "atn-cpdlc.Time_element",
7849 FT_NONE, BASE_NONE, NULL, 0,
7850 NULL, HFILL }},
7851 { &hf_atn_cpdlc_toFrom,
7852 { "toFrom", "atn-cpdlc.toFrom",
7853 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ToFrom_vals), 0,
7854 NULL, HFILL }},
7855 { &hf_atn_cpdlc_facilityName,
7856 { "facilityName", "atn-cpdlc.facilityName",
7857 FT_STRING, BASE_NONE, NULL, 0,
7858 NULL, HFILL }},
7859 { &hf_atn_cpdlc_facilityFunction,
7860 { "facilityFunction", "atn-cpdlc.facilityFunction",
7861 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_FacilityFunction_vals), 0,
7862 NULL, HFILL }},
7863 { &hf_atn_cpdlc_vertical_direction,
7864 { "direction", "atn-cpdlc.direction",
7865 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalDirection_vals), 0,
7866 "VerticalDirection", HFILL }},
7867 { &hf_atn_cpdlc_rate,
7868 { "rate", "atn-cpdlc.rate",
7869 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
7870 "VerticalRate", HFILL }},
7871 { &hf_atn_cpdlc_verticalRateEnglish,
7872 { "verticalRateEnglish", "atn-cpdlc.verticalRateEnglish",
7873 FT_UINT32, BASE_DEC, NULL, 0,
7874 NULL, HFILL }},
7875 { &hf_atn_cpdlc_verticalRateMetric,
7876 { "verticalRateMetric", "atn-cpdlc.verticalRateMetric",
7877 FT_UINT32, BASE_DEC, NULL, 0,
7878 NULL, HFILL }},
7879 { &hf_atn_cpdlc_winds_direction,
7880 { "direction", "atn-cpdlc.direction",
7881 FT_UINT32, BASE_DEC, NULL, 0,
7882 "WindDirection", HFILL }},
7883 { &hf_atn_cpdlc_winds_speed,
7884 { "speed", "atn-cpdlc.speed",
7885 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_WindSpeed_vals), 0,
7886 "WindSpeed", HFILL }},
7887 { &hf_atn_cpdlc_windSpeedEnglish,
7888 { "windSpeedEnglish", "atn-cpdlc.windSpeedEnglish",
7889 FT_UINT32, BASE_DEC, NULL, 0,
7890 NULL, HFILL }},
7891 { &hf_atn_cpdlc_windSpeedMetric,
7892 { "windSpeedMetric", "atn-cpdlc.windSpeedMetric",
7893 FT_UINT32, BASE_DEC, NULL, 0,
7894 NULL, HFILL }},
7897 static int *ett[] = {
7898 &ett_atn_cpdlc_GroundPDUs,
7899 &ett_atn_cpdlc_UplinkMessage,
7900 &ett_atn_cpdlc_AircraftPDUs,
7901 &ett_atn_cpdlc_StartDownMessage,
7902 &ett_atn_cpdlc_DownlinkMessage,
7903 &ett_atn_cpdlc_ProtectedGroundPDUs,
7904 &ett_atn_cpdlc_ProtectedUplinkMessage,
7905 &ett_atn_cpdlc_ATCForwardMessage,
7906 &ett_atn_cpdlc_ForwardHeader,
7907 &ett_atn_cpdlc_ForwardMessage,
7908 &ett_atn_cpdlc_ProtectedAircraftPDUs,
7909 &ett_atn_cpdlc_ProtectedStartDownMessage,
7910 &ett_atn_cpdlc_ProtectedDownlinkMessage,
7911 &ett_atn_cpdlc_ATCUplinkMessage,
7912 &ett_atn_cpdlc_ATCUplinkMessageData,
7913 &ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId,
7914 &ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata,
7915 &ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance,
7916 &ett_atn_cpdlc_ATCDownlinkMessage,
7917 &ett_atn_cpdlc_ATCDownlinkMessageData,
7918 &ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId,
7919 &ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata,
7920 &ett_atn_cpdlc_ATCMessageHeader,
7921 &ett_atn_cpdlc_ATCUplinkMsgElementId,
7922 &ett_atn_cpdlc_ATCDownlinkMsgElementId,
7923 &ett_atn_cpdlc_Altimeter,
7924 &ett_atn_cpdlc_ATWAlongTrackWaypoint,
7925 &ett_atn_cpdlc_ATWLevel,
7926 &ett_atn_cpdlc_ATWLevelSequence,
7927 &ett_atn_cpdlc_ATWDistance,
7928 &ett_atn_cpdlc_Code,
7929 &ett_atn_cpdlc_ControlledTime,
7930 &ett_atn_cpdlc_Date,
7931 &ett_atn_cpdlc_DateTimeGroup,
7932 &ett_atn_cpdlc_Degrees,
7933 &ett_atn_cpdlc_DepartureClearance,
7934 &ett_atn_cpdlc_DirectionDegrees,
7935 &ett_atn_cpdlc_Distance,
7936 &ett_atn_cpdlc_DistanceSpecified,
7937 &ett_atn_cpdlc_DistanceSpecifiedDirection,
7938 &ett_atn_cpdlc_DistanceSpecifiedDirectionTime,
7939 &ett_atn_cpdlc_Facility,
7940 &ett_atn_cpdlc_FacilityDesignationAltimeter,
7941 &ett_atn_cpdlc_FacilityDesignationATISCode,
7942 &ett_atn_cpdlc_FixName,
7943 &ett_atn_cpdlc_FlightInformation,
7944 &ett_atn_cpdlc_Frequency,
7945 &ett_atn_cpdlc_FurtherInstructions,
7946 &ett_atn_cpdlc_Holdatwaypoint,
7947 &ett_atn_cpdlc_HoldClearance,
7948 &ett_atn_cpdlc_InterceptCourseFrom,
7949 &ett_atn_cpdlc_InterceptCourseFromSelection,
7950 &ett_atn_cpdlc_Latitude,
7951 &ett_atn_cpdlc_LatitudeDegreesMinutes,
7952 &ett_atn_cpdlc_LatitudeDegreesMinutesSeconds,
7953 &ett_atn_cpdlc_LatitudeLongitude,
7954 &ett_atn_cpdlc_LatitudeReportingPoints,
7955 &ett_atn_cpdlc_LatitudeType,
7956 &ett_atn_cpdlc_LatLonReportingPoints,
7957 &ett_atn_cpdlc_LegDistance,
7958 &ett_atn_cpdlc_LegType,
7959 &ett_atn_cpdlc_Level,
7960 &ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType,
7961 &ett_atn_cpdlc_LevelLevel,
7962 &ett_atn_cpdlc_LevelPosition,
7963 &ett_atn_cpdlc_LevelProcedureName,
7964 &ett_atn_cpdlc_LevelsOfFlight,
7965 &ett_atn_cpdlc_LevelSpeed,
7966 &ett_atn_cpdlc_LevelSpeedSpeed,
7967 &ett_atn_cpdlc_LevelTime,
7968 &ett_atn_cpdlc_LevelType,
7969 &ett_atn_cpdlc_Longitude,
7970 &ett_atn_cpdlc_LongitudeDegreesMinutes,
7971 &ett_atn_cpdlc_LongitudeDegreesMinutesSeconds,
7972 &ett_atn_cpdlc_LongitudeReportingPoints,
7973 &ett_atn_cpdlc_LongitudeType,
7974 &ett_atn_cpdlc_Navaid,
7975 &ett_atn_cpdlc_PlaceBearing,
7976 &ett_atn_cpdlc_PlaceBearingDistance,
7977 &ett_atn_cpdlc_PlaceBearingPlaceBearing,
7978 &ett_atn_cpdlc_Position,
7979 &ett_atn_cpdlc_PositionDegrees,
7980 &ett_atn_cpdlc_PositionDistanceSpecifiedDirection,
7981 &ett_atn_cpdlc_PositionLevel,
7982 &ett_atn_cpdlc_PositionLevelLevel,
7983 &ett_atn_cpdlc_PositionLevelSpeed,
7984 &ett_atn_cpdlc_PositionPosition,
7985 &ett_atn_cpdlc_PositionProcedureName,
7986 &ett_atn_cpdlc_PositionReport,
7987 &ett_atn_cpdlc_PositionRouteClearanceIndex,
7988 &ett_atn_cpdlc_PositionSpeed,
7989 &ett_atn_cpdlc_PositionSpeedSpeed,
7990 &ett_atn_cpdlc_PositionTime,
7991 &ett_atn_cpdlc_PositionTimeLevel,
7992 &ett_atn_cpdlc_PositionTimeTime,
7993 &ett_atn_cpdlc_PositionUnitNameFrequency,
7994 &ett_atn_cpdlc_ProcedureName,
7995 &ett_atn_cpdlc_PublishedIdentifier,
7996 &ett_atn_cpdlc_RemainingFuelPersonsOnBoard,
7997 &ett_atn_cpdlc_ReportingPoints,
7998 &ett_atn_cpdlc_RouteAndLevels,
7999 &ett_atn_cpdlc_RouteClearance,
8000 &ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation,
8001 &ett_atn_cpdlc_RouteInformation,
8002 &ett_atn_cpdlc_RouteInformationAdditional,
8003 &ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint,
8004 &ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom,
8005 &ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint,
8006 &ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel,
8007 &ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival,
8008 &ett_atn_cpdlc_RTARequiredTimeArrival,
8009 &ett_atn_cpdlc_RTATime,
8010 &ett_atn_cpdlc_Runway,
8011 &ett_atn_cpdlc_RunwayRVR,
8012 &ett_atn_cpdlc_RVR,
8013 &ett_atn_cpdlc_Speed,
8014 &ett_atn_cpdlc_SpeedSpeed,
8015 &ett_atn_cpdlc_SpeedTime,
8016 &ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType,
8017 &ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed,
8018 &ett_atn_cpdlc_Time,
8019 &ett_atn_cpdlc_TimeLevel,
8020 &ett_atn_cpdlc_TimeDeparture,
8021 &ett_atn_cpdlc_TimeDistanceSpecifiedDirection,
8022 &ett_atn_cpdlc_TimeDistanceToFromPosition,
8023 &ett_atn_cpdlc_Timehhmmss,
8024 &ett_atn_cpdlc_TimeUnitNameFrequency,
8025 &ett_atn_cpdlc_TimePosition,
8026 &ett_atn_cpdlc_TimePositionLevel,
8027 &ett_atn_cpdlc_TimePositionLevelSpeed,
8028 &ett_atn_cpdlc_TimeSpeed,
8029 &ett_atn_cpdlc_TimeSpeedSpeed,
8030 &ett_atn_cpdlc_TimeTime,
8031 &ett_atn_cpdlc_TimeToFromPosition,
8032 &ett_atn_cpdlc_ToFromPosition,
8033 &ett_atn_cpdlc_UnitName,
8034 &ett_atn_cpdlc_UnitNameFrequency,
8035 &ett_atn_cpdlc_VerticalChange,
8036 &ett_atn_cpdlc_VerticalRate,
8037 &ett_atn_cpdlc_WaypointSpeedLevel,
8038 &ett_atn_cpdlc_Winds,
8039 &ett_atn_cpdlc_WindSpeed,
8040 &ett_atn_cpdlc
8043 /* register CPDLC */
8044 proto_atn_cpdlc = proto_register_protocol(ATN_CPDLC_PROTO, "ATN-CPDLC", "atn-cpdlc");
8046 proto_register_field_array(
8047 proto_atn_cpdlc,
8048 hf_atn_cpdlc,
8049 array_length(hf_atn_cpdlc));
8051 proto_register_subtree_array(
8052 ett,
8053 array_length(ett));
8055 register_dissector(
8056 "atn-cpdlc",
8057 dissect_atn_cpdlc,
8058 proto_atn_cpdlc);
8061 void proto_reg_handoff_atn_cpdlc(void)
8063 /* add session dissector to atn dissector list dissector list*/
8064 heur_dissector_add(
8065 "atn-ulcs",
8066 dissect_atn_cpdlc_heur,
8067 "ATN-CPDLC over ATN-ULCS",
8068 "atn-cpdlc-ulcs",
8069 proto_atn_cpdlc, HEURISTIC_ENABLE);
8073 * Editor modelines - https://www.wireshark.org/tools/modelines.html
8075 * Local variables:
8076 * c-basic-offset: 4
8077 * tab-width: 8
8078 * indent-tabs-mode: nil
8079 * End:
8081 * vi: set shiftwidth=4 tabstop=8 expandtab:
8082 * :indentSize=4:tabSize=8:noTabs=true: