MSWSP: fix dissect_mswsp_smb()
[wireshark-wip.git] / epan / dissectors / packet-atn-cpdlc.c
blobc54f4cfa2080167a11996fbdce20252a7c0082fa
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 /* ../../tools/asn2wrs.py -u -L -p atn-cpdlc -c ./atn-cpdlc.cnf -s ./packet-atn-cpdlc-template -D . -O ../../epan/dissectors atn-cpdlc.asn */
6 /* Input file: packet-atn-cpdlc-template.c */
8 #line 1 "../../asn1/atn-cpdlc/packet-atn-cpdlc-template.c"
9 /* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
10 * vi: set shiftwidth=2 tabstop=2 noexpandtab:
11 * :indentSize=2:tabSize=2:noTabs=false:
14 /* packet-atn-cpdlc-template.c
15 * By Mathias Guettler <guettler@web.de>
16 * Copyright 2013
18 * $Id$
20 * Routines for ATN Cpdlcc protocol packet disassembly
22 * details see:
23 * http://en.wikipedia.org/wiki/CPDLC
24 * http://members.optusnet.com.au/~cjr/introduction.htm
26 * standards:
27 * http://legacy.icao.int/anb/panels/acp/repository.cfm
29 * note:
30 * We are dealing with ATN/CPDLC aka ICAO Doc 9705 Ed2 here
31 * (CPDLC may also be transmitted via ACARS/AOA aka "FANS-1/A ").
34 * Wireshark - Network traffic analyzer
35 * By Gerald Combs <gerald@wireshark.org>
36 * Copyright 1998 Gerald Combs
38 * This program is free software; you can redistribute it and/or
39 * modify it under the terms of the GNU General Public License
40 * as published by the Free Software Foundation; either version 2
41 * of the License, or (at your option) any later version.
43 * This program is distributed in the hope that it will be useful,
44 * but WITHOUT ANY WARRANTY; without even the implied warranty of
45 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
46 * GNU General Public License for more details.
48 * You should have received a copy of the GNU General Public License
49 * along with this program; if not, write to the Free Software
50 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
54 developper comments:
55 Which CPDLC messages are supported ?
56 Protected Mode CPDLC (AeQualifier 22) and Plain Old CPDLC (AeQualifier 2)
57 The dissector has been tested with ICAO doc9705 Edition2 compliant traffic.
60 #include "config.h"
62 #include <glib.h>
63 #include <epan/packet.h>
64 #include <epan/exceptions.h>
65 #include <epan/conversation.h>
66 #include <epan/dissectors/packet-ber.h>
67 #include <epan/dissectors/packet-per.h>
69 #include <stdio.h>
70 #include <string.h>
72 #include "packet-atn-ulcs.h"
74 #define ATN_CPDLC_PROTO "ICAO Doc9705 CPDLC"
76 static const char *object_identifier_id;
78 /* forward declarations */
79 static void dissect_GroundPDUs_PDU(
80 tvbuff_t *tvb _U_,
81 packet_info *pinfo _U_,
82 proto_tree *tree _U_);
83 static void dissect_AircraftPDUs_PDU(
84 tvbuff_t *tvb _U_,
85 packet_info *pinfo _U_,
86 proto_tree *tree _U_);
87 static void dissect_ProtectedGroundPDUs_PDU(
88 tvbuff_t *tvb _U_,
89 packet_info *pinfo _U_,
90 proto_tree *tree _U_);
91 static void dissect_ProtectedAircraftPDUs_PDU(
92 tvbuff_t *tvb _U_,
93 packet_info *pinfo _U_,
94 proto_tree *tree _U_);
97 /*--- Included file: packet-atn-cpdlc-hf.c ---*/
98 #line 1 "../../asn1/atn-cpdlc/packet-atn-cpdlc-hf.c"
99 static int hf_atn_cpdlc_GroundPDUs_PDU = -1; /* GroundPDUs */
100 static int hf_atn_cpdlc_AircraftPDUs_PDU = -1; /* AircraftPDUs */
101 static int hf_atn_cpdlc_ProtectedGroundPDUs_PDU = -1; /* ProtectedGroundPDUs */
102 static int hf_atn_cpdlc_ProtectedAircraftPDUs_PDU = -1; /* ProtectedAircraftPDUs */
103 static int hf_atn_cpdlc_abortUser = -1; /* CPDLCUserAbortReason */
104 static int hf_atn_cpdlc_abortProvider = -1; /* CPDLCProviderAbortReason */
105 static int hf_atn_cpdlc_startup = -1; /* UplinkMessage */
106 static int hf_atn_cpdlc_groundpdus_send = -1; /* ATCUplinkMessage */
107 static int hf_atn_cpdlc_forward = -1; /* ATCForwardMessage */
108 static int hf_atn_cpdlc_forwardresponse = -1; /* ATCForwardResponse */
109 static int hf_atn_cpdlc_noMessage = -1; /* NULL */
110 static int hf_atn_cpdlc_aTCUplinkMessage = -1; /* ATCUplinkMessage */
111 static int hf_atn_cpdlc_startdown = -1; /* StartDownMessage */
112 static int hf_atn_cpdlc_aircraftpdus_send = -1; /* ATCDownlinkMessage */
113 static int hf_atn_cpdlc_mode = -1; /* Mode */
114 static int hf_atn_cpdlc_startDownlinkMessage = -1; /* DownlinkMessage */
115 static int hf_atn_cpdlc_aTCDownlinkMessage = -1; /* ATCDownlinkMessage */
116 static int hf_atn_cpdlc_pmcpdlcuserabortreason = -1; /* PMCPDLCUserAbortReason */
117 static int hf_atn_cpdlc_pmcpdlcproviderabortreason = -1; /* PMCPDLCProviderAbortReason */
118 static int hf_atn_cpdlc_protecteduplinkmessage = -1; /* ProtectedUplinkMessage */
119 static int hf_atn_cpdlc_algorithmIdentifier = -1; /* AlgorithmIdentifier */
120 static int hf_atn_cpdlc_protectedMessage = -1; /* CPDLCMessage */
121 static int hf_atn_cpdlc_integrityCheck = -1; /* BIT_STRING */
122 static int hf_atn_cpdlc_forwardHeader = -1; /* ForwardHeader */
123 static int hf_atn_cpdlc_forwardMessage = -1; /* ForwardMessage */
124 static int hf_atn_cpdlc_dateTime = -1; /* DateTimeGroup */
125 static int hf_atn_cpdlc_aircraftID = -1; /* AircraftFlightIdentification */
126 static int hf_atn_cpdlc_aircraftAddress = -1; /* AircraftAddress */
127 static int hf_atn_cpdlc_upElementIDs = -1; /* BIT_STRING */
128 static int hf_atn_cpdlc_downElementIDs = -1; /* BIT_STRING */
129 static int hf_atn_cpdlc_protectedstartDownmessage = -1; /* ProtectedStartDownMessage */
130 static int hf_atn_cpdlc_send = -1; /* ProtectedDownlinkMessage */
131 static int hf_atn_cpdlc_protectedmode = -1; /* ProtectedMode */
132 static int hf_atn_cpdlc_protecteddownlinkmessage = -1; /* ProtectedDownlinkMessage */
133 static int hf_atn_cpdlc_header = -1; /* ATCMessageHeader */
134 static int hf_atn_cpdlc_atcuplinkmessage_messagedata = -1; /* ATCUplinkMessageData */
135 static int hf_atn_cpdlc_atcuplinkmessagedata_elementids = -1; /* SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId */
136 static int hf_atn_cpdlc_atcuplinkmessagedata_elementids_item = -1; /* ATCUplinkMsgElementId */
137 static int hf_atn_cpdlc_atcuplinkmessagedata_constraineddata = -1; /* T_atcuplinkmessagedata_constraineddata */
138 static int hf_atn_cpdlc_routeClearanceData = -1; /* SEQUENCE_SIZE_1_2_OF_RouteClearance */
139 static int hf_atn_cpdlc_routeClearanceData_item = -1; /* RouteClearance */
140 static int hf_atn_cpdlc_atcdownlinkmessage_messagedata = -1; /* ATCDownlinkMessageData */
141 static int hf_atn_cpdlc_atcdownlinkmessagedata_elementids = -1; /* SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId */
142 static int hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item = -1; /* ATCDownlinkMsgElementId */
143 static int hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata = -1; /* T_atcdownlinkmessagedata_constraineddata */
144 static int hf_atn_cpdlc_messageIdNumber = -1; /* MsgIdentificationNumber */
145 static int hf_atn_cpdlc_messageRefNumber = -1; /* MsgReferenceNumber */
146 static int hf_atn_cpdlc_logicalAck = -1; /* LogicalAck */
147 static int hf_atn_cpdlc_uM0NULL = -1; /* NULL */
148 static int hf_atn_cpdlc_uM1NULL = -1; /* NULL */
149 static int hf_atn_cpdlc_uM2NULL = -1; /* NULL */
150 static int hf_atn_cpdlc_uM3NULL = -1; /* NULL */
151 static int hf_atn_cpdlc_uM4NULL = -1; /* NULL */
152 static int hf_atn_cpdlc_uM5NULL = -1; /* NULL */
153 static int hf_atn_cpdlc_uM6Level = -1; /* Level */
154 static int hf_atn_cpdlc_uM7Time = -1; /* Time */
155 static int hf_atn_cpdlc_uM8Position = -1; /* Position */
156 static int hf_atn_cpdlc_uM9Time = -1; /* Time */
157 static int hf_atn_cpdlc_uM10Position = -1; /* Position */
158 static int hf_atn_cpdlc_uM11Time = -1; /* Time */
159 static int hf_atn_cpdlc_uM12Position = -1; /* Position */
160 static int hf_atn_cpdlc_uM13TimeLevel = -1; /* TimeLevel */
161 static int hf_atn_cpdlc_uM14PositionLevel = -1; /* PositionLevel */
162 static int hf_atn_cpdlc_uM15TimeLevel = -1; /* TimeLevel */
163 static int hf_atn_cpdlc_uM16PositionLevel = -1; /* PositionLevel */
164 static int hf_atn_cpdlc_uM17TimeLevel = -1; /* TimeLevel */
165 static int hf_atn_cpdlc_uM18PositionLevel = -1; /* PositionLevel */
166 static int hf_atn_cpdlc_uM19Level = -1; /* Level */
167 static int hf_atn_cpdlc_uM20Level = -1; /* Level */
168 static int hf_atn_cpdlc_uM21TimeLevel = -1; /* TimeLevel */
169 static int hf_atn_cpdlc_uM22PositionLevel = -1; /* PositionLevel */
170 static int hf_atn_cpdlc_uM23Level = -1; /* Level */
171 static int hf_atn_cpdlc_uM24TimeLevel = -1; /* TimeLevel */
172 static int hf_atn_cpdlc_uM25PositionLevel = -1; /* PositionLevel */
173 static int hf_atn_cpdlc_uM26LevelTime = -1; /* LevelTime */
174 static int hf_atn_cpdlc_uM27LevelPosition = -1; /* LevelPosition */
175 static int hf_atn_cpdlc_uM28LevelTime = -1; /* LevelTime */
176 static int hf_atn_cpdlc_uM29LevelPosition = -1; /* LevelPosition */
177 static int hf_atn_cpdlc_uM30LevelLevel = -1; /* LevelLevel */
178 static int hf_atn_cpdlc_uM31LevelLevel = -1; /* LevelLevel */
179 static int hf_atn_cpdlc_uM32LevelLevel = -1; /* LevelLevel */
180 static int hf_atn_cpdlc_uM33NULL = -1; /* NULL */
181 static int hf_atn_cpdlc_uM34Level = -1; /* Level */
182 static int hf_atn_cpdlc_uM35Level = -1; /* Level */
183 static int hf_atn_cpdlc_uM36Level = -1; /* Level */
184 static int hf_atn_cpdlc_uM37Level = -1; /* Level */
185 static int hf_atn_cpdlc_uM38Level = -1; /* Level */
186 static int hf_atn_cpdlc_uM39Level = -1; /* Level */
187 static int hf_atn_cpdlc_uM40NULL = -1; /* NULL */
188 static int hf_atn_cpdlc_uM41NULL = -1; /* NULL */
189 static int hf_atn_cpdlc_uM42PositionLevel = -1; /* PositionLevel */
190 static int hf_atn_cpdlc_uM43PositionLevel = -1; /* PositionLevel */
191 static int hf_atn_cpdlc_uM44PositionLevel = -1; /* PositionLevel */
192 static int hf_atn_cpdlc_uM45PositionLevel = -1; /* PositionLevel */
193 static int hf_atn_cpdlc_uM46PositionLevel = -1; /* PositionLevel */
194 static int hf_atn_cpdlc_uM47PositionLevel = -1; /* PositionLevel */
195 static int hf_atn_cpdlc_uM48PositionLevel = -1; /* PositionLevel */
196 static int hf_atn_cpdlc_uM49PositionLevel = -1; /* PositionLevel */
197 static int hf_atn_cpdlc_uM50PositionLevelLevel = -1; /* PositionLevelLevel */
198 static int hf_atn_cpdlc_uM51PositionTime = -1; /* PositionTime */
199 static int hf_atn_cpdlc_uM52PositionTime = -1; /* PositionTime */
200 static int hf_atn_cpdlc_uM53PositionTime = -1; /* PositionTime */
201 static int hf_atn_cpdlc_uM54PositionTimeTime = -1; /* PositionTimeTime */
202 static int hf_atn_cpdlc_uM55PositionSpeed = -1; /* PositionSpeed */
203 static int hf_atn_cpdlc_uM56PositionSpeed = -1; /* PositionSpeed */
204 static int hf_atn_cpdlc_uM57PositionSpeed = -1; /* PositionSpeed */
205 static int hf_atn_cpdlc_uM58PositionTimeLevel = -1; /* PositionTimeLevel */
206 static int hf_atn_cpdlc_uM59PositionTimeLevel = -1; /* PositionTimeLevel */
207 static int hf_atn_cpdlc_uM60PositionTimeLevel = -1; /* PositionTimeLevel */
208 static int hf_atn_cpdlc_uM61PositionLevelSpeed = -1; /* PositionLevelSpeed */
209 static int hf_atn_cpdlc_uM62TimePositionLevel = -1; /* TimePositionLevel */
210 static int hf_atn_cpdlc_uM63TimePositionLevelSpeed = -1; /* TimePositionLevelSpeed */
211 static int hf_atn_cpdlc_uM64DistanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
212 static int hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection = -1; /* PositionDistanceSpecifiedDirection */
213 static int hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection = -1; /* TimeDistanceSpecifiedDirection */
214 static int hf_atn_cpdlc_uM67NULL = -1; /* NULL */
215 static int hf_atn_cpdlc_uM68Position = -1; /* Position */
216 static int hf_atn_cpdlc_uM69Time = -1; /* Time */
217 static int hf_atn_cpdlc_uM70Position = -1; /* Position */
218 static int hf_atn_cpdlc_uM71Time = -1; /* Time */
219 static int hf_atn_cpdlc_uM72NULL = -1; /* NULL */
220 static int hf_atn_cpdlc_uM73DepartureClearance = -1; /* DepartureClearance */
221 static int hf_atn_cpdlc_uM74Position = -1; /* Position */
222 static int hf_atn_cpdlc_uM75Position = -1; /* Position */
223 static int hf_atn_cpdlc_uM76TimePosition = -1; /* TimePosition */
224 static int hf_atn_cpdlc_uM77PositionPosition = -1; /* PositionPosition */
225 static int hf_atn_cpdlc_uM78LevelPosition = -1; /* LevelPosition */
226 static int hf_atn_cpdlc_uM79PositionRouteClearance = -1; /* PositionRouteClearanceIndex */
227 static int hf_atn_cpdlc_uM80RouteClearance = -1; /* RouteClearanceIndex */
228 static int hf_atn_cpdlc_uM81ProcedureName = -1; /* ProcedureName */
229 static int hf_atn_cpdlc_uM82DistanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
230 static int hf_atn_cpdlc_uM83PositionRouteClearance = -1; /* PositionRouteClearanceIndex */
231 static int hf_atn_cpdlc_uM84PositionProcedureName = -1; /* PositionProcedureName */
232 static int hf_atn_cpdlc_uM85RouteClearance = -1; /* RouteClearanceIndex */
233 static int hf_atn_cpdlc_uM86PositionRouteClearance = -1; /* PositionRouteClearanceIndex */
234 static int hf_atn_cpdlc_uM87Position = -1; /* Position */
235 static int hf_atn_cpdlc_uM88PositionPosition = -1; /* PositionPosition */
236 static int hf_atn_cpdlc_uM89TimePosition = -1; /* TimePosition */
237 static int hf_atn_cpdlc_uM90LevelPosition = -1; /* LevelPosition */
238 static int hf_atn_cpdlc_uM91HoldClearance = -1; /* HoldClearance */
239 static int hf_atn_cpdlc_uM92PositionLevel = -1; /* PositionLevel */
240 static int hf_atn_cpdlc_uM93Time = -1; /* Time */
241 static int hf_atn_cpdlc_uM94DirectionDegrees = -1; /* DirectionDegrees */
242 static int hf_atn_cpdlc_uM95DirectionDegrees = -1; /* DirectionDegrees */
243 static int hf_atn_cpdlc_uM96NULL = -1; /* NULL */
244 static int hf_atn_cpdlc_uM97PositionDegrees = -1; /* PositionDegrees */
245 static int hf_atn_cpdlc_uM98DirectionDegrees = -1; /* DirectionDegrees */
246 static int hf_atn_cpdlc_uM99ProcedureName = -1; /* ProcedureName */
247 static int hf_atn_cpdlc_uM100TimeSpeed = -1; /* TimeSpeed */
248 static int hf_atn_cpdlc_uM101PositionSpeed = -1; /* PositionSpeed */
249 static int hf_atn_cpdlc_uM102LevelSpeed = -1; /* LevelSpeed */
250 static int hf_atn_cpdlc_uM103TimeSpeedSpeed = -1; /* TimeSpeedSpeed */
251 static int hf_atn_cpdlc_uM104PositionSpeedSpeed = -1; /* PositionSpeedSpeed */
252 static int hf_atn_cpdlc_uM105LevelSpeedSpeed = -1; /* LevelSpeedSpeed */
253 static int hf_atn_cpdlc_uM106Speed = -1; /* Speed */
254 static int hf_atn_cpdlc_uM107NULL = -1; /* NULL */
255 static int hf_atn_cpdlc_uM108Speed = -1; /* Speed */
256 static int hf_atn_cpdlc_uM109Speed = -1; /* Speed */
257 static int hf_atn_cpdlc_uM110SpeedSpeed = -1; /* SpeedSpeed */
258 static int hf_atn_cpdlc_uM111Speed = -1; /* Speed */
259 static int hf_atn_cpdlc_uM112Speed = -1; /* Speed */
260 static int hf_atn_cpdlc_uM113Speed = -1; /* Speed */
261 static int hf_atn_cpdlc_uM114Speed = -1; /* Speed */
262 static int hf_atn_cpdlc_uM115Speed = -1; /* Speed */
263 static int hf_atn_cpdlc_uM116NULL = -1; /* NULL */
264 static int hf_atn_cpdlc_uM117UnitNameFrequency = -1; /* UnitNameFrequency */
265 static int hf_atn_cpdlc_uM118PositionUnitNameFrequency = -1; /* PositionUnitNameFrequency */
266 static int hf_atn_cpdlc_uM119TimeUnitNameFrequency = -1; /* TimeUnitNameFrequency */
267 static int hf_atn_cpdlc_uM120UnitNameFrequency = -1; /* UnitNameFrequency */
268 static int hf_atn_cpdlc_uM121PositionUnitNameFrequency = -1; /* PositionUnitNameFrequency */
269 static int hf_atn_cpdlc_uM122TimeUnitNameFrequency = -1; /* TimeUnitNameFrequency */
270 static int hf_atn_cpdlc_uM123Code = -1; /* Code */
271 static int hf_atn_cpdlc_uM124NULL = -1; /* NULL */
272 static int hf_atn_cpdlc_uM125NULL = -1; /* NULL */
273 static int hf_atn_cpdlc_uM126NULL = -1; /* NULL */
274 static int hf_atn_cpdlc_uM127NULL = -1; /* NULL */
275 static int hf_atn_cpdlc_uM128Level = -1; /* Level */
276 static int hf_atn_cpdlc_uM129Level = -1; /* Level */
277 static int hf_atn_cpdlc_uM130Position = -1; /* Position */
278 static int hf_atn_cpdlc_uM131NULL = -1; /* NULL */
279 static int hf_atn_cpdlc_uM132NULL = -1; /* NULL */
280 static int hf_atn_cpdlc_uM133NULL = -1; /* NULL */
281 static int hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType = -1; /* SpeedTypeSpeedTypeSpeedType */
282 static int hf_atn_cpdlc_uM135NULL = -1; /* NULL */
283 static int hf_atn_cpdlc_uM136NULL = -1; /* NULL */
284 static int hf_atn_cpdlc_uM137NULL = -1; /* NULL */
285 static int hf_atn_cpdlc_uM138NULL = -1; /* NULL */
286 static int hf_atn_cpdlc_uM139NULL = -1; /* NULL */
287 static int hf_atn_cpdlc_uM140NULL = -1; /* NULL */
288 static int hf_atn_cpdlc_uM141NULL = -1; /* NULL */
289 static int hf_atn_cpdlc_uM142NULL = -1; /* NULL */
290 static int hf_atn_cpdlc_uM143NULL = -1; /* NULL */
291 static int hf_atn_cpdlc_uM144NULL = -1; /* NULL */
292 static int hf_atn_cpdlc_uM145NULL = -1; /* NULL */
293 static int hf_atn_cpdlc_uM146NULL = -1; /* NULL */
294 static int hf_atn_cpdlc_uM147NULL = -1; /* NULL */
295 static int hf_atn_cpdlc_uM148Level = -1; /* Level */
296 static int hf_atn_cpdlc_uM149LevelPosition = -1; /* LevelPosition */
297 static int hf_atn_cpdlc_uM150LevelTime = -1; /* LevelTime */
298 static int hf_atn_cpdlc_uM151Speed = -1; /* Speed */
299 static int hf_atn_cpdlc_uM152DistanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
300 static int hf_atn_cpdlc_uM153Altimeter = -1; /* Altimeter */
301 static int hf_atn_cpdlc_uM154NULL = -1; /* NULL */
302 static int hf_atn_cpdlc_uM155Position = -1; /* Position */
303 static int hf_atn_cpdlc_uM156NULL = -1; /* NULL */
304 static int hf_atn_cpdlc_uM157Frequency = -1; /* Frequency */
305 static int hf_atn_cpdlc_uM158AtisCode = -1; /* ATISCode */
306 static int hf_atn_cpdlc_uM159ErrorInformation = -1; /* ErrorInformation */
307 static int hf_atn_cpdlc_uM160Facility = -1; /* Facility */
308 static int hf_atn_cpdlc_uM161NULL = -1; /* NULL */
309 static int hf_atn_cpdlc_uM162NULL = -1; /* NULL */
310 static int hf_atn_cpdlc_uM163FacilityDesignation = -1; /* FacilityDesignation */
311 static int hf_atn_cpdlc_uM164NULL = -1; /* NULL */
312 static int hf_atn_cpdlc_uM165NULL = -1; /* NULL */
313 static int hf_atn_cpdlc_uM166TrafficType = -1; /* TrafficType */
314 static int hf_atn_cpdlc_uM167NULL = -1; /* NULL */
315 static int hf_atn_cpdlc_uM168NULL = -1; /* NULL */
316 static int hf_atn_cpdlc_uM169FreeText = -1; /* FreeText */
317 static int hf_atn_cpdlc_uM170FreeText = -1; /* FreeText */
318 static int hf_atn_cpdlc_uM171VerticalRate = -1; /* VerticalRate */
319 static int hf_atn_cpdlc_uM172VerticalRate = -1; /* VerticalRate */
320 static int hf_atn_cpdlc_uM173VerticalRate = -1; /* VerticalRate */
321 static int hf_atn_cpdlc_uM174VerticalRate = -1; /* VerticalRate */
322 static int hf_atn_cpdlc_uM175Level = -1; /* Level */
323 static int hf_atn_cpdlc_uM176NULL = -1; /* NULL */
324 static int hf_atn_cpdlc_uM177NULL = -1; /* NULL */
325 static int hf_atn_cpdlc_uM178NULL = -1; /* NULL */
326 static int hf_atn_cpdlc_uM179NULL = -1; /* NULL */
327 static int hf_atn_cpdlc_uM180LevelLevel = -1; /* LevelLevel */
328 static int hf_atn_cpdlc_uM181ToFromPosition = -1; /* ToFromPosition */
329 static int hf_atn_cpdlc_uM182NULL = -1; /* NULL */
330 static int hf_atn_cpdlc_uM183FreeText = -1; /* FreeText */
331 static int hf_atn_cpdlc_uM184TimeToFromPosition = -1; /* TimeToFromPosition */
332 static int hf_atn_cpdlc_uM185PositionLevel = -1; /* PositionLevel */
333 static int hf_atn_cpdlc_uM186PositionLevel = -1; /* PositionLevel */
334 static int hf_atn_cpdlc_uM187FreeText = -1; /* FreeText */
335 static int hf_atn_cpdlc_uM188PositionSpeed = -1; /* PositionSpeed */
336 static int hf_atn_cpdlc_uM189Speed = -1; /* Speed */
337 static int hf_atn_cpdlc_uM190Degrees = -1; /* Degrees */
338 static int hf_atn_cpdlc_uM191NULL = -1; /* NULL */
339 static int hf_atn_cpdlc_uM192LevelTime = -1; /* LevelTime */
340 static int hf_atn_cpdlc_uM193NULL = -1; /* NULL */
341 static int hf_atn_cpdlc_uM194FreeText = -1; /* FreeText */
342 static int hf_atn_cpdlc_uM195FreeText = -1; /* FreeText */
343 static int hf_atn_cpdlc_uM196FreeText = -1; /* FreeText */
344 static int hf_atn_cpdlc_uM197FreeText = -1; /* FreeText */
345 static int hf_atn_cpdlc_uM198FreeText = -1; /* FreeText */
346 static int hf_atn_cpdlc_uM199FreeText = -1; /* FreeText */
347 static int hf_atn_cpdlc_uM200NULL = -1; /* NULL */
348 static int hf_atn_cpdlc_uM201NULL = -1; /* NULL */
349 static int hf_atn_cpdlc_uM202NULL = -1; /* NULL */
350 static int hf_atn_cpdlc_uM203FreeText = -1; /* FreeText */
351 static int hf_atn_cpdlc_uM204FreeText = -1; /* FreeText */
352 static int hf_atn_cpdlc_uM205FreeText = -1; /* FreeText */
353 static int hf_atn_cpdlc_uM206FreeText = -1; /* FreeText */
354 static int hf_atn_cpdlc_uM207FreeText = -1; /* FreeText */
355 static int hf_atn_cpdlc_uM208FreeText = -1; /* FreeText */
356 static int hf_atn_cpdlc_uM209LevelPosition = -1; /* LevelPosition */
357 static int hf_atn_cpdlc_uM210Position = -1; /* Position */
358 static int hf_atn_cpdlc_uM211NULL = -1; /* NULL */
359 static int hf_atn_cpdlc_uM212FacilityDesignationATISCode = -1; /* FacilityDesignationATISCode */
360 static int hf_atn_cpdlc_uM213FacilityDesignationAltimeter = -1; /* FacilityDesignationAltimeter */
361 static int hf_atn_cpdlc_uM214RunwayRVR = -1; /* RunwayRVR */
362 static int hf_atn_cpdlc_uM215DirectionDegrees = -1; /* DirectionDegrees */
363 static int hf_atn_cpdlc_uM216NULL = -1; /* NULL */
364 static int hf_atn_cpdlc_uM217NULL = -1; /* NULL */
365 static int hf_atn_cpdlc_uM218NULL = -1; /* NULL */
366 static int hf_atn_cpdlc_uM219Level = -1; /* Level */
367 static int hf_atn_cpdlc_uM220Level = -1; /* Level */
368 static int hf_atn_cpdlc_uM221Degrees = -1; /* Degrees */
369 static int hf_atn_cpdlc_uM222NULL = -1; /* NULL */
370 static int hf_atn_cpdlc_uM223NULL = -1; /* NULL */
371 static int hf_atn_cpdlc_uM224NULL = -1; /* NULL */
372 static int hf_atn_cpdlc_uM225NULL = -1; /* NULL */
373 static int hf_atn_cpdlc_uM226Time = -1; /* Time */
374 static int hf_atn_cpdlc_uM227NULL = -1; /* NULL */
375 static int hf_atn_cpdlc_uM228Position = -1; /* Position */
376 static int hf_atn_cpdlc_uM229NULL = -1; /* NULL */
377 static int hf_atn_cpdlc_uM230NULL = -1; /* NULL */
378 static int hf_atn_cpdlc_uM231NULL = -1; /* NULL */
379 static int hf_atn_cpdlc_uM232NULL = -1; /* NULL */
380 static int hf_atn_cpdlc_uM233NULL = -1; /* NULL */
381 static int hf_atn_cpdlc_uM234NULL = -1; /* NULL */
382 static int hf_atn_cpdlc_uM235NULL = -1; /* NULL */
383 static int hf_atn_cpdlc_uM236NULL = -1; /* NULL */
384 static int hf_atn_cpdlc_uM237NULL = -1; /* NULL */
385 static int hf_atn_cpdlc_dM0NULL = -1; /* NULL */
386 static int hf_atn_cpdlc_dM1NULL = -1; /* NULL */
387 static int hf_atn_cpdlc_dM2NULL = -1; /* NULL */
388 static int hf_atn_cpdlc_dM3NULL = -1; /* NULL */
389 static int hf_atn_cpdlc_dM4NULL = -1; /* NULL */
390 static int hf_atn_cpdlc_dM5NULL = -1; /* NULL */
391 static int hf_atn_cpdlc_dM6Level = -1; /* Level */
392 static int hf_atn_cpdlc_dM7LevelLevel = -1; /* LevelLevel */
393 static int hf_atn_cpdlc_dM8Level = -1; /* Level */
394 static int hf_atn_cpdlc_dM9Level = -1; /* Level */
395 static int hf_atn_cpdlc_dM10Level = -1; /* Level */
396 static int hf_atn_cpdlc_dM11PositionLevel = -1; /* PositionLevel */
397 static int hf_atn_cpdlc_dM12PositionLevel = -1; /* PositionLevel */
398 static int hf_atn_cpdlc_dM13TimeLevel = -1; /* TimeLevel */
399 static int hf_atn_cpdlc_dM14TimeLevel = -1; /* TimeLevel */
400 static int hf_atn_cpdlc_dM15DistanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
401 static int hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection = -1; /* PositionDistanceSpecifiedDirection */
402 static int hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection = -1; /* TimeDistanceSpecifiedDirection */
403 static int hf_atn_cpdlc_dM18Speed = -1; /* Speed */
404 static int hf_atn_cpdlc_dM19SpeedSpeed = -1; /* SpeedSpeed */
405 static int hf_atn_cpdlc_dM20NULL = -1; /* NULL */
406 static int hf_atn_cpdlc_dM21Frequency = -1; /* Frequency */
407 static int hf_atn_cpdlc_dM22Position = -1; /* Position */
408 static int hf_atn_cpdlc_dM23ProcedureName = -1; /* ProcedureName */
409 static int hf_atn_cpdlc_dM24RouteClearance = -1; /* RouteClearanceIndex */
410 static int hf_atn_cpdlc_dM25ClearanceType = -1; /* ClearanceType */
411 static int hf_atn_cpdlc_dM26PositionRouteClearance = -1; /* PositionRouteClearanceIndex */
412 static int hf_atn_cpdlc_dM27DistanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
413 static int hf_atn_cpdlc_dM28Level = -1; /* Level */
414 static int hf_atn_cpdlc_dM29Level = -1; /* Level */
415 static int hf_atn_cpdlc_dM30Level = -1; /* Level */
416 static int hf_atn_cpdlc_dM31Position = -1; /* Position */
417 static int hf_atn_cpdlc_dM32Level = -1; /* Level */
418 static int hf_atn_cpdlc_dM33Position = -1; /* Position */
419 static int hf_atn_cpdlc_dM34Speed = -1; /* Speed */
420 static int hf_atn_cpdlc_dM35Degrees = -1; /* Degrees */
421 static int hf_atn_cpdlc_dM36Degrees = -1; /* Degrees */
422 static int hf_atn_cpdlc_dM37Level = -1; /* Level */
423 static int hf_atn_cpdlc_dM38Level = -1; /* Level */
424 static int hf_atn_cpdlc_dM39Speed = -1; /* Speed */
425 static int hf_atn_cpdlc_dM40RouteClearance = -1; /* RouteClearanceIndex */
426 static int hf_atn_cpdlc_dM41NULL = -1; /* NULL */
427 static int hf_atn_cpdlc_dM42Position = -1; /* Position */
428 static int hf_atn_cpdlc_dM43Time = -1; /* Time */
429 static int hf_atn_cpdlc_dM44Position = -1; /* Position */
430 static int hf_atn_cpdlc_dM45Position = -1; /* Position */
431 static int hf_atn_cpdlc_dM46Time = -1; /* Time */
432 static int hf_atn_cpdlc_dM47Code = -1; /* Code */
433 static int hf_atn_cpdlc_dM48PositionReport = -1; /* PositionReport */
434 static int hf_atn_cpdlc_dM49Speed = -1; /* Speed */
435 static int hf_atn_cpdlc_dM50SpeedSpeed = -1; /* SpeedSpeed */
436 static int hf_atn_cpdlc_dM51NULL = -1; /* NULL */
437 static int hf_atn_cpdlc_dM52NULL = -1; /* NULL */
438 static int hf_atn_cpdlc_dM53NULL = -1; /* NULL */
439 static int hf_atn_cpdlc_dM54Level = -1; /* Level */
440 static int hf_atn_cpdlc_dM55NULL = -1; /* NULL */
441 static int hf_atn_cpdlc_dM56NULL = -1; /* NULL */
442 static int hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard = -1; /* RemainingFuelPersonsOnBoard */
443 static int hf_atn_cpdlc_dM58NULL = -1; /* NULL */
444 static int hf_atn_cpdlc_dM59PositionRouteClearance = -1; /* PositionRouteClearanceIndex */
445 static int hf_atn_cpdlc_dM60DistanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
446 static int hf_atn_cpdlc_dM61Level = -1; /* Level */
447 static int hf_atn_cpdlc_dM62ErrorInformation = -1; /* ErrorInformation */
448 static int hf_atn_cpdlc_dM63NULL = -1; /* NULL */
449 static int hf_atn_cpdlc_dM64FacilityDesignation = -1; /* FacilityDesignation */
450 static int hf_atn_cpdlc_dM65NULL = -1; /* NULL */
451 static int hf_atn_cpdlc_dM66NULL = -1; /* NULL */
452 static int hf_atn_cpdlc_dM67FreeText = -1; /* FreeText */
453 static int hf_atn_cpdlc_dM68FreeText = -1; /* FreeText */
454 static int hf_atn_cpdlc_dM69NULL = -1; /* NULL */
455 static int hf_atn_cpdlc_dM70Degrees = -1; /* Degrees */
456 static int hf_atn_cpdlc_dM71Degrees = -1; /* Degrees */
457 static int hf_atn_cpdlc_dM72Level = -1; /* Level */
458 static int hf_atn_cpdlc_dM73Versionnumber = -1; /* VersionNumber */
459 static int hf_atn_cpdlc_dM74NULL = -1; /* NULL */
460 static int hf_atn_cpdlc_dM75NULL = -1; /* NULL */
461 static int hf_atn_cpdlc_dM76LevelLevel = -1; /* LevelLevel */
462 static int hf_atn_cpdlc_dM77LevelLevel = -1; /* LevelLevel */
463 static int hf_atn_cpdlc_dM78TimeDistanceToFromPosition = -1; /* TimeDistanceToFromPosition */
464 static int hf_atn_cpdlc_dM79AtisCode = -1; /* ATISCode */
465 static int hf_atn_cpdlc_dM80DistanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
466 static int hf_atn_cpdlc_dM81LevelTime = -1; /* LevelTime */
467 static int hf_atn_cpdlc_dM82Level = -1; /* Level */
468 static int hf_atn_cpdlc_dM83SpeedTime = -1; /* SpeedTime */
469 static int hf_atn_cpdlc_dM84Speed = -1; /* Speed */
470 static int hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime = -1; /* DistanceSpecifiedDirectionTime */
471 static int hf_atn_cpdlc_dM86DistanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
472 static int hf_atn_cpdlc_dM87Level = -1; /* Level */
473 static int hf_atn_cpdlc_dM88Level = -1; /* Level */
474 static int hf_atn_cpdlc_dM89UnitnameFrequency = -1; /* UnitNameFrequency */
475 static int hf_atn_cpdlc_dM90FreeText = -1; /* FreeText */
476 static int hf_atn_cpdlc_dM91FreeText = -1; /* FreeText */
477 static int hf_atn_cpdlc_dM92FreeText = -1; /* FreeText */
478 static int hf_atn_cpdlc_dM93FreeText = -1; /* FreeText */
479 static int hf_atn_cpdlc_dM94FreeText = -1; /* FreeText */
480 static int hf_atn_cpdlc_dM95FreeText = -1; /* FreeText */
481 static int hf_atn_cpdlc_dM96FreeText = -1; /* FreeText */
482 static int hf_atn_cpdlc_dM97FreeText = -1; /* FreeText */
483 static int hf_atn_cpdlc_dM98FreeText = -1; /* FreeText */
484 static int hf_atn_cpdlc_dM99NULL = -1; /* NULL */
485 static int hf_atn_cpdlc_dM100NULL = -1; /* NULL */
486 static int hf_atn_cpdlc_dM101NULL = -1; /* NULL */
487 static int hf_atn_cpdlc_dM102NULL = -1; /* NULL */
488 static int hf_atn_cpdlc_dM103NULL = -1; /* NULL */
489 static int hf_atn_cpdlc_dM104PositionTime = -1; /* PositionTime */
490 static int hf_atn_cpdlc_dM105Airport = -1; /* Airport */
491 static int hf_atn_cpdlc_dM106Level = -1; /* Level */
492 static int hf_atn_cpdlc_dM107NULL = -1; /* NULL */
493 static int hf_atn_cpdlc_dM108NULL = -1; /* NULL */
494 static int hf_atn_cpdlc_dM109Time = -1; /* Time */
495 static int hf_atn_cpdlc_dM110Position = -1; /* Position */
496 static int hf_atn_cpdlc_dM111TimePosition = -1; /* TimePosition */
497 static int hf_atn_cpdlc_dM112NULL = -1; /* NULL */
498 static int hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed = -1; /* SpeedTypeSpeedTypeSpeedTypeSpeed */
499 static int hf_atn_cpdlc_altimeterEnglish = -1; /* AltimeterEnglish */
500 static int hf_atn_cpdlc_altimeterMetric = -1; /* AltimeterMetric */
501 static int hf_atn_cpdlc_position = -1; /* Position */
502 static int hf_atn_cpdlc_aTWDistance = -1; /* ATWDistance */
503 static int hf_atn_cpdlc_speed = -1; /* Speed */
504 static int hf_atn_cpdlc_aTWLevels = -1; /* ATWLevelSequence */
505 static int hf_atn_cpdlc_atw = -1; /* ATWLevelTolerance */
506 static int hf_atn_cpdlc_level = -1; /* Level */
507 static int hf_atn_cpdlc_ATWLevelSequence_item = -1; /* ATWLevel */
508 static int hf_atn_cpdlc_atwDistanceTolerance = -1; /* ATWDistanceTolerance */
509 static int hf_atn_cpdlc_distance = -1; /* Distance */
510 static int hf_atn_cpdlc_Code_item = -1; /* CodeOctalDigit */
511 static int hf_atn_cpdlc_time = -1; /* Time */
512 static int hf_atn_cpdlc_timeTolerance = -1; /* TimeTolerance */
513 static int hf_atn_cpdlc_year = -1; /* Year */
514 static int hf_atn_cpdlc_month = -1; /* Month */
515 static int hf_atn_cpdlc_day = -1; /* Day */
516 static int hf_atn_cpdlc_date = -1; /* Date */
517 static int hf_atn_cpdlc_timehhmmss = -1; /* Timehhmmss */
518 static int hf_atn_cpdlc_degreesMagnetic = -1; /* DegreesMagnetic */
519 static int hf_atn_cpdlc_degreesTrue = -1; /* DegreesTrue */
520 static int hf_atn_cpdlc_aircraftFlightIdentification = -1; /* AircraftFlightIdentification */
521 static int hf_atn_cpdlc_clearanceLimit = -1; /* Position */
522 static int hf_atn_cpdlc_flightInformation = -1; /* FlightInformation */
523 static int hf_atn_cpdlc_furtherInstructions = -1; /* FurtherInstructions */
524 static int hf_atn_cpdlc_direction = -1; /* Direction */
525 static int hf_atn_cpdlc_degrees = -1; /* Degrees */
526 static int hf_atn_cpdlc_distanceNm = -1; /* DistanceNm */
527 static int hf_atn_cpdlc_distanceKm = -1; /* DistanceKm */
528 static int hf_atn_cpdlc_distanceSpecifiedNm = -1; /* DistanceSpecifiedNm */
529 static int hf_atn_cpdlc_distanceSpecifiedKm = -1; /* DistanceSpecifiedKm */
530 static int hf_atn_cpdlc_distanceSpecified = -1; /* DistanceSpecified */
531 static int hf_atn_cpdlc_distanceSpecifiedDirection = -1; /* DistanceSpecifiedDirection */
532 static int hf_atn_cpdlc_noFacility = -1; /* NULL */
533 static int hf_atn_cpdlc_facilityDesignation = -1; /* FacilityDesignation */
534 static int hf_atn_cpdlc_altimeter = -1; /* Altimeter */
535 static int hf_atn_cpdlc_aTISCode = -1; /* ATISCode */
536 static int hf_atn_cpdlc_fixname_name = -1; /* Fix */
537 static int hf_atn_cpdlc_latlon = -1; /* LatitudeLongitude */
538 static int hf_atn_cpdlc_routeOfFlight = -1; /* RouteInformation */
539 static int hf_atn_cpdlc_levelsOfFlight = -1; /* LevelsOfFlight */
540 static int hf_atn_cpdlc_routeAndLevels = -1; /* RouteAndLevels */
541 static int hf_atn_cpdlc_frequencyhf = -1; /* Frequencyhf */
542 static int hf_atn_cpdlc_frequencyvhf = -1; /* Frequencyvhf */
543 static int hf_atn_cpdlc_frequencyuhf = -1; /* Frequencyuhf */
544 static int hf_atn_cpdlc_frequencysatchannel = -1; /* Frequencysatchannel */
545 static int hf_atn_cpdlc_code = -1; /* Code */
546 static int hf_atn_cpdlc_frequencyDeparture = -1; /* UnitNameFrequency */
547 static int hf_atn_cpdlc_clearanceExpiryTime = -1; /* Time */
548 static int hf_atn_cpdlc_airportDeparture = -1; /* Airport */
549 static int hf_atn_cpdlc_airportDestination = -1; /* Airport */
550 static int hf_atn_cpdlc_timeDeparture = -1; /* TimeDeparture */
551 static int hf_atn_cpdlc_runwayDeparture = -1; /* Runway */
552 static int hf_atn_cpdlc_revisionNumber = -1; /* RevisionNumber */
553 static int hf_atn_cpdlc_holdatwaypointspeedlow = -1; /* Speed */
554 static int hf_atn_cpdlc_aTWlevel = -1; /* ATWLevel */
555 static int hf_atn_cpdlc_holdatwaypointspeedhigh = -1; /* Speed */
556 static int hf_atn_cpdlc_eFCtime = -1; /* Time */
557 static int hf_atn_cpdlc_legtype = -1; /* LegType */
558 static int hf_atn_cpdlc_legType = -1; /* LegType */
559 static int hf_atn_cpdlc_fromSelection = -1; /* InterceptCourseFromSelection */
560 static int hf_atn_cpdlc_publishedIdentifier = -1; /* PublishedIdentifier */
561 static int hf_atn_cpdlc_latitudeLongitude = -1; /* LatitudeLongitude */
562 static int hf_atn_cpdlc_placeBearingPlaceBearing = -1; /* PlaceBearingPlaceBearing */
563 static int hf_atn_cpdlc_placeBearingDistance = -1; /* PlaceBearingDistance */
564 static int hf_atn_cpdlc_latitudeType = -1; /* LatitudeType */
565 static int hf_atn_cpdlc_latitudeDirection = -1; /* LatitudeDirection */
566 static int hf_atn_cpdlc_latitudeWholeDegrees = -1; /* LatitudeWholeDegrees */
567 static int hf_atn_cpdlc_minutesLatLon = -1; /* MinutesLatLon */
568 static int hf_atn_cpdlc_latlonWholeMinutes = -1; /* LatLonWholeMinutes */
569 static int hf_atn_cpdlc_secondsLatLon = -1; /* SecondsLatLon */
570 static int hf_atn_cpdlc_latitude = -1; /* Latitude */
571 static int hf_atn_cpdlc_longitude = -1; /* Longitude */
572 static int hf_atn_cpdlc_latitudeDegrees = -1; /* LatitudeDegrees */
573 static int hf_atn_cpdlc_latitudeDegreesMinutes = -1; /* LatitudeDegreesMinutes */
574 static int hf_atn_cpdlc_latitudeDMS = -1; /* LatitudeDegreesMinutesSeconds */
575 static int hf_atn_cpdlc_latitudeReportingPoints = -1; /* LatitudeReportingPoints */
576 static int hf_atn_cpdlc_longitudeReportingPoints = -1; /* LongitudeReportingPoints */
577 static int hf_atn_cpdlc_legDistanceEnglish = -1; /* LegDistanceEnglish */
578 static int hf_atn_cpdlc_legDistanceMetric = -1; /* LegDistanceMetric */
579 static int hf_atn_cpdlc_legDistance = -1; /* LegDistance */
580 static int hf_atn_cpdlc_legTime = -1; /* LegTime */
581 static int hf_atn_cpdlc_singleLevel = -1; /* LevelType */
582 static int hf_atn_cpdlc_blockLevel = -1; /* SEQUENCE_SIZE_2_OF_LevelType */
583 static int hf_atn_cpdlc_blockLevel_item = -1; /* LevelType */
584 static int hf_atn_cpdlc_LevelLevel_item = -1; /* Level */
585 static int hf_atn_cpdlc_procedureName = -1; /* ProcedureName */
586 static int hf_atn_cpdlc_levelProcedureName = -1; /* LevelProcedureName */
587 static int hf_atn_cpdlc_levelspeed_speed = -1; /* SpeedSpeed */
588 static int hf_atn_cpdlc_speeds = -1; /* SpeedSpeed */
589 static int hf_atn_cpdlc_levelFeet = -1; /* LevelFeet */
590 static int hf_atn_cpdlc_levelMeters = -1; /* LevelMeters */
591 static int hf_atn_cpdlc_levelFlightLevel = -1; /* LevelFlightLevel */
592 static int hf_atn_cpdlc_levelFlightLevelMetric = -1; /* LevelFlightLevelMetric */
593 static int hf_atn_cpdlc_longitudeType = -1; /* LongitudeType */
594 static int hf_atn_cpdlc_longitudeDirection = -1; /* LongitudeDirection */
595 static int hf_atn_cpdlc_longitudeWholeDegrees = -1; /* LongitudeWholeDegrees */
596 static int hf_atn_cpdlc_latLonWholeMinutes = -1; /* LatLonWholeMinutes */
597 static int hf_atn_cpdlc_longitudeDegrees = -1; /* LongitudeDegrees */
598 static int hf_atn_cpdlc_longitudeDegreesMinutes = -1; /* LongitudeDegreesMinutes */
599 static int hf_atn_cpdlc_longitudeDMS = -1; /* LongitudeDegreesMinutesSeconds */
600 static int hf_atn_cpdlc_navaid_name = -1; /* NavaidName */
601 static int hf_atn_cpdlc_PlaceBearingPlaceBearing_item = -1; /* PlaceBearing */
602 static int hf_atn_cpdlc_fixName = -1; /* FixName */
603 static int hf_atn_cpdlc_navaid = -1; /* Navaid */
604 static int hf_atn_cpdlc_airport = -1; /* Airport */
605 static int hf_atn_cpdlc_levels = -1; /* LevelLevel */
606 static int hf_atn_cpdlc_positionlevel = -1; /* PositionLevel */
607 static int hf_atn_cpdlc_PositionPosition_item = -1; /* Position */
608 static int hf_atn_cpdlc_positioncurrent = -1; /* Position */
609 static int hf_atn_cpdlc_timeatpositioncurrent = -1; /* Time */
610 static int hf_atn_cpdlc_fixnext = -1; /* Position */
611 static int hf_atn_cpdlc_timeetaatfixnext = -1; /* Time */
612 static int hf_atn_cpdlc_fixnextplusone = -1; /* Position */
613 static int hf_atn_cpdlc_timeetaatdestination = -1; /* Time */
614 static int hf_atn_cpdlc_remainingFuel = -1; /* RemainingFuel */
615 static int hf_atn_cpdlc_temperature = -1; /* Temperature */
616 static int hf_atn_cpdlc_winds = -1; /* Winds */
617 static int hf_atn_cpdlc_turbulence = -1; /* Turbulence */
618 static int hf_atn_cpdlc_icing = -1; /* Icing */
619 static int hf_atn_cpdlc_speedground = -1; /* SpeedGround */
620 static int hf_atn_cpdlc_verticalChange = -1; /* VerticalChange */
621 static int hf_atn_cpdlc_trackAngle = -1; /* Degrees */
622 static int hf_atn_cpdlc_heading = -1; /* Degrees */
623 static int hf_atn_cpdlc_humidity = -1; /* Humidity */
624 static int hf_atn_cpdlc_reportedWaypointPosition = -1; /* Position */
625 static int hf_atn_cpdlc_reportedWaypointTime = -1; /* Time */
626 static int hf_atn_cpdlc_reportedWaypointLevel = -1; /* Level */
627 static int hf_atn_cpdlc_routeClearanceIndex = -1; /* RouteClearanceIndex */
628 static int hf_atn_cpdlc_positionTime = -1; /* PositionTime */
629 static int hf_atn_cpdlc_times = -1; /* TimeTime */
630 static int hf_atn_cpdlc_unitname = -1; /* UnitName */
631 static int hf_atn_cpdlc_frequency = -1; /* Frequency */
632 static int hf_atn_cpdlc_type = -1; /* ProcedureType */
633 static int hf_atn_cpdlc_procedure = -1; /* Procedure */
634 static int hf_atn_cpdlc_transition = -1; /* ProcedureTransition */
635 static int hf_atn_cpdlc_personsOnBoard = -1; /* PersonsOnBoard */
636 static int hf_atn_cpdlc_latLonReportingPoints = -1; /* LatLonReportingPoints */
637 static int hf_atn_cpdlc_degreeIncrement = -1; /* DegreeIncrement */
638 static int hf_atn_cpdlc_procedureDeparture = -1; /* ProcedureName */
639 static int hf_atn_cpdlc_runwayArrival = -1; /* Runway */
640 static int hf_atn_cpdlc_procedureApproach = -1; /* ProcedureName */
641 static int hf_atn_cpdlc_procedureArrival = -1; /* ProcedureName */
642 static int hf_atn_cpdlc_routeInformations = -1; /* SEQUENCE_SIZE_1_128_OF_RouteInformation */
643 static int hf_atn_cpdlc_routeInformations_item = -1; /* RouteInformation */
644 static int hf_atn_cpdlc_routeInformationAdditional = -1; /* RouteInformationAdditional */
645 static int hf_atn_cpdlc_aTSRouteDesignator = -1; /* ATSRouteDesignator */
646 static int hf_atn_cpdlc_aTWAlongTrackWaypoints = -1; /* SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint */
647 static int hf_atn_cpdlc_aTWAlongTrackWaypoints_item = -1; /* ATWAlongTrackWaypoint */
648 static int hf_atn_cpdlc_reportingpoints = -1; /* ReportingPoints */
649 static int hf_atn_cpdlc_interceptCourseFroms = -1; /* SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom */
650 static int hf_atn_cpdlc_interceptCourseFroms_item = -1; /* InterceptCourseFrom */
651 static int hf_atn_cpdlc_holdAtWaypoints = -1; /* SEQUENCE_SIZE_1_8_OF_Holdatwaypoint */
652 static int hf_atn_cpdlc_holdAtWaypoints_item = -1; /* Holdatwaypoint */
653 static int hf_atn_cpdlc_waypointSpeedLevels = -1; /* SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel */
654 static int hf_atn_cpdlc_waypointSpeedLevels_item = -1; /* WaypointSpeedLevel */
655 static int hf_atn_cpdlc_rTARequiredTimeArrivals = -1; /* SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival */
656 static int hf_atn_cpdlc_rTARequiredTimeArrivals_item = -1; /* RTARequiredTimeArrival */
657 static int hf_atn_cpdlc_rTATime = -1; /* RTATime */
658 static int hf_atn_cpdlc_rTATolerance = -1; /* RTATolerance */
659 static int hf_atn_cpdlc_runway_direction = -1; /* RunwayDirection */
660 static int hf_atn_cpdlc_configuration = -1; /* RunwayConfiguration */
661 static int hf_atn_cpdlc_runway = -1; /* Runway */
662 static int hf_atn_cpdlc_rVR = -1; /* RVR */
663 static int hf_atn_cpdlc_rVRFeet = -1; /* RVRFeet */
664 static int hf_atn_cpdlc_rVRMeters = -1; /* RVRMeters */
665 static int hf_atn_cpdlc_speedIndicated = -1; /* SpeedIndicated */
666 static int hf_atn_cpdlc_speedIndicatedMetric = -1; /* SpeedIndicatedMetric */
667 static int hf_atn_cpdlc_speedTrue = -1; /* SpeedTrue */
668 static int hf_atn_cpdlc_speedTrueMetric = -1; /* SpeedTrueMetric */
669 static int hf_atn_cpdlc_speedGround = -1; /* SpeedGround */
670 static int hf_atn_cpdlc_speedGroundMetric = -1; /* SpeedGroundMetric */
671 static int hf_atn_cpdlc_speedMach = -1; /* SpeedMach */
672 static int hf_atn_cpdlc_SpeedSpeed_item = -1; /* Speed */
673 static int hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item = -1; /* SpeedType */
674 static int hf_atn_cpdlc_speedTypes = -1; /* SpeedTypeSpeedTypeSpeedType */
675 static int hf_atn_cpdlc_hours = -1; /* TimeHours */
676 static int hf_atn_cpdlc_minutes = -1; /* TimeMinutes */
677 static int hf_atn_cpdlc_timeDepartureAllocated = -1; /* Time */
678 static int hf_atn_cpdlc_timeDepartureControlled = -1; /* ControlledTime */
679 static int hf_atn_cpdlc_timeDepartureClearanceExpected = -1; /* Time */
680 static int hf_atn_cpdlc_departureMinimumInterval = -1; /* DepartureMinimumInterval */
681 static int hf_atn_cpdlc_tofrom = -1; /* ToFrom */
682 static int hf_atn_cpdlc_hoursminutes = -1; /* Time */
683 static int hf_atn_cpdlc_seconds = -1; /* TimeSeconds */
684 static int hf_atn_cpdlc_unitName = -1; /* UnitName */
685 static int hf_atn_cpdlc_timeposition = -1; /* TimePosition */
686 static int hf_atn_cpdlc_levelspeed = -1; /* LevelSpeed */
687 static int hf_atn_cpdlc_speedspeed = -1; /* SpeedSpeed */
688 static int hf_atn_cpdlc_TimeTime_item = -1; /* Time */
689 static int hf_atn_cpdlc_toFrom = -1; /* ToFrom */
690 static int hf_atn_cpdlc_facilityName = -1; /* FacilityName */
691 static int hf_atn_cpdlc_facilityFunction = -1; /* FacilityFunction */
692 static int hf_atn_cpdlc_vertical_direction = -1; /* VerticalDirection */
693 static int hf_atn_cpdlc_rate = -1; /* VerticalRate */
694 static int hf_atn_cpdlc_verticalRateEnglish = -1; /* VerticalRateEnglish */
695 static int hf_atn_cpdlc_verticalRateMetric = -1; /* VerticalRateMetric */
696 static int hf_atn_cpdlc_winds_direction = -1; /* WindDirection */
697 static int hf_atn_cpdlc_winds_speed = -1; /* WindSpeed */
698 static int hf_atn_cpdlc_windSpeedEnglish = -1; /* WindSpeedEnglish */
699 static int hf_atn_cpdlc_windSpeedMetric = -1; /* WindSpeedMetric */
701 /*--- End of included file: packet-atn-cpdlc-hf.c ---*/
702 #line 89 "../../asn1/atn-cpdlc/packet-atn-cpdlc-template.c"
705 /*--- Included file: packet-atn-cpdlc-ett.c ---*/
706 #line 1 "../../asn1/atn-cpdlc/packet-atn-cpdlc-ett.c"
707 static gint ett_atn_cpdlc_GroundPDUs = -1;
708 static gint ett_atn_cpdlc_UplinkMessage = -1;
709 static gint ett_atn_cpdlc_AircraftPDUs = -1;
710 static gint ett_atn_cpdlc_StartDownMessage = -1;
711 static gint ett_atn_cpdlc_DownlinkMessage = -1;
712 static gint ett_atn_cpdlc_ProtectedGroundPDUs = -1;
713 static gint ett_atn_cpdlc_ProtectedUplinkMessage = -1;
714 static gint ett_atn_cpdlc_ATCForwardMessage = -1;
715 static gint ett_atn_cpdlc_ForwardHeader = -1;
716 static gint ett_atn_cpdlc_ForwardMessage = -1;
717 static gint ett_atn_cpdlc_ProtectedAircraftPDUs = -1;
718 static gint ett_atn_cpdlc_ProtectedStartDownMessage = -1;
719 static gint ett_atn_cpdlc_ProtectedDownlinkMessage = -1;
720 static gint ett_atn_cpdlc_ATCUplinkMessage = -1;
721 static gint ett_atn_cpdlc_ATCUplinkMessageData = -1;
722 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId = -1;
723 static gint ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata = -1;
724 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance = -1;
725 static gint ett_atn_cpdlc_ATCDownlinkMessage = -1;
726 static gint ett_atn_cpdlc_ATCDownlinkMessageData = -1;
727 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId = -1;
728 static gint ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata = -1;
729 static gint ett_atn_cpdlc_ATCMessageHeader = -1;
730 static gint ett_atn_cpdlc_ATCUplinkMsgElementId = -1;
731 static gint ett_atn_cpdlc_ATCDownlinkMsgElementId = -1;
732 static gint ett_atn_cpdlc_Altimeter = -1;
733 static gint ett_atn_cpdlc_ATWAlongTrackWaypoint = -1;
734 static gint ett_atn_cpdlc_ATWLevel = -1;
735 static gint ett_atn_cpdlc_ATWLevelSequence = -1;
736 static gint ett_atn_cpdlc_ATWDistance = -1;
737 static gint ett_atn_cpdlc_Code = -1;
738 static gint ett_atn_cpdlc_ControlledTime = -1;
739 static gint ett_atn_cpdlc_Date = -1;
740 static gint ett_atn_cpdlc_DateTimeGroup = -1;
741 static gint ett_atn_cpdlc_Degrees = -1;
742 static gint ett_atn_cpdlc_DepartureClearance = -1;
743 static gint ett_atn_cpdlc_DirectionDegrees = -1;
744 static gint ett_atn_cpdlc_Distance = -1;
745 static gint ett_atn_cpdlc_DistanceSpecified = -1;
746 static gint ett_atn_cpdlc_DistanceSpecifiedDirection = -1;
747 static gint ett_atn_cpdlc_DistanceSpecifiedDirectionTime = -1;
748 static gint ett_atn_cpdlc_Facility = -1;
749 static gint ett_atn_cpdlc_FacilityDesignationAltimeter = -1;
750 static gint ett_atn_cpdlc_FacilityDesignationATISCode = -1;
751 static gint ett_atn_cpdlc_FixName = -1;
752 static gint ett_atn_cpdlc_FlightInformation = -1;
753 static gint ett_atn_cpdlc_Frequency = -1;
754 static gint ett_atn_cpdlc_FurtherInstructions = -1;
755 static gint ett_atn_cpdlc_Holdatwaypoint = -1;
756 static gint ett_atn_cpdlc_HoldClearance = -1;
757 static gint ett_atn_cpdlc_InterceptCourseFrom = -1;
758 static gint ett_atn_cpdlc_InterceptCourseFromSelection = -1;
759 static gint ett_atn_cpdlc_Latitude = -1;
760 static gint ett_atn_cpdlc_LatitudeDegreesMinutes = -1;
761 static gint ett_atn_cpdlc_LatitudeDegreesMinutesSeconds = -1;
762 static gint ett_atn_cpdlc_LatitudeLongitude = -1;
763 static gint ett_atn_cpdlc_LatitudeReportingPoints = -1;
764 static gint ett_atn_cpdlc_LatitudeType = -1;
765 static gint ett_atn_cpdlc_LatLonReportingPoints = -1;
766 static gint ett_atn_cpdlc_LegDistance = -1;
767 static gint ett_atn_cpdlc_LegType = -1;
768 static gint ett_atn_cpdlc_Level = -1;
769 static gint ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType = -1;
770 static gint ett_atn_cpdlc_LevelLevel = -1;
771 static gint ett_atn_cpdlc_LevelPosition = -1;
772 static gint ett_atn_cpdlc_LevelProcedureName = -1;
773 static gint ett_atn_cpdlc_LevelsOfFlight = -1;
774 static gint ett_atn_cpdlc_LevelSpeed = -1;
775 static gint ett_atn_cpdlc_LevelSpeedSpeed = -1;
776 static gint ett_atn_cpdlc_LevelTime = -1;
777 static gint ett_atn_cpdlc_LevelType = -1;
778 static gint ett_atn_cpdlc_Longitude = -1;
779 static gint ett_atn_cpdlc_LongitudeDegreesMinutes = -1;
780 static gint ett_atn_cpdlc_LongitudeDegreesMinutesSeconds = -1;
781 static gint ett_atn_cpdlc_LongitudeReportingPoints = -1;
782 static gint ett_atn_cpdlc_LongitudeType = -1;
783 static gint ett_atn_cpdlc_Navaid = -1;
784 static gint ett_atn_cpdlc_PlaceBearing = -1;
785 static gint ett_atn_cpdlc_PlaceBearingDistance = -1;
786 static gint ett_atn_cpdlc_PlaceBearingPlaceBearing = -1;
787 static gint ett_atn_cpdlc_Position = -1;
788 static gint ett_atn_cpdlc_PositionDegrees = -1;
789 static gint ett_atn_cpdlc_PositionDistanceSpecifiedDirection = -1;
790 static gint ett_atn_cpdlc_PositionLevel = -1;
791 static gint ett_atn_cpdlc_PositionLevelLevel = -1;
792 static gint ett_atn_cpdlc_PositionLevelSpeed = -1;
793 static gint ett_atn_cpdlc_PositionPosition = -1;
794 static gint ett_atn_cpdlc_PositionProcedureName = -1;
795 static gint ett_atn_cpdlc_PositionReport = -1;
796 static gint ett_atn_cpdlc_PositionRouteClearanceIndex = -1;
797 static gint ett_atn_cpdlc_PositionSpeed = -1;
798 static gint ett_atn_cpdlc_PositionSpeedSpeed = -1;
799 static gint ett_atn_cpdlc_PositionTime = -1;
800 static gint ett_atn_cpdlc_PositionTimeLevel = -1;
801 static gint ett_atn_cpdlc_PositionTimeTime = -1;
802 static gint ett_atn_cpdlc_PositionUnitNameFrequency = -1;
803 static gint ett_atn_cpdlc_ProcedureName = -1;
804 static gint ett_atn_cpdlc_PublishedIdentifier = -1;
805 static gint ett_atn_cpdlc_RemainingFuelPersonsOnBoard = -1;
806 static gint ett_atn_cpdlc_ReportingPoints = -1;
807 static gint ett_atn_cpdlc_RouteAndLevels = -1;
808 static gint ett_atn_cpdlc_RouteClearance = -1;
809 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation = -1;
810 static gint ett_atn_cpdlc_RouteInformation = -1;
811 static gint ett_atn_cpdlc_RouteInformationAdditional = -1;
812 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint = -1;
813 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom = -1;
814 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint = -1;
815 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel = -1;
816 static gint ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival = -1;
817 static gint ett_atn_cpdlc_RTARequiredTimeArrival = -1;
818 static gint ett_atn_cpdlc_RTATime = -1;
819 static gint ett_atn_cpdlc_Runway = -1;
820 static gint ett_atn_cpdlc_RunwayRVR = -1;
821 static gint ett_atn_cpdlc_RVR = -1;
822 static gint ett_atn_cpdlc_Speed = -1;
823 static gint ett_atn_cpdlc_SpeedSpeed = -1;
824 static gint ett_atn_cpdlc_SpeedTime = -1;
825 static gint ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType = -1;
826 static gint ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed = -1;
827 static gint ett_atn_cpdlc_Time = -1;
828 static gint ett_atn_cpdlc_TimeLevel = -1;
829 static gint ett_atn_cpdlc_TimeDeparture = -1;
830 static gint ett_atn_cpdlc_TimeDistanceSpecifiedDirection = -1;
831 static gint ett_atn_cpdlc_TimeDistanceToFromPosition = -1;
832 static gint ett_atn_cpdlc_Timehhmmss = -1;
833 static gint ett_atn_cpdlc_TimeUnitNameFrequency = -1;
834 static gint ett_atn_cpdlc_TimePosition = -1;
835 static gint ett_atn_cpdlc_TimePositionLevel = -1;
836 static gint ett_atn_cpdlc_TimePositionLevelSpeed = -1;
837 static gint ett_atn_cpdlc_TimeSpeed = -1;
838 static gint ett_atn_cpdlc_TimeSpeedSpeed = -1;
839 static gint ett_atn_cpdlc_TimeTime = -1;
840 static gint ett_atn_cpdlc_TimeToFromPosition = -1;
841 static gint ett_atn_cpdlc_ToFromPosition = -1;
842 static gint ett_atn_cpdlc_UnitName = -1;
843 static gint ett_atn_cpdlc_UnitNameFrequency = -1;
844 static gint ett_atn_cpdlc_VerticalChange = -1;
845 static gint ett_atn_cpdlc_VerticalRate = -1;
846 static gint ett_atn_cpdlc_WaypointSpeedLevel = -1;
847 static gint ett_atn_cpdlc_Winds = -1;
848 static gint ett_atn_cpdlc_WindSpeed = -1;
850 /*--- End of included file: packet-atn-cpdlc-ett.c ---*/
851 #line 91 "../../asn1/atn-cpdlc/packet-atn-cpdlc-template.c"
852 static gint ett_atn_cpdlc = -1;
855 /*--- Included file: packet-atn-cpdlc-fn.c ---*/
856 #line 1 "../../asn1/atn-cpdlc/packet-atn-cpdlc-fn.c"
858 static const value_string atn_cpdlc_CPDLCUserAbortReason_vals[] = {
859 { 0, "undefined" },
860 { 1, "no-message-identification-numbers-available" },
861 { 2, "duplicate-message-identification-numbers" },
862 { 3, "no-longer-next-data-authority" },
863 { 4, "current-data-authority-abort" },
864 { 5, "commanded-termination" },
865 { 6, "invalid-response" },
866 { 0, NULL }
870 static int
871 dissect_atn_cpdlc_CPDLCUserAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
872 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
873 7, NULL, TRUE, 0, NULL);
875 return offset;
879 static const value_string atn_cpdlc_CPDLCProviderAbortReason_vals[] = {
880 { 0, "timer-expired" },
881 { 1, "undefined-error" },
882 { 2, "invalid-PDU" },
883 { 3, "protocol-error" },
884 { 4, "communication-service-error" },
885 { 5, "communication-service-failure" },
886 { 6, "invalid-QOS-parameter" },
887 { 7, "expected-PDU-missing" },
888 { 0, NULL }
892 static int
893 dissect_atn_cpdlc_CPDLCProviderAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
894 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
895 8, NULL, TRUE, 0, NULL);
897 return offset;
902 static int
903 dissect_atn_cpdlc_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
904 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
906 return offset;
911 static int
912 dissect_atn_cpdlc_MsgIdentificationNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
913 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
914 0U, 63U, NULL, FALSE);
916 return offset;
921 static int
922 dissect_atn_cpdlc_MsgReferenceNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
923 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
924 0U, 63U, NULL, FALSE);
926 return offset;
931 static int
932 dissect_atn_cpdlc_Year(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
933 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
934 1996U, 2095U, NULL, FALSE);
936 return offset;
941 static int
942 dissect_atn_cpdlc_Month(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
943 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
944 1U, 12U, NULL, FALSE);
946 return offset;
951 static int
952 dissect_atn_cpdlc_Day(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
953 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
954 1U, 31U, NULL, FALSE);
956 return offset;
960 static const per_sequence_t Date_sequence[] = {
961 { &hf_atn_cpdlc_year , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Year },
962 { &hf_atn_cpdlc_month , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Month },
963 { &hf_atn_cpdlc_day , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Day },
964 { NULL, 0, 0, NULL }
967 static int
968 dissect_atn_cpdlc_Date(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
969 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
970 ett_atn_cpdlc_Date, Date_sequence);
972 return offset;
977 static int
978 dissect_atn_cpdlc_TimeHours(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
979 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
980 0U, 23U, NULL, FALSE);
982 return offset;
987 static int
988 dissect_atn_cpdlc_TimeMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
989 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
990 0U, 59U, NULL, FALSE);
992 return offset;
996 static const per_sequence_t Time_sequence[] = {
997 { &hf_atn_cpdlc_hours , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeHours },
998 { &hf_atn_cpdlc_minutes , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeMinutes },
999 { NULL, 0, 0, NULL }
1002 static int
1003 dissect_atn_cpdlc_Time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1004 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1005 ett_atn_cpdlc_Time, Time_sequence);
1007 return offset;
1012 static int
1013 dissect_atn_cpdlc_TimeSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1014 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1015 0U, 59U, NULL, FALSE);
1017 return offset;
1021 static const per_sequence_t Timehhmmss_sequence[] = {
1022 { &hf_atn_cpdlc_hoursminutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1023 { &hf_atn_cpdlc_seconds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeSeconds },
1024 { NULL, 0, 0, NULL }
1027 static int
1028 dissect_atn_cpdlc_Timehhmmss(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1029 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1030 ett_atn_cpdlc_Timehhmmss, Timehhmmss_sequence);
1032 return offset;
1036 static const per_sequence_t DateTimeGroup_sequence[] = {
1037 { &hf_atn_cpdlc_date , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Date },
1038 { &hf_atn_cpdlc_timehhmmss, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Timehhmmss },
1039 { NULL, 0, 0, NULL }
1042 static int
1043 dissect_atn_cpdlc_DateTimeGroup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1044 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1045 ett_atn_cpdlc_DateTimeGroup, DateTimeGroup_sequence);
1047 return offset;
1051 static const value_string atn_cpdlc_LogicalAck_vals[] = {
1052 { 0, "required" },
1053 { 1, "notRequired" },
1054 { 0, NULL }
1058 static int
1059 dissect_atn_cpdlc_LogicalAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1060 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1061 2, NULL, FALSE, 0, NULL);
1063 return offset;
1067 static const per_sequence_t ATCMessageHeader_sequence[] = {
1068 { &hf_atn_cpdlc_messageIdNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MsgIdentificationNumber },
1069 { &hf_atn_cpdlc_messageRefNumber, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_MsgReferenceNumber },
1070 { &hf_atn_cpdlc_dateTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DateTimeGroup },
1071 { &hf_atn_cpdlc_logicalAck, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LogicalAck },
1072 { NULL, 0, 0, NULL }
1075 static int
1076 dissect_atn_cpdlc_ATCMessageHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1077 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1078 ett_atn_cpdlc_ATCMessageHeader, ATCMessageHeader_sequence);
1080 return offset;
1085 static int
1086 dissect_atn_cpdlc_LevelFeet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1087 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1088 -60, 7000U, NULL, FALSE);
1090 return offset;
1095 static int
1096 dissect_atn_cpdlc_LevelMeters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1097 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1098 -30, 25000U, NULL, FALSE);
1100 return offset;
1105 static int
1106 dissect_atn_cpdlc_LevelFlightLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1107 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1108 30U, 700U, NULL, FALSE);
1110 return offset;
1115 static int
1116 dissect_atn_cpdlc_LevelFlightLevelMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1117 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1118 100U, 2500U, NULL, FALSE);
1120 return offset;
1124 static const value_string atn_cpdlc_LevelType_vals[] = {
1125 { 0, "levelFeet" },
1126 { 1, "levelMeters" },
1127 { 2, "levelFlightLevel" },
1128 { 3, "levelFlightLevelMetric" },
1129 { 0, NULL }
1132 static const per_choice_t LevelType_choice[] = {
1133 { 0, &hf_atn_cpdlc_levelFeet , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFeet },
1134 { 1, &hf_atn_cpdlc_levelMeters, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelMeters },
1135 { 2, &hf_atn_cpdlc_levelFlightLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFlightLevel },
1136 { 3, &hf_atn_cpdlc_levelFlightLevelMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFlightLevelMetric },
1137 { 0, NULL, 0, NULL }
1140 static int
1141 dissect_atn_cpdlc_LevelType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1142 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1143 ett_atn_cpdlc_LevelType, LevelType_choice,
1144 NULL);
1146 return offset;
1150 static const per_sequence_t SEQUENCE_SIZE_2_OF_LevelType_sequence_of[1] = {
1151 { &hf_atn_cpdlc_blockLevel_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelType },
1154 static int
1155 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_) {
1156 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1157 ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType, SEQUENCE_SIZE_2_OF_LevelType_sequence_of,
1158 2, 2, FALSE);
1160 return offset;
1164 static const value_string atn_cpdlc_Level_vals[] = {
1165 { 0, "singleLevel" },
1166 { 1, "blockLevel" },
1167 { 0, NULL }
1170 static const per_choice_t Level_choice[] = {
1171 { 0, &hf_atn_cpdlc_singleLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelType },
1172 { 1, &hf_atn_cpdlc_blockLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType },
1173 { 0, NULL, 0, NULL }
1176 static int
1177 dissect_atn_cpdlc_Level(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1178 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1179 ett_atn_cpdlc_Level, Level_choice,
1180 NULL);
1182 return offset;
1187 static int
1188 dissect_atn_cpdlc_Fix(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1189 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, FALSE, ia5alpha , 127, NULL);
1191 return offset;
1196 static int
1197 dissect_atn_cpdlc_LatitudeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1198 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1199 0U, 90000U, NULL, FALSE);
1201 return offset;
1206 static int
1207 dissect_atn_cpdlc_LatitudeWholeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1208 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1209 0U, 89U, NULL, FALSE);
1211 return offset;
1216 static int
1217 dissect_atn_cpdlc_MinutesLatLon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1218 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1219 0U, 5999U, NULL, FALSE);
1221 return offset;
1225 static const per_sequence_t LatitudeDegreesMinutes_sequence[] = {
1226 { &hf_atn_cpdlc_latitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeWholeDegrees },
1227 { &hf_atn_cpdlc_minutesLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MinutesLatLon },
1228 { NULL, 0, 0, NULL }
1231 static int
1232 dissect_atn_cpdlc_LatitudeDegreesMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1233 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1234 ett_atn_cpdlc_LatitudeDegreesMinutes, LatitudeDegreesMinutes_sequence);
1236 return offset;
1241 static int
1242 dissect_atn_cpdlc_LatLonWholeMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1243 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1244 0U, 59U, NULL, FALSE);
1246 return offset;
1251 static int
1252 dissect_atn_cpdlc_SecondsLatLon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1253 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1254 0U, 59U, NULL, FALSE);
1256 return offset;
1260 static const per_sequence_t LatitudeDegreesMinutesSeconds_sequence[] = {
1261 { &hf_atn_cpdlc_latitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeWholeDegrees },
1262 { &hf_atn_cpdlc_latlonWholeMinutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonWholeMinutes },
1263 { &hf_atn_cpdlc_secondsLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SecondsLatLon },
1264 { NULL, 0, 0, NULL }
1267 static int
1268 dissect_atn_cpdlc_LatitudeDegreesMinutesSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1269 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1270 ett_atn_cpdlc_LatitudeDegreesMinutesSeconds, LatitudeDegreesMinutesSeconds_sequence);
1272 return offset;
1276 static const value_string atn_cpdlc_LatitudeType_vals[] = {
1277 { 0, "latitudeDegrees" },
1278 { 1, "latitudeDegreesMinutes" },
1279 { 2, "latitudeDMS" },
1280 { 0, NULL }
1283 static const per_choice_t LatitudeType_choice[] = {
1284 { 0, &hf_atn_cpdlc_latitudeDegrees, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegrees },
1285 { 1, &hf_atn_cpdlc_latitudeDegreesMinutes, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegreesMinutes },
1286 { 2, &hf_atn_cpdlc_latitudeDMS, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegreesMinutesSeconds },
1287 { 0, NULL, 0, NULL }
1290 static int
1291 dissect_atn_cpdlc_LatitudeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1292 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1293 ett_atn_cpdlc_LatitudeType, LatitudeType_choice,
1294 NULL);
1296 return offset;
1300 static const value_string atn_cpdlc_LatitudeDirection_vals[] = {
1301 { 0, "north" },
1302 { 1, "south" },
1303 { 0, NULL }
1307 static int
1308 dissect_atn_cpdlc_LatitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1309 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1310 2, NULL, FALSE, 0, NULL);
1312 return offset;
1316 static const per_sequence_t Latitude_sequence[] = {
1317 { &hf_atn_cpdlc_latitudeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeType },
1318 { &hf_atn_cpdlc_latitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDirection },
1319 { NULL, 0, 0, NULL }
1322 static int
1323 dissect_atn_cpdlc_Latitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1324 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1325 ett_atn_cpdlc_Latitude, Latitude_sequence);
1327 return offset;
1332 static int
1333 dissect_atn_cpdlc_LongitudeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1334 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1335 0U, 180000U, NULL, FALSE);
1337 return offset;
1342 static int
1343 dissect_atn_cpdlc_LongitudeWholeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1344 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1345 0U, 179U, NULL, FALSE);
1347 return offset;
1351 static const per_sequence_t LongitudeDegreesMinutes_sequence[] = {
1352 { &hf_atn_cpdlc_longitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeWholeDegrees },
1353 { &hf_atn_cpdlc_minutesLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MinutesLatLon },
1354 { NULL, 0, 0, NULL }
1357 static int
1358 dissect_atn_cpdlc_LongitudeDegreesMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1359 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1360 ett_atn_cpdlc_LongitudeDegreesMinutes, LongitudeDegreesMinutes_sequence);
1362 return offset;
1366 static const per_sequence_t LongitudeDegreesMinutesSeconds_sequence[] = {
1367 { &hf_atn_cpdlc_longitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeWholeDegrees },
1368 { &hf_atn_cpdlc_latLonWholeMinutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonWholeMinutes },
1369 { &hf_atn_cpdlc_secondsLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SecondsLatLon },
1370 { NULL, 0, 0, NULL }
1373 static int
1374 dissect_atn_cpdlc_LongitudeDegreesMinutesSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1375 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1376 ett_atn_cpdlc_LongitudeDegreesMinutesSeconds, LongitudeDegreesMinutesSeconds_sequence);
1378 return offset;
1382 static const value_string atn_cpdlc_LongitudeType_vals[] = {
1383 { 0, "longitudeDegrees" },
1384 { 1, "longitudeDegreesMinutes" },
1385 { 2, "longitudeDMS" },
1386 { 0, NULL }
1389 static const per_choice_t LongitudeType_choice[] = {
1390 { 0, &hf_atn_cpdlc_longitudeDegrees, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegrees },
1391 { 1, &hf_atn_cpdlc_longitudeDegreesMinutes, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegreesMinutes },
1392 { 2, &hf_atn_cpdlc_longitudeDMS, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegreesMinutesSeconds },
1393 { 0, NULL, 0, NULL }
1396 static int
1397 dissect_atn_cpdlc_LongitudeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1398 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1399 ett_atn_cpdlc_LongitudeType, LongitudeType_choice,
1400 NULL);
1402 return offset;
1406 static const value_string atn_cpdlc_LongitudeDirection_vals[] = {
1407 { 0, "east" },
1408 { 1, "west" },
1409 { 0, NULL }
1413 static int
1414 dissect_atn_cpdlc_LongitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1415 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1416 2, NULL, FALSE, 0, NULL);
1418 return offset;
1422 static const per_sequence_t Longitude_sequence[] = {
1423 { &hf_atn_cpdlc_longitudeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeType },
1424 { &hf_atn_cpdlc_longitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDirection },
1425 { NULL, 0, 0, NULL }
1428 static int
1429 dissect_atn_cpdlc_Longitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1430 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1431 ett_atn_cpdlc_Longitude, Longitude_sequence);
1433 return offset;
1437 static const per_sequence_t LatitudeLongitude_sequence[] = {
1438 { &hf_atn_cpdlc_latitude , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Latitude },
1439 { &hf_atn_cpdlc_longitude , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Longitude },
1440 { NULL, 0, 0, NULL }
1443 static int
1444 dissect_atn_cpdlc_LatitudeLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1445 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1446 ett_atn_cpdlc_LatitudeLongitude, LatitudeLongitude_sequence);
1448 return offset;
1452 static const per_sequence_t FixName_sequence[] = {
1453 { &hf_atn_cpdlc_fixname_name, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Fix },
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_FixName(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_FixName, FixName_sequence);
1463 return offset;
1468 static int
1469 dissect_atn_cpdlc_NavaidName(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,1, 4, FALSE, ia5alpha , 127, NULL);
1472 return offset;
1476 static const per_sequence_t Navaid_sequence[] = {
1477 { &hf_atn_cpdlc_navaid_name, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_NavaidName },
1478 { &hf_atn_cpdlc_latlon , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LatitudeLongitude },
1479 { NULL, 0, 0, NULL }
1482 static int
1483 dissect_atn_cpdlc_Navaid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1484 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1485 ett_atn_cpdlc_Navaid, Navaid_sequence);
1487 return offset;
1492 static int
1493 dissect_atn_cpdlc_Airport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1494 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 4, FALSE, ia5alpha , 127, NULL);
1496 return offset;
1500 static const value_string atn_cpdlc_PublishedIdentifier_vals[] = {
1501 { 0, "fixName" },
1502 { 1, "navaid" },
1503 { 0, NULL }
1506 static const per_choice_t PublishedIdentifier_choice[] = {
1507 { 0, &hf_atn_cpdlc_fixName , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FixName },
1508 { 1, &hf_atn_cpdlc_navaid , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Navaid },
1509 { 0, NULL, 0, NULL }
1512 static int
1513 dissect_atn_cpdlc_PublishedIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1514 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1515 ett_atn_cpdlc_PublishedIdentifier, PublishedIdentifier_choice,
1516 NULL);
1518 return offset;
1523 static int
1524 dissect_atn_cpdlc_DegreesMagnetic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1525 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1526 1U, 360U, NULL, FALSE);
1528 return offset;
1533 static int
1534 dissect_atn_cpdlc_DegreesTrue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1535 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1536 1U, 360U, NULL, FALSE);
1538 return offset;
1542 static const value_string atn_cpdlc_Degrees_vals[] = {
1543 { 0, "degreesMagnetic" },
1544 { 1, "degreesTrue" },
1545 { 0, NULL }
1548 static const per_choice_t Degrees_choice[] = {
1549 { 0, &hf_atn_cpdlc_degreesMagnetic, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DegreesMagnetic },
1550 { 1, &hf_atn_cpdlc_degreesTrue, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DegreesTrue },
1551 { 0, NULL, 0, NULL }
1554 static int
1555 dissect_atn_cpdlc_Degrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1556 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1557 ett_atn_cpdlc_Degrees, Degrees_choice,
1558 NULL);
1560 return offset;
1565 static int
1566 dissect_atn_cpdlc_DistanceNm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1567 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1568 0U, 9999U, NULL, FALSE);
1570 return offset;
1575 static int
1576 dissect_atn_cpdlc_DistanceKm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1577 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1578 0U, 8000U, NULL, FALSE);
1580 return offset;
1584 static const value_string atn_cpdlc_Distance_vals[] = {
1585 { 0, "distanceNm" },
1586 { 1, "distanceKm" },
1587 { 0, NULL }
1590 static const per_choice_t Distance_choice[] = {
1591 { 0, &hf_atn_cpdlc_distanceNm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceNm },
1592 { 1, &hf_atn_cpdlc_distanceKm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceKm },
1593 { 0, NULL, 0, NULL }
1596 static int
1597 dissect_atn_cpdlc_Distance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1598 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1599 ett_atn_cpdlc_Distance, Distance_choice,
1600 NULL);
1602 return offset;
1606 static const per_sequence_t PlaceBearingDistance_sequence[] = {
1607 { &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PublishedIdentifier },
1608 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
1609 { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance },
1610 { NULL, 0, 0, NULL }
1613 static int
1614 dissect_atn_cpdlc_PlaceBearingDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1615 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1616 ett_atn_cpdlc_PlaceBearingDistance, PlaceBearingDistance_sequence);
1618 return offset;
1622 static const value_string atn_cpdlc_Position_vals[] = {
1623 { 0, "fixName" },
1624 { 1, "navaid" },
1625 { 2, "airport" },
1626 { 3, "latitudeLongitude" },
1627 { 4, "placeBearingDistance" },
1628 { 0, NULL }
1631 static const per_choice_t Position_choice[] = {
1632 { 0, &hf_atn_cpdlc_fixName , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FixName },
1633 { 1, &hf_atn_cpdlc_navaid , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Navaid },
1634 { 2, &hf_atn_cpdlc_airport , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Airport },
1635 { 3, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude },
1636 { 4, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance },
1637 { 0, NULL, 0, NULL }
1640 static int
1641 dissect_atn_cpdlc_Position(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1642 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1643 ett_atn_cpdlc_Position, Position_choice,
1644 NULL);
1646 return offset;
1650 static const per_sequence_t TimeLevel_sequence[] = {
1651 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1652 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1653 { NULL, 0, 0, NULL }
1656 static int
1657 dissect_atn_cpdlc_TimeLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1658 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1659 ett_atn_cpdlc_TimeLevel, TimeLevel_sequence);
1661 return offset;
1665 static const per_sequence_t PositionLevel_sequence[] = {
1666 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1667 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1668 { NULL, 0, 0, NULL }
1671 static int
1672 dissect_atn_cpdlc_PositionLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1673 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1674 ett_atn_cpdlc_PositionLevel, PositionLevel_sequence);
1676 return offset;
1680 static const per_sequence_t LevelTime_sequence[] = {
1681 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1682 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1683 { NULL, 0, 0, NULL }
1686 static int
1687 dissect_atn_cpdlc_LevelTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1688 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1689 ett_atn_cpdlc_LevelTime, LevelTime_sequence);
1691 return offset;
1695 static const per_sequence_t LevelPosition_sequence[] = {
1696 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1697 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1698 { NULL, 0, 0, NULL }
1701 static int
1702 dissect_atn_cpdlc_LevelPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1703 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1704 ett_atn_cpdlc_LevelPosition, LevelPosition_sequence);
1706 return offset;
1710 static const per_sequence_t LevelLevel_sequence_of[1] = {
1711 { &hf_atn_cpdlc_LevelLevel_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1714 static int
1715 dissect_atn_cpdlc_LevelLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1716 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1717 ett_atn_cpdlc_LevelLevel, LevelLevel_sequence_of,
1718 2, 2, FALSE);
1720 return offset;
1724 static const per_sequence_t PositionLevelLevel_sequence[] = {
1725 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1726 { &hf_atn_cpdlc_levels , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelLevel },
1727 { NULL, 0, 0, NULL }
1730 static int
1731 dissect_atn_cpdlc_PositionLevelLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1732 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1733 ett_atn_cpdlc_PositionLevelLevel, PositionLevelLevel_sequence);
1735 return offset;
1739 static const per_sequence_t PositionTime_sequence[] = {
1740 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1741 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1742 { NULL, 0, 0, NULL }
1745 static int
1746 dissect_atn_cpdlc_PositionTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1747 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1748 ett_atn_cpdlc_PositionTime, PositionTime_sequence);
1750 return offset;
1754 static const per_sequence_t TimeTime_sequence_of[1] = {
1755 { &hf_atn_cpdlc_TimeTime_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1758 static int
1759 dissect_atn_cpdlc_TimeTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1760 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1761 ett_atn_cpdlc_TimeTime, TimeTime_sequence_of,
1762 2, 2, FALSE);
1764 return offset;
1768 static const per_sequence_t PositionTimeTime_sequence[] = {
1769 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1770 { &hf_atn_cpdlc_times , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTime },
1771 { NULL, 0, 0, NULL }
1774 static int
1775 dissect_atn_cpdlc_PositionTimeTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1776 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1777 ett_atn_cpdlc_PositionTimeTime, PositionTimeTime_sequence);
1779 return offset;
1784 static int
1785 dissect_atn_cpdlc_SpeedIndicated(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1786 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1787 0U, 400U, NULL, FALSE);
1789 return offset;
1794 static int
1795 dissect_atn_cpdlc_SpeedIndicatedMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1796 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1797 0U, 800U, NULL, FALSE);
1799 return offset;
1804 static int
1805 dissect_atn_cpdlc_SpeedTrue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1806 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1807 0U, 2000U, NULL, FALSE);
1809 return offset;
1814 static int
1815 dissect_atn_cpdlc_SpeedTrueMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1816 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1817 0U, 4000U, NULL, FALSE);
1819 return offset;
1824 static int
1825 dissect_atn_cpdlc_SpeedGround(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1826 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1827 -50, 2000U, NULL, FALSE);
1829 return offset;
1834 static int
1835 dissect_atn_cpdlc_SpeedGroundMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1836 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1837 -100, 4000U, NULL, FALSE);
1839 return offset;
1844 static int
1845 dissect_atn_cpdlc_SpeedMach(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1846 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1847 500U, 4000U, NULL, FALSE);
1849 return offset;
1853 static const value_string atn_cpdlc_Speed_vals[] = {
1854 { 0, "speedIndicated" },
1855 { 1, "speedIndicatedMetric" },
1856 { 2, "speedTrue" },
1857 { 3, "speedTrueMetric" },
1858 { 4, "speedGround" },
1859 { 5, "speedGroundMetric" },
1860 { 6, "speedMach" },
1861 { 0, NULL }
1864 static const per_choice_t Speed_choice[] = {
1865 { 0, &hf_atn_cpdlc_speedIndicated, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedIndicated },
1866 { 1, &hf_atn_cpdlc_speedIndicatedMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedIndicatedMetric },
1867 { 2, &hf_atn_cpdlc_speedTrue , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedTrue },
1868 { 3, &hf_atn_cpdlc_speedTrueMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedTrueMetric },
1869 { 4, &hf_atn_cpdlc_speedGround, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedGround },
1870 { 5, &hf_atn_cpdlc_speedGroundMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedGroundMetric },
1871 { 6, &hf_atn_cpdlc_speedMach , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedMach },
1872 { 0, NULL, 0, NULL }
1875 static int
1876 dissect_atn_cpdlc_Speed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1877 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1878 ett_atn_cpdlc_Speed, Speed_choice,
1879 NULL);
1881 return offset;
1885 static const per_sequence_t PositionSpeed_sequence[] = {
1886 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1887 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
1888 { NULL, 0, 0, NULL }
1891 static int
1892 dissect_atn_cpdlc_PositionSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1893 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1894 ett_atn_cpdlc_PositionSpeed, PositionSpeed_sequence);
1896 return offset;
1900 static const per_sequence_t PositionTimeLevel_sequence[] = {
1901 { &hf_atn_cpdlc_positionTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PositionTime },
1902 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1903 { NULL, 0, 0, NULL }
1906 static int
1907 dissect_atn_cpdlc_PositionTimeLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1908 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1909 ett_atn_cpdlc_PositionTimeLevel, PositionTimeLevel_sequence);
1911 return offset;
1915 static const per_sequence_t PositionLevelSpeed_sequence[] = {
1916 { &hf_atn_cpdlc_positionlevel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PositionLevel },
1917 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
1918 { NULL, 0, 0, NULL }
1921 static int
1922 dissect_atn_cpdlc_PositionLevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1923 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1924 ett_atn_cpdlc_PositionLevelSpeed, PositionLevelSpeed_sequence);
1926 return offset;
1930 static const per_sequence_t TimePosition_sequence[] = {
1931 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
1932 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
1933 { NULL, 0, 0, NULL }
1936 static int
1937 dissect_atn_cpdlc_TimePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1938 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1939 ett_atn_cpdlc_TimePosition, TimePosition_sequence);
1941 return offset;
1945 static const per_sequence_t TimePositionLevel_sequence[] = {
1946 { &hf_atn_cpdlc_timeposition, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimePosition },
1947 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1948 { NULL, 0, 0, NULL }
1951 static int
1952 dissect_atn_cpdlc_TimePositionLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1953 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1954 ett_atn_cpdlc_TimePositionLevel, TimePositionLevel_sequence);
1956 return offset;
1960 static const per_sequence_t SpeedSpeed_sequence_of[1] = {
1961 { &hf_atn_cpdlc_SpeedSpeed_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
1964 static int
1965 dissect_atn_cpdlc_SpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1966 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1967 ett_atn_cpdlc_SpeedSpeed, SpeedSpeed_sequence_of,
1968 2, 2, FALSE);
1970 return offset;
1974 static const per_sequence_t LevelSpeed_sequence[] = {
1975 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
1976 { &hf_atn_cpdlc_levelspeed_speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed },
1977 { NULL, 0, 0, NULL }
1980 static int
1981 dissect_atn_cpdlc_LevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1982 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1983 ett_atn_cpdlc_LevelSpeed, LevelSpeed_sequence);
1985 return offset;
1989 static const per_sequence_t TimePositionLevelSpeed_sequence[] = {
1990 { &hf_atn_cpdlc_timeposition, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimePosition },
1991 { &hf_atn_cpdlc_levelspeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelSpeed },
1992 { NULL, 0, 0, NULL }
1995 static int
1996 dissect_atn_cpdlc_TimePositionLevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1997 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1998 ett_atn_cpdlc_TimePositionLevelSpeed, TimePositionLevelSpeed_sequence);
2000 return offset;
2005 static int
2006 dissect_atn_cpdlc_DistanceSpecifiedNm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2007 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2008 1U, 250U, NULL, FALSE);
2010 return offset;
2015 static int
2016 dissect_atn_cpdlc_DistanceSpecifiedKm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2017 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2018 1U, 500U, NULL, FALSE);
2020 return offset;
2024 static const value_string atn_cpdlc_DistanceSpecified_vals[] = {
2025 { 0, "distanceSpecifiedNm" },
2026 { 1, "distanceSpecifiedKm" },
2027 { 0, NULL }
2030 static const per_choice_t DistanceSpecified_choice[] = {
2031 { 0, &hf_atn_cpdlc_distanceSpecifiedNm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceSpecifiedNm },
2032 { 1, &hf_atn_cpdlc_distanceSpecifiedKm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceSpecifiedKm },
2033 { 0, NULL, 0, NULL }
2036 static int
2037 dissect_atn_cpdlc_DistanceSpecified(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2038 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2039 ett_atn_cpdlc_DistanceSpecified, DistanceSpecified_choice,
2040 NULL);
2042 return offset;
2046 static const value_string atn_cpdlc_Direction_vals[] = {
2047 { 0, "left" },
2048 { 1, "right" },
2049 { 2, "eitherSide" },
2050 { 3, "north" },
2051 { 4, "south" },
2052 { 5, "east" },
2053 { 6, "west" },
2054 { 7, "northEast" },
2055 { 8, "northWest" },
2056 { 9, "southEast" },
2057 { 10, "southWest" },
2058 { 0, NULL }
2062 static int
2063 dissect_atn_cpdlc_Direction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2064 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2065 11, NULL, FALSE, 0, NULL);
2067 return offset;
2071 static const per_sequence_t DistanceSpecifiedDirection_sequence[] = {
2072 { &hf_atn_cpdlc_distanceSpecified, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecified },
2073 { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction },
2074 { NULL, 0, 0, NULL }
2077 static int
2078 dissect_atn_cpdlc_DistanceSpecifiedDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2079 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2080 ett_atn_cpdlc_DistanceSpecifiedDirection, DistanceSpecifiedDirection_sequence);
2082 return offset;
2086 static const per_sequence_t PositionDistanceSpecifiedDirection_sequence[] = {
2087 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2088 { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection },
2089 { NULL, 0, 0, NULL }
2092 static int
2093 dissect_atn_cpdlc_PositionDistanceSpecifiedDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2094 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2095 ett_atn_cpdlc_PositionDistanceSpecifiedDirection, PositionDistanceSpecifiedDirection_sequence);
2097 return offset;
2101 static const per_sequence_t TimeDistanceSpecifiedDirection_sequence[] = {
2102 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2103 { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection },
2104 { NULL, 0, 0, NULL }
2107 static int
2108 dissect_atn_cpdlc_TimeDistanceSpecifiedDirection(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_TimeDistanceSpecifiedDirection, TimeDistanceSpecifiedDirection_sequence);
2112 return offset;
2117 static int
2118 dissect_atn_cpdlc_AircraftFlightIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2119 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 8, FALSE, ia5alpha , 127, NULL);
2121 return offset;
2125 static const per_sequence_t PlaceBearing_sequence[] = {
2126 { &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PublishedIdentifier },
2127 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
2128 { NULL, 0, 0, NULL }
2131 static int
2132 dissect_atn_cpdlc_PlaceBearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2133 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2134 ett_atn_cpdlc_PlaceBearing, PlaceBearing_sequence);
2136 return offset;
2140 static const per_sequence_t PlaceBearingPlaceBearing_sequence_of[1] = {
2141 { &hf_atn_cpdlc_PlaceBearingPlaceBearing_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PlaceBearing },
2144 static int
2145 dissect_atn_cpdlc_PlaceBearingPlaceBearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2146 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2147 ett_atn_cpdlc_PlaceBearingPlaceBearing, PlaceBearingPlaceBearing_sequence_of,
2148 2, 2, FALSE);
2150 return offset;
2155 static int
2156 dissect_atn_cpdlc_ATSRouteDesignator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2157 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 7, FALSE, ia5alpha , 127, NULL);
2159 return offset;
2163 static const value_string atn_cpdlc_RouteInformation_vals[] = {
2164 { 0, "publishedIdentifier" },
2165 { 1, "latitudeLongitude" },
2166 { 2, "placeBearingPlaceBearing" },
2167 { 3, "placeBearingDistance" },
2168 { 4, "aTSRouteDesignator" },
2169 { 0, NULL }
2172 static const per_choice_t RouteInformation_choice[] = {
2173 { 0, &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PublishedIdentifier },
2174 { 1, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude },
2175 { 2, &hf_atn_cpdlc_placeBearingPlaceBearing, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingPlaceBearing },
2176 { 3, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance },
2177 { 4, &hf_atn_cpdlc_aTSRouteDesignator, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATSRouteDesignator },
2178 { 0, NULL, 0, NULL }
2181 static int
2182 dissect_atn_cpdlc_RouteInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2183 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2184 ett_atn_cpdlc_RouteInformation, RouteInformation_choice,
2185 NULL);
2187 return offset;
2191 static const value_string atn_cpdlc_ProcedureType_vals[] = {
2192 { 0, "arrival" },
2193 { 1, "approach" },
2194 { 2, "departure" },
2195 { 0, NULL }
2199 static int
2200 dissect_atn_cpdlc_ProcedureType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2201 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2202 3, NULL, FALSE, 0, NULL);
2204 return offset;
2209 static int
2210 dissect_atn_cpdlc_Procedure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2211 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 20, FALSE, ia5alpha , 127, NULL);
2213 return offset;
2218 static int
2219 dissect_atn_cpdlc_ProcedureTransition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2220 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, FALSE, ia5alpha , 127, NULL);
2222 return offset;
2226 static const per_sequence_t ProcedureName_sequence[] = {
2227 { &hf_atn_cpdlc_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureType },
2228 { &hf_atn_cpdlc_procedure , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Procedure },
2229 { &hf_atn_cpdlc_transition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureTransition },
2230 { NULL, 0, 0, NULL }
2233 static int
2234 dissect_atn_cpdlc_ProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2235 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2236 ett_atn_cpdlc_ProcedureName, ProcedureName_sequence);
2238 return offset;
2242 static const per_sequence_t LevelProcedureName_sequence[] = {
2243 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
2244 { &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureName },
2245 { NULL, 0, 0, NULL }
2248 static int
2249 dissect_atn_cpdlc_LevelProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2250 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2251 ett_atn_cpdlc_LevelProcedureName, LevelProcedureName_sequence);
2253 return offset;
2257 static const value_string atn_cpdlc_LevelsOfFlight_vals[] = {
2258 { 0, "level" },
2259 { 1, "procedureName" },
2260 { 2, "levelProcedureName" },
2261 { 0, NULL }
2264 static const per_choice_t LevelsOfFlight_choice[] = {
2265 { 0, &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Level },
2266 { 1, &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ProcedureName },
2267 { 2, &hf_atn_cpdlc_levelProcedureName, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelProcedureName },
2268 { 0, NULL, 0, NULL }
2271 static int
2272 dissect_atn_cpdlc_LevelsOfFlight(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2273 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2274 ett_atn_cpdlc_LevelsOfFlight, LevelsOfFlight_choice,
2275 NULL);
2277 return offset;
2281 static const per_sequence_t RouteAndLevels_sequence[] = {
2282 { &hf_atn_cpdlc_routeOfFlight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteInformation },
2283 { &hf_atn_cpdlc_levelsOfFlight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelsOfFlight },
2284 { NULL, 0, 0, NULL }
2287 static int
2288 dissect_atn_cpdlc_RouteAndLevels(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2289 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2290 ett_atn_cpdlc_RouteAndLevels, RouteAndLevels_sequence);
2292 return offset;
2296 static const value_string atn_cpdlc_FlightInformation_vals[] = {
2297 { 0, "routeOfFlight" },
2298 { 1, "levelsOfFlight" },
2299 { 2, "routeAndLevels" },
2300 { 0, NULL }
2303 static const per_choice_t FlightInformation_choice[] = {
2304 { 0, &hf_atn_cpdlc_routeOfFlight, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RouteInformation },
2305 { 1, &hf_atn_cpdlc_levelsOfFlight, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelsOfFlight },
2306 { 2, &hf_atn_cpdlc_routeAndLevels, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RouteAndLevels },
2307 { 0, NULL, 0, NULL }
2310 static int
2311 dissect_atn_cpdlc_FlightInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2312 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2313 ett_atn_cpdlc_FlightInformation, FlightInformation_choice,
2314 NULL);
2316 return offset;
2321 static int
2322 dissect_atn_cpdlc_CodeOctalDigit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2323 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2324 0U, 7U, NULL, FALSE);
2326 return offset;
2330 static const per_sequence_t Code_sequence_of[1] = {
2331 { &hf_atn_cpdlc_Code_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_CodeOctalDigit },
2334 static int
2335 dissect_atn_cpdlc_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2336 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2337 ett_atn_cpdlc_Code, Code_sequence_of,
2338 4, 4, FALSE);
2340 return offset;
2345 static int
2346 dissect_atn_cpdlc_FacilityDesignation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2347 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 8, FALSE, ia5alpha , 127, NULL);
2349 return offset;
2354 static int
2355 dissect_atn_cpdlc_FacilityName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2356 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,3, 18, FALSE, ia5alpha , 127, NULL);
2358 return offset;
2362 static const value_string atn_cpdlc_FacilityFunction_vals[] = {
2363 { 0, "center" },
2364 { 1, "approach" },
2365 { 2, "tower" },
2366 { 3, "final" },
2367 { 4, "groundControl" },
2368 { 5, "clearanceDelivery" },
2369 { 6, "departure" },
2370 { 7, "control" },
2371 { 8, "radio" },
2372 { 0, NULL }
2376 static int
2377 dissect_atn_cpdlc_FacilityFunction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2378 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2379 9, NULL, TRUE, 0, NULL);
2381 return offset;
2385 static const per_sequence_t UnitName_sequence[] = {
2386 { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation },
2387 { &hf_atn_cpdlc_facilityName, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FacilityName },
2388 { &hf_atn_cpdlc_facilityFunction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityFunction },
2389 { NULL, 0, 0, NULL }
2392 static int
2393 dissect_atn_cpdlc_UnitName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2394 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2395 ett_atn_cpdlc_UnitName, UnitName_sequence);
2397 return offset;
2402 static int
2403 dissect_atn_cpdlc_Frequencyhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2404 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2405 2850U, 28000U, NULL, FALSE);
2407 return offset;
2412 static int
2413 dissect_atn_cpdlc_Frequencyvhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2414 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2415 23600U, 27398U, NULL, FALSE);
2417 return offset;
2422 static int
2423 dissect_atn_cpdlc_Frequencyuhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2424 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2425 9000U, 15999U, NULL, FALSE);
2427 return offset;
2432 static int
2433 dissect_atn_cpdlc_Frequencysatchannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2434 offset = dissect_per_NumericString(tvb, offset, actx, tree, hf_index,
2435 12, 12, FALSE);
2437 return offset;
2441 static const value_string atn_cpdlc_Frequency_vals[] = {
2442 { 0, "frequencyhf" },
2443 { 1, "frequencyvhf" },
2444 { 2, "frequencyuhf" },
2445 { 3, "frequencysatchannel" },
2446 { 0, NULL }
2449 static const per_choice_t Frequency_choice[] = {
2450 { 0, &hf_atn_cpdlc_frequencyhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyhf },
2451 { 1, &hf_atn_cpdlc_frequencyvhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyvhf },
2452 { 2, &hf_atn_cpdlc_frequencyuhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyuhf },
2453 { 3, &hf_atn_cpdlc_frequencysatchannel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencysatchannel },
2454 { 0, NULL, 0, NULL }
2457 static int
2458 dissect_atn_cpdlc_Frequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2459 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2460 ett_atn_cpdlc_Frequency, Frequency_choice,
2461 NULL);
2463 return offset;
2467 static const per_sequence_t UnitNameFrequency_sequence[] = {
2468 { &hf_atn_cpdlc_unitName , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName },
2469 { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency },
2470 { NULL, 0, 0, NULL }
2473 static int
2474 dissect_atn_cpdlc_UnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2475 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2476 ett_atn_cpdlc_UnitNameFrequency, UnitNameFrequency_sequence);
2478 return offset;
2482 static const value_string atn_cpdlc_TimeTolerance_vals[] = {
2483 { 0, "at" },
2484 { 1, "atorafter" },
2485 { 2, "atorbefore" },
2486 { 0, NULL }
2490 static int
2491 dissect_atn_cpdlc_TimeTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2492 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2493 3, NULL, FALSE, 0, NULL);
2495 return offset;
2499 static const per_sequence_t ControlledTime_sequence[] = {
2500 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2501 { &hf_atn_cpdlc_timeTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTolerance },
2502 { NULL, 0, 0, NULL }
2505 static int
2506 dissect_atn_cpdlc_ControlledTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2507 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2508 ett_atn_cpdlc_ControlledTime, ControlledTime_sequence);
2510 return offset;
2515 static int
2516 dissect_atn_cpdlc_DepartureMinimumInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2517 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2518 1U, 150U, NULL, FALSE);
2520 return offset;
2524 static const per_sequence_t TimeDeparture_sequence[] = {
2525 { &hf_atn_cpdlc_timeDepartureAllocated, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
2526 { &hf_atn_cpdlc_timeDepartureControlled, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ControlledTime },
2527 { &hf_atn_cpdlc_timeDepartureClearanceExpected, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
2528 { &hf_atn_cpdlc_departureMinimumInterval, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_DepartureMinimumInterval },
2529 { NULL, 0, 0, NULL }
2532 static int
2533 dissect_atn_cpdlc_TimeDeparture(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2534 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2535 ett_atn_cpdlc_TimeDeparture, TimeDeparture_sequence);
2537 return offset;
2542 static int
2543 dissect_atn_cpdlc_RunwayDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2544 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2545 1U, 36U, NULL, FALSE);
2547 return offset;
2551 static const value_string atn_cpdlc_RunwayConfiguration_vals[] = {
2552 { 0, "left" },
2553 { 1, "right" },
2554 { 2, "center" },
2555 { 3, "none" },
2556 { 0, NULL }
2560 static int
2561 dissect_atn_cpdlc_RunwayConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2562 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2563 4, NULL, FALSE, 0, NULL);
2565 return offset;
2569 static const per_sequence_t Runway_sequence[] = {
2570 { &hf_atn_cpdlc_runway_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RunwayDirection },
2571 { &hf_atn_cpdlc_configuration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RunwayConfiguration },
2572 { NULL, 0, 0, NULL }
2575 static int
2576 dissect_atn_cpdlc_Runway(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2577 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2578 ett_atn_cpdlc_Runway, Runway_sequence);
2580 return offset;
2585 static int
2586 dissect_atn_cpdlc_RevisionNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2587 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2588 1U, 16U, NULL, FALSE);
2590 return offset;
2595 static int
2596 dissect_atn_cpdlc_ATISCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2597 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 1, FALSE, ia5alpha , 127, NULL);
2599 return offset;
2603 static const per_sequence_t FurtherInstructions_sequence[] = {
2604 { &hf_atn_cpdlc_code , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Code },
2605 { &hf_atn_cpdlc_frequencyDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_UnitNameFrequency },
2606 { &hf_atn_cpdlc_clearanceExpiryTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
2607 { &hf_atn_cpdlc_airportDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport },
2608 { &hf_atn_cpdlc_airportDestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport },
2609 { &hf_atn_cpdlc_timeDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_TimeDeparture },
2610 { &hf_atn_cpdlc_runwayDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway },
2611 { &hf_atn_cpdlc_revisionNumber, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RevisionNumber },
2612 { &hf_atn_cpdlc_aTISCode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATISCode },
2613 { NULL, 0, 0, NULL }
2616 static int
2617 dissect_atn_cpdlc_FurtherInstructions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2618 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2619 ett_atn_cpdlc_FurtherInstructions, FurtherInstructions_sequence);
2621 return offset;
2625 static const per_sequence_t DepartureClearance_sequence[] = {
2626 { &hf_atn_cpdlc_aircraftFlightIdentification, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftFlightIdentification },
2627 { &hf_atn_cpdlc_clearanceLimit, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2628 { &hf_atn_cpdlc_flightInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FlightInformation },
2629 { &hf_atn_cpdlc_furtherInstructions, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FurtherInstructions },
2630 { NULL, 0, 0, NULL }
2633 static int
2634 dissect_atn_cpdlc_DepartureClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2635 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2636 ett_atn_cpdlc_DepartureClearance, DepartureClearance_sequence);
2638 return offset;
2642 static const per_sequence_t PositionPosition_sequence_of[1] = {
2643 { &hf_atn_cpdlc_PositionPosition_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2646 static int
2647 dissect_atn_cpdlc_PositionPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2648 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2649 ett_atn_cpdlc_PositionPosition, PositionPosition_sequence_of,
2650 2, 2, FALSE);
2652 return offset;
2657 static int
2658 dissect_atn_cpdlc_RouteClearanceIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2659 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2660 1U, 2U, NULL, FALSE);
2662 return offset;
2666 static const per_sequence_t PositionRouteClearanceIndex_sequence[] = {
2667 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2668 { &hf_atn_cpdlc_routeClearanceIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteClearanceIndex },
2669 { NULL, 0, 0, NULL }
2672 static int
2673 dissect_atn_cpdlc_PositionRouteClearanceIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2674 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2675 ett_atn_cpdlc_PositionRouteClearanceIndex, PositionRouteClearanceIndex_sequence);
2677 return offset;
2681 static const per_sequence_t PositionProcedureName_sequence[] = {
2682 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2683 { &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureName },
2684 { NULL, 0, 0, NULL }
2687 static int
2688 dissect_atn_cpdlc_PositionProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2689 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2690 ett_atn_cpdlc_PositionProcedureName, PositionProcedureName_sequence);
2692 return offset;
2697 static int
2698 dissect_atn_cpdlc_LegDistanceEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2699 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2700 0U, 50U, NULL, FALSE);
2702 return offset;
2707 static int
2708 dissect_atn_cpdlc_LegDistanceMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2709 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2710 1U, 128U, NULL, FALSE);
2712 return offset;
2716 static const value_string atn_cpdlc_LegDistance_vals[] = {
2717 { 0, "legDistanceEnglish" },
2718 { 1, "legDistanceMetric" },
2719 { 0, NULL }
2722 static const per_choice_t LegDistance_choice[] = {
2723 { 0, &hf_atn_cpdlc_legDistanceEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistanceEnglish },
2724 { 1, &hf_atn_cpdlc_legDistanceMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistanceMetric },
2725 { 0, NULL, 0, NULL }
2728 static int
2729 dissect_atn_cpdlc_LegDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2730 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2731 ett_atn_cpdlc_LegDistance, LegDistance_choice,
2732 NULL);
2734 return offset;
2739 static int
2740 dissect_atn_cpdlc_LegTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2741 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2742 0U, 10U, NULL, FALSE);
2744 return offset;
2748 static const value_string atn_cpdlc_LegType_vals[] = {
2749 { 0, "legDistance" },
2750 { 1, "legTime" },
2751 { 0, NULL }
2754 static const per_choice_t LegType_choice[] = {
2755 { 0, &hf_atn_cpdlc_legDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistance },
2756 { 1, &hf_atn_cpdlc_legTime , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegTime },
2757 { 0, NULL, 0, NULL }
2760 static int
2761 dissect_atn_cpdlc_LegType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2762 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2763 ett_atn_cpdlc_LegType, LegType_choice,
2764 NULL);
2766 return offset;
2770 static const per_sequence_t HoldClearance_sequence[] = {
2771 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2772 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
2773 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
2774 { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction },
2775 { &hf_atn_cpdlc_legType , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LegType },
2776 { NULL, 0, 0, NULL }
2779 static int
2780 dissect_atn_cpdlc_HoldClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2781 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2782 ett_atn_cpdlc_HoldClearance, HoldClearance_sequence);
2784 return offset;
2788 static const per_sequence_t DirectionDegrees_sequence[] = {
2789 { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction },
2790 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
2791 { NULL, 0, 0, NULL }
2794 static int
2795 dissect_atn_cpdlc_DirectionDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2796 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2797 ett_atn_cpdlc_DirectionDegrees, DirectionDegrees_sequence);
2799 return offset;
2803 static const per_sequence_t PositionDegrees_sequence[] = {
2804 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2805 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
2806 { NULL, 0, 0, NULL }
2809 static int
2810 dissect_atn_cpdlc_PositionDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2811 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2812 ett_atn_cpdlc_PositionDegrees, PositionDegrees_sequence);
2814 return offset;
2818 static const per_sequence_t TimeSpeed_sequence[] = {
2819 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2820 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
2821 { NULL, 0, 0, NULL }
2824 static int
2825 dissect_atn_cpdlc_TimeSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2826 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2827 ett_atn_cpdlc_TimeSpeed, TimeSpeed_sequence);
2829 return offset;
2833 static const per_sequence_t TimeSpeedSpeed_sequence[] = {
2834 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2835 { &hf_atn_cpdlc_speedspeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed },
2836 { NULL, 0, 0, NULL }
2839 static int
2840 dissect_atn_cpdlc_TimeSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2841 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2842 ett_atn_cpdlc_TimeSpeedSpeed, TimeSpeedSpeed_sequence);
2844 return offset;
2848 static const per_sequence_t PositionSpeedSpeed_sequence[] = {
2849 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2850 { &hf_atn_cpdlc_speeds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed },
2851 { NULL, 0, 0, NULL }
2854 static int
2855 dissect_atn_cpdlc_PositionSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2856 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2857 ett_atn_cpdlc_PositionSpeedSpeed, PositionSpeedSpeed_sequence);
2859 return offset;
2863 static const per_sequence_t LevelSpeedSpeed_sequence[] = {
2864 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
2865 { &hf_atn_cpdlc_speeds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed },
2866 { NULL, 0, 0, NULL }
2869 static int
2870 dissect_atn_cpdlc_LevelSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2871 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2872 ett_atn_cpdlc_LevelSpeedSpeed, LevelSpeedSpeed_sequence);
2874 return offset;
2878 static const per_sequence_t PositionUnitNameFrequency_sequence[] = {
2879 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
2880 { &hf_atn_cpdlc_unitname , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName },
2881 { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency },
2882 { NULL, 0, 0, NULL }
2885 static int
2886 dissect_atn_cpdlc_PositionUnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2887 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2888 ett_atn_cpdlc_PositionUnitNameFrequency, PositionUnitNameFrequency_sequence);
2890 return offset;
2894 static const per_sequence_t TimeUnitNameFrequency_sequence[] = {
2895 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
2896 { &hf_atn_cpdlc_unitName , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName },
2897 { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency },
2898 { NULL, 0, 0, NULL }
2901 static int
2902 dissect_atn_cpdlc_TimeUnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2903 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2904 ett_atn_cpdlc_TimeUnitNameFrequency, TimeUnitNameFrequency_sequence);
2906 return offset;
2910 static const value_string atn_cpdlc_SpeedType_vals[] = {
2911 { 0, "noneSpecified" },
2912 { 1, "indicated" },
2913 { 2, "true" },
2914 { 3, "ground" },
2915 { 4, "mach" },
2916 { 5, "approach" },
2917 { 6, "cruise" },
2918 { 7, "minimum" },
2919 { 8, "maximum" },
2920 { 0, NULL }
2924 static int
2925 dissect_atn_cpdlc_SpeedType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2926 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2927 9, NULL, TRUE, 0, NULL);
2929 return offset;
2933 static const per_sequence_t SpeedTypeSpeedTypeSpeedType_sequence_of[1] = {
2934 { &hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedType },
2937 static int
2938 dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2939 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2940 ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType, SpeedTypeSpeedTypeSpeedType_sequence_of,
2941 3, 3, FALSE);
2943 return offset;
2948 static int
2949 dissect_atn_cpdlc_AltimeterEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2950 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2951 2200U, 3200U, NULL, FALSE);
2953 return offset;
2958 static int
2959 dissect_atn_cpdlc_AltimeterMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2960 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2961 7500U, 12500U, NULL, FALSE);
2963 return offset;
2967 static const value_string atn_cpdlc_Altimeter_vals[] = {
2968 { 0, "altimeterEnglish" },
2969 { 1, "altimeterMetric" },
2970 { 0, NULL }
2973 static const per_choice_t Altimeter_choice[] = {
2974 { 0, &hf_atn_cpdlc_altimeterEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_AltimeterEnglish },
2975 { 1, &hf_atn_cpdlc_altimeterMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_AltimeterMetric },
2976 { 0, NULL, 0, NULL }
2979 static int
2980 dissect_atn_cpdlc_Altimeter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2981 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2982 ett_atn_cpdlc_Altimeter, Altimeter_choice,
2983 NULL);
2985 return offset;
2989 static const value_string atn_cpdlc_ErrorInformation_vals[] = {
2990 { 0, "unrecognizedMsgReferenceNumber" },
2991 { 1, "logicalAcknowledgmentNotAccepted" },
2992 { 2, "insufficientResources" },
2993 { 3, "invalidMessageElementCombination" },
2994 { 4, "invalidMessageElement" },
2995 { 0, NULL }
2999 static int
3000 dissect_atn_cpdlc_ErrorInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3001 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3002 5, NULL, TRUE, 0, NULL);
3004 return offset;
3008 static const value_string atn_cpdlc_Facility_vals[] = {
3009 { 0, "noFacility" },
3010 { 1, "facilityDesignation" },
3011 { 0, NULL }
3014 static const per_choice_t Facility_choice[] = {
3015 { 0, &hf_atn_cpdlc_noFacility, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL },
3016 { 1, &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FacilityDesignation },
3017 { 0, NULL, 0, NULL }
3020 static int
3021 dissect_atn_cpdlc_Facility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3022 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3023 ett_atn_cpdlc_Facility, Facility_choice,
3024 NULL);
3026 return offset;
3030 static const value_string atn_cpdlc_TrafficType_vals[] = {
3031 { 0, "noneSpecified" },
3032 { 1, "oppositeDirection" },
3033 { 2, "sameDirection" },
3034 { 3, "converging" },
3035 { 4, "crossing" },
3036 { 5, "diverging" },
3037 { 0, NULL }
3041 static int
3042 dissect_atn_cpdlc_TrafficType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3043 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3044 6, NULL, TRUE, 0, NULL);
3046 return offset;
3051 static int
3052 dissect_atn_cpdlc_FreeText(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3053 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 256, FALSE, ia5alpha , 127, NULL);
3055 return offset;
3060 static int
3061 dissect_atn_cpdlc_VerticalRateEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3062 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3063 0U, 3000U, NULL, FALSE);
3065 return offset;
3070 static int
3071 dissect_atn_cpdlc_VerticalRateMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3072 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3073 0U, 1000U, NULL, FALSE);
3075 return offset;
3079 static const value_string atn_cpdlc_VerticalRate_vals[] = {
3080 { 0, "verticalRateEnglish" },
3081 { 1, "verticalRateMetric" },
3082 { 0, NULL }
3085 static const per_choice_t VerticalRate_choice[] = {
3086 { 0, &hf_atn_cpdlc_verticalRateEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_VerticalRateEnglish },
3087 { 1, &hf_atn_cpdlc_verticalRateMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_VerticalRateMetric },
3088 { 0, NULL, 0, NULL }
3091 static int
3092 dissect_atn_cpdlc_VerticalRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3093 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3094 ett_atn_cpdlc_VerticalRate, VerticalRate_choice,
3095 NULL);
3097 return offset;
3101 static const value_string atn_cpdlc_ToFrom_vals[] = {
3102 { 0, "to" },
3103 { 1, "from" },
3104 { 0, NULL }
3108 static int
3109 dissect_atn_cpdlc_ToFrom(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3110 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3111 2, NULL, FALSE, 0, NULL);
3113 return offset;
3117 static const per_sequence_t ToFromPosition_sequence[] = {
3118 { &hf_atn_cpdlc_toFrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom },
3119 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
3120 { NULL, 0, 0, NULL }
3123 static int
3124 dissect_atn_cpdlc_ToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3125 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3126 ett_atn_cpdlc_ToFromPosition, ToFromPosition_sequence);
3128 return offset;
3132 static const per_sequence_t TimeToFromPosition_sequence[] = {
3133 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
3134 { &hf_atn_cpdlc_tofrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom },
3135 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
3136 { NULL, 0, 0, NULL }
3139 static int
3140 dissect_atn_cpdlc_TimeToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3141 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3142 ett_atn_cpdlc_TimeToFromPosition, TimeToFromPosition_sequence);
3144 return offset;
3148 static const per_sequence_t FacilityDesignationATISCode_sequence[] = {
3149 { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation },
3150 { &hf_atn_cpdlc_aTISCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATISCode },
3151 { NULL, 0, 0, NULL }
3154 static int
3155 dissect_atn_cpdlc_FacilityDesignationATISCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3156 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3157 ett_atn_cpdlc_FacilityDesignationATISCode, FacilityDesignationATISCode_sequence);
3159 return offset;
3163 static const per_sequence_t FacilityDesignationAltimeter_sequence[] = {
3164 { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation },
3165 { &hf_atn_cpdlc_altimeter , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Altimeter },
3166 { NULL, 0, 0, NULL }
3169 static int
3170 dissect_atn_cpdlc_FacilityDesignationAltimeter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3171 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3172 ett_atn_cpdlc_FacilityDesignationAltimeter, FacilityDesignationAltimeter_sequence);
3174 return offset;
3179 static int
3180 dissect_atn_cpdlc_RVRFeet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3181 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3182 0U, 6100U, NULL, FALSE);
3184 return offset;
3189 static int
3190 dissect_atn_cpdlc_RVRMeters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3191 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3192 0U, 1500U, NULL, FALSE);
3194 return offset;
3198 static const value_string atn_cpdlc_RVR_vals[] = {
3199 { 0, "rVRFeet" },
3200 { 1, "rVRMeters" },
3201 { 0, NULL }
3204 static const per_choice_t RVR_choice[] = {
3205 { 0, &hf_atn_cpdlc_rVRFeet , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RVRFeet },
3206 { 1, &hf_atn_cpdlc_rVRMeters , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RVRMeters },
3207 { 0, NULL, 0, NULL }
3210 static int
3211 dissect_atn_cpdlc_RVR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3212 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3213 ett_atn_cpdlc_RVR, RVR_choice,
3214 NULL);
3216 return offset;
3220 static const per_sequence_t RunwayRVR_sequence[] = {
3221 { &hf_atn_cpdlc_runway , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Runway },
3222 { &hf_atn_cpdlc_rVR , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RVR },
3223 { NULL, 0, 0, NULL }
3226 static int
3227 dissect_atn_cpdlc_RunwayRVR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3228 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3229 ett_atn_cpdlc_RunwayRVR, RunwayRVR_sequence);
3231 return offset;
3235 static const value_string atn_cpdlc_ATCUplinkMsgElementId_vals[] = {
3236 { 0, "uM0NULL" },
3237 { 1, "uM1NULL" },
3238 { 2, "uM2NULL" },
3239 { 3, "uM3NULL" },
3240 { 4, "uM4NULL" },
3241 { 5, "uM5NULL" },
3242 { 6, "uM6Level" },
3243 { 7, "uM7Time" },
3244 { 8, "uM8Position" },
3245 { 9, "uM9Time" },
3246 { 10, "uM10Position" },
3247 { 11, "uM11Time" },
3248 { 12, "uM12Position" },
3249 { 13, "uM13TimeLevel" },
3250 { 14, "uM14PositionLevel" },
3251 { 15, "uM15TimeLevel" },
3252 { 16, "uM16PositionLevel" },
3253 { 17, "uM17TimeLevel" },
3254 { 18, "uM18PositionLevel" },
3255 { 19, "uM19Level" },
3256 { 20, "uM20Level" },
3257 { 21, "uM21TimeLevel" },
3258 { 22, "uM22PositionLevel" },
3259 { 23, "uM23Level" },
3260 { 24, "uM24TimeLevel" },
3261 { 25, "uM25PositionLevel" },
3262 { 26, "uM26LevelTime" },
3263 { 27, "uM27LevelPosition" },
3264 { 28, "uM28LevelTime" },
3265 { 29, "uM29LevelPosition" },
3266 { 30, "uM30LevelLevel" },
3267 { 31, "uM31LevelLevel" },
3268 { 32, "uM32LevelLevel" },
3269 { 33, "uM33NULL" },
3270 { 34, "uM34Level" },
3271 { 35, "uM35Level" },
3272 { 36, "uM36Level" },
3273 { 37, "uM37Level" },
3274 { 38, "uM38Level" },
3275 { 39, "uM39Level" },
3276 { 40, "uM40NULL" },
3277 { 41, "uM41NULL" },
3278 { 42, "uM42PositionLevel" },
3279 { 43, "uM43PositionLevel" },
3280 { 44, "uM44PositionLevel" },
3281 { 45, "uM45PositionLevel" },
3282 { 46, "uM46PositionLevel" },
3283 { 47, "uM47PositionLevel" },
3284 { 48, "uM48PositionLevel" },
3285 { 49, "uM49PositionLevel" },
3286 { 50, "uM50PositionLevelLevel" },
3287 { 51, "uM51PositionTime" },
3288 { 52, "uM52PositionTime" },
3289 { 53, "uM53PositionTime" },
3290 { 54, "uM54PositionTimeTime" },
3291 { 55, "uM55PositionSpeed" },
3292 { 56, "uM56PositionSpeed" },
3293 { 57, "uM57PositionSpeed" },
3294 { 58, "uM58PositionTimeLevel" },
3295 { 59, "uM59PositionTimeLevel" },
3296 { 60, "uM60PositionTimeLevel" },
3297 { 61, "uM61PositionLevelSpeed" },
3298 { 62, "uM62TimePositionLevel" },
3299 { 63, "uM63TimePositionLevelSpeed" },
3300 { 64, "uM64DistanceSpecifiedDirection" },
3301 { 65, "uM65PositionDistanceSpecifiedDirection" },
3302 { 66, "uM66TimeDistanceSpecifiedDirection" },
3303 { 67, "uM67NULL" },
3304 { 68, "uM68Position" },
3305 { 69, "uM69Time" },
3306 { 70, "uM70Position" },
3307 { 71, "uM71Time" },
3308 { 72, "uM72NULL" },
3309 { 73, "uM73DepartureClearance" },
3310 { 74, "uM74Position" },
3311 { 75, "uM75Position" },
3312 { 76, "uM76TimePosition" },
3313 { 77, "uM77PositionPosition" },
3314 { 78, "uM78LevelPosition" },
3315 { 79, "uM79PositionRouteClearance" },
3316 { 80, "uM80RouteClearance" },
3317 { 81, "uM81ProcedureName" },
3318 { 82, "uM82DistanceSpecifiedDirection" },
3319 { 83, "uM83PositionRouteClearance" },
3320 { 84, "uM84PositionProcedureName" },
3321 { 85, "uM85RouteClearance" },
3322 { 86, "uM86PositionRouteClearance" },
3323 { 87, "uM87Position" },
3324 { 88, "uM88PositionPosition" },
3325 { 89, "uM89TimePosition" },
3326 { 90, "uM90LevelPosition" },
3327 { 91, "uM91HoldClearance" },
3328 { 92, "uM92PositionLevel" },
3329 { 93, "uM93Time" },
3330 { 94, "uM94DirectionDegrees" },
3331 { 95, "uM95DirectionDegrees" },
3332 { 96, "uM96NULL" },
3333 { 97, "uM97PositionDegrees" },
3334 { 98, "uM98DirectionDegrees" },
3335 { 99, "uM99ProcedureName" },
3336 { 100, "uM100TimeSpeed" },
3337 { 101, "uM101PositionSpeed" },
3338 { 102, "uM102LevelSpeed" },
3339 { 103, "uM103TimeSpeedSpeed" },
3340 { 104, "uM104PositionSpeedSpeed" },
3341 { 105, "uM105LevelSpeedSpeed" },
3342 { 106, "uM106Speed" },
3343 { 107, "uM107NULL" },
3344 { 108, "uM108Speed" },
3345 { 109, "uM109Speed" },
3346 { 110, "uM110SpeedSpeed" },
3347 { 111, "uM111Speed" },
3348 { 112, "uM112Speed" },
3349 { 113, "uM113Speed" },
3350 { 114, "uM114Speed" },
3351 { 115, "uM115Speed" },
3352 { 116, "uM116NULL" },
3353 { 117, "uM117UnitNameFrequency" },
3354 { 118, "uM118PositionUnitNameFrequency" },
3355 { 119, "uM119TimeUnitNameFrequency" },
3356 { 120, "uM120UnitNameFrequency" },
3357 { 121, "uM121PositionUnitNameFrequency" },
3358 { 122, "uM122TimeUnitNameFrequency" },
3359 { 123, "uM123Code" },
3360 { 124, "uM124NULL" },
3361 { 125, "uM125NULL" },
3362 { 126, "uM126NULL" },
3363 { 127, "uM127NULL" },
3364 { 128, "uM128Level" },
3365 { 129, "uM129Level" },
3366 { 130, "uM130Position" },
3367 { 131, "uM131NULL" },
3368 { 132, "uM132NULL" },
3369 { 133, "uM133NULL" },
3370 { 134, "uM134SpeedTypeSpeedTypeSpeedType" },
3371 { 135, "uM135NULL" },
3372 { 136, "uM136NULL" },
3373 { 137, "uM137NULL" },
3374 { 138, "uM138NULL" },
3375 { 139, "uM139NULL" },
3376 { 140, "uM140NULL" },
3377 { 141, "uM141NULL" },
3378 { 142, "uM142NULL" },
3379 { 143, "uM143NULL" },
3380 { 144, "uM144NULL" },
3381 { 145, "uM145NULL" },
3382 { 146, "uM146NULL" },
3383 { 147, "uM147NULL" },
3384 { 148, "uM148Level" },
3385 { 149, "uM149LevelPosition" },
3386 { 150, "uM150LevelTime" },
3387 { 151, "uM151Speed" },
3388 { 152, "uM152DistanceSpecifiedDirection" },
3389 { 153, "uM153Altimeter" },
3390 { 154, "uM154NULL" },
3391 { 155, "uM155Position" },
3392 { 156, "uM156NULL" },
3393 { 157, "uM157Frequency" },
3394 { 158, "uM158AtisCode" },
3395 { 159, "uM159ErrorInformation" },
3396 { 160, "uM160Facility" },
3397 { 161, "uM161NULL" },
3398 { 162, "uM162NULL" },
3399 { 163, "uM163FacilityDesignation" },
3400 { 164, "uM164NULL" },
3401 { 165, "uM165NULL" },
3402 { 166, "uM166TrafficType" },
3403 { 167, "uM167NULL" },
3404 { 168, "uM168NULL" },
3405 { 169, "uM169FreeText" },
3406 { 170, "uM170FreeText" },
3407 { 171, "uM171VerticalRate" },
3408 { 172, "uM172VerticalRate" },
3409 { 173, "uM173VerticalRate" },
3410 { 174, "uM174VerticalRate" },
3411 { 175, "uM175Level" },
3412 { 176, "uM176NULL" },
3413 { 177, "uM177NULL" },
3414 { 178, "uM178NULL" },
3415 { 179, "uM179NULL" },
3416 { 180, "uM180LevelLevel" },
3417 { 181, "uM181ToFromPosition" },
3418 { 182, "uM182NULL" },
3419 { 183, "uM183FreeText" },
3420 { 184, "uM184TimeToFromPosition" },
3421 { 185, "uM185PositionLevel" },
3422 { 186, "uM186PositionLevel" },
3423 { 187, "uM187FreeText" },
3424 { 188, "uM188PositionSpeed" },
3425 { 189, "uM189Speed" },
3426 { 190, "uM190Degrees" },
3427 { 191, "uM191NULL" },
3428 { 192, "uM192LevelTime" },
3429 { 193, "uM193NULL" },
3430 { 194, "uM194FreeText" },
3431 { 195, "uM195FreeText" },
3432 { 196, "uM196FreeText" },
3433 { 197, "uM197FreeText" },
3434 { 198, "uM198FreeText" },
3435 { 199, "uM199FreeText" },
3436 { 200, "uM200NULL" },
3437 { 201, "uM201NULL" },
3438 { 202, "uM202NULL" },
3439 { 203, "uM203FreeText" },
3440 { 204, "uM204FreeText" },
3441 { 205, "uM205FreeText" },
3442 { 206, "uM206FreeText" },
3443 { 207, "uM207FreeText" },
3444 { 208, "uM208FreeText" },
3445 { 209, "uM209LevelPosition" },
3446 { 210, "uM210Position" },
3447 { 211, "uM211NULL" },
3448 { 212, "uM212FacilityDesignationATISCode" },
3449 { 213, "uM213FacilityDesignationAltimeter" },
3450 { 214, "uM214RunwayRVR" },
3451 { 215, "uM215DirectionDegrees" },
3452 { 216, "uM216NULL" },
3453 { 217, "uM217NULL" },
3454 { 218, "uM218NULL" },
3455 { 219, "uM219Level" },
3456 { 220, "uM220Level" },
3457 { 221, "uM221Degrees" },
3458 { 222, "uM222NULL" },
3459 { 223, "uM223NULL" },
3460 { 224, "uM224NULL" },
3461 { 225, "uM225NULL" },
3462 { 226, "uM226Time" },
3463 { 227, "uM227NULL" },
3464 { 228, "uM228Position" },
3465 { 229, "uM229NULL" },
3466 { 230, "uM230NULL" },
3467 { 231, "uM231NULL" },
3468 { 232, "uM232NULL" },
3469 { 233, "uM233NULL" },
3470 { 234, "uM234NULL" },
3471 { 235, "uM235NULL" },
3472 { 236, "uM236NULL" },
3473 { 237, "uM237NULL" },
3474 { 0, NULL }
3477 static const per_choice_t ATCUplinkMsgElementId_choice[] = {
3478 { 0, &hf_atn_cpdlc_uM0NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3479 { 1, &hf_atn_cpdlc_uM1NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3480 { 2, &hf_atn_cpdlc_uM2NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3481 { 3, &hf_atn_cpdlc_uM3NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3482 { 4, &hf_atn_cpdlc_uM4NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3483 { 5, &hf_atn_cpdlc_uM5NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3484 { 6, &hf_atn_cpdlc_uM6Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3485 { 7, &hf_atn_cpdlc_uM7Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3486 { 8, &hf_atn_cpdlc_uM8Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3487 { 9, &hf_atn_cpdlc_uM9Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3488 { 10, &hf_atn_cpdlc_uM10Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3489 { 11, &hf_atn_cpdlc_uM11Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3490 { 12, &hf_atn_cpdlc_uM12Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3491 { 13, &hf_atn_cpdlc_uM13TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3492 { 14, &hf_atn_cpdlc_uM14PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3493 { 15, &hf_atn_cpdlc_uM15TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3494 { 16, &hf_atn_cpdlc_uM16PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3495 { 17, &hf_atn_cpdlc_uM17TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3496 { 18, &hf_atn_cpdlc_uM18PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3497 { 19, &hf_atn_cpdlc_uM19Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3498 { 20, &hf_atn_cpdlc_uM20Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3499 { 21, &hf_atn_cpdlc_uM21TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3500 { 22, &hf_atn_cpdlc_uM22PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3501 { 23, &hf_atn_cpdlc_uM23Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3502 { 24, &hf_atn_cpdlc_uM24TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
3503 { 25, &hf_atn_cpdlc_uM25PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3504 { 26, &hf_atn_cpdlc_uM26LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
3505 { 27, &hf_atn_cpdlc_uM27LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3506 { 28, &hf_atn_cpdlc_uM28LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
3507 { 29, &hf_atn_cpdlc_uM29LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3508 { 30, &hf_atn_cpdlc_uM30LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
3509 { 31, &hf_atn_cpdlc_uM31LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
3510 { 32, &hf_atn_cpdlc_uM32LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
3511 { 33, &hf_atn_cpdlc_uM33NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3512 { 34, &hf_atn_cpdlc_uM34Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3513 { 35, &hf_atn_cpdlc_uM35Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3514 { 36, &hf_atn_cpdlc_uM36Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3515 { 37, &hf_atn_cpdlc_uM37Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3516 { 38, &hf_atn_cpdlc_uM38Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3517 { 39, &hf_atn_cpdlc_uM39Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3518 { 40, &hf_atn_cpdlc_uM40NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3519 { 41, &hf_atn_cpdlc_uM41NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3520 { 42, &hf_atn_cpdlc_uM42PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3521 { 43, &hf_atn_cpdlc_uM43PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3522 { 44, &hf_atn_cpdlc_uM44PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3523 { 45, &hf_atn_cpdlc_uM45PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3524 { 46, &hf_atn_cpdlc_uM46PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3525 { 47, &hf_atn_cpdlc_uM47PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3526 { 48, &hf_atn_cpdlc_uM48PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3527 { 49, &hf_atn_cpdlc_uM49PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3528 { 50, &hf_atn_cpdlc_uM50PositionLevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevelLevel },
3529 { 51, &hf_atn_cpdlc_uM51PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime },
3530 { 52, &hf_atn_cpdlc_uM52PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime },
3531 { 53, &hf_atn_cpdlc_uM53PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime },
3532 { 54, &hf_atn_cpdlc_uM54PositionTimeTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeTime },
3533 { 55, &hf_atn_cpdlc_uM55PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3534 { 56, &hf_atn_cpdlc_uM56PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3535 { 57, &hf_atn_cpdlc_uM57PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3536 { 58, &hf_atn_cpdlc_uM58PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel },
3537 { 59, &hf_atn_cpdlc_uM59PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel },
3538 { 60, &hf_atn_cpdlc_uM60PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel },
3539 { 61, &hf_atn_cpdlc_uM61PositionLevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevelSpeed },
3540 { 62, &hf_atn_cpdlc_uM62TimePositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePositionLevel },
3541 { 63, &hf_atn_cpdlc_uM63TimePositionLevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePositionLevelSpeed },
3542 { 64, &hf_atn_cpdlc_uM64DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
3543 { 65, &hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDistanceSpecifiedDirection },
3544 { 66, &hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceSpecifiedDirection },
3545 { 67, &hf_atn_cpdlc_uM67NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3546 { 68, &hf_atn_cpdlc_uM68Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3547 { 69, &hf_atn_cpdlc_uM69Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3548 { 70, &hf_atn_cpdlc_uM70Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3549 { 71, &hf_atn_cpdlc_uM71Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3550 { 72, &hf_atn_cpdlc_uM72NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3551 { 73, &hf_atn_cpdlc_uM73DepartureClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DepartureClearance },
3552 { 74, &hf_atn_cpdlc_uM74Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3553 { 75, &hf_atn_cpdlc_uM75Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3554 { 76, &hf_atn_cpdlc_uM76TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition },
3555 { 77, &hf_atn_cpdlc_uM77PositionPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionPosition },
3556 { 78, &hf_atn_cpdlc_uM78LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3557 { 79, &hf_atn_cpdlc_uM79PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
3558 { 80, &hf_atn_cpdlc_uM80RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex },
3559 { 81, &hf_atn_cpdlc_uM81ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName },
3560 { 82, &hf_atn_cpdlc_uM82DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
3561 { 83, &hf_atn_cpdlc_uM83PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
3562 { 84, &hf_atn_cpdlc_uM84PositionProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionProcedureName },
3563 { 85, &hf_atn_cpdlc_uM85RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex },
3564 { 86, &hf_atn_cpdlc_uM86PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
3565 { 87, &hf_atn_cpdlc_uM87Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3566 { 88, &hf_atn_cpdlc_uM88PositionPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionPosition },
3567 { 89, &hf_atn_cpdlc_uM89TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition },
3568 { 90, &hf_atn_cpdlc_uM90LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3569 { 91, &hf_atn_cpdlc_uM91HoldClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_HoldClearance },
3570 { 92, &hf_atn_cpdlc_uM92PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3571 { 93, &hf_atn_cpdlc_uM93Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3572 { 94, &hf_atn_cpdlc_uM94DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees },
3573 { 95, &hf_atn_cpdlc_uM95DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees },
3574 { 96, &hf_atn_cpdlc_uM96NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3575 { 97, &hf_atn_cpdlc_uM97PositionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDegrees },
3576 { 98, &hf_atn_cpdlc_uM98DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees },
3577 { 99, &hf_atn_cpdlc_uM99ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName },
3578 { 100, &hf_atn_cpdlc_uM100TimeSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeSpeed },
3579 { 101, &hf_atn_cpdlc_uM101PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3580 { 102, &hf_atn_cpdlc_uM102LevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelSpeed },
3581 { 103, &hf_atn_cpdlc_uM103TimeSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeSpeedSpeed },
3582 { 104, &hf_atn_cpdlc_uM104PositionSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeedSpeed },
3583 { 105, &hf_atn_cpdlc_uM105LevelSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelSpeedSpeed },
3584 { 106, &hf_atn_cpdlc_uM106Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3585 { 107, &hf_atn_cpdlc_uM107NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3586 { 108, &hf_atn_cpdlc_uM108Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3587 { 109, &hf_atn_cpdlc_uM109Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3588 { 110, &hf_atn_cpdlc_uM110SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed },
3589 { 111, &hf_atn_cpdlc_uM111Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3590 { 112, &hf_atn_cpdlc_uM112Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3591 { 113, &hf_atn_cpdlc_uM113Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3592 { 114, &hf_atn_cpdlc_uM114Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3593 { 115, &hf_atn_cpdlc_uM115Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3594 { 116, &hf_atn_cpdlc_uM116NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3595 { 117, &hf_atn_cpdlc_uM117UnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency },
3596 { 118, &hf_atn_cpdlc_uM118PositionUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionUnitNameFrequency },
3597 { 119, &hf_atn_cpdlc_uM119TimeUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeUnitNameFrequency },
3598 { 120, &hf_atn_cpdlc_uM120UnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency },
3599 { 121, &hf_atn_cpdlc_uM121PositionUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionUnitNameFrequency },
3600 { 122, &hf_atn_cpdlc_uM122TimeUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeUnitNameFrequency },
3601 { 123, &hf_atn_cpdlc_uM123Code , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Code },
3602 { 124, &hf_atn_cpdlc_uM124NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3603 { 125, &hf_atn_cpdlc_uM125NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3604 { 126, &hf_atn_cpdlc_uM126NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3605 { 127, &hf_atn_cpdlc_uM127NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3606 { 128, &hf_atn_cpdlc_uM128Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3607 { 129, &hf_atn_cpdlc_uM129Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3608 { 130, &hf_atn_cpdlc_uM130Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3609 { 131, &hf_atn_cpdlc_uM131NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3610 { 132, &hf_atn_cpdlc_uM132NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3611 { 133, &hf_atn_cpdlc_uM133NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3612 { 134, &hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType },
3613 { 135, &hf_atn_cpdlc_uM135NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3614 { 136, &hf_atn_cpdlc_uM136NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3615 { 137, &hf_atn_cpdlc_uM137NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3616 { 138, &hf_atn_cpdlc_uM138NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3617 { 139, &hf_atn_cpdlc_uM139NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3618 { 140, &hf_atn_cpdlc_uM140NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3619 { 141, &hf_atn_cpdlc_uM141NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3620 { 142, &hf_atn_cpdlc_uM142NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3621 { 143, &hf_atn_cpdlc_uM143NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3622 { 144, &hf_atn_cpdlc_uM144NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3623 { 145, &hf_atn_cpdlc_uM145NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3624 { 146, &hf_atn_cpdlc_uM146NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3625 { 147, &hf_atn_cpdlc_uM147NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3626 { 148, &hf_atn_cpdlc_uM148Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3627 { 149, &hf_atn_cpdlc_uM149LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3628 { 150, &hf_atn_cpdlc_uM150LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
3629 { 151, &hf_atn_cpdlc_uM151Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3630 { 152, &hf_atn_cpdlc_uM152DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
3631 { 153, &hf_atn_cpdlc_uM153Altimeter, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Altimeter },
3632 { 154, &hf_atn_cpdlc_uM154NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3633 { 155, &hf_atn_cpdlc_uM155Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3634 { 156, &hf_atn_cpdlc_uM156NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3635 { 157, &hf_atn_cpdlc_uM157Frequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Frequency },
3636 { 158, &hf_atn_cpdlc_uM158AtisCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATISCode },
3637 { 159, &hf_atn_cpdlc_uM159ErrorInformation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ErrorInformation },
3638 { 160, &hf_atn_cpdlc_uM160Facility, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Facility },
3639 { 161, &hf_atn_cpdlc_uM161NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3640 { 162, &hf_atn_cpdlc_uM162NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3641 { 163, &hf_atn_cpdlc_uM163FacilityDesignation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignation },
3642 { 164, &hf_atn_cpdlc_uM164NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3643 { 165, &hf_atn_cpdlc_uM165NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3644 { 166, &hf_atn_cpdlc_uM166TrafficType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TrafficType },
3645 { 167, &hf_atn_cpdlc_uM167NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3646 { 168, &hf_atn_cpdlc_uM168NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3647 { 169, &hf_atn_cpdlc_uM169FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3648 { 170, &hf_atn_cpdlc_uM170FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3649 { 171, &hf_atn_cpdlc_uM171VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate },
3650 { 172, &hf_atn_cpdlc_uM172VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate },
3651 { 173, &hf_atn_cpdlc_uM173VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate },
3652 { 174, &hf_atn_cpdlc_uM174VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate },
3653 { 175, &hf_atn_cpdlc_uM175Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3654 { 176, &hf_atn_cpdlc_uM176NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3655 { 177, &hf_atn_cpdlc_uM177NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3656 { 178, &hf_atn_cpdlc_uM178NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3657 { 179, &hf_atn_cpdlc_uM179NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3658 { 180, &hf_atn_cpdlc_uM180LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
3659 { 181, &hf_atn_cpdlc_uM181ToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ToFromPosition },
3660 { 182, &hf_atn_cpdlc_uM182NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3661 { 183, &hf_atn_cpdlc_uM183FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3662 { 184, &hf_atn_cpdlc_uM184TimeToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeToFromPosition },
3663 { 185, &hf_atn_cpdlc_uM185PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3664 { 186, &hf_atn_cpdlc_uM186PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
3665 { 187, &hf_atn_cpdlc_uM187FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3666 { 188, &hf_atn_cpdlc_uM188PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed },
3667 { 189, &hf_atn_cpdlc_uM189Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
3668 { 190, &hf_atn_cpdlc_uM190Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
3669 { 191, &hf_atn_cpdlc_uM191NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3670 { 192, &hf_atn_cpdlc_uM192LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
3671 { 193, &hf_atn_cpdlc_uM193NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3672 { 194, &hf_atn_cpdlc_uM194FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3673 { 195, &hf_atn_cpdlc_uM195FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3674 { 196, &hf_atn_cpdlc_uM196FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3675 { 197, &hf_atn_cpdlc_uM197FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3676 { 198, &hf_atn_cpdlc_uM198FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3677 { 199, &hf_atn_cpdlc_uM199FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3678 { 200, &hf_atn_cpdlc_uM200NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3679 { 201, &hf_atn_cpdlc_uM201NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3680 { 202, &hf_atn_cpdlc_uM202NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3681 { 203, &hf_atn_cpdlc_uM203FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3682 { 204, &hf_atn_cpdlc_uM204FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3683 { 205, &hf_atn_cpdlc_uM205FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3684 { 206, &hf_atn_cpdlc_uM206FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3685 { 207, &hf_atn_cpdlc_uM207FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3686 { 208, &hf_atn_cpdlc_uM208FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
3687 { 209, &hf_atn_cpdlc_uM209LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition },
3688 { 210, &hf_atn_cpdlc_uM210Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3689 { 211, &hf_atn_cpdlc_uM211NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3690 { 212, &hf_atn_cpdlc_uM212FacilityDesignationATISCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignationATISCode },
3691 { 213, &hf_atn_cpdlc_uM213FacilityDesignationAltimeter, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignationAltimeter },
3692 { 214, &hf_atn_cpdlc_uM214RunwayRVR, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RunwayRVR },
3693 { 215, &hf_atn_cpdlc_uM215DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees },
3694 { 216, &hf_atn_cpdlc_uM216NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3695 { 217, &hf_atn_cpdlc_uM217NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3696 { 218, &hf_atn_cpdlc_uM218NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3697 { 219, &hf_atn_cpdlc_uM219Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3698 { 220, &hf_atn_cpdlc_uM220Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
3699 { 221, &hf_atn_cpdlc_uM221Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
3700 { 222, &hf_atn_cpdlc_uM222NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3701 { 223, &hf_atn_cpdlc_uM223NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3702 { 224, &hf_atn_cpdlc_uM224NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3703 { 225, &hf_atn_cpdlc_uM225NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3704 { 226, &hf_atn_cpdlc_uM226Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
3705 { 227, &hf_atn_cpdlc_uM227NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3706 { 228, &hf_atn_cpdlc_uM228Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
3707 { 229, &hf_atn_cpdlc_uM229NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3708 { 230, &hf_atn_cpdlc_uM230NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3709 { 231, &hf_atn_cpdlc_uM231NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3710 { 232, &hf_atn_cpdlc_uM232NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3711 { 233, &hf_atn_cpdlc_uM233NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3712 { 234, &hf_atn_cpdlc_uM234NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3713 { 235, &hf_atn_cpdlc_uM235NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3714 { 236, &hf_atn_cpdlc_uM236NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
3715 { 237, &hf_atn_cpdlc_uM237NULL , ASN1_NOT_EXTENSION_ROOT, dissect_atn_cpdlc_NULL },
3716 { 0, NULL, 0, NULL }
3719 static int
3720 dissect_atn_cpdlc_ATCUplinkMsgElementId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3721 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3722 ett_atn_cpdlc_ATCUplinkMsgElementId, ATCUplinkMsgElementId_choice,
3723 NULL);
3725 return offset;
3729 static const per_sequence_t SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId_sequence_of[1] = {
3730 { &hf_atn_cpdlc_atcuplinkmessagedata_elementids_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCUplinkMsgElementId },
3733 static int
3734 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_) {
3735 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3736 ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId, SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId_sequence_of,
3737 1, 5, FALSE);
3739 return offset;
3743 static const per_sequence_t SEQUENCE_SIZE_1_128_OF_RouteInformation_sequence_of[1] = {
3744 { &hf_atn_cpdlc_routeInformations_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteInformation },
3747 static int
3748 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_) {
3749 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3750 ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation, SEQUENCE_SIZE_1_128_OF_RouteInformation_sequence_of,
3751 1, 128, FALSE);
3753 return offset;
3757 static const value_string atn_cpdlc_ATWDistanceTolerance_vals[] = {
3758 { 0, "plus" },
3759 { 1, "minus" },
3760 { 0, NULL }
3764 static int
3765 dissect_atn_cpdlc_ATWDistanceTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3766 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3767 2, NULL, FALSE, 0, NULL);
3769 return offset;
3773 static const per_sequence_t ATWDistance_sequence[] = {
3774 { &hf_atn_cpdlc_atwDistanceTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWDistanceTolerance },
3775 { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance },
3776 { NULL, 0, 0, NULL }
3779 static int
3780 dissect_atn_cpdlc_ATWDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3781 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3782 ett_atn_cpdlc_ATWDistance, ATWDistance_sequence);
3784 return offset;
3788 static const value_string atn_cpdlc_ATWLevelTolerance_vals[] = {
3789 { 0, "at" },
3790 { 1, "atorabove" },
3791 { 2, "atorbelow" },
3792 { 0, NULL }
3796 static int
3797 dissect_atn_cpdlc_ATWLevelTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3798 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
3799 3, NULL, FALSE, 0, NULL);
3801 return offset;
3805 static const per_sequence_t ATWLevel_sequence[] = {
3806 { &hf_atn_cpdlc_atw , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWLevelTolerance },
3807 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
3808 { NULL, 0, 0, NULL }
3811 static int
3812 dissect_atn_cpdlc_ATWLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3813 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3814 ett_atn_cpdlc_ATWLevel, ATWLevel_sequence);
3816 return offset;
3820 static const per_sequence_t ATWLevelSequence_sequence_of[1] = {
3821 { &hf_atn_cpdlc_ATWLevelSequence_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWLevel },
3824 static int
3825 dissect_atn_cpdlc_ATWLevelSequence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3826 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3827 ett_atn_cpdlc_ATWLevelSequence, ATWLevelSequence_sequence_of,
3828 1, 2, FALSE);
3830 return offset;
3834 static const per_sequence_t ATWAlongTrackWaypoint_sequence[] = {
3835 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
3836 { &hf_atn_cpdlc_aTWDistance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWDistance },
3837 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
3838 { &hf_atn_cpdlc_aTWLevels , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevelSequence },
3839 { NULL, 0, 0, NULL }
3842 static int
3843 dissect_atn_cpdlc_ATWAlongTrackWaypoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3844 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3845 ett_atn_cpdlc_ATWAlongTrackWaypoint, ATWAlongTrackWaypoint_sequence);
3847 return offset;
3851 static const per_sequence_t SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint_sequence_of[1] = {
3852 { &hf_atn_cpdlc_aTWAlongTrackWaypoints_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWAlongTrackWaypoint },
3855 static int
3856 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_) {
3857 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3858 ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint, SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint_sequence_of,
3859 1, 8, FALSE);
3861 return offset;
3865 static const per_sequence_t LatitudeReportingPoints_sequence[] = {
3866 { &hf_atn_cpdlc_latitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDirection },
3867 { &hf_atn_cpdlc_latitudeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDegrees },
3868 { NULL, 0, 0, NULL }
3871 static int
3872 dissect_atn_cpdlc_LatitudeReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3873 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3874 ett_atn_cpdlc_LatitudeReportingPoints, LatitudeReportingPoints_sequence);
3876 return offset;
3880 static const per_sequence_t LongitudeReportingPoints_sequence[] = {
3881 { &hf_atn_cpdlc_longitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDirection },
3882 { &hf_atn_cpdlc_longitudeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDegrees },
3883 { NULL, 0, 0, NULL }
3886 static int
3887 dissect_atn_cpdlc_LongitudeReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3888 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3889 ett_atn_cpdlc_LongitudeReportingPoints, LongitudeReportingPoints_sequence);
3891 return offset;
3895 static const value_string atn_cpdlc_LatLonReportingPoints_vals[] = {
3896 { 0, "latitudeReportingPoints" },
3897 { 1, "longitudeReportingPoints" },
3898 { 0, NULL }
3901 static const per_choice_t LatLonReportingPoints_choice[] = {
3902 { 0, &hf_atn_cpdlc_latitudeReportingPoints, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeReportingPoints },
3903 { 1, &hf_atn_cpdlc_longitudeReportingPoints, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeReportingPoints },
3904 { 0, NULL, 0, NULL }
3907 static int
3908 dissect_atn_cpdlc_LatLonReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3909 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3910 ett_atn_cpdlc_LatLonReportingPoints, LatLonReportingPoints_choice,
3911 NULL);
3913 return offset;
3918 static int
3919 dissect_atn_cpdlc_DegreeIncrement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3920 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
3921 1U, 20U, NULL, FALSE);
3923 return offset;
3927 static const per_sequence_t ReportingPoints_sequence[] = {
3928 { &hf_atn_cpdlc_latLonReportingPoints, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonReportingPoints },
3929 { &hf_atn_cpdlc_degreeIncrement, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_DegreeIncrement },
3930 { NULL, 0, 0, NULL }
3933 static int
3934 dissect_atn_cpdlc_ReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3935 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3936 ett_atn_cpdlc_ReportingPoints, ReportingPoints_sequence);
3938 return offset;
3942 static const value_string atn_cpdlc_InterceptCourseFromSelection_vals[] = {
3943 { 0, "publishedIdentifier" },
3944 { 1, "latitudeLongitude" },
3945 { 2, "placeBearingPlaceBearing" },
3946 { 3, "placeBearingDistance" },
3947 { 0, NULL }
3950 static const per_choice_t InterceptCourseFromSelection_choice[] = {
3951 { 0, &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PublishedIdentifier },
3952 { 1, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude },
3953 { 2, &hf_atn_cpdlc_placeBearingPlaceBearing, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingPlaceBearing },
3954 { 3, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance },
3955 { 0, NULL, 0, NULL }
3958 static int
3959 dissect_atn_cpdlc_InterceptCourseFromSelection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3960 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
3961 ett_atn_cpdlc_InterceptCourseFromSelection, InterceptCourseFromSelection_choice,
3962 NULL);
3964 return offset;
3968 static const per_sequence_t InterceptCourseFrom_sequence[] = {
3969 { &hf_atn_cpdlc_fromSelection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_InterceptCourseFromSelection },
3970 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees },
3971 { NULL, 0, 0, NULL }
3974 static int
3975 dissect_atn_cpdlc_InterceptCourseFrom(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3976 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
3977 ett_atn_cpdlc_InterceptCourseFrom, InterceptCourseFrom_sequence);
3979 return offset;
3983 static const per_sequence_t SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom_sequence_of[1] = {
3984 { &hf_atn_cpdlc_interceptCourseFroms_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_InterceptCourseFrom },
3987 static int
3988 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_) {
3989 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
3990 ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom, SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom_sequence_of,
3991 1, 4, FALSE);
3993 return offset;
3997 static const per_sequence_t Holdatwaypoint_sequence[] = {
3998 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
3999 { &hf_atn_cpdlc_holdatwaypointspeedlow, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
4000 { &hf_atn_cpdlc_aTWlevel , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevel },
4001 { &hf_atn_cpdlc_holdatwaypointspeedhigh, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
4002 { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Direction },
4003 { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees },
4004 { &hf_atn_cpdlc_eFCtime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
4005 { &hf_atn_cpdlc_legtype , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LegType },
4006 { NULL, 0, 0, NULL }
4009 static int
4010 dissect_atn_cpdlc_Holdatwaypoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4011 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4012 ett_atn_cpdlc_Holdatwaypoint, Holdatwaypoint_sequence);
4014 return offset;
4018 static const per_sequence_t SEQUENCE_SIZE_1_8_OF_Holdatwaypoint_sequence_of[1] = {
4019 { &hf_atn_cpdlc_holdAtWaypoints_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Holdatwaypoint },
4022 static int
4023 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_) {
4024 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4025 ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint, SEQUENCE_SIZE_1_8_OF_Holdatwaypoint_sequence_of,
4026 1, 8, FALSE);
4028 return offset;
4032 static const per_sequence_t WaypointSpeedLevel_sequence[] = {
4033 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
4034 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
4035 { &hf_atn_cpdlc_aTWLevels , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevelSequence },
4036 { NULL, 0, 0, NULL }
4039 static int
4040 dissect_atn_cpdlc_WaypointSpeedLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4041 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4042 ett_atn_cpdlc_WaypointSpeedLevel, WaypointSpeedLevel_sequence);
4044 return offset;
4048 static const per_sequence_t SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel_sequence_of[1] = {
4049 { &hf_atn_cpdlc_waypointSpeedLevels_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WaypointSpeedLevel },
4052 static int
4053 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_) {
4054 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4055 ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel, SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel_sequence_of,
4056 1, 32, FALSE);
4058 return offset;
4062 static const per_sequence_t RTATime_sequence[] = {
4063 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4064 { &hf_atn_cpdlc_timeTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTolerance },
4065 { NULL, 0, 0, NULL }
4068 static int
4069 dissect_atn_cpdlc_RTATime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4070 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4071 ett_atn_cpdlc_RTATime, RTATime_sequence);
4073 return offset;
4078 static int
4079 dissect_atn_cpdlc_RTATolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4080 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4081 1U, 150U, NULL, FALSE);
4083 return offset;
4087 static const per_sequence_t RTARequiredTimeArrival_sequence[] = {
4088 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
4089 { &hf_atn_cpdlc_rTATime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RTATime },
4090 { &hf_atn_cpdlc_rTATolerance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RTATolerance },
4091 { NULL, 0, 0, NULL }
4094 static int
4095 dissect_atn_cpdlc_RTARequiredTimeArrival(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4096 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4097 ett_atn_cpdlc_RTARequiredTimeArrival, RTARequiredTimeArrival_sequence);
4099 return offset;
4103 static const per_sequence_t SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival_sequence_of[1] = {
4104 { &hf_atn_cpdlc_rTARequiredTimeArrivals_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RTARequiredTimeArrival },
4107 static int
4108 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_) {
4109 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4110 ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival, SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival_sequence_of,
4111 1, 32, FALSE);
4113 return offset;
4117 static const per_sequence_t RouteInformationAdditional_sequence[] = {
4118 { &hf_atn_cpdlc_aTWAlongTrackWaypoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint },
4119 { &hf_atn_cpdlc_reportingpoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ReportingPoints },
4120 { &hf_atn_cpdlc_interceptCourseFroms, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom },
4121 { &hf_atn_cpdlc_holdAtWaypoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint },
4122 { &hf_atn_cpdlc_waypointSpeedLevels, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel },
4123 { &hf_atn_cpdlc_rTARequiredTimeArrivals, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival },
4124 { NULL, 0, 0, NULL }
4127 static int
4128 dissect_atn_cpdlc_RouteInformationAdditional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4129 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4130 ett_atn_cpdlc_RouteInformationAdditional, RouteInformationAdditional_sequence);
4132 return offset;
4136 static const per_sequence_t RouteClearance_sequence[] = {
4137 { &hf_atn_cpdlc_airportDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport },
4138 { &hf_atn_cpdlc_airportDestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport },
4139 { &hf_atn_cpdlc_runwayDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway },
4140 { &hf_atn_cpdlc_procedureDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName },
4141 { &hf_atn_cpdlc_runwayArrival, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway },
4142 { &hf_atn_cpdlc_procedureApproach, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName },
4143 { &hf_atn_cpdlc_procedureArrival, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName },
4144 { &hf_atn_cpdlc_routeInformations, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation },
4145 { &hf_atn_cpdlc_routeInformationAdditional, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RouteInformationAdditional },
4146 { NULL, 0, 0, NULL }
4149 static int
4150 dissect_atn_cpdlc_RouteClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4151 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4152 ett_atn_cpdlc_RouteClearance, RouteClearance_sequence);
4154 return offset;
4158 static const per_sequence_t SEQUENCE_SIZE_1_2_OF_RouteClearance_sequence_of[1] = {
4159 { &hf_atn_cpdlc_routeClearanceData_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteClearance },
4162 static int
4163 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_) {
4164 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4165 ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance, SEQUENCE_SIZE_1_2_OF_RouteClearance_sequence_of,
4166 1, 2, FALSE);
4168 return offset;
4172 static const per_sequence_t T_atcuplinkmessagedata_constraineddata_sequence[] = {
4173 { &hf_atn_cpdlc_routeClearanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance },
4174 { NULL, 0, 0, NULL }
4177 static int
4178 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_) {
4179 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4180 ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata, T_atcuplinkmessagedata_constraineddata_sequence);
4182 return offset;
4186 static const per_sequence_t ATCUplinkMessageData_sequence[] = {
4187 { &hf_atn_cpdlc_atcuplinkmessagedata_elementids, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId },
4188 { &hf_atn_cpdlc_atcuplinkmessagedata_constraineddata, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_T_atcuplinkmessagedata_constraineddata },
4189 { NULL, 0, 0, NULL }
4192 static int
4193 dissect_atn_cpdlc_ATCUplinkMessageData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4194 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4195 ett_atn_cpdlc_ATCUplinkMessageData, ATCUplinkMessageData_sequence);
4197 return offset;
4201 static const per_sequence_t ATCUplinkMessage_sequence[] = {
4202 { &hf_atn_cpdlc_header , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCMessageHeader },
4203 { &hf_atn_cpdlc_atcuplinkmessage_messagedata, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCUplinkMessageData },
4204 { NULL, 0, 0, NULL }
4207 static int
4208 dissect_atn_cpdlc_ATCUplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4209 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4210 ett_atn_cpdlc_ATCUplinkMessage, ATCUplinkMessage_sequence);
4212 return offset;
4216 static const value_string atn_cpdlc_UplinkMessage_vals[] = {
4217 { 0, "noMessage" },
4218 { 1, "aTCUplinkMessage" },
4219 { 0, NULL }
4222 static const per_choice_t UplinkMessage_choice[] = {
4223 { 0, &hf_atn_cpdlc_noMessage , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL },
4224 { 1, &hf_atn_cpdlc_aTCUplinkMessage, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATCUplinkMessage },
4225 { 0, NULL, 0, NULL }
4228 static int
4229 dissect_atn_cpdlc_UplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4230 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4231 ett_atn_cpdlc_UplinkMessage, UplinkMessage_choice,
4232 NULL);
4234 return offset;
4239 static int
4240 dissect_atn_cpdlc_AircraftAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4241 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4242 24, 24, FALSE, NULL);
4244 return offset;
4248 static const per_sequence_t ForwardHeader_sequence[] = {
4249 { &hf_atn_cpdlc_dateTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DateTimeGroup },
4250 { &hf_atn_cpdlc_aircraftID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftFlightIdentification },
4251 { &hf_atn_cpdlc_aircraftAddress, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftAddress },
4252 { NULL, 0, 0, NULL }
4255 static int
4256 dissect_atn_cpdlc_ForwardHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4257 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4258 ett_atn_cpdlc_ForwardHeader, ForwardHeader_sequence);
4260 return offset;
4265 static int
4266 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_) {
4267 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
4268 NO_BOUND, NO_BOUND, FALSE, NULL);
4270 return offset;
4274 static const value_string atn_cpdlc_ForwardMessage_vals[] = {
4275 { 0, "upElementIDs" },
4276 { 1, "downElementIDs" },
4277 { 0, NULL }
4280 static const per_choice_t ForwardMessage_choice[] = {
4281 { 0, &hf_atn_cpdlc_upElementIDs, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_BIT_STRING },
4282 { 1, &hf_atn_cpdlc_downElementIDs, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_BIT_STRING },
4283 { 0, NULL, 0, NULL }
4286 static int
4287 dissect_atn_cpdlc_ForwardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4288 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4289 ett_atn_cpdlc_ForwardMessage, ForwardMessage_choice,
4290 NULL);
4292 return offset;
4296 static const per_sequence_t ATCForwardMessage_sequence[] = {
4297 { &hf_atn_cpdlc_forwardHeader, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ForwardHeader },
4298 { &hf_atn_cpdlc_forwardMessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ForwardMessage },
4299 { NULL, 0, 0, NULL }
4302 static int
4303 dissect_atn_cpdlc_ATCForwardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4304 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4305 ett_atn_cpdlc_ATCForwardMessage, ATCForwardMessage_sequence);
4307 return offset;
4311 static const value_string atn_cpdlc_ATCForwardResponse_vals[] = {
4312 { 0, "success" },
4313 { 1, "service-not-supported" },
4314 { 2, "version-not-equal" },
4315 { 0, NULL }
4319 static int
4320 dissect_atn_cpdlc_ATCForwardResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4321 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4322 3, NULL, TRUE, 0, NULL);
4324 return offset;
4328 static const value_string atn_cpdlc_GroundPDUs_vals[] = {
4329 { 0, "abortUser" },
4330 { 1, "abortProvider" },
4331 { 2, "startup" },
4332 { 3, "send" },
4333 { 4, "forward" },
4334 { 5, "forwardresponse" },
4335 { 0, NULL }
4338 static const per_choice_t GroundPDUs_choice[] = {
4339 { 0, &hf_atn_cpdlc_abortUser , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCUserAbortReason },
4340 { 1, &hf_atn_cpdlc_abortProvider, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCProviderAbortReason },
4341 { 2, &hf_atn_cpdlc_startup , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UplinkMessage },
4342 { 3, &hf_atn_cpdlc_groundpdus_send, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCUplinkMessage },
4343 { 4, &hf_atn_cpdlc_forward , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardMessage },
4344 { 5, &hf_atn_cpdlc_forwardresponse, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardResponse },
4345 { 0, NULL, 0, NULL }
4348 static int
4349 dissect_atn_cpdlc_GroundPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4350 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4351 ett_atn_cpdlc_GroundPDUs, GroundPDUs_choice,
4352 NULL);
4354 return offset;
4358 static const value_string atn_cpdlc_Mode_vals[] = {
4359 { 0, "cpdlc" },
4360 { 1, "dsc" },
4361 { 0, NULL }
4365 static int
4366 dissect_atn_cpdlc_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4367 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4368 2, NULL, FALSE, 0, NULL);
4370 return offset;
4374 static const value_string atn_cpdlc_ClearanceType_vals[] = {
4375 { 0, "noneSpecified" },
4376 { 1, "approach" },
4377 { 2, "departure" },
4378 { 3, "further" },
4379 { 4, "start-up" },
4380 { 5, "pushback" },
4381 { 6, "taxi" },
4382 { 7, "take-off" },
4383 { 8, "landing" },
4384 { 9, "oceanic" },
4385 { 10, "en-route" },
4386 { 11, "downstream" },
4387 { 0, NULL }
4391 static int
4392 dissect_atn_cpdlc_ClearanceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4393 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4394 12, NULL, TRUE, 0, NULL);
4396 return offset;
4401 static int
4402 dissect_atn_cpdlc_RemainingFuel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4403 offset = dissect_atn_cpdlc_Time(tvb, offset, actx, tree, hf_index);
4405 return offset;
4410 static int
4411 dissect_atn_cpdlc_Temperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4412 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4413 -100, 100U, NULL, FALSE);
4415 return offset;
4420 static int
4421 dissect_atn_cpdlc_WindDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4422 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4423 1U, 360U, NULL, FALSE);
4425 return offset;
4430 static int
4431 dissect_atn_cpdlc_WindSpeedEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4432 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4433 0U, 255U, NULL, FALSE);
4435 return offset;
4440 static int
4441 dissect_atn_cpdlc_WindSpeedMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4442 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4443 0U, 511U, NULL, FALSE);
4445 return offset;
4449 static const value_string atn_cpdlc_WindSpeed_vals[] = {
4450 { 0, "windSpeedEnglish" },
4451 { 1, "windSpeedMetric" },
4452 { 0, NULL }
4455 static const per_choice_t WindSpeed_choice[] = {
4456 { 0, &hf_atn_cpdlc_windSpeedEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_WindSpeedEnglish },
4457 { 1, &hf_atn_cpdlc_windSpeedMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_WindSpeedMetric },
4458 { 0, NULL, 0, NULL }
4461 static int
4462 dissect_atn_cpdlc_WindSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4463 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4464 ett_atn_cpdlc_WindSpeed, WindSpeed_choice,
4465 NULL);
4467 return offset;
4471 static const per_sequence_t Winds_sequence[] = {
4472 { &hf_atn_cpdlc_winds_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WindDirection },
4473 { &hf_atn_cpdlc_winds_speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WindSpeed },
4474 { NULL, 0, 0, NULL }
4477 static int
4478 dissect_atn_cpdlc_Winds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4479 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4480 ett_atn_cpdlc_Winds, Winds_sequence);
4482 return offset;
4486 static const value_string atn_cpdlc_Turbulence_vals[] = {
4487 { 0, "light" },
4488 { 1, "moderate" },
4489 { 2, "severe" },
4490 { 0, NULL }
4494 static int
4495 dissect_atn_cpdlc_Turbulence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4496 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4497 3, NULL, FALSE, 0, NULL);
4499 return offset;
4503 static const value_string atn_cpdlc_Icing_vals[] = {
4504 { 0, "reserved" },
4505 { 1, "light" },
4506 { 2, "moderate" },
4507 { 3, "severe" },
4508 { 0, NULL }
4512 static int
4513 dissect_atn_cpdlc_Icing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4514 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4515 4, NULL, FALSE, 0, NULL);
4517 return offset;
4521 static const value_string atn_cpdlc_VerticalDirection_vals[] = {
4522 { 0, "up" },
4523 { 1, "down" },
4524 { 0, NULL }
4528 static int
4529 dissect_atn_cpdlc_VerticalDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4530 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
4531 2, NULL, FALSE, 0, NULL);
4533 return offset;
4537 static const per_sequence_t VerticalChange_sequence[] = {
4538 { &hf_atn_cpdlc_vertical_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_VerticalDirection },
4539 { &hf_atn_cpdlc_rate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_VerticalRate },
4540 { NULL, 0, 0, NULL }
4543 static int
4544 dissect_atn_cpdlc_VerticalChange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4545 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4546 ett_atn_cpdlc_VerticalChange, VerticalChange_sequence);
4548 return offset;
4553 static int
4554 dissect_atn_cpdlc_Humidity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4555 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4556 0U, 100U, NULL, FALSE);
4558 return offset;
4562 static const per_sequence_t PositionReport_sequence[] = {
4563 { &hf_atn_cpdlc_positioncurrent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
4564 { &hf_atn_cpdlc_timeatpositioncurrent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4565 { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level },
4566 { &hf_atn_cpdlc_fixnext , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position },
4567 { &hf_atn_cpdlc_timeetaatfixnext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
4568 { &hf_atn_cpdlc_fixnextplusone, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position },
4569 { &hf_atn_cpdlc_timeetaatdestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
4570 { &hf_atn_cpdlc_remainingFuel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RemainingFuel },
4571 { &hf_atn_cpdlc_temperature, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Temperature },
4572 { &hf_atn_cpdlc_winds , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Winds },
4573 { &hf_atn_cpdlc_turbulence, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Turbulence },
4574 { &hf_atn_cpdlc_icing , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Icing },
4575 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed },
4576 { &hf_atn_cpdlc_speedground, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SpeedGround },
4577 { &hf_atn_cpdlc_verticalChange, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_VerticalChange },
4578 { &hf_atn_cpdlc_trackAngle, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees },
4579 { &hf_atn_cpdlc_heading , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees },
4580 { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Distance },
4581 { &hf_atn_cpdlc_humidity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Humidity },
4582 { &hf_atn_cpdlc_reportedWaypointPosition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position },
4583 { &hf_atn_cpdlc_reportedWaypointTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time },
4584 { &hf_atn_cpdlc_reportedWaypointLevel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Level },
4585 { NULL, 0, 0, NULL }
4588 static int
4589 dissect_atn_cpdlc_PositionReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4590 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4591 ett_atn_cpdlc_PositionReport, PositionReport_sequence);
4593 return offset;
4598 static int
4599 dissect_atn_cpdlc_PersonsOnBoard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4600 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4601 1U, 1024U, NULL, FALSE);
4603 return offset;
4607 static const per_sequence_t RemainingFuelPersonsOnBoard_sequence[] = {
4608 { &hf_atn_cpdlc_remainingFuel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RemainingFuel },
4609 { &hf_atn_cpdlc_personsOnBoard, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PersonsOnBoard },
4610 { NULL, 0, 0, NULL }
4613 static int
4614 dissect_atn_cpdlc_RemainingFuelPersonsOnBoard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4615 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4616 ett_atn_cpdlc_RemainingFuelPersonsOnBoard, RemainingFuelPersonsOnBoard_sequence);
4618 return offset;
4623 static int
4624 dissect_atn_cpdlc_VersionNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4625 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
4626 0U, 15U, NULL, FALSE);
4628 return offset;
4632 static const per_sequence_t TimeDistanceToFromPosition_sequence[] = {
4633 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4634 { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance },
4635 { &hf_atn_cpdlc_tofrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom },
4636 { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position },
4637 { NULL, 0, 0, NULL }
4640 static int
4641 dissect_atn_cpdlc_TimeDistanceToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4642 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4643 ett_atn_cpdlc_TimeDistanceToFromPosition, TimeDistanceToFromPosition_sequence);
4645 return offset;
4649 static const per_sequence_t SpeedTime_sequence[] = {
4650 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
4651 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4652 { NULL, 0, 0, NULL }
4655 static int
4656 dissect_atn_cpdlc_SpeedTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4657 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4658 ett_atn_cpdlc_SpeedTime, SpeedTime_sequence);
4660 return offset;
4664 static const per_sequence_t DistanceSpecifiedDirectionTime_sequence[] = {
4665 { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection },
4666 { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time },
4667 { NULL, 0, 0, NULL }
4670 static int
4671 dissect_atn_cpdlc_DistanceSpecifiedDirectionTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4672 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4673 ett_atn_cpdlc_DistanceSpecifiedDirectionTime, DistanceSpecifiedDirectionTime_sequence);
4675 return offset;
4679 static const per_sequence_t SpeedTypeSpeedTypeSpeedTypeSpeed_sequence[] = {
4680 { &hf_atn_cpdlc_speedTypes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType },
4681 { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed },
4682 { NULL, 0, 0, NULL }
4685 static int
4686 dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4687 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4688 ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed, SpeedTypeSpeedTypeSpeedTypeSpeed_sequence);
4690 return offset;
4694 static const value_string atn_cpdlc_ATCDownlinkMsgElementId_vals[] = {
4695 { 0, "dM0NULL" },
4696 { 1, "dM1NULL" },
4697 { 2, "dM2NULL" },
4698 { 3, "dM3NULL" },
4699 { 4, "dM4NULL" },
4700 { 5, "dM5NULL" },
4701 { 6, "dM6Level" },
4702 { 7, "dM7LevelLevel" },
4703 { 8, "dM8Level" },
4704 { 9, "dM9Level" },
4705 { 10, "dM10Level" },
4706 { 11, "dM11PositionLevel" },
4707 { 12, "dM12PositionLevel" },
4708 { 13, "dM13TimeLevel" },
4709 { 14, "dM14TimeLevel" },
4710 { 15, "dM15DistanceSpecifiedDirection" },
4711 { 16, "dM16PositionDistanceSpecifiedDirection" },
4712 { 17, "dM17TimeDistanceSpecifiedDirection" },
4713 { 18, "dM18Speed" },
4714 { 19, "dM19SpeedSpeed" },
4715 { 20, "dM20NULL" },
4716 { 21, "dM21Frequency" },
4717 { 22, "dM22Position" },
4718 { 23, "dM23ProcedureName" },
4719 { 24, "dM24RouteClearance" },
4720 { 25, "dM25ClearanceType" },
4721 { 26, "dM26PositionRouteClearance" },
4722 { 27, "dM27DistanceSpecifiedDirection" },
4723 { 28, "dM28Level" },
4724 { 29, "dM29Level" },
4725 { 30, "dM30Level" },
4726 { 31, "dM31Position" },
4727 { 32, "dM32Level" },
4728 { 33, "dM33Position" },
4729 { 34, "dM34Speed" },
4730 { 35, "dM35Degrees" },
4731 { 36, "dM36Degrees" },
4732 { 37, "dM37Level" },
4733 { 38, "dM38Level" },
4734 { 39, "dM39Speed" },
4735 { 40, "dM40RouteClearance" },
4736 { 41, "dM41NULL" },
4737 { 42, "dM42Position" },
4738 { 43, "dM43Time" },
4739 { 44, "dM44Position" },
4740 { 45, "dM45Position" },
4741 { 46, "dM46Time" },
4742 { 47, "dM47Code" },
4743 { 48, "dM48PositionReport" },
4744 { 49, "dM49Speed" },
4745 { 50, "dM50SpeedSpeed" },
4746 { 51, "dM51NULL" },
4747 { 52, "dM52NULL" },
4748 { 53, "dM53NULL" },
4749 { 54, "dM54Level" },
4750 { 55, "dM55NULL" },
4751 { 56, "dM56NULL" },
4752 { 57, "dM57RemainingFuelPersonsOnBoard" },
4753 { 58, "dM58NULL" },
4754 { 59, "dM59PositionRouteClearance" },
4755 { 60, "dM60DistanceSpecifiedDirection" },
4756 { 61, "dM61Level" },
4757 { 62, "dM62ErrorInformation" },
4758 { 63, "dM63NULL" },
4759 { 64, "dM64FacilityDesignation" },
4760 { 65, "dM65NULL" },
4761 { 66, "dM66NULL" },
4762 { 67, "dM67FreeText" },
4763 { 68, "dM68FreeText" },
4764 { 69, "dM69NULL" },
4765 { 70, "dM70Degrees" },
4766 { 71, "dM71Degrees" },
4767 { 72, "dM72Level" },
4768 { 73, "dM73Versionnumber" },
4769 { 74, "dM74NULL" },
4770 { 75, "dM75NULL" },
4771 { 76, "dM76LevelLevel" },
4772 { 77, "dM77LevelLevel" },
4773 { 78, "dM78TimeDistanceToFromPosition" },
4774 { 79, "dM79AtisCode" },
4775 { 80, "dM80DistanceSpecifiedDirection" },
4776 { 81, "dM81LevelTime" },
4777 { 82, "dM82Level" },
4778 { 83, "dM83SpeedTime" },
4779 { 84, "dM84Speed" },
4780 { 85, "dM85DistanceSpecifiedDirectionTime" },
4781 { 86, "dM86DistanceSpecifiedDirection" },
4782 { 87, "dM87Level" },
4783 { 88, "dM88Level" },
4784 { 89, "dM89UnitnameFrequency" },
4785 { 90, "dM90FreeText" },
4786 { 91, "dM91FreeText" },
4787 { 92, "dM92FreeText" },
4788 { 93, "dM93FreeText" },
4789 { 94, "dM94FreeText" },
4790 { 95, "dM95FreeText" },
4791 { 96, "dM96FreeText" },
4792 { 97, "dM97FreeText" },
4793 { 98, "dM98FreeText" },
4794 { 99, "dM99NULL" },
4795 { 100, "dM100NULL" },
4796 { 101, "dM101NULL" },
4797 { 102, "dM102NULL" },
4798 { 103, "dM103NULL" },
4799 { 104, "dM104PositionTime" },
4800 { 105, "dM105Airport" },
4801 { 106, "dM106Level" },
4802 { 107, "dM107NULL" },
4803 { 108, "dM108NULL" },
4804 { 109, "dM109Time" },
4805 { 110, "dM110Position" },
4806 { 111, "dM111TimePosition" },
4807 { 112, "dM112NULL" },
4808 { 113, "dM113SpeedTypeSpeedTypeSpeedTypeSpeed" },
4809 { 0, NULL }
4812 static const per_choice_t ATCDownlinkMsgElementId_choice[] = {
4813 { 0, &hf_atn_cpdlc_dM0NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4814 { 1, &hf_atn_cpdlc_dM1NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4815 { 2, &hf_atn_cpdlc_dM2NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4816 { 3, &hf_atn_cpdlc_dM3NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4817 { 4, &hf_atn_cpdlc_dM4NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4818 { 5, &hf_atn_cpdlc_dM5NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4819 { 6, &hf_atn_cpdlc_dM6Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4820 { 7, &hf_atn_cpdlc_dM7LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
4821 { 8, &hf_atn_cpdlc_dM8Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4822 { 9, &hf_atn_cpdlc_dM9Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4823 { 10, &hf_atn_cpdlc_dM10Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4824 { 11, &hf_atn_cpdlc_dM11PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
4825 { 12, &hf_atn_cpdlc_dM12PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel },
4826 { 13, &hf_atn_cpdlc_dM13TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
4827 { 14, &hf_atn_cpdlc_dM14TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel },
4828 { 15, &hf_atn_cpdlc_dM15DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4829 { 16, &hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDistanceSpecifiedDirection },
4830 { 17, &hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceSpecifiedDirection },
4831 { 18, &hf_atn_cpdlc_dM18Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4832 { 19, &hf_atn_cpdlc_dM19SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed },
4833 { 20, &hf_atn_cpdlc_dM20NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4834 { 21, &hf_atn_cpdlc_dM21Frequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Frequency },
4835 { 22, &hf_atn_cpdlc_dM22Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4836 { 23, &hf_atn_cpdlc_dM23ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName },
4837 { 24, &hf_atn_cpdlc_dM24RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex },
4838 { 25, &hf_atn_cpdlc_dM25ClearanceType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ClearanceType },
4839 { 26, &hf_atn_cpdlc_dM26PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
4840 { 27, &hf_atn_cpdlc_dM27DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4841 { 28, &hf_atn_cpdlc_dM28Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4842 { 29, &hf_atn_cpdlc_dM29Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4843 { 30, &hf_atn_cpdlc_dM30Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4844 { 31, &hf_atn_cpdlc_dM31Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4845 { 32, &hf_atn_cpdlc_dM32Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4846 { 33, &hf_atn_cpdlc_dM33Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4847 { 34, &hf_atn_cpdlc_dM34Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4848 { 35, &hf_atn_cpdlc_dM35Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
4849 { 36, &hf_atn_cpdlc_dM36Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
4850 { 37, &hf_atn_cpdlc_dM37Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4851 { 38, &hf_atn_cpdlc_dM38Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4852 { 39, &hf_atn_cpdlc_dM39Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4853 { 40, &hf_atn_cpdlc_dM40RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex },
4854 { 41, &hf_atn_cpdlc_dM41NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4855 { 42, &hf_atn_cpdlc_dM42Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4856 { 43, &hf_atn_cpdlc_dM43Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
4857 { 44, &hf_atn_cpdlc_dM44Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4858 { 45, &hf_atn_cpdlc_dM45Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4859 { 46, &hf_atn_cpdlc_dM46Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
4860 { 47, &hf_atn_cpdlc_dM47Code , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Code },
4861 { 48, &hf_atn_cpdlc_dM48PositionReport, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionReport },
4862 { 49, &hf_atn_cpdlc_dM49Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4863 { 50, &hf_atn_cpdlc_dM50SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed },
4864 { 51, &hf_atn_cpdlc_dM51NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4865 { 52, &hf_atn_cpdlc_dM52NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4866 { 53, &hf_atn_cpdlc_dM53NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4867 { 54, &hf_atn_cpdlc_dM54Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4868 { 55, &hf_atn_cpdlc_dM55NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4869 { 56, &hf_atn_cpdlc_dM56NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4870 { 57, &hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RemainingFuelPersonsOnBoard },
4871 { 58, &hf_atn_cpdlc_dM58NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4872 { 59, &hf_atn_cpdlc_dM59PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex },
4873 { 60, &hf_atn_cpdlc_dM60DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4874 { 61, &hf_atn_cpdlc_dM61Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4875 { 62, &hf_atn_cpdlc_dM62ErrorInformation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ErrorInformation },
4876 { 63, &hf_atn_cpdlc_dM63NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4877 { 64, &hf_atn_cpdlc_dM64FacilityDesignation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignation },
4878 { 65, &hf_atn_cpdlc_dM65NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4879 { 66, &hf_atn_cpdlc_dM66NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4880 { 67, &hf_atn_cpdlc_dM67FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4881 { 68, &hf_atn_cpdlc_dM68FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4882 { 69, &hf_atn_cpdlc_dM69NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4883 { 70, &hf_atn_cpdlc_dM70Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
4884 { 71, &hf_atn_cpdlc_dM71Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees },
4885 { 72, &hf_atn_cpdlc_dM72Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4886 { 73, &hf_atn_cpdlc_dM73Versionnumber, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VersionNumber },
4887 { 74, &hf_atn_cpdlc_dM74NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4888 { 75, &hf_atn_cpdlc_dM75NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4889 { 76, &hf_atn_cpdlc_dM76LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
4890 { 77, &hf_atn_cpdlc_dM77LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel },
4891 { 78, &hf_atn_cpdlc_dM78TimeDistanceToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceToFromPosition },
4892 { 79, &hf_atn_cpdlc_dM79AtisCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATISCode },
4893 { 80, &hf_atn_cpdlc_dM80DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4894 { 81, &hf_atn_cpdlc_dM81LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime },
4895 { 82, &hf_atn_cpdlc_dM82Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4896 { 83, &hf_atn_cpdlc_dM83SpeedTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTime },
4897 { 84, &hf_atn_cpdlc_dM84Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed },
4898 { 85, &hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirectionTime },
4899 { 86, &hf_atn_cpdlc_dM86DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection },
4900 { 87, &hf_atn_cpdlc_dM87Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4901 { 88, &hf_atn_cpdlc_dM88Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4902 { 89, &hf_atn_cpdlc_dM89UnitnameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency },
4903 { 90, &hf_atn_cpdlc_dM90FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4904 { 91, &hf_atn_cpdlc_dM91FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4905 { 92, &hf_atn_cpdlc_dM92FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4906 { 93, &hf_atn_cpdlc_dM93FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4907 { 94, &hf_atn_cpdlc_dM94FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4908 { 95, &hf_atn_cpdlc_dM95FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4909 { 96, &hf_atn_cpdlc_dM96FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4910 { 97, &hf_atn_cpdlc_dM97FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4911 { 98, &hf_atn_cpdlc_dM98FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText },
4912 { 99, &hf_atn_cpdlc_dM99NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4913 { 100, &hf_atn_cpdlc_dM100NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4914 { 101, &hf_atn_cpdlc_dM101NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4915 { 102, &hf_atn_cpdlc_dM102NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4916 { 103, &hf_atn_cpdlc_dM103NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4917 { 104, &hf_atn_cpdlc_dM104PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime },
4918 { 105, &hf_atn_cpdlc_dM105Airport, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Airport },
4919 { 106, &hf_atn_cpdlc_dM106Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level },
4920 { 107, &hf_atn_cpdlc_dM107NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4921 { 108, &hf_atn_cpdlc_dM108NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4922 { 109, &hf_atn_cpdlc_dM109Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time },
4923 { 110, &hf_atn_cpdlc_dM110Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position },
4924 { 111, &hf_atn_cpdlc_dM111TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition },
4925 { 112, &hf_atn_cpdlc_dM112NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL },
4926 { 113, &hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed },
4927 { 0, NULL, 0, NULL }
4930 static int
4931 dissect_atn_cpdlc_ATCDownlinkMsgElementId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4932 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
4933 ett_atn_cpdlc_ATCDownlinkMsgElementId, ATCDownlinkMsgElementId_choice,
4934 NULL);
4936 return offset;
4940 static const per_sequence_t SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId_sequence_of[1] = {
4941 { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCDownlinkMsgElementId },
4944 static int
4945 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_) {
4946 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
4947 ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId, SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId_sequence_of,
4948 1, 5, FALSE);
4950 return offset;
4954 static const per_sequence_t T_atcdownlinkmessagedata_constraineddata_sequence[] = {
4955 { &hf_atn_cpdlc_routeClearanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance },
4956 { NULL, 0, 0, NULL }
4959 static int
4960 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_) {
4961 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4962 ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata, T_atcdownlinkmessagedata_constraineddata_sequence);
4964 return offset;
4968 static const per_sequence_t ATCDownlinkMessageData_sequence[] = {
4969 { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId },
4970 { &hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata },
4971 { NULL, 0, 0, NULL }
4974 static int
4975 dissect_atn_cpdlc_ATCDownlinkMessageData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4976 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4977 ett_atn_cpdlc_ATCDownlinkMessageData, ATCDownlinkMessageData_sequence);
4979 return offset;
4983 static const per_sequence_t ATCDownlinkMessage_sequence[] = {
4984 { &hf_atn_cpdlc_header , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCMessageHeader },
4985 { &hf_atn_cpdlc_atcdownlinkmessage_messagedata, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCDownlinkMessageData },
4986 { NULL, 0, 0, NULL }
4989 static int
4990 dissect_atn_cpdlc_ATCDownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4991 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
4992 ett_atn_cpdlc_ATCDownlinkMessage, ATCDownlinkMessage_sequence);
4994 return offset;
4998 static const value_string atn_cpdlc_DownlinkMessage_vals[] = {
4999 { 0, "noMessage" },
5000 { 1, "aTCDownlinkMessage" },
5001 { 0, NULL }
5004 static const per_choice_t DownlinkMessage_choice[] = {
5005 { 0, &hf_atn_cpdlc_noMessage , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL },
5006 { 1, &hf_atn_cpdlc_aTCDownlinkMessage, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATCDownlinkMessage },
5007 { 0, NULL, 0, NULL }
5010 static int
5011 dissect_atn_cpdlc_DownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5012 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5013 ett_atn_cpdlc_DownlinkMessage, DownlinkMessage_choice,
5014 NULL);
5016 return offset;
5020 static const per_sequence_t StartDownMessage_sequence[] = {
5021 { &hf_atn_cpdlc_mode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Mode },
5022 { &hf_atn_cpdlc_startDownlinkMessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DownlinkMessage },
5023 { NULL, 0, 0, NULL }
5026 static int
5027 dissect_atn_cpdlc_StartDownMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5028 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5029 ett_atn_cpdlc_StartDownMessage, StartDownMessage_sequence);
5031 return offset;
5035 static const value_string atn_cpdlc_AircraftPDUs_vals[] = {
5036 { 0, "abortUser" },
5037 { 1, "abortProvider" },
5038 { 2, "startdown" },
5039 { 3, "send" },
5040 { 0, NULL }
5043 static const per_choice_t AircraftPDUs_choice[] = {
5044 { 0, &hf_atn_cpdlc_abortUser , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCUserAbortReason },
5045 { 1, &hf_atn_cpdlc_abortProvider, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCProviderAbortReason },
5046 { 2, &hf_atn_cpdlc_startdown , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_StartDownMessage },
5047 { 3, &hf_atn_cpdlc_aircraftpdus_send, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCDownlinkMessage },
5048 { 0, NULL, 0, NULL }
5051 static int
5052 dissect_atn_cpdlc_AircraftPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5053 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5054 ett_atn_cpdlc_AircraftPDUs, AircraftPDUs_choice,
5055 NULL);
5057 return offset;
5061 static const value_string atn_cpdlc_PMCPDLCUserAbortReason_vals[] = {
5062 { 0, "undefined" },
5063 { 1, "no-message-identification-numbers-available" },
5064 { 2, "duplicate-message-identification-numbers" },
5065 { 3, "no-longer-next-data-authority" },
5066 { 4, "current-data-authority-abort" },
5067 { 5, "commanded-termination" },
5068 { 6, "invalid-response" },
5069 { 7, "time-out-of-synchronisation" },
5070 { 8, "unknown-integrity-check" },
5071 { 9, "validation-failure" },
5072 { 10, "unable-to-decode-message" },
5073 { 11, "invalid-pdu" },
5074 { 12, "invalid-CPDLC-message" },
5075 { 0, NULL }
5079 static int
5080 dissect_atn_cpdlc_PMCPDLCUserAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5081 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5082 13, NULL, TRUE, 0, NULL);
5084 return offset;
5088 static const value_string atn_cpdlc_PMCPDLCProviderAbortReason_vals[] = {
5089 { 0, "timer-expired" },
5090 { 1, "undefined-error" },
5091 { 2, "invalid-PDU" },
5092 { 3, "protocol-error" },
5093 { 4, "communication-service-error" },
5094 { 5, "communication-service-failure" },
5095 { 6, "invalid-QOS-parameter" },
5096 { 7, "expected-PDU-missing" },
5097 { 0, NULL }
5101 static int
5102 dissect_atn_cpdlc_PMCPDLCProviderAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5103 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5104 8, NULL, TRUE, 0, NULL);
5106 return offset;
5111 static int
5112 dissect_atn_cpdlc_AlgorithmIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5113 proto_tree *top_tree=NULL;
5115 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree, NULL);
5118 return offset;
5123 static int
5124 dissect_atn_cpdlc_CPDLCMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5125 tvbuff_t *tvb_usr = NULL;
5127 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &tvb_usr);
5129 if (tvb_usr) {
5130 switch(check_heur_msg_type(actx->pinfo)){
5131 case dm:
5132 dissect_atn_cpdlc_ATCDownlinkMessage(tvb_new_subset_remaining(tvb_usr, 0), 0, actx, tree, hf_index);
5133 break;
5134 case um:
5135 dissect_atn_cpdlc_ATCUplinkMessage(tvb_new_subset_remaining(tvb_usr, 0), 0, actx , tree, hf_index);
5136 break;
5137 default:
5138 break;
5143 return offset;
5147 static const per_sequence_t ProtectedUplinkMessage_sequence[] = {
5148 { &hf_atn_cpdlc_algorithmIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_AlgorithmIdentifier },
5149 { &hf_atn_cpdlc_protectedMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_CPDLCMessage },
5150 { &hf_atn_cpdlc_integrityCheck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_BIT_STRING },
5151 { NULL, 0, 0, NULL }
5154 static int
5155 dissect_atn_cpdlc_ProtectedUplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5156 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5157 ett_atn_cpdlc_ProtectedUplinkMessage, ProtectedUplinkMessage_sequence);
5159 return offset;
5163 static const value_string atn_cpdlc_ProtectedGroundPDUs_vals[] = {
5164 { 0, "abortUser" },
5165 { 1, "abortProvider" },
5166 { 2, "startup" },
5167 { 3, "send" },
5168 { 4, "forward" },
5169 { 5, "forwardresponse" },
5170 { 0, NULL }
5173 static const per_choice_t ProtectedGroundPDUs_choice[] = {
5174 { 0, &hf_atn_cpdlc_pmcpdlcuserabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCUserAbortReason },
5175 { 1, &hf_atn_cpdlc_pmcpdlcproviderabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCProviderAbortReason },
5176 { 2, &hf_atn_cpdlc_protecteduplinkmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedUplinkMessage },
5177 { 3, &hf_atn_cpdlc_protecteduplinkmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedUplinkMessage },
5178 { 4, &hf_atn_cpdlc_forward , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardMessage },
5179 { 5, &hf_atn_cpdlc_forwardresponse, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardResponse },
5180 { 0, NULL, 0, NULL }
5183 static int
5184 dissect_atn_cpdlc_ProtectedGroundPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5185 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5186 ett_atn_cpdlc_ProtectedGroundPDUs, ProtectedGroundPDUs_choice,
5187 NULL);
5189 return offset;
5193 static const value_string atn_cpdlc_ProtectedMode_vals[] = {
5194 { 0, "cpdlc" },
5195 { 1, "dsc" },
5196 { 0, NULL }
5200 static int
5201 dissect_atn_cpdlc_ProtectedMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5202 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
5203 2, NULL, FALSE, 0, NULL);
5205 return offset;
5209 static const per_sequence_t ProtectedDownlinkMessage_sequence[] = {
5210 { &hf_atn_cpdlc_algorithmIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_AlgorithmIdentifier },
5211 { &hf_atn_cpdlc_protectedMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_CPDLCMessage },
5212 { &hf_atn_cpdlc_integrityCheck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_BIT_STRING },
5213 { NULL, 0, 0, NULL }
5216 static int
5217 dissect_atn_cpdlc_ProtectedDownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5218 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5219 ett_atn_cpdlc_ProtectedDownlinkMessage, ProtectedDownlinkMessage_sequence);
5221 return offset;
5225 static const per_sequence_t ProtectedStartDownMessage_sequence[] = {
5226 { &hf_atn_cpdlc_protectedmode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProtectedMode },
5227 { &hf_atn_cpdlc_protecteddownlinkmessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProtectedDownlinkMessage },
5228 { NULL, 0, 0, NULL }
5231 static int
5232 dissect_atn_cpdlc_ProtectedStartDownMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5233 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
5234 ett_atn_cpdlc_ProtectedStartDownMessage, ProtectedStartDownMessage_sequence);
5236 return offset;
5240 static const value_string atn_cpdlc_ProtectedAircraftPDUs_vals[] = {
5241 { 0, "abortUser" },
5242 { 1, "abortProvider" },
5243 { 2, "startdown" },
5244 { 3, "send" },
5245 { 0, NULL }
5248 static const per_choice_t ProtectedAircraftPDUs_choice[] = {
5249 { 0, &hf_atn_cpdlc_pmcpdlcuserabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCUserAbortReason },
5250 { 1, &hf_atn_cpdlc_pmcpdlcproviderabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCProviderAbortReason },
5251 { 2, &hf_atn_cpdlc_protectedstartDownmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedStartDownMessage },
5252 { 3, &hf_atn_cpdlc_send , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedDownlinkMessage },
5253 { 0, NULL, 0, NULL }
5256 static int
5257 dissect_atn_cpdlc_ProtectedAircraftPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5258 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
5259 ett_atn_cpdlc_ProtectedAircraftPDUs, ProtectedAircraftPDUs_choice,
5260 NULL);
5262 return offset;
5265 /*--- PDUs ---*/
5267 static void dissect_GroundPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
5268 asn1_ctx_t asn1_ctx;
5269 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
5270 dissect_atn_cpdlc_GroundPDUs(tvb, 0, &asn1_ctx, tree, hf_atn_cpdlc_GroundPDUs_PDU);
5272 static void dissect_AircraftPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
5273 asn1_ctx_t asn1_ctx;
5274 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
5275 dissect_atn_cpdlc_AircraftPDUs(tvb, 0, &asn1_ctx, tree, hf_atn_cpdlc_AircraftPDUs_PDU);
5277 static void dissect_ProtectedGroundPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
5278 asn1_ctx_t asn1_ctx;
5279 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
5280 dissect_atn_cpdlc_ProtectedGroundPDUs(tvb, 0, &asn1_ctx, tree, hf_atn_cpdlc_ProtectedGroundPDUs_PDU);
5282 static void dissect_ProtectedAircraftPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
5283 asn1_ctx_t asn1_ctx;
5284 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
5285 dissect_atn_cpdlc_ProtectedAircraftPDUs(tvb, 0, &asn1_ctx, tree, hf_atn_cpdlc_ProtectedAircraftPDUs_PDU);
5289 /*--- End of included file: packet-atn-cpdlc-fn.c ---*/
5290 #line 94 "../../asn1/atn-cpdlc/packet-atn-cpdlc-template.c"
5292 /* Wireshark ID of CPDLC protocol */
5293 static int proto_atn_cpdlc = -1;
5296 static int
5297 dissect_atn_cpdlc(
5298 tvbuff_t *tvb,
5299 packet_info *pinfo,
5300 proto_tree *tree,
5301 void *data _U_)
5303 /* note: */
5304 /* there are two co-existing applications of CPDLC: */
5305 /* "plain old" (ae-qualifier 2) and */
5306 /* "protected mode" (ae-qualifier 22) CPDLC. */
5307 /* "protected mode" was introduced to cope with a */
5308 /* safety issue in which a message would sent to the wrong aircraft. */
5310 /* note:*/
5311 /* The protection is an additional checksum and covers the message content, */
5312 /* the 24-bit address of the aircraft, the current flight id and */
5313 /* the current ground facility so that an aircraft would be able to reject */
5314 /* messages which are unexpected (i.e. messages to another flight or */
5315 /* messages from the wrong center). */
5317 /*note:*/
5318 /* although "plain old" CPDLC is more or less deprecated */
5319 /* many aircraft cannot perform */
5320 /* "protected mode" for this largely depends on */
5321 /* upgraded avionics packages */
5323 /*note:*/
5324 /* The use of CPDLC is *optional* as the pilot */
5325 /* may always use a voice radio channel to talk to the controller.*/
5327 proto_item *ti = NULL;
5328 proto_tree *atn_cpdlc_tree = NULL;
5329 atn_conversation_t *atn_cv = NULL;
5331 /* note: */
5332 /* we need the ae qualifier stored within the conversation */
5333 /* to decode "plain old cpdlc" or */
5334 /* "protected mode cpdlc correctly " */
5336 /* DT: dstref present, srcref is always zero */
5337 if((pinfo->clnp_dstref) && (!pinfo->clnp_srcref)){
5338 atn_cv = find_atn_conversation(
5339 &pinfo->dst,
5340 pinfo->clnp_dstref,
5341 &pinfo->src );
5343 /* CR: srcref present, dstref is always zero */
5344 if((!pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
5345 atn_cv = find_atn_conversation(
5346 &pinfo->src,
5347 pinfo->clnp_srcref,
5348 &pinfo->dst );
5350 /* CC: srcref and dstref present, always use src/srcref & dst */
5351 if((pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
5352 atn_cv = find_atn_conversation(
5353 &pinfo->src,
5354 pinfo->clnp_srcref,
5355 &pinfo->dst );
5358 if(!atn_cv){ /* atn conversation not found */
5359 return 0; }
5361 ti = proto_tree_add_text(
5362 tree,
5363 tvb,
5365 tvb_reported_length_remaining(tvb, 0) ,
5366 ATN_CPDLC_PROTO );
5368 atn_cpdlc_tree = proto_item_add_subtree(
5370 ett_atn_cpdlc);
5372 switch(atn_cv->ae_qualifier){
5373 case pmcpdlc:
5374 if( check_heur_msg_type(pinfo) == um ) {
5375 /* uplink PDU's = Ground PDU's */
5376 dissect_ProtectedGroundPDUs_PDU(
5377 tvb,
5378 pinfo,
5379 atn_cpdlc_tree);
5380 }else { /* downlink PDU's = Aircraft PDU's */
5381 dissect_ProtectedAircraftPDUs_PDU(
5382 tvb,
5383 pinfo,
5384 atn_cpdlc_tree);
5386 break;
5387 case cpdlc:
5388 if( check_heur_msg_type(pinfo) == um ) {
5389 /* uplink PDU's = Ground PDU's */
5390 dissect_GroundPDUs_PDU(
5391 tvb,
5392 pinfo,
5393 atn_cpdlc_tree);
5394 }else { /* downlink PDU's = Aircraft PDU's */
5395 dissect_AircraftPDUs_PDU(
5396 tvb,
5397 pinfo,
5398 atn_cpdlc_tree);
5400 break;
5401 default:
5402 break;
5404 return tvb_reported_length_remaining(tvb, 0);
5407 static gboolean
5408 dissect_atn_cpdlc_heur(
5409 tvbuff_t *tvb,
5410 packet_info *pinfo,
5411 proto_tree *tree,
5412 void *data _U_)
5414 atn_conversation_t *atn_cv = NULL;
5415 gboolean is_atn_cpdlc = FALSE;
5416 gboolean is_pm = FALSE;
5417 int type = no_msg;
5419 type = check_heur_msg_type(pinfo);
5421 switch(type){
5422 case um:
5423 TRY {
5424 dissect_ProtectedGroundPDUs_PDU(tvb, pinfo, NULL);
5425 is_atn_cpdlc = TRUE;
5426 is_pm = TRUE;}
5427 break;
5428 CATCH_ALL{
5429 is_atn_cpdlc = FALSE;
5430 is_pm = FALSE;}
5431 ENDTRY;
5432 TRY {
5433 dissect_GroundPDUs_PDU(tvb, pinfo, NULL);
5434 is_pm = FALSE;
5435 is_atn_cpdlc = TRUE;
5436 break;}
5437 CATCH_ALL{
5438 is_atn_cpdlc = FALSE;
5439 is_pm = FALSE;}
5440 ENDTRY;
5441 break;
5442 case dm:
5443 TRY {
5444 dissect_ProtectedAircraftPDUs_PDU(tvb, pinfo, NULL);
5445 is_atn_cpdlc = TRUE;
5446 is_pm = TRUE;
5447 break;}
5448 CATCH_ALL {
5449 is_atn_cpdlc = FALSE;
5450 is_pm = FALSE; }
5451 ENDTRY;
5452 TRY{
5453 dissect_AircraftPDUs_PDU(tvb, pinfo, NULL);
5454 is_atn_cpdlc = TRUE;
5455 is_pm = FALSE;
5456 break;}
5457 CATCH_ALL{
5458 is_atn_cpdlc = FALSE;
5459 is_pm = FALSE;}
5460 ENDTRY;
5461 break;
5462 default:
5463 break;
5466 if(is_atn_cpdlc){
5467 /* note: */
5468 /* all subsequent PDU's belonging to this conversation */
5469 /* are considered CPDLC */
5470 /* if the first CPDLC PDU has been decoded succesfully */
5471 /* (This is done in "atn-ulcs" by using "call_dissector_with_data()") */
5473 /* DT: dstref present, srcref is always zero */
5474 if((pinfo->clnp_dstref) && (!pinfo->clnp_srcref)){
5475 atn_cv = find_atn_conversation(&pinfo->dst,
5476 pinfo->clnp_dstref,
5477 &pinfo->src );
5479 /* CR: srcref present, dstref is always zero */
5480 if((!pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
5481 atn_cv = find_atn_conversation(&pinfo->src,
5482 pinfo->clnp_srcref,
5483 &pinfo->dst );
5485 /* CC: srcref and dstref present, always use src/srcref & dst */
5486 if((pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
5487 atn_cv = find_atn_conversation(&pinfo->src,
5488 pinfo->clnp_srcref,
5489 &pinfo->dst );
5492 if(atn_cv){ /* atn conversation found */
5493 if(is_pm == TRUE) {
5494 atn_cv->ae_qualifier = pmcpdlc; }
5495 else {
5496 atn_cv->ae_qualifier = cpdlc; }
5497 dissect_atn_cpdlc(tvb, pinfo, tree, NULL);
5499 }else { /* there should *always* be an atn conversation */
5500 is_atn_cpdlc = FALSE;
5503 return is_atn_cpdlc;
5508 void proto_register_atn_cpdlc (void)
5510 static hf_register_info hf_atn_cpdlc[] = {
5512 /*--- Included file: packet-atn-cpdlc-hfarr.c ---*/
5513 #line 1 "../../asn1/atn-cpdlc/packet-atn-cpdlc-hfarr.c"
5514 { &hf_atn_cpdlc_GroundPDUs_PDU,
5515 { "GroundPDUs", "atn-cpdlc.GroundPDUs",
5516 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_GroundPDUs_vals), 0,
5517 NULL, HFILL }},
5518 { &hf_atn_cpdlc_AircraftPDUs_PDU,
5519 { "AircraftPDUs", "atn-cpdlc.AircraftPDUs",
5520 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_AircraftPDUs_vals), 0,
5521 NULL, HFILL }},
5522 { &hf_atn_cpdlc_ProtectedGroundPDUs_PDU,
5523 { "ProtectedGroundPDUs", "atn-cpdlc.ProtectedGroundPDUs",
5524 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedGroundPDUs_vals), 0,
5525 NULL, HFILL }},
5526 { &hf_atn_cpdlc_ProtectedAircraftPDUs_PDU,
5527 { "ProtectedAircraftPDUs", "atn-cpdlc.ProtectedAircraftPDUs",
5528 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedAircraftPDUs_vals), 0,
5529 NULL, HFILL }},
5530 { &hf_atn_cpdlc_abortUser,
5531 { "abortUser", "atn-cpdlc.abortUser",
5532 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_CPDLCUserAbortReason_vals), 0,
5533 "CPDLCUserAbortReason", HFILL }},
5534 { &hf_atn_cpdlc_abortProvider,
5535 { "abortProvider", "atn-cpdlc.abortProvider",
5536 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_CPDLCProviderAbortReason_vals), 0,
5537 "CPDLCProviderAbortReason", HFILL }},
5538 { &hf_atn_cpdlc_startup,
5539 { "startup", "atn-cpdlc.startup",
5540 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_UplinkMessage_vals), 0,
5541 "UplinkMessage", HFILL }},
5542 { &hf_atn_cpdlc_groundpdus_send,
5543 { "send", "atn-cpdlc.send_element",
5544 FT_NONE, BASE_NONE, NULL, 0,
5545 "ATCUplinkMessage", HFILL }},
5546 { &hf_atn_cpdlc_forward,
5547 { "forward", "atn-cpdlc.forward_element",
5548 FT_NONE, BASE_NONE, NULL, 0,
5549 "ATCForwardMessage", HFILL }},
5550 { &hf_atn_cpdlc_forwardresponse,
5551 { "forwardresponse", "atn-cpdlc.forwardresponse",
5552 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCForwardResponse_vals), 0,
5553 "ATCForwardResponse", HFILL }},
5554 { &hf_atn_cpdlc_noMessage,
5555 { "noMessage", "atn-cpdlc.noMessage_element",
5556 FT_NONE, BASE_NONE, NULL, 0,
5557 NULL, HFILL }},
5558 { &hf_atn_cpdlc_aTCUplinkMessage,
5559 { "aTCUplinkMessage", "atn-cpdlc.aTCUplinkMessage_element",
5560 FT_NONE, BASE_NONE, NULL, 0,
5561 NULL, HFILL }},
5562 { &hf_atn_cpdlc_startdown,
5563 { "startdown", "atn-cpdlc.startdown_element",
5564 FT_NONE, BASE_NONE, NULL, 0,
5565 "StartDownMessage", HFILL }},
5566 { &hf_atn_cpdlc_aircraftpdus_send,
5567 { "send", "atn-cpdlc.send_element",
5568 FT_NONE, BASE_NONE, NULL, 0,
5569 "ATCDownlinkMessage", HFILL }},
5570 { &hf_atn_cpdlc_mode,
5571 { "mode", "atn-cpdlc.mode",
5572 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Mode_vals), 0,
5573 NULL, HFILL }},
5574 { &hf_atn_cpdlc_startDownlinkMessage,
5575 { "startDownlinkMessage", "atn-cpdlc.startDownlinkMessage",
5576 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_DownlinkMessage_vals), 0,
5577 "DownlinkMessage", HFILL }},
5578 { &hf_atn_cpdlc_aTCDownlinkMessage,
5579 { "aTCDownlinkMessage", "atn-cpdlc.aTCDownlinkMessage_element",
5580 FT_NONE, BASE_NONE, NULL, 0,
5581 NULL, HFILL }},
5582 { &hf_atn_cpdlc_pmcpdlcuserabortreason,
5583 { "abortUser", "atn-cpdlc.abortUser",
5584 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PMCPDLCUserAbortReason_vals), 0,
5585 "PMCPDLCUserAbortReason", HFILL }},
5586 { &hf_atn_cpdlc_pmcpdlcproviderabortreason,
5587 { "abortProvider", "atn-cpdlc.abortProvider",
5588 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PMCPDLCProviderAbortReason_vals), 0,
5589 "PMCPDLCProviderAbortReason", HFILL }},
5590 { &hf_atn_cpdlc_protecteduplinkmessage,
5591 { "startup", "atn-cpdlc.startup_element",
5592 FT_NONE, BASE_NONE, NULL, 0,
5593 "ProtectedUplinkMessage", HFILL }},
5594 { &hf_atn_cpdlc_algorithmIdentifier,
5595 { "algorithmIdentifier", "atn-cpdlc.algorithmIdentifier",
5596 FT_REL_OID, BASE_NONE, NULL, 0,
5597 NULL, HFILL }},
5598 { &hf_atn_cpdlc_protectedMessage,
5599 { "protectedMessage", "atn-cpdlc.protectedMessage",
5600 FT_BYTES, BASE_NONE, NULL, 0,
5601 "CPDLCMessage", HFILL }},
5602 { &hf_atn_cpdlc_integrityCheck,
5603 { "integrityCheck", "atn-cpdlc.integrityCheck",
5604 FT_BYTES, BASE_NONE, NULL, 0,
5605 "BIT_STRING", HFILL }},
5606 { &hf_atn_cpdlc_forwardHeader,
5607 { "forwardHeader", "atn-cpdlc.forwardHeader_element",
5608 FT_NONE, BASE_NONE, NULL, 0,
5609 NULL, HFILL }},
5610 { &hf_atn_cpdlc_forwardMessage,
5611 { "forwardMessage", "atn-cpdlc.forwardMessage",
5612 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ForwardMessage_vals), 0,
5613 NULL, HFILL }},
5614 { &hf_atn_cpdlc_dateTime,
5615 { "dateTime", "atn-cpdlc.dateTime_element",
5616 FT_NONE, BASE_NONE, NULL, 0,
5617 "DateTimeGroup", HFILL }},
5618 { &hf_atn_cpdlc_aircraftID,
5619 { "aircraftID", "atn-cpdlc.aircraftID",
5620 FT_STRING, BASE_NONE, NULL, 0,
5621 "AircraftFlightIdentification", HFILL }},
5622 { &hf_atn_cpdlc_aircraftAddress,
5623 { "aircraftAddress", "atn-cpdlc.aircraftAddress",
5624 FT_BYTES, BASE_NONE, NULL, 0,
5625 NULL, HFILL }},
5626 { &hf_atn_cpdlc_upElementIDs,
5627 { "upElementIDs", "atn-cpdlc.upElementIDs",
5628 FT_BYTES, BASE_NONE, NULL, 0,
5629 "BIT_STRING", HFILL }},
5630 { &hf_atn_cpdlc_downElementIDs,
5631 { "downElementIDs", "atn-cpdlc.downElementIDs",
5632 FT_BYTES, BASE_NONE, NULL, 0,
5633 "BIT_STRING", HFILL }},
5634 { &hf_atn_cpdlc_protectedstartDownmessage,
5635 { "startdown", "atn-cpdlc.startdown_element",
5636 FT_NONE, BASE_NONE, NULL, 0,
5637 "ProtectedStartDownMessage", HFILL }},
5638 { &hf_atn_cpdlc_send,
5639 { "send", "atn-cpdlc.send_element",
5640 FT_NONE, BASE_NONE, NULL, 0,
5641 "ProtectedDownlinkMessage", HFILL }},
5642 { &hf_atn_cpdlc_protectedmode,
5643 { "mode", "atn-cpdlc.mode",
5644 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedMode_vals), 0,
5645 "ProtectedMode", HFILL }},
5646 { &hf_atn_cpdlc_protecteddownlinkmessage,
5647 { "startDownlinkMessage", "atn-cpdlc.startDownlinkMessage_element",
5648 FT_NONE, BASE_NONE, NULL, 0,
5649 "ProtectedDownlinkMessage", HFILL }},
5650 { &hf_atn_cpdlc_header,
5651 { "header", "atn-cpdlc.header_element",
5652 FT_NONE, BASE_NONE, NULL, 0,
5653 "ATCMessageHeader", HFILL }},
5654 { &hf_atn_cpdlc_atcuplinkmessage_messagedata,
5655 { "messageData", "atn-cpdlc.messageData_element",
5656 FT_NONE, BASE_NONE, NULL, 0,
5657 "ATCUplinkMessageData", HFILL }},
5658 { &hf_atn_cpdlc_atcuplinkmessagedata_elementids,
5659 { "elementIds", "atn-cpdlc.elementIds",
5660 FT_UINT32, BASE_DEC, NULL, 0,
5661 "SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId", HFILL }},
5662 { &hf_atn_cpdlc_atcuplinkmessagedata_elementids_item,
5663 { "ATCUplinkMsgElementId", "atn-cpdlc.ATCUplinkMsgElementId",
5664 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCUplinkMsgElementId_vals), 0,
5665 NULL, HFILL }},
5666 { &hf_atn_cpdlc_atcuplinkmessagedata_constraineddata,
5667 { "constrainedData", "atn-cpdlc.constrainedData_element",
5668 FT_NONE, BASE_NONE, NULL, 0,
5669 "T_atcuplinkmessagedata_constraineddata", HFILL }},
5670 { &hf_atn_cpdlc_routeClearanceData,
5671 { "routeClearanceData", "atn-cpdlc.routeClearanceData",
5672 FT_UINT32, BASE_DEC, NULL, 0,
5673 "SEQUENCE_SIZE_1_2_OF_RouteClearance", HFILL }},
5674 { &hf_atn_cpdlc_routeClearanceData_item,
5675 { "RouteClearance", "atn-cpdlc.RouteClearance_element",
5676 FT_NONE, BASE_NONE, NULL, 0,
5677 NULL, HFILL }},
5678 { &hf_atn_cpdlc_atcdownlinkmessage_messagedata,
5679 { "messageData", "atn-cpdlc.messageData_element",
5680 FT_NONE, BASE_NONE, NULL, 0,
5681 "ATCDownlinkMessageData", HFILL }},
5682 { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids,
5683 { "elementIds", "atn-cpdlc.elementIds",
5684 FT_UINT32, BASE_DEC, NULL, 0,
5685 "SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId", HFILL }},
5686 { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item,
5687 { "ATCDownlinkMsgElementId", "atn-cpdlc.ATCDownlinkMsgElementId",
5688 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCDownlinkMsgElementId_vals), 0,
5689 NULL, HFILL }},
5690 { &hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata,
5691 { "constrainedData", "atn-cpdlc.constrainedData_element",
5692 FT_NONE, BASE_NONE, NULL, 0,
5693 "T_atcdownlinkmessagedata_constraineddata", HFILL }},
5694 { &hf_atn_cpdlc_messageIdNumber,
5695 { "messageIdNumber", "atn-cpdlc.messageIdNumber",
5696 FT_UINT32, BASE_DEC, NULL, 0,
5697 "MsgIdentificationNumber", HFILL }},
5698 { &hf_atn_cpdlc_messageRefNumber,
5699 { "messageRefNumber", "atn-cpdlc.messageRefNumber",
5700 FT_UINT32, BASE_DEC, NULL, 0,
5701 "MsgReferenceNumber", HFILL }},
5702 { &hf_atn_cpdlc_logicalAck,
5703 { "logicalAck", "atn-cpdlc.logicalAck",
5704 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LogicalAck_vals), 0,
5705 NULL, HFILL }},
5706 { &hf_atn_cpdlc_uM0NULL,
5707 { "uM0NULL", "atn-cpdlc.uM0NULL_element",
5708 FT_NONE, BASE_NONE, NULL, 0,
5709 NULL, HFILL }},
5710 { &hf_atn_cpdlc_uM1NULL,
5711 { "uM1NULL", "atn-cpdlc.uM1NULL_element",
5712 FT_NONE, BASE_NONE, NULL, 0,
5713 NULL, HFILL }},
5714 { &hf_atn_cpdlc_uM2NULL,
5715 { "uM2NULL", "atn-cpdlc.uM2NULL_element",
5716 FT_NONE, BASE_NONE, NULL, 0,
5717 NULL, HFILL }},
5718 { &hf_atn_cpdlc_uM3NULL,
5719 { "uM3NULL", "atn-cpdlc.uM3NULL_element",
5720 FT_NONE, BASE_NONE, NULL, 0,
5721 NULL, HFILL }},
5722 { &hf_atn_cpdlc_uM4NULL,
5723 { "uM4NULL", "atn-cpdlc.uM4NULL_element",
5724 FT_NONE, BASE_NONE, NULL, 0,
5725 NULL, HFILL }},
5726 { &hf_atn_cpdlc_uM5NULL,
5727 { "uM5NULL", "atn-cpdlc.uM5NULL_element",
5728 FT_NONE, BASE_NONE, NULL, 0,
5729 NULL, HFILL }},
5730 { &hf_atn_cpdlc_uM6Level,
5731 { "uM6Level", "atn-cpdlc.uM6Level",
5732 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5733 "Level", HFILL }},
5734 { &hf_atn_cpdlc_uM7Time,
5735 { "uM7Time", "atn-cpdlc.uM7Time_element",
5736 FT_NONE, BASE_NONE, NULL, 0,
5737 "Time", HFILL }},
5738 { &hf_atn_cpdlc_uM8Position,
5739 { "uM8Position", "atn-cpdlc.uM8Position",
5740 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5741 "Position", HFILL }},
5742 { &hf_atn_cpdlc_uM9Time,
5743 { "uM9Time", "atn-cpdlc.uM9Time_element",
5744 FT_NONE, BASE_NONE, NULL, 0,
5745 "Time", HFILL }},
5746 { &hf_atn_cpdlc_uM10Position,
5747 { "uM10Position", "atn-cpdlc.uM10Position",
5748 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5749 "Position", HFILL }},
5750 { &hf_atn_cpdlc_uM11Time,
5751 { "uM11Time", "atn-cpdlc.uM11Time_element",
5752 FT_NONE, BASE_NONE, NULL, 0,
5753 "Time", HFILL }},
5754 { &hf_atn_cpdlc_uM12Position,
5755 { "uM12Position", "atn-cpdlc.uM12Position",
5756 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5757 "Position", HFILL }},
5758 { &hf_atn_cpdlc_uM13TimeLevel,
5759 { "uM13TimeLevel", "atn-cpdlc.uM13TimeLevel_element",
5760 FT_NONE, BASE_NONE, NULL, 0,
5761 "TimeLevel", HFILL }},
5762 { &hf_atn_cpdlc_uM14PositionLevel,
5763 { "uM14PositionLevel", "atn-cpdlc.uM14PositionLevel_element",
5764 FT_NONE, BASE_NONE, NULL, 0,
5765 "PositionLevel", HFILL }},
5766 { &hf_atn_cpdlc_uM15TimeLevel,
5767 { "uM15TimeLevel", "atn-cpdlc.uM15TimeLevel_element",
5768 FT_NONE, BASE_NONE, NULL, 0,
5769 "TimeLevel", HFILL }},
5770 { &hf_atn_cpdlc_uM16PositionLevel,
5771 { "uM16PositionLevel", "atn-cpdlc.uM16PositionLevel_element",
5772 FT_NONE, BASE_NONE, NULL, 0,
5773 "PositionLevel", HFILL }},
5774 { &hf_atn_cpdlc_uM17TimeLevel,
5775 { "uM17TimeLevel", "atn-cpdlc.uM17TimeLevel_element",
5776 FT_NONE, BASE_NONE, NULL, 0,
5777 "TimeLevel", HFILL }},
5778 { &hf_atn_cpdlc_uM18PositionLevel,
5779 { "uM18PositionLevel", "atn-cpdlc.uM18PositionLevel_element",
5780 FT_NONE, BASE_NONE, NULL, 0,
5781 "PositionLevel", HFILL }},
5782 { &hf_atn_cpdlc_uM19Level,
5783 { "uM19Level", "atn-cpdlc.uM19Level",
5784 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5785 "Level", HFILL }},
5786 { &hf_atn_cpdlc_uM20Level,
5787 { "uM20Level", "atn-cpdlc.uM20Level",
5788 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5789 "Level", HFILL }},
5790 { &hf_atn_cpdlc_uM21TimeLevel,
5791 { "uM21TimeLevel", "atn-cpdlc.uM21TimeLevel_element",
5792 FT_NONE, BASE_NONE, NULL, 0,
5793 "TimeLevel", HFILL }},
5794 { &hf_atn_cpdlc_uM22PositionLevel,
5795 { "uM22PositionLevel", "atn-cpdlc.uM22PositionLevel_element",
5796 FT_NONE, BASE_NONE, NULL, 0,
5797 "PositionLevel", HFILL }},
5798 { &hf_atn_cpdlc_uM23Level,
5799 { "uM23Level", "atn-cpdlc.uM23Level",
5800 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5801 "Level", HFILL }},
5802 { &hf_atn_cpdlc_uM24TimeLevel,
5803 { "uM24TimeLevel", "atn-cpdlc.uM24TimeLevel_element",
5804 FT_NONE, BASE_NONE, NULL, 0,
5805 "TimeLevel", HFILL }},
5806 { &hf_atn_cpdlc_uM25PositionLevel,
5807 { "uM25PositionLevel", "atn-cpdlc.uM25PositionLevel_element",
5808 FT_NONE, BASE_NONE, NULL, 0,
5809 "PositionLevel", HFILL }},
5810 { &hf_atn_cpdlc_uM26LevelTime,
5811 { "uM26LevelTime", "atn-cpdlc.uM26LevelTime_element",
5812 FT_NONE, BASE_NONE, NULL, 0,
5813 "LevelTime", HFILL }},
5814 { &hf_atn_cpdlc_uM27LevelPosition,
5815 { "uM27LevelPosition", "atn-cpdlc.uM27LevelPosition_element",
5816 FT_NONE, BASE_NONE, NULL, 0,
5817 "LevelPosition", HFILL }},
5818 { &hf_atn_cpdlc_uM28LevelTime,
5819 { "uM28LevelTime", "atn-cpdlc.uM28LevelTime_element",
5820 FT_NONE, BASE_NONE, NULL, 0,
5821 "LevelTime", HFILL }},
5822 { &hf_atn_cpdlc_uM29LevelPosition,
5823 { "uM29LevelPosition", "atn-cpdlc.uM29LevelPosition_element",
5824 FT_NONE, BASE_NONE, NULL, 0,
5825 "LevelPosition", HFILL }},
5826 { &hf_atn_cpdlc_uM30LevelLevel,
5827 { "uM30LevelLevel", "atn-cpdlc.uM30LevelLevel",
5828 FT_UINT32, BASE_DEC, NULL, 0,
5829 "LevelLevel", HFILL }},
5830 { &hf_atn_cpdlc_uM31LevelLevel,
5831 { "uM31LevelLevel", "atn-cpdlc.uM31LevelLevel",
5832 FT_UINT32, BASE_DEC, NULL, 0,
5833 "LevelLevel", HFILL }},
5834 { &hf_atn_cpdlc_uM32LevelLevel,
5835 { "uM32LevelLevel", "atn-cpdlc.uM32LevelLevel",
5836 FT_UINT32, BASE_DEC, NULL, 0,
5837 "LevelLevel", HFILL }},
5838 { &hf_atn_cpdlc_uM33NULL,
5839 { "uM33NULL", "atn-cpdlc.uM33NULL_element",
5840 FT_NONE, BASE_NONE, NULL, 0,
5841 NULL, HFILL }},
5842 { &hf_atn_cpdlc_uM34Level,
5843 { "uM34Level", "atn-cpdlc.uM34Level",
5844 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5845 "Level", HFILL }},
5846 { &hf_atn_cpdlc_uM35Level,
5847 { "uM35Level", "atn-cpdlc.uM35Level",
5848 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5849 "Level", HFILL }},
5850 { &hf_atn_cpdlc_uM36Level,
5851 { "uM36Level", "atn-cpdlc.uM36Level",
5852 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5853 "Level", HFILL }},
5854 { &hf_atn_cpdlc_uM37Level,
5855 { "uM37Level", "atn-cpdlc.uM37Level",
5856 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5857 "Level", HFILL }},
5858 { &hf_atn_cpdlc_uM38Level,
5859 { "uM38Level", "atn-cpdlc.uM38Level",
5860 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5861 "Level", HFILL }},
5862 { &hf_atn_cpdlc_uM39Level,
5863 { "uM39Level", "atn-cpdlc.uM39Level",
5864 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
5865 "Level", HFILL }},
5866 { &hf_atn_cpdlc_uM40NULL,
5867 { "uM40NULL", "atn-cpdlc.uM40NULL_element",
5868 FT_NONE, BASE_NONE, NULL, 0,
5869 NULL, HFILL }},
5870 { &hf_atn_cpdlc_uM41NULL,
5871 { "uM41NULL", "atn-cpdlc.uM41NULL_element",
5872 FT_NONE, BASE_NONE, NULL, 0,
5873 NULL, HFILL }},
5874 { &hf_atn_cpdlc_uM42PositionLevel,
5875 { "uM42PositionLevel", "atn-cpdlc.uM42PositionLevel_element",
5876 FT_NONE, BASE_NONE, NULL, 0,
5877 "PositionLevel", HFILL }},
5878 { &hf_atn_cpdlc_uM43PositionLevel,
5879 { "uM43PositionLevel", "atn-cpdlc.uM43PositionLevel_element",
5880 FT_NONE, BASE_NONE, NULL, 0,
5881 "PositionLevel", HFILL }},
5882 { &hf_atn_cpdlc_uM44PositionLevel,
5883 { "uM44PositionLevel", "atn-cpdlc.uM44PositionLevel_element",
5884 FT_NONE, BASE_NONE, NULL, 0,
5885 "PositionLevel", HFILL }},
5886 { &hf_atn_cpdlc_uM45PositionLevel,
5887 { "uM45PositionLevel", "atn-cpdlc.uM45PositionLevel_element",
5888 FT_NONE, BASE_NONE, NULL, 0,
5889 "PositionLevel", HFILL }},
5890 { &hf_atn_cpdlc_uM46PositionLevel,
5891 { "uM46PositionLevel", "atn-cpdlc.uM46PositionLevel_element",
5892 FT_NONE, BASE_NONE, NULL, 0,
5893 "PositionLevel", HFILL }},
5894 { &hf_atn_cpdlc_uM47PositionLevel,
5895 { "uM47PositionLevel", "atn-cpdlc.uM47PositionLevel_element",
5896 FT_NONE, BASE_NONE, NULL, 0,
5897 "PositionLevel", HFILL }},
5898 { &hf_atn_cpdlc_uM48PositionLevel,
5899 { "uM48PositionLevel", "atn-cpdlc.uM48PositionLevel_element",
5900 FT_NONE, BASE_NONE, NULL, 0,
5901 "PositionLevel", HFILL }},
5902 { &hf_atn_cpdlc_uM49PositionLevel,
5903 { "uM49PositionLevel", "atn-cpdlc.uM49PositionLevel_element",
5904 FT_NONE, BASE_NONE, NULL, 0,
5905 "PositionLevel", HFILL }},
5906 { &hf_atn_cpdlc_uM50PositionLevelLevel,
5907 { "uM50PositionLevelLevel", "atn-cpdlc.uM50PositionLevelLevel_element",
5908 FT_NONE, BASE_NONE, NULL, 0,
5909 "PositionLevelLevel", HFILL }},
5910 { &hf_atn_cpdlc_uM51PositionTime,
5911 { "uM51PositionTime", "atn-cpdlc.uM51PositionTime_element",
5912 FT_NONE, BASE_NONE, NULL, 0,
5913 "PositionTime", HFILL }},
5914 { &hf_atn_cpdlc_uM52PositionTime,
5915 { "uM52PositionTime", "atn-cpdlc.uM52PositionTime_element",
5916 FT_NONE, BASE_NONE, NULL, 0,
5917 "PositionTime", HFILL }},
5918 { &hf_atn_cpdlc_uM53PositionTime,
5919 { "uM53PositionTime", "atn-cpdlc.uM53PositionTime_element",
5920 FT_NONE, BASE_NONE, NULL, 0,
5921 "PositionTime", HFILL }},
5922 { &hf_atn_cpdlc_uM54PositionTimeTime,
5923 { "uM54PositionTimeTime", "atn-cpdlc.uM54PositionTimeTime_element",
5924 FT_NONE, BASE_NONE, NULL, 0,
5925 "PositionTimeTime", HFILL }},
5926 { &hf_atn_cpdlc_uM55PositionSpeed,
5927 { "uM55PositionSpeed", "atn-cpdlc.uM55PositionSpeed_element",
5928 FT_NONE, BASE_NONE, NULL, 0,
5929 "PositionSpeed", HFILL }},
5930 { &hf_atn_cpdlc_uM56PositionSpeed,
5931 { "uM56PositionSpeed", "atn-cpdlc.uM56PositionSpeed_element",
5932 FT_NONE, BASE_NONE, NULL, 0,
5933 "PositionSpeed", HFILL }},
5934 { &hf_atn_cpdlc_uM57PositionSpeed,
5935 { "uM57PositionSpeed", "atn-cpdlc.uM57PositionSpeed_element",
5936 FT_NONE, BASE_NONE, NULL, 0,
5937 "PositionSpeed", HFILL }},
5938 { &hf_atn_cpdlc_uM58PositionTimeLevel,
5939 { "uM58PositionTimeLevel", "atn-cpdlc.uM58PositionTimeLevel_element",
5940 FT_NONE, BASE_NONE, NULL, 0,
5941 "PositionTimeLevel", HFILL }},
5942 { &hf_atn_cpdlc_uM59PositionTimeLevel,
5943 { "uM59PositionTimeLevel", "atn-cpdlc.uM59PositionTimeLevel_element",
5944 FT_NONE, BASE_NONE, NULL, 0,
5945 "PositionTimeLevel", HFILL }},
5946 { &hf_atn_cpdlc_uM60PositionTimeLevel,
5947 { "uM60PositionTimeLevel", "atn-cpdlc.uM60PositionTimeLevel_element",
5948 FT_NONE, BASE_NONE, NULL, 0,
5949 "PositionTimeLevel", HFILL }},
5950 { &hf_atn_cpdlc_uM61PositionLevelSpeed,
5951 { "uM61PositionLevelSpeed", "atn-cpdlc.uM61PositionLevelSpeed_element",
5952 FT_NONE, BASE_NONE, NULL, 0,
5953 "PositionLevelSpeed", HFILL }},
5954 { &hf_atn_cpdlc_uM62TimePositionLevel,
5955 { "uM62TimePositionLevel", "atn-cpdlc.uM62TimePositionLevel_element",
5956 FT_NONE, BASE_NONE, NULL, 0,
5957 "TimePositionLevel", HFILL }},
5958 { &hf_atn_cpdlc_uM63TimePositionLevelSpeed,
5959 { "uM63TimePositionLevelSpeed", "atn-cpdlc.uM63TimePositionLevelSpeed_element",
5960 FT_NONE, BASE_NONE, NULL, 0,
5961 "TimePositionLevelSpeed", HFILL }},
5962 { &hf_atn_cpdlc_uM64DistanceSpecifiedDirection,
5963 { "uM64DistanceSpecifiedDirection", "atn-cpdlc.uM64DistanceSpecifiedDirection_element",
5964 FT_NONE, BASE_NONE, NULL, 0,
5965 "DistanceSpecifiedDirection", HFILL }},
5966 { &hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection,
5967 { "uM65PositionDistanceSpecifiedDirection", "atn-cpdlc.uM65PositionDistanceSpecifiedDirection_element",
5968 FT_NONE, BASE_NONE, NULL, 0,
5969 "PositionDistanceSpecifiedDirection", HFILL }},
5970 { &hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection,
5971 { "uM66TimeDistanceSpecifiedDirection", "atn-cpdlc.uM66TimeDistanceSpecifiedDirection_element",
5972 FT_NONE, BASE_NONE, NULL, 0,
5973 "TimeDistanceSpecifiedDirection", HFILL }},
5974 { &hf_atn_cpdlc_uM67NULL,
5975 { "uM67NULL", "atn-cpdlc.uM67NULL_element",
5976 FT_NONE, BASE_NONE, NULL, 0,
5977 NULL, HFILL }},
5978 { &hf_atn_cpdlc_uM68Position,
5979 { "uM68Position", "atn-cpdlc.uM68Position",
5980 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5981 "Position", HFILL }},
5982 { &hf_atn_cpdlc_uM69Time,
5983 { "uM69Time", "atn-cpdlc.uM69Time_element",
5984 FT_NONE, BASE_NONE, NULL, 0,
5985 "Time", HFILL }},
5986 { &hf_atn_cpdlc_uM70Position,
5987 { "uM70Position", "atn-cpdlc.uM70Position",
5988 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
5989 "Position", HFILL }},
5990 { &hf_atn_cpdlc_uM71Time,
5991 { "uM71Time", "atn-cpdlc.uM71Time_element",
5992 FT_NONE, BASE_NONE, NULL, 0,
5993 "Time", HFILL }},
5994 { &hf_atn_cpdlc_uM72NULL,
5995 { "uM72NULL", "atn-cpdlc.uM72NULL_element",
5996 FT_NONE, BASE_NONE, NULL, 0,
5997 NULL, HFILL }},
5998 { &hf_atn_cpdlc_uM73DepartureClearance,
5999 { "uM73DepartureClearance", "atn-cpdlc.uM73DepartureClearance_element",
6000 FT_NONE, BASE_NONE, NULL, 0,
6001 "DepartureClearance", HFILL }},
6002 { &hf_atn_cpdlc_uM74Position,
6003 { "uM74Position", "atn-cpdlc.uM74Position",
6004 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6005 "Position", HFILL }},
6006 { &hf_atn_cpdlc_uM75Position,
6007 { "uM75Position", "atn-cpdlc.uM75Position",
6008 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6009 "Position", HFILL }},
6010 { &hf_atn_cpdlc_uM76TimePosition,
6011 { "uM76TimePosition", "atn-cpdlc.uM76TimePosition_element",
6012 FT_NONE, BASE_NONE, NULL, 0,
6013 "TimePosition", HFILL }},
6014 { &hf_atn_cpdlc_uM77PositionPosition,
6015 { "uM77PositionPosition", "atn-cpdlc.uM77PositionPosition",
6016 FT_UINT32, BASE_DEC, NULL, 0,
6017 "PositionPosition", HFILL }},
6018 { &hf_atn_cpdlc_uM78LevelPosition,
6019 { "uM78LevelPosition", "atn-cpdlc.uM78LevelPosition_element",
6020 FT_NONE, BASE_NONE, NULL, 0,
6021 "LevelPosition", HFILL }},
6022 { &hf_atn_cpdlc_uM79PositionRouteClearance,
6023 { "uM79PositionRouteClearance", "atn-cpdlc.uM79PositionRouteClearance_element",
6024 FT_NONE, BASE_NONE, NULL, 0,
6025 "PositionRouteClearanceIndex", HFILL }},
6026 { &hf_atn_cpdlc_uM80RouteClearance,
6027 { "uM80RouteClearance", "atn-cpdlc.uM80RouteClearance",
6028 FT_UINT32, BASE_DEC, NULL, 0,
6029 "RouteClearanceIndex", HFILL }},
6030 { &hf_atn_cpdlc_uM81ProcedureName,
6031 { "uM81ProcedureName", "atn-cpdlc.uM81ProcedureName_element",
6032 FT_NONE, BASE_NONE, NULL, 0,
6033 "ProcedureName", HFILL }},
6034 { &hf_atn_cpdlc_uM82DistanceSpecifiedDirection,
6035 { "uM82DistanceSpecifiedDirection", "atn-cpdlc.uM82DistanceSpecifiedDirection_element",
6036 FT_NONE, BASE_NONE, NULL, 0,
6037 "DistanceSpecifiedDirection", HFILL }},
6038 { &hf_atn_cpdlc_uM83PositionRouteClearance,
6039 { "uM83PositionRouteClearance", "atn-cpdlc.uM83PositionRouteClearance_element",
6040 FT_NONE, BASE_NONE, NULL, 0,
6041 "PositionRouteClearanceIndex", HFILL }},
6042 { &hf_atn_cpdlc_uM84PositionProcedureName,
6043 { "uM84PositionProcedureName", "atn-cpdlc.uM84PositionProcedureName_element",
6044 FT_NONE, BASE_NONE, NULL, 0,
6045 "PositionProcedureName", HFILL }},
6046 { &hf_atn_cpdlc_uM85RouteClearance,
6047 { "uM85RouteClearance", "atn-cpdlc.uM85RouteClearance",
6048 FT_UINT32, BASE_DEC, NULL, 0,
6049 "RouteClearanceIndex", HFILL }},
6050 { &hf_atn_cpdlc_uM86PositionRouteClearance,
6051 { "uM86PositionRouteClearance", "atn-cpdlc.uM86PositionRouteClearance_element",
6052 FT_NONE, BASE_NONE, NULL, 0,
6053 "PositionRouteClearanceIndex", HFILL }},
6054 { &hf_atn_cpdlc_uM87Position,
6055 { "uM87Position", "atn-cpdlc.uM87Position",
6056 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6057 "Position", HFILL }},
6058 { &hf_atn_cpdlc_uM88PositionPosition,
6059 { "uM88PositionPosition", "atn-cpdlc.uM88PositionPosition",
6060 FT_UINT32, BASE_DEC, NULL, 0,
6061 "PositionPosition", HFILL }},
6062 { &hf_atn_cpdlc_uM89TimePosition,
6063 { "uM89TimePosition", "atn-cpdlc.uM89TimePosition_element",
6064 FT_NONE, BASE_NONE, NULL, 0,
6065 "TimePosition", HFILL }},
6066 { &hf_atn_cpdlc_uM90LevelPosition,
6067 { "uM90LevelPosition", "atn-cpdlc.uM90LevelPosition_element",
6068 FT_NONE, BASE_NONE, NULL, 0,
6069 "LevelPosition", HFILL }},
6070 { &hf_atn_cpdlc_uM91HoldClearance,
6071 { "uM91HoldClearance", "atn-cpdlc.uM91HoldClearance_element",
6072 FT_NONE, BASE_NONE, NULL, 0,
6073 "HoldClearance", HFILL }},
6074 { &hf_atn_cpdlc_uM92PositionLevel,
6075 { "uM92PositionLevel", "atn-cpdlc.uM92PositionLevel_element",
6076 FT_NONE, BASE_NONE, NULL, 0,
6077 "PositionLevel", HFILL }},
6078 { &hf_atn_cpdlc_uM93Time,
6079 { "uM93Time", "atn-cpdlc.uM93Time_element",
6080 FT_NONE, BASE_NONE, NULL, 0,
6081 "Time", HFILL }},
6082 { &hf_atn_cpdlc_uM94DirectionDegrees,
6083 { "uM94DirectionDegrees", "atn-cpdlc.uM94DirectionDegrees_element",
6084 FT_NONE, BASE_NONE, NULL, 0,
6085 "DirectionDegrees", HFILL }},
6086 { &hf_atn_cpdlc_uM95DirectionDegrees,
6087 { "uM95DirectionDegrees", "atn-cpdlc.uM95DirectionDegrees_element",
6088 FT_NONE, BASE_NONE, NULL, 0,
6089 "DirectionDegrees", HFILL }},
6090 { &hf_atn_cpdlc_uM96NULL,
6091 { "uM96NULL", "atn-cpdlc.uM96NULL_element",
6092 FT_NONE, BASE_NONE, NULL, 0,
6093 NULL, HFILL }},
6094 { &hf_atn_cpdlc_uM97PositionDegrees,
6095 { "uM97PositionDegrees", "atn-cpdlc.uM97PositionDegrees_element",
6096 FT_NONE, BASE_NONE, NULL, 0,
6097 "PositionDegrees", HFILL }},
6098 { &hf_atn_cpdlc_uM98DirectionDegrees,
6099 { "uM98DirectionDegrees", "atn-cpdlc.uM98DirectionDegrees_element",
6100 FT_NONE, BASE_NONE, NULL, 0,
6101 "DirectionDegrees", HFILL }},
6102 { &hf_atn_cpdlc_uM99ProcedureName,
6103 { "uM99ProcedureName", "atn-cpdlc.uM99ProcedureName_element",
6104 FT_NONE, BASE_NONE, NULL, 0,
6105 "ProcedureName", HFILL }},
6106 { &hf_atn_cpdlc_uM100TimeSpeed,
6107 { "uM100TimeSpeed", "atn-cpdlc.uM100TimeSpeed_element",
6108 FT_NONE, BASE_NONE, NULL, 0,
6109 "TimeSpeed", HFILL }},
6110 { &hf_atn_cpdlc_uM101PositionSpeed,
6111 { "uM101PositionSpeed", "atn-cpdlc.uM101PositionSpeed_element",
6112 FT_NONE, BASE_NONE, NULL, 0,
6113 "PositionSpeed", HFILL }},
6114 { &hf_atn_cpdlc_uM102LevelSpeed,
6115 { "uM102LevelSpeed", "atn-cpdlc.uM102LevelSpeed_element",
6116 FT_NONE, BASE_NONE, NULL, 0,
6117 "LevelSpeed", HFILL }},
6118 { &hf_atn_cpdlc_uM103TimeSpeedSpeed,
6119 { "uM103TimeSpeedSpeed", "atn-cpdlc.uM103TimeSpeedSpeed_element",
6120 FT_NONE, BASE_NONE, NULL, 0,
6121 "TimeSpeedSpeed", HFILL }},
6122 { &hf_atn_cpdlc_uM104PositionSpeedSpeed,
6123 { "uM104PositionSpeedSpeed", "atn-cpdlc.uM104PositionSpeedSpeed_element",
6124 FT_NONE, BASE_NONE, NULL, 0,
6125 "PositionSpeedSpeed", HFILL }},
6126 { &hf_atn_cpdlc_uM105LevelSpeedSpeed,
6127 { "uM105LevelSpeedSpeed", "atn-cpdlc.uM105LevelSpeedSpeed_element",
6128 FT_NONE, BASE_NONE, NULL, 0,
6129 "LevelSpeedSpeed", HFILL }},
6130 { &hf_atn_cpdlc_uM106Speed,
6131 { "uM106Speed", "atn-cpdlc.uM106Speed",
6132 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6133 "Speed", HFILL }},
6134 { &hf_atn_cpdlc_uM107NULL,
6135 { "uM107NULL", "atn-cpdlc.uM107NULL_element",
6136 FT_NONE, BASE_NONE, NULL, 0,
6137 NULL, HFILL }},
6138 { &hf_atn_cpdlc_uM108Speed,
6139 { "uM108Speed", "atn-cpdlc.uM108Speed",
6140 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6141 "Speed", HFILL }},
6142 { &hf_atn_cpdlc_uM109Speed,
6143 { "uM109Speed", "atn-cpdlc.uM109Speed",
6144 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6145 "Speed", HFILL }},
6146 { &hf_atn_cpdlc_uM110SpeedSpeed,
6147 { "uM110SpeedSpeed", "atn-cpdlc.uM110SpeedSpeed",
6148 FT_UINT32, BASE_DEC, NULL, 0,
6149 "SpeedSpeed", HFILL }},
6150 { &hf_atn_cpdlc_uM111Speed,
6151 { "uM111Speed", "atn-cpdlc.uM111Speed",
6152 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6153 "Speed", HFILL }},
6154 { &hf_atn_cpdlc_uM112Speed,
6155 { "uM112Speed", "atn-cpdlc.uM112Speed",
6156 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6157 "Speed", HFILL }},
6158 { &hf_atn_cpdlc_uM113Speed,
6159 { "uM113Speed", "atn-cpdlc.uM113Speed",
6160 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6161 "Speed", HFILL }},
6162 { &hf_atn_cpdlc_uM114Speed,
6163 { "uM114Speed", "atn-cpdlc.uM114Speed",
6164 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6165 "Speed", HFILL }},
6166 { &hf_atn_cpdlc_uM115Speed,
6167 { "uM115Speed", "atn-cpdlc.uM115Speed",
6168 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6169 "Speed", HFILL }},
6170 { &hf_atn_cpdlc_uM116NULL,
6171 { "uM116NULL", "atn-cpdlc.uM116NULL_element",
6172 FT_NONE, BASE_NONE, NULL, 0,
6173 NULL, HFILL }},
6174 { &hf_atn_cpdlc_uM117UnitNameFrequency,
6175 { "uM117UnitNameFrequency", "atn-cpdlc.uM117UnitNameFrequency_element",
6176 FT_NONE, BASE_NONE, NULL, 0,
6177 "UnitNameFrequency", HFILL }},
6178 { &hf_atn_cpdlc_uM118PositionUnitNameFrequency,
6179 { "uM118PositionUnitNameFrequency", "atn-cpdlc.uM118PositionUnitNameFrequency_element",
6180 FT_NONE, BASE_NONE, NULL, 0,
6181 "PositionUnitNameFrequency", HFILL }},
6182 { &hf_atn_cpdlc_uM119TimeUnitNameFrequency,
6183 { "uM119TimeUnitNameFrequency", "atn-cpdlc.uM119TimeUnitNameFrequency_element",
6184 FT_NONE, BASE_NONE, NULL, 0,
6185 "TimeUnitNameFrequency", HFILL }},
6186 { &hf_atn_cpdlc_uM120UnitNameFrequency,
6187 { "uM120UnitNameFrequency", "atn-cpdlc.uM120UnitNameFrequency_element",
6188 FT_NONE, BASE_NONE, NULL, 0,
6189 "UnitNameFrequency", HFILL }},
6190 { &hf_atn_cpdlc_uM121PositionUnitNameFrequency,
6191 { "uM121PositionUnitNameFrequency", "atn-cpdlc.uM121PositionUnitNameFrequency_element",
6192 FT_NONE, BASE_NONE, NULL, 0,
6193 "PositionUnitNameFrequency", HFILL }},
6194 { &hf_atn_cpdlc_uM122TimeUnitNameFrequency,
6195 { "uM122TimeUnitNameFrequency", "atn-cpdlc.uM122TimeUnitNameFrequency_element",
6196 FT_NONE, BASE_NONE, NULL, 0,
6197 "TimeUnitNameFrequency", HFILL }},
6198 { &hf_atn_cpdlc_uM123Code,
6199 { "uM123Code", "atn-cpdlc.uM123Code",
6200 FT_UINT32, BASE_DEC, NULL, 0,
6201 "Code", HFILL }},
6202 { &hf_atn_cpdlc_uM124NULL,
6203 { "uM124NULL", "atn-cpdlc.uM124NULL_element",
6204 FT_NONE, BASE_NONE, NULL, 0,
6205 NULL, HFILL }},
6206 { &hf_atn_cpdlc_uM125NULL,
6207 { "uM125NULL", "atn-cpdlc.uM125NULL_element",
6208 FT_NONE, BASE_NONE, NULL, 0,
6209 NULL, HFILL }},
6210 { &hf_atn_cpdlc_uM126NULL,
6211 { "uM126NULL", "atn-cpdlc.uM126NULL_element",
6212 FT_NONE, BASE_NONE, NULL, 0,
6213 NULL, HFILL }},
6214 { &hf_atn_cpdlc_uM127NULL,
6215 { "uM127NULL", "atn-cpdlc.uM127NULL_element",
6216 FT_NONE, BASE_NONE, NULL, 0,
6217 NULL, HFILL }},
6218 { &hf_atn_cpdlc_uM128Level,
6219 { "uM128Level", "atn-cpdlc.uM128Level",
6220 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6221 "Level", HFILL }},
6222 { &hf_atn_cpdlc_uM129Level,
6223 { "uM129Level", "atn-cpdlc.uM129Level",
6224 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6225 "Level", HFILL }},
6226 { &hf_atn_cpdlc_uM130Position,
6227 { "uM130Position", "atn-cpdlc.uM130Position",
6228 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6229 "Position", HFILL }},
6230 { &hf_atn_cpdlc_uM131NULL,
6231 { "uM131NULL", "atn-cpdlc.uM131NULL_element",
6232 FT_NONE, BASE_NONE, NULL, 0,
6233 NULL, HFILL }},
6234 { &hf_atn_cpdlc_uM132NULL,
6235 { "uM132NULL", "atn-cpdlc.uM132NULL_element",
6236 FT_NONE, BASE_NONE, NULL, 0,
6237 NULL, HFILL }},
6238 { &hf_atn_cpdlc_uM133NULL,
6239 { "uM133NULL", "atn-cpdlc.uM133NULL_element",
6240 FT_NONE, BASE_NONE, NULL, 0,
6241 NULL, HFILL }},
6242 { &hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType,
6243 { "uM134SpeedTypeSpeedTypeSpeedType", "atn-cpdlc.uM134SpeedTypeSpeedTypeSpeedType",
6244 FT_UINT32, BASE_DEC, NULL, 0,
6245 "SpeedTypeSpeedTypeSpeedType", HFILL }},
6246 { &hf_atn_cpdlc_uM135NULL,
6247 { "uM135NULL", "atn-cpdlc.uM135NULL_element",
6248 FT_NONE, BASE_NONE, NULL, 0,
6249 NULL, HFILL }},
6250 { &hf_atn_cpdlc_uM136NULL,
6251 { "uM136NULL", "atn-cpdlc.uM136NULL_element",
6252 FT_NONE, BASE_NONE, NULL, 0,
6253 NULL, HFILL }},
6254 { &hf_atn_cpdlc_uM137NULL,
6255 { "uM137NULL", "atn-cpdlc.uM137NULL_element",
6256 FT_NONE, BASE_NONE, NULL, 0,
6257 NULL, HFILL }},
6258 { &hf_atn_cpdlc_uM138NULL,
6259 { "uM138NULL", "atn-cpdlc.uM138NULL_element",
6260 FT_NONE, BASE_NONE, NULL, 0,
6261 NULL, HFILL }},
6262 { &hf_atn_cpdlc_uM139NULL,
6263 { "uM139NULL", "atn-cpdlc.uM139NULL_element",
6264 FT_NONE, BASE_NONE, NULL, 0,
6265 NULL, HFILL }},
6266 { &hf_atn_cpdlc_uM140NULL,
6267 { "uM140NULL", "atn-cpdlc.uM140NULL_element",
6268 FT_NONE, BASE_NONE, NULL, 0,
6269 NULL, HFILL }},
6270 { &hf_atn_cpdlc_uM141NULL,
6271 { "uM141NULL", "atn-cpdlc.uM141NULL_element",
6272 FT_NONE, BASE_NONE, NULL, 0,
6273 NULL, HFILL }},
6274 { &hf_atn_cpdlc_uM142NULL,
6275 { "uM142NULL", "atn-cpdlc.uM142NULL_element",
6276 FT_NONE, BASE_NONE, NULL, 0,
6277 NULL, HFILL }},
6278 { &hf_atn_cpdlc_uM143NULL,
6279 { "uM143NULL", "atn-cpdlc.uM143NULL_element",
6280 FT_NONE, BASE_NONE, NULL, 0,
6281 NULL, HFILL }},
6282 { &hf_atn_cpdlc_uM144NULL,
6283 { "uM144NULL", "atn-cpdlc.uM144NULL_element",
6284 FT_NONE, BASE_NONE, NULL, 0,
6285 NULL, HFILL }},
6286 { &hf_atn_cpdlc_uM145NULL,
6287 { "uM145NULL", "atn-cpdlc.uM145NULL_element",
6288 FT_NONE, BASE_NONE, NULL, 0,
6289 NULL, HFILL }},
6290 { &hf_atn_cpdlc_uM146NULL,
6291 { "uM146NULL", "atn-cpdlc.uM146NULL_element",
6292 FT_NONE, BASE_NONE, NULL, 0,
6293 NULL, HFILL }},
6294 { &hf_atn_cpdlc_uM147NULL,
6295 { "uM147NULL", "atn-cpdlc.uM147NULL_element",
6296 FT_NONE, BASE_NONE, NULL, 0,
6297 NULL, HFILL }},
6298 { &hf_atn_cpdlc_uM148Level,
6299 { "uM148Level", "atn-cpdlc.uM148Level",
6300 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6301 "Level", HFILL }},
6302 { &hf_atn_cpdlc_uM149LevelPosition,
6303 { "uM149LevelPosition", "atn-cpdlc.uM149LevelPosition_element",
6304 FT_NONE, BASE_NONE, NULL, 0,
6305 "LevelPosition", HFILL }},
6306 { &hf_atn_cpdlc_uM150LevelTime,
6307 { "uM150LevelTime", "atn-cpdlc.uM150LevelTime_element",
6308 FT_NONE, BASE_NONE, NULL, 0,
6309 "LevelTime", HFILL }},
6310 { &hf_atn_cpdlc_uM151Speed,
6311 { "uM151Speed", "atn-cpdlc.uM151Speed",
6312 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6313 "Speed", HFILL }},
6314 { &hf_atn_cpdlc_uM152DistanceSpecifiedDirection,
6315 { "uM152DistanceSpecifiedDirection", "atn-cpdlc.uM152DistanceSpecifiedDirection_element",
6316 FT_NONE, BASE_NONE, NULL, 0,
6317 "DistanceSpecifiedDirection", HFILL }},
6318 { &hf_atn_cpdlc_uM153Altimeter,
6319 { "uM153Altimeter", "atn-cpdlc.uM153Altimeter",
6320 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Altimeter_vals), 0,
6321 "Altimeter", HFILL }},
6322 { &hf_atn_cpdlc_uM154NULL,
6323 { "uM154NULL", "atn-cpdlc.uM154NULL_element",
6324 FT_NONE, BASE_NONE, NULL, 0,
6325 NULL, HFILL }},
6326 { &hf_atn_cpdlc_uM155Position,
6327 { "uM155Position", "atn-cpdlc.uM155Position",
6328 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6329 "Position", HFILL }},
6330 { &hf_atn_cpdlc_uM156NULL,
6331 { "uM156NULL", "atn-cpdlc.uM156NULL_element",
6332 FT_NONE, BASE_NONE, NULL, 0,
6333 NULL, HFILL }},
6334 { &hf_atn_cpdlc_uM157Frequency,
6335 { "uM157Frequency", "atn-cpdlc.uM157Frequency",
6336 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0,
6337 "Frequency", HFILL }},
6338 { &hf_atn_cpdlc_uM158AtisCode,
6339 { "uM158AtisCode", "atn-cpdlc.uM158AtisCode",
6340 FT_STRING, BASE_NONE, NULL, 0,
6341 "ATISCode", HFILL }},
6342 { &hf_atn_cpdlc_uM159ErrorInformation,
6343 { "uM159ErrorInformation", "atn-cpdlc.uM159ErrorInformation",
6344 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ErrorInformation_vals), 0,
6345 "ErrorInformation", HFILL }},
6346 { &hf_atn_cpdlc_uM160Facility,
6347 { "uM160Facility", "atn-cpdlc.uM160Facility",
6348 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Facility_vals), 0,
6349 "Facility", HFILL }},
6350 { &hf_atn_cpdlc_uM161NULL,
6351 { "uM161NULL", "atn-cpdlc.uM161NULL_element",
6352 FT_NONE, BASE_NONE, NULL, 0,
6353 NULL, HFILL }},
6354 { &hf_atn_cpdlc_uM162NULL,
6355 { "uM162NULL", "atn-cpdlc.uM162NULL_element",
6356 FT_NONE, BASE_NONE, NULL, 0,
6357 NULL, HFILL }},
6358 { &hf_atn_cpdlc_uM163FacilityDesignation,
6359 { "uM163FacilityDesignation", "atn-cpdlc.uM163FacilityDesignation",
6360 FT_STRING, BASE_NONE, NULL, 0,
6361 "FacilityDesignation", HFILL }},
6362 { &hf_atn_cpdlc_uM164NULL,
6363 { "uM164NULL", "atn-cpdlc.uM164NULL_element",
6364 FT_NONE, BASE_NONE, NULL, 0,
6365 NULL, HFILL }},
6366 { &hf_atn_cpdlc_uM165NULL,
6367 { "uM165NULL", "atn-cpdlc.uM165NULL_element",
6368 FT_NONE, BASE_NONE, NULL, 0,
6369 NULL, HFILL }},
6370 { &hf_atn_cpdlc_uM166TrafficType,
6371 { "uM166TrafficType", "atn-cpdlc.uM166TrafficType",
6372 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_TrafficType_vals), 0,
6373 "TrafficType", HFILL }},
6374 { &hf_atn_cpdlc_uM167NULL,
6375 { "uM167NULL", "atn-cpdlc.uM167NULL_element",
6376 FT_NONE, BASE_NONE, NULL, 0,
6377 NULL, HFILL }},
6378 { &hf_atn_cpdlc_uM168NULL,
6379 { "uM168NULL", "atn-cpdlc.uM168NULL_element",
6380 FT_NONE, BASE_NONE, NULL, 0,
6381 NULL, HFILL }},
6382 { &hf_atn_cpdlc_uM169FreeText,
6383 { "uM169FreeText", "atn-cpdlc.uM169FreeText",
6384 FT_STRING, BASE_NONE, NULL, 0,
6385 "FreeText", HFILL }},
6386 { &hf_atn_cpdlc_uM170FreeText,
6387 { "uM170FreeText", "atn-cpdlc.uM170FreeText",
6388 FT_STRING, BASE_NONE, NULL, 0,
6389 "FreeText", HFILL }},
6390 { &hf_atn_cpdlc_uM171VerticalRate,
6391 { "uM171VerticalRate", "atn-cpdlc.uM171VerticalRate",
6392 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
6393 "VerticalRate", HFILL }},
6394 { &hf_atn_cpdlc_uM172VerticalRate,
6395 { "uM172VerticalRate", "atn-cpdlc.uM172VerticalRate",
6396 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
6397 "VerticalRate", HFILL }},
6398 { &hf_atn_cpdlc_uM173VerticalRate,
6399 { "uM173VerticalRate", "atn-cpdlc.uM173VerticalRate",
6400 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
6401 "VerticalRate", HFILL }},
6402 { &hf_atn_cpdlc_uM174VerticalRate,
6403 { "uM174VerticalRate", "atn-cpdlc.uM174VerticalRate",
6404 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
6405 "VerticalRate", HFILL }},
6406 { &hf_atn_cpdlc_uM175Level,
6407 { "uM175Level", "atn-cpdlc.uM175Level",
6408 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6409 "Level", HFILL }},
6410 { &hf_atn_cpdlc_uM176NULL,
6411 { "uM176NULL", "atn-cpdlc.uM176NULL_element",
6412 FT_NONE, BASE_NONE, NULL, 0,
6413 NULL, HFILL }},
6414 { &hf_atn_cpdlc_uM177NULL,
6415 { "uM177NULL", "atn-cpdlc.uM177NULL_element",
6416 FT_NONE, BASE_NONE, NULL, 0,
6417 NULL, HFILL }},
6418 { &hf_atn_cpdlc_uM178NULL,
6419 { "uM178NULL", "atn-cpdlc.uM178NULL_element",
6420 FT_NONE, BASE_NONE, NULL, 0,
6421 NULL, HFILL }},
6422 { &hf_atn_cpdlc_uM179NULL,
6423 { "uM179NULL", "atn-cpdlc.uM179NULL_element",
6424 FT_NONE, BASE_NONE, NULL, 0,
6425 NULL, HFILL }},
6426 { &hf_atn_cpdlc_uM180LevelLevel,
6427 { "uM180LevelLevel", "atn-cpdlc.uM180LevelLevel",
6428 FT_UINT32, BASE_DEC, NULL, 0,
6429 "LevelLevel", HFILL }},
6430 { &hf_atn_cpdlc_uM181ToFromPosition,
6431 { "uM181ToFromPosition", "atn-cpdlc.uM181ToFromPosition_element",
6432 FT_NONE, BASE_NONE, NULL, 0,
6433 "ToFromPosition", HFILL }},
6434 { &hf_atn_cpdlc_uM182NULL,
6435 { "uM182NULL", "atn-cpdlc.uM182NULL_element",
6436 FT_NONE, BASE_NONE, NULL, 0,
6437 NULL, HFILL }},
6438 { &hf_atn_cpdlc_uM183FreeText,
6439 { "uM183FreeText", "atn-cpdlc.uM183FreeText",
6440 FT_STRING, BASE_NONE, NULL, 0,
6441 "FreeText", HFILL }},
6442 { &hf_atn_cpdlc_uM184TimeToFromPosition,
6443 { "uM184TimeToFromPosition", "atn-cpdlc.uM184TimeToFromPosition_element",
6444 FT_NONE, BASE_NONE, NULL, 0,
6445 "TimeToFromPosition", HFILL }},
6446 { &hf_atn_cpdlc_uM185PositionLevel,
6447 { "uM185PositionLevel", "atn-cpdlc.uM185PositionLevel_element",
6448 FT_NONE, BASE_NONE, NULL, 0,
6449 "PositionLevel", HFILL }},
6450 { &hf_atn_cpdlc_uM186PositionLevel,
6451 { "uM186PositionLevel", "atn-cpdlc.uM186PositionLevel_element",
6452 FT_NONE, BASE_NONE, NULL, 0,
6453 "PositionLevel", HFILL }},
6454 { &hf_atn_cpdlc_uM187FreeText,
6455 { "uM187FreeText", "atn-cpdlc.uM187FreeText",
6456 FT_STRING, BASE_NONE, NULL, 0,
6457 "FreeText", HFILL }},
6458 { &hf_atn_cpdlc_uM188PositionSpeed,
6459 { "uM188PositionSpeed", "atn-cpdlc.uM188PositionSpeed_element",
6460 FT_NONE, BASE_NONE, NULL, 0,
6461 "PositionSpeed", HFILL }},
6462 { &hf_atn_cpdlc_uM189Speed,
6463 { "uM189Speed", "atn-cpdlc.uM189Speed",
6464 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6465 "Speed", HFILL }},
6466 { &hf_atn_cpdlc_uM190Degrees,
6467 { "uM190Degrees", "atn-cpdlc.uM190Degrees",
6468 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6469 "Degrees", HFILL }},
6470 { &hf_atn_cpdlc_uM191NULL,
6471 { "uM191NULL", "atn-cpdlc.uM191NULL_element",
6472 FT_NONE, BASE_NONE, NULL, 0,
6473 NULL, HFILL }},
6474 { &hf_atn_cpdlc_uM192LevelTime,
6475 { "uM192LevelTime", "atn-cpdlc.uM192LevelTime_element",
6476 FT_NONE, BASE_NONE, NULL, 0,
6477 "LevelTime", HFILL }},
6478 { &hf_atn_cpdlc_uM193NULL,
6479 { "uM193NULL", "atn-cpdlc.uM193NULL_element",
6480 FT_NONE, BASE_NONE, NULL, 0,
6481 NULL, HFILL }},
6482 { &hf_atn_cpdlc_uM194FreeText,
6483 { "uM194FreeText", "atn-cpdlc.uM194FreeText",
6484 FT_STRING, BASE_NONE, NULL, 0,
6485 "FreeText", HFILL }},
6486 { &hf_atn_cpdlc_uM195FreeText,
6487 { "uM195FreeText", "atn-cpdlc.uM195FreeText",
6488 FT_STRING, BASE_NONE, NULL, 0,
6489 "FreeText", HFILL }},
6490 { &hf_atn_cpdlc_uM196FreeText,
6491 { "uM196FreeText", "atn-cpdlc.uM196FreeText",
6492 FT_STRING, BASE_NONE, NULL, 0,
6493 "FreeText", HFILL }},
6494 { &hf_atn_cpdlc_uM197FreeText,
6495 { "uM197FreeText", "atn-cpdlc.uM197FreeText",
6496 FT_STRING, BASE_NONE, NULL, 0,
6497 "FreeText", HFILL }},
6498 { &hf_atn_cpdlc_uM198FreeText,
6499 { "uM198FreeText", "atn-cpdlc.uM198FreeText",
6500 FT_STRING, BASE_NONE, NULL, 0,
6501 "FreeText", HFILL }},
6502 { &hf_atn_cpdlc_uM199FreeText,
6503 { "uM199FreeText", "atn-cpdlc.uM199FreeText",
6504 FT_STRING, BASE_NONE, NULL, 0,
6505 "FreeText", HFILL }},
6506 { &hf_atn_cpdlc_uM200NULL,
6507 { "uM200NULL", "atn-cpdlc.uM200NULL_element",
6508 FT_NONE, BASE_NONE, NULL, 0,
6509 NULL, HFILL }},
6510 { &hf_atn_cpdlc_uM201NULL,
6511 { "uM201NULL", "atn-cpdlc.uM201NULL_element",
6512 FT_NONE, BASE_NONE, NULL, 0,
6513 NULL, HFILL }},
6514 { &hf_atn_cpdlc_uM202NULL,
6515 { "uM202NULL", "atn-cpdlc.uM202NULL_element",
6516 FT_NONE, BASE_NONE, NULL, 0,
6517 NULL, HFILL }},
6518 { &hf_atn_cpdlc_uM203FreeText,
6519 { "uM203FreeText", "atn-cpdlc.uM203FreeText",
6520 FT_STRING, BASE_NONE, NULL, 0,
6521 "FreeText", HFILL }},
6522 { &hf_atn_cpdlc_uM204FreeText,
6523 { "uM204FreeText", "atn-cpdlc.uM204FreeText",
6524 FT_STRING, BASE_NONE, NULL, 0,
6525 "FreeText", HFILL }},
6526 { &hf_atn_cpdlc_uM205FreeText,
6527 { "uM205FreeText", "atn-cpdlc.uM205FreeText",
6528 FT_STRING, BASE_NONE, NULL, 0,
6529 "FreeText", HFILL }},
6530 { &hf_atn_cpdlc_uM206FreeText,
6531 { "uM206FreeText", "atn-cpdlc.uM206FreeText",
6532 FT_STRING, BASE_NONE, NULL, 0,
6533 "FreeText", HFILL }},
6534 { &hf_atn_cpdlc_uM207FreeText,
6535 { "uM207FreeText", "atn-cpdlc.uM207FreeText",
6536 FT_STRING, BASE_NONE, NULL, 0,
6537 "FreeText", HFILL }},
6538 { &hf_atn_cpdlc_uM208FreeText,
6539 { "uM208FreeText", "atn-cpdlc.uM208FreeText",
6540 FT_STRING, BASE_NONE, NULL, 0,
6541 "FreeText", HFILL }},
6542 { &hf_atn_cpdlc_uM209LevelPosition,
6543 { "uM209LevelPosition", "atn-cpdlc.uM209LevelPosition_element",
6544 FT_NONE, BASE_NONE, NULL, 0,
6545 "LevelPosition", HFILL }},
6546 { &hf_atn_cpdlc_uM210Position,
6547 { "uM210Position", "atn-cpdlc.uM210Position",
6548 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6549 "Position", HFILL }},
6550 { &hf_atn_cpdlc_uM211NULL,
6551 { "uM211NULL", "atn-cpdlc.uM211NULL_element",
6552 FT_NONE, BASE_NONE, NULL, 0,
6553 NULL, HFILL }},
6554 { &hf_atn_cpdlc_uM212FacilityDesignationATISCode,
6555 { "uM212FacilityDesignationATISCode", "atn-cpdlc.uM212FacilityDesignationATISCode_element",
6556 FT_NONE, BASE_NONE, NULL, 0,
6557 "FacilityDesignationATISCode", HFILL }},
6558 { &hf_atn_cpdlc_uM213FacilityDesignationAltimeter,
6559 { "uM213FacilityDesignationAltimeter", "atn-cpdlc.uM213FacilityDesignationAltimeter_element",
6560 FT_NONE, BASE_NONE, NULL, 0,
6561 "FacilityDesignationAltimeter", HFILL }},
6562 { &hf_atn_cpdlc_uM214RunwayRVR,
6563 { "uM214RunwayRVR", "atn-cpdlc.uM214RunwayRVR_element",
6564 FT_NONE, BASE_NONE, NULL, 0,
6565 "RunwayRVR", HFILL }},
6566 { &hf_atn_cpdlc_uM215DirectionDegrees,
6567 { "uM215DirectionDegrees", "atn-cpdlc.uM215DirectionDegrees_element",
6568 FT_NONE, BASE_NONE, NULL, 0,
6569 "DirectionDegrees", HFILL }},
6570 { &hf_atn_cpdlc_uM216NULL,
6571 { "uM216NULL", "atn-cpdlc.uM216NULL_element",
6572 FT_NONE, BASE_NONE, NULL, 0,
6573 NULL, HFILL }},
6574 { &hf_atn_cpdlc_uM217NULL,
6575 { "uM217NULL", "atn-cpdlc.uM217NULL_element",
6576 FT_NONE, BASE_NONE, NULL, 0,
6577 NULL, HFILL }},
6578 { &hf_atn_cpdlc_uM218NULL,
6579 { "uM218NULL", "atn-cpdlc.uM218NULL_element",
6580 FT_NONE, BASE_NONE, NULL, 0,
6581 NULL, HFILL }},
6582 { &hf_atn_cpdlc_uM219Level,
6583 { "uM219Level", "atn-cpdlc.uM219Level",
6584 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6585 "Level", HFILL }},
6586 { &hf_atn_cpdlc_uM220Level,
6587 { "uM220Level", "atn-cpdlc.uM220Level",
6588 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6589 "Level", HFILL }},
6590 { &hf_atn_cpdlc_uM221Degrees,
6591 { "uM221Degrees", "atn-cpdlc.uM221Degrees",
6592 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6593 "Degrees", HFILL }},
6594 { &hf_atn_cpdlc_uM222NULL,
6595 { "uM222NULL", "atn-cpdlc.uM222NULL_element",
6596 FT_NONE, BASE_NONE, NULL, 0,
6597 NULL, HFILL }},
6598 { &hf_atn_cpdlc_uM223NULL,
6599 { "uM223NULL", "atn-cpdlc.uM223NULL_element",
6600 FT_NONE, BASE_NONE, NULL, 0,
6601 NULL, HFILL }},
6602 { &hf_atn_cpdlc_uM224NULL,
6603 { "uM224NULL", "atn-cpdlc.uM224NULL_element",
6604 FT_NONE, BASE_NONE, NULL, 0,
6605 NULL, HFILL }},
6606 { &hf_atn_cpdlc_uM225NULL,
6607 { "uM225NULL", "atn-cpdlc.uM225NULL_element",
6608 FT_NONE, BASE_NONE, NULL, 0,
6609 NULL, HFILL }},
6610 { &hf_atn_cpdlc_uM226Time,
6611 { "uM226Time", "atn-cpdlc.uM226Time_element",
6612 FT_NONE, BASE_NONE, NULL, 0,
6613 "Time", HFILL }},
6614 { &hf_atn_cpdlc_uM227NULL,
6615 { "uM227NULL", "atn-cpdlc.uM227NULL_element",
6616 FT_NONE, BASE_NONE, NULL, 0,
6617 NULL, HFILL }},
6618 { &hf_atn_cpdlc_uM228Position,
6619 { "uM228Position", "atn-cpdlc.uM228Position",
6620 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6621 "Position", HFILL }},
6622 { &hf_atn_cpdlc_uM229NULL,
6623 { "uM229NULL", "atn-cpdlc.uM229NULL_element",
6624 FT_NONE, BASE_NONE, NULL, 0,
6625 NULL, HFILL }},
6626 { &hf_atn_cpdlc_uM230NULL,
6627 { "uM230NULL", "atn-cpdlc.uM230NULL_element",
6628 FT_NONE, BASE_NONE, NULL, 0,
6629 NULL, HFILL }},
6630 { &hf_atn_cpdlc_uM231NULL,
6631 { "uM231NULL", "atn-cpdlc.uM231NULL_element",
6632 FT_NONE, BASE_NONE, NULL, 0,
6633 NULL, HFILL }},
6634 { &hf_atn_cpdlc_uM232NULL,
6635 { "uM232NULL", "atn-cpdlc.uM232NULL_element",
6636 FT_NONE, BASE_NONE, NULL, 0,
6637 NULL, HFILL }},
6638 { &hf_atn_cpdlc_uM233NULL,
6639 { "uM233NULL", "atn-cpdlc.uM233NULL_element",
6640 FT_NONE, BASE_NONE, NULL, 0,
6641 NULL, HFILL }},
6642 { &hf_atn_cpdlc_uM234NULL,
6643 { "uM234NULL", "atn-cpdlc.uM234NULL_element",
6644 FT_NONE, BASE_NONE, NULL, 0,
6645 NULL, HFILL }},
6646 { &hf_atn_cpdlc_uM235NULL,
6647 { "uM235NULL", "atn-cpdlc.uM235NULL_element",
6648 FT_NONE, BASE_NONE, NULL, 0,
6649 NULL, HFILL }},
6650 { &hf_atn_cpdlc_uM236NULL,
6651 { "uM236NULL", "atn-cpdlc.uM236NULL_element",
6652 FT_NONE, BASE_NONE, NULL, 0,
6653 NULL, HFILL }},
6654 { &hf_atn_cpdlc_uM237NULL,
6655 { "uM237NULL", "atn-cpdlc.uM237NULL_element",
6656 FT_NONE, BASE_NONE, NULL, 0,
6657 NULL, HFILL }},
6658 { &hf_atn_cpdlc_dM0NULL,
6659 { "dM0NULL", "atn-cpdlc.dM0NULL_element",
6660 FT_NONE, BASE_NONE, NULL, 0,
6661 NULL, HFILL }},
6662 { &hf_atn_cpdlc_dM1NULL,
6663 { "dM1NULL", "atn-cpdlc.dM1NULL_element",
6664 FT_NONE, BASE_NONE, NULL, 0,
6665 NULL, HFILL }},
6666 { &hf_atn_cpdlc_dM2NULL,
6667 { "dM2NULL", "atn-cpdlc.dM2NULL_element",
6668 FT_NONE, BASE_NONE, NULL, 0,
6669 NULL, HFILL }},
6670 { &hf_atn_cpdlc_dM3NULL,
6671 { "dM3NULL", "atn-cpdlc.dM3NULL_element",
6672 FT_NONE, BASE_NONE, NULL, 0,
6673 NULL, HFILL }},
6674 { &hf_atn_cpdlc_dM4NULL,
6675 { "dM4NULL", "atn-cpdlc.dM4NULL_element",
6676 FT_NONE, BASE_NONE, NULL, 0,
6677 NULL, HFILL }},
6678 { &hf_atn_cpdlc_dM5NULL,
6679 { "dM5NULL", "atn-cpdlc.dM5NULL_element",
6680 FT_NONE, BASE_NONE, NULL, 0,
6681 NULL, HFILL }},
6682 { &hf_atn_cpdlc_dM6Level,
6683 { "dM6Level", "atn-cpdlc.dM6Level",
6684 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6685 "Level", HFILL }},
6686 { &hf_atn_cpdlc_dM7LevelLevel,
6687 { "dM7LevelLevel", "atn-cpdlc.dM7LevelLevel",
6688 FT_UINT32, BASE_DEC, NULL, 0,
6689 "LevelLevel", HFILL }},
6690 { &hf_atn_cpdlc_dM8Level,
6691 { "dM8Level", "atn-cpdlc.dM8Level",
6692 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6693 "Level", HFILL }},
6694 { &hf_atn_cpdlc_dM9Level,
6695 { "dM9Level", "atn-cpdlc.dM9Level",
6696 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6697 "Level", HFILL }},
6698 { &hf_atn_cpdlc_dM10Level,
6699 { "dM10Level", "atn-cpdlc.dM10Level",
6700 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6701 "Level", HFILL }},
6702 { &hf_atn_cpdlc_dM11PositionLevel,
6703 { "dM11PositionLevel", "atn-cpdlc.dM11PositionLevel_element",
6704 FT_NONE, BASE_NONE, NULL, 0,
6705 "PositionLevel", HFILL }},
6706 { &hf_atn_cpdlc_dM12PositionLevel,
6707 { "dM12PositionLevel", "atn-cpdlc.dM12PositionLevel_element",
6708 FT_NONE, BASE_NONE, NULL, 0,
6709 "PositionLevel", HFILL }},
6710 { &hf_atn_cpdlc_dM13TimeLevel,
6711 { "dM13TimeLevel", "atn-cpdlc.dM13TimeLevel_element",
6712 FT_NONE, BASE_NONE, NULL, 0,
6713 "TimeLevel", HFILL }},
6714 { &hf_atn_cpdlc_dM14TimeLevel,
6715 { "dM14TimeLevel", "atn-cpdlc.dM14TimeLevel_element",
6716 FT_NONE, BASE_NONE, NULL, 0,
6717 "TimeLevel", HFILL }},
6718 { &hf_atn_cpdlc_dM15DistanceSpecifiedDirection,
6719 { "dM15DistanceSpecifiedDirection", "atn-cpdlc.dM15DistanceSpecifiedDirection_element",
6720 FT_NONE, BASE_NONE, NULL, 0,
6721 "DistanceSpecifiedDirection", HFILL }},
6722 { &hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection,
6723 { "dM16PositionDistanceSpecifiedDirection", "atn-cpdlc.dM16PositionDistanceSpecifiedDirection_element",
6724 FT_NONE, BASE_NONE, NULL, 0,
6725 "PositionDistanceSpecifiedDirection", HFILL }},
6726 { &hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection,
6727 { "dM17TimeDistanceSpecifiedDirection", "atn-cpdlc.dM17TimeDistanceSpecifiedDirection_element",
6728 FT_NONE, BASE_NONE, NULL, 0,
6729 "TimeDistanceSpecifiedDirection", HFILL }},
6730 { &hf_atn_cpdlc_dM18Speed,
6731 { "dM18Speed", "atn-cpdlc.dM18Speed",
6732 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6733 "Speed", HFILL }},
6734 { &hf_atn_cpdlc_dM19SpeedSpeed,
6735 { "dM19SpeedSpeed", "atn-cpdlc.dM19SpeedSpeed",
6736 FT_UINT32, BASE_DEC, NULL, 0,
6737 "SpeedSpeed", HFILL }},
6738 { &hf_atn_cpdlc_dM20NULL,
6739 { "dM20NULL", "atn-cpdlc.dM20NULL_element",
6740 FT_NONE, BASE_NONE, NULL, 0,
6741 NULL, HFILL }},
6742 { &hf_atn_cpdlc_dM21Frequency,
6743 { "dM21Frequency", "atn-cpdlc.dM21Frequency",
6744 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0,
6745 "Frequency", HFILL }},
6746 { &hf_atn_cpdlc_dM22Position,
6747 { "dM22Position", "atn-cpdlc.dM22Position",
6748 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6749 "Position", HFILL }},
6750 { &hf_atn_cpdlc_dM23ProcedureName,
6751 { "dM23ProcedureName", "atn-cpdlc.dM23ProcedureName_element",
6752 FT_NONE, BASE_NONE, NULL, 0,
6753 "ProcedureName", HFILL }},
6754 { &hf_atn_cpdlc_dM24RouteClearance,
6755 { "dM24RouteClearance", "atn-cpdlc.dM24RouteClearance",
6756 FT_UINT32, BASE_DEC, NULL, 0,
6757 "RouteClearanceIndex", HFILL }},
6758 { &hf_atn_cpdlc_dM25ClearanceType,
6759 { "dM25ClearanceType", "atn-cpdlc.dM25ClearanceType",
6760 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ClearanceType_vals), 0,
6761 "ClearanceType", HFILL }},
6762 { &hf_atn_cpdlc_dM26PositionRouteClearance,
6763 { "dM26PositionRouteClearance", "atn-cpdlc.dM26PositionRouteClearance_element",
6764 FT_NONE, BASE_NONE, NULL, 0,
6765 "PositionRouteClearanceIndex", HFILL }},
6766 { &hf_atn_cpdlc_dM27DistanceSpecifiedDirection,
6767 { "dM27DistanceSpecifiedDirection", "atn-cpdlc.dM27DistanceSpecifiedDirection_element",
6768 FT_NONE, BASE_NONE, NULL, 0,
6769 "DistanceSpecifiedDirection", HFILL }},
6770 { &hf_atn_cpdlc_dM28Level,
6771 { "dM28Level", "atn-cpdlc.dM28Level",
6772 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6773 "Level", HFILL }},
6774 { &hf_atn_cpdlc_dM29Level,
6775 { "dM29Level", "atn-cpdlc.dM29Level",
6776 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6777 "Level", HFILL }},
6778 { &hf_atn_cpdlc_dM30Level,
6779 { "dM30Level", "atn-cpdlc.dM30Level",
6780 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6781 "Level", HFILL }},
6782 { &hf_atn_cpdlc_dM31Position,
6783 { "dM31Position", "atn-cpdlc.dM31Position",
6784 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6785 "Position", HFILL }},
6786 { &hf_atn_cpdlc_dM32Level,
6787 { "dM32Level", "atn-cpdlc.dM32Level",
6788 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6789 "Level", HFILL }},
6790 { &hf_atn_cpdlc_dM33Position,
6791 { "dM33Position", "atn-cpdlc.dM33Position",
6792 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6793 "Position", HFILL }},
6794 { &hf_atn_cpdlc_dM34Speed,
6795 { "dM34Speed", "atn-cpdlc.dM34Speed",
6796 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6797 "Speed", HFILL }},
6798 { &hf_atn_cpdlc_dM35Degrees,
6799 { "dM35Degrees", "atn-cpdlc.dM35Degrees",
6800 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6801 "Degrees", HFILL }},
6802 { &hf_atn_cpdlc_dM36Degrees,
6803 { "dM36Degrees", "atn-cpdlc.dM36Degrees",
6804 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6805 "Degrees", HFILL }},
6806 { &hf_atn_cpdlc_dM37Level,
6807 { "dM37Level", "atn-cpdlc.dM37Level",
6808 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6809 "Level", HFILL }},
6810 { &hf_atn_cpdlc_dM38Level,
6811 { "dM38Level", "atn-cpdlc.dM38Level",
6812 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6813 "Level", HFILL }},
6814 { &hf_atn_cpdlc_dM39Speed,
6815 { "dM39Speed", "atn-cpdlc.dM39Speed",
6816 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6817 "Speed", HFILL }},
6818 { &hf_atn_cpdlc_dM40RouteClearance,
6819 { "dM40RouteClearance", "atn-cpdlc.dM40RouteClearance",
6820 FT_UINT32, BASE_DEC, NULL, 0,
6821 "RouteClearanceIndex", HFILL }},
6822 { &hf_atn_cpdlc_dM41NULL,
6823 { "dM41NULL", "atn-cpdlc.dM41NULL_element",
6824 FT_NONE, BASE_NONE, NULL, 0,
6825 NULL, HFILL }},
6826 { &hf_atn_cpdlc_dM42Position,
6827 { "dM42Position", "atn-cpdlc.dM42Position",
6828 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6829 "Position", HFILL }},
6830 { &hf_atn_cpdlc_dM43Time,
6831 { "dM43Time", "atn-cpdlc.dM43Time_element",
6832 FT_NONE, BASE_NONE, NULL, 0,
6833 "Time", HFILL }},
6834 { &hf_atn_cpdlc_dM44Position,
6835 { "dM44Position", "atn-cpdlc.dM44Position",
6836 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6837 "Position", HFILL }},
6838 { &hf_atn_cpdlc_dM45Position,
6839 { "dM45Position", "atn-cpdlc.dM45Position",
6840 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
6841 "Position", HFILL }},
6842 { &hf_atn_cpdlc_dM46Time,
6843 { "dM46Time", "atn-cpdlc.dM46Time_element",
6844 FT_NONE, BASE_NONE, NULL, 0,
6845 "Time", HFILL }},
6846 { &hf_atn_cpdlc_dM47Code,
6847 { "dM47Code", "atn-cpdlc.dM47Code",
6848 FT_UINT32, BASE_DEC, NULL, 0,
6849 "Code", HFILL }},
6850 { &hf_atn_cpdlc_dM48PositionReport,
6851 { "dM48PositionReport", "atn-cpdlc.dM48PositionReport_element",
6852 FT_NONE, BASE_NONE, NULL, 0,
6853 "PositionReport", HFILL }},
6854 { &hf_atn_cpdlc_dM49Speed,
6855 { "dM49Speed", "atn-cpdlc.dM49Speed",
6856 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6857 "Speed", HFILL }},
6858 { &hf_atn_cpdlc_dM50SpeedSpeed,
6859 { "dM50SpeedSpeed", "atn-cpdlc.dM50SpeedSpeed",
6860 FT_UINT32, BASE_DEC, NULL, 0,
6861 "SpeedSpeed", HFILL }},
6862 { &hf_atn_cpdlc_dM51NULL,
6863 { "dM51NULL", "atn-cpdlc.dM51NULL_element",
6864 FT_NONE, BASE_NONE, NULL, 0,
6865 NULL, HFILL }},
6866 { &hf_atn_cpdlc_dM52NULL,
6867 { "dM52NULL", "atn-cpdlc.dM52NULL_element",
6868 FT_NONE, BASE_NONE, NULL, 0,
6869 NULL, HFILL }},
6870 { &hf_atn_cpdlc_dM53NULL,
6871 { "dM53NULL", "atn-cpdlc.dM53NULL_element",
6872 FT_NONE, BASE_NONE, NULL, 0,
6873 NULL, HFILL }},
6874 { &hf_atn_cpdlc_dM54Level,
6875 { "dM54Level", "atn-cpdlc.dM54Level",
6876 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6877 "Level", HFILL }},
6878 { &hf_atn_cpdlc_dM55NULL,
6879 { "dM55NULL", "atn-cpdlc.dM55NULL_element",
6880 FT_NONE, BASE_NONE, NULL, 0,
6881 NULL, HFILL }},
6882 { &hf_atn_cpdlc_dM56NULL,
6883 { "dM56NULL", "atn-cpdlc.dM56NULL_element",
6884 FT_NONE, BASE_NONE, NULL, 0,
6885 NULL, HFILL }},
6886 { &hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard,
6887 { "dM57RemainingFuelPersonsOnBoard", "atn-cpdlc.dM57RemainingFuelPersonsOnBoard_element",
6888 FT_NONE, BASE_NONE, NULL, 0,
6889 "RemainingFuelPersonsOnBoard", HFILL }},
6890 { &hf_atn_cpdlc_dM58NULL,
6891 { "dM58NULL", "atn-cpdlc.dM58NULL_element",
6892 FT_NONE, BASE_NONE, NULL, 0,
6893 NULL, HFILL }},
6894 { &hf_atn_cpdlc_dM59PositionRouteClearance,
6895 { "dM59PositionRouteClearance", "atn-cpdlc.dM59PositionRouteClearance_element",
6896 FT_NONE, BASE_NONE, NULL, 0,
6897 "PositionRouteClearanceIndex", HFILL }},
6898 { &hf_atn_cpdlc_dM60DistanceSpecifiedDirection,
6899 { "dM60DistanceSpecifiedDirection", "atn-cpdlc.dM60DistanceSpecifiedDirection_element",
6900 FT_NONE, BASE_NONE, NULL, 0,
6901 "DistanceSpecifiedDirection", HFILL }},
6902 { &hf_atn_cpdlc_dM61Level,
6903 { "dM61Level", "atn-cpdlc.dM61Level",
6904 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6905 "Level", HFILL }},
6906 { &hf_atn_cpdlc_dM62ErrorInformation,
6907 { "dM62ErrorInformation", "atn-cpdlc.dM62ErrorInformation",
6908 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ErrorInformation_vals), 0,
6909 "ErrorInformation", HFILL }},
6910 { &hf_atn_cpdlc_dM63NULL,
6911 { "dM63NULL", "atn-cpdlc.dM63NULL_element",
6912 FT_NONE, BASE_NONE, NULL, 0,
6913 NULL, HFILL }},
6914 { &hf_atn_cpdlc_dM64FacilityDesignation,
6915 { "dM64FacilityDesignation", "atn-cpdlc.dM64FacilityDesignation",
6916 FT_STRING, BASE_NONE, NULL, 0,
6917 "FacilityDesignation", HFILL }},
6918 { &hf_atn_cpdlc_dM65NULL,
6919 { "dM65NULL", "atn-cpdlc.dM65NULL_element",
6920 FT_NONE, BASE_NONE, NULL, 0,
6921 NULL, HFILL }},
6922 { &hf_atn_cpdlc_dM66NULL,
6923 { "dM66NULL", "atn-cpdlc.dM66NULL_element",
6924 FT_NONE, BASE_NONE, NULL, 0,
6925 NULL, HFILL }},
6926 { &hf_atn_cpdlc_dM67FreeText,
6927 { "dM67FreeText", "atn-cpdlc.dM67FreeText",
6928 FT_STRING, BASE_NONE, NULL, 0,
6929 "FreeText", HFILL }},
6930 { &hf_atn_cpdlc_dM68FreeText,
6931 { "dM68FreeText", "atn-cpdlc.dM68FreeText",
6932 FT_STRING, BASE_NONE, NULL, 0,
6933 "FreeText", HFILL }},
6934 { &hf_atn_cpdlc_dM69NULL,
6935 { "dM69NULL", "atn-cpdlc.dM69NULL_element",
6936 FT_NONE, BASE_NONE, NULL, 0,
6937 NULL, HFILL }},
6938 { &hf_atn_cpdlc_dM70Degrees,
6939 { "dM70Degrees", "atn-cpdlc.dM70Degrees",
6940 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6941 "Degrees", HFILL }},
6942 { &hf_atn_cpdlc_dM71Degrees,
6943 { "dM71Degrees", "atn-cpdlc.dM71Degrees",
6944 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
6945 "Degrees", HFILL }},
6946 { &hf_atn_cpdlc_dM72Level,
6947 { "dM72Level", "atn-cpdlc.dM72Level",
6948 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6949 "Level", HFILL }},
6950 { &hf_atn_cpdlc_dM73Versionnumber,
6951 { "dM73Versionnumber", "atn-cpdlc.dM73Versionnumber",
6952 FT_UINT32, BASE_DEC, NULL, 0,
6953 "VersionNumber", HFILL }},
6954 { &hf_atn_cpdlc_dM74NULL,
6955 { "dM74NULL", "atn-cpdlc.dM74NULL_element",
6956 FT_NONE, BASE_NONE, NULL, 0,
6957 NULL, HFILL }},
6958 { &hf_atn_cpdlc_dM75NULL,
6959 { "dM75NULL", "atn-cpdlc.dM75NULL_element",
6960 FT_NONE, BASE_NONE, NULL, 0,
6961 NULL, HFILL }},
6962 { &hf_atn_cpdlc_dM76LevelLevel,
6963 { "dM76LevelLevel", "atn-cpdlc.dM76LevelLevel",
6964 FT_UINT32, BASE_DEC, NULL, 0,
6965 "LevelLevel", HFILL }},
6966 { &hf_atn_cpdlc_dM77LevelLevel,
6967 { "dM77LevelLevel", "atn-cpdlc.dM77LevelLevel",
6968 FT_UINT32, BASE_DEC, NULL, 0,
6969 "LevelLevel", HFILL }},
6970 { &hf_atn_cpdlc_dM78TimeDistanceToFromPosition,
6971 { "dM78TimeDistanceToFromPosition", "atn-cpdlc.dM78TimeDistanceToFromPosition_element",
6972 FT_NONE, BASE_NONE, NULL, 0,
6973 "TimeDistanceToFromPosition", HFILL }},
6974 { &hf_atn_cpdlc_dM79AtisCode,
6975 { "dM79AtisCode", "atn-cpdlc.dM79AtisCode",
6976 FT_STRING, BASE_NONE, NULL, 0,
6977 "ATISCode", HFILL }},
6978 { &hf_atn_cpdlc_dM80DistanceSpecifiedDirection,
6979 { "dM80DistanceSpecifiedDirection", "atn-cpdlc.dM80DistanceSpecifiedDirection_element",
6980 FT_NONE, BASE_NONE, NULL, 0,
6981 "DistanceSpecifiedDirection", HFILL }},
6982 { &hf_atn_cpdlc_dM81LevelTime,
6983 { "dM81LevelTime", "atn-cpdlc.dM81LevelTime_element",
6984 FT_NONE, BASE_NONE, NULL, 0,
6985 "LevelTime", HFILL }},
6986 { &hf_atn_cpdlc_dM82Level,
6987 { "dM82Level", "atn-cpdlc.dM82Level",
6988 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
6989 "Level", HFILL }},
6990 { &hf_atn_cpdlc_dM83SpeedTime,
6991 { "dM83SpeedTime", "atn-cpdlc.dM83SpeedTime_element",
6992 FT_NONE, BASE_NONE, NULL, 0,
6993 "SpeedTime", HFILL }},
6994 { &hf_atn_cpdlc_dM84Speed,
6995 { "dM84Speed", "atn-cpdlc.dM84Speed",
6996 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
6997 "Speed", HFILL }},
6998 { &hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime,
6999 { "dM85DistanceSpecifiedDirectionTime", "atn-cpdlc.dM85DistanceSpecifiedDirectionTime_element",
7000 FT_NONE, BASE_NONE, NULL, 0,
7001 "DistanceSpecifiedDirectionTime", HFILL }},
7002 { &hf_atn_cpdlc_dM86DistanceSpecifiedDirection,
7003 { "dM86DistanceSpecifiedDirection", "atn-cpdlc.dM86DistanceSpecifiedDirection_element",
7004 FT_NONE, BASE_NONE, NULL, 0,
7005 "DistanceSpecifiedDirection", HFILL }},
7006 { &hf_atn_cpdlc_dM87Level,
7007 { "dM87Level", "atn-cpdlc.dM87Level",
7008 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7009 "Level", HFILL }},
7010 { &hf_atn_cpdlc_dM88Level,
7011 { "dM88Level", "atn-cpdlc.dM88Level",
7012 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7013 "Level", HFILL }},
7014 { &hf_atn_cpdlc_dM89UnitnameFrequency,
7015 { "dM89UnitnameFrequency", "atn-cpdlc.dM89UnitnameFrequency_element",
7016 FT_NONE, BASE_NONE, NULL, 0,
7017 "UnitNameFrequency", HFILL }},
7018 { &hf_atn_cpdlc_dM90FreeText,
7019 { "dM90FreeText", "atn-cpdlc.dM90FreeText",
7020 FT_STRING, BASE_NONE, NULL, 0,
7021 "FreeText", HFILL }},
7022 { &hf_atn_cpdlc_dM91FreeText,
7023 { "dM91FreeText", "atn-cpdlc.dM91FreeText",
7024 FT_STRING, BASE_NONE, NULL, 0,
7025 "FreeText", HFILL }},
7026 { &hf_atn_cpdlc_dM92FreeText,
7027 { "dM92FreeText", "atn-cpdlc.dM92FreeText",
7028 FT_STRING, BASE_NONE, NULL, 0,
7029 "FreeText", HFILL }},
7030 { &hf_atn_cpdlc_dM93FreeText,
7031 { "dM93FreeText", "atn-cpdlc.dM93FreeText",
7032 FT_STRING, BASE_NONE, NULL, 0,
7033 "FreeText", HFILL }},
7034 { &hf_atn_cpdlc_dM94FreeText,
7035 { "dM94FreeText", "atn-cpdlc.dM94FreeText",
7036 FT_STRING, BASE_NONE, NULL, 0,
7037 "FreeText", HFILL }},
7038 { &hf_atn_cpdlc_dM95FreeText,
7039 { "dM95FreeText", "atn-cpdlc.dM95FreeText",
7040 FT_STRING, BASE_NONE, NULL, 0,
7041 "FreeText", HFILL }},
7042 { &hf_atn_cpdlc_dM96FreeText,
7043 { "dM96FreeText", "atn-cpdlc.dM96FreeText",
7044 FT_STRING, BASE_NONE, NULL, 0,
7045 "FreeText", HFILL }},
7046 { &hf_atn_cpdlc_dM97FreeText,
7047 { "dM97FreeText", "atn-cpdlc.dM97FreeText",
7048 FT_STRING, BASE_NONE, NULL, 0,
7049 "FreeText", HFILL }},
7050 { &hf_atn_cpdlc_dM98FreeText,
7051 { "dM98FreeText", "atn-cpdlc.dM98FreeText",
7052 FT_STRING, BASE_NONE, NULL, 0,
7053 "FreeText", HFILL }},
7054 { &hf_atn_cpdlc_dM99NULL,
7055 { "dM99NULL", "atn-cpdlc.dM99NULL_element",
7056 FT_NONE, BASE_NONE, NULL, 0,
7057 NULL, HFILL }},
7058 { &hf_atn_cpdlc_dM100NULL,
7059 { "dM100NULL", "atn-cpdlc.dM100NULL_element",
7060 FT_NONE, BASE_NONE, NULL, 0,
7061 NULL, HFILL }},
7062 { &hf_atn_cpdlc_dM101NULL,
7063 { "dM101NULL", "atn-cpdlc.dM101NULL_element",
7064 FT_NONE, BASE_NONE, NULL, 0,
7065 NULL, HFILL }},
7066 { &hf_atn_cpdlc_dM102NULL,
7067 { "dM102NULL", "atn-cpdlc.dM102NULL_element",
7068 FT_NONE, BASE_NONE, NULL, 0,
7069 NULL, HFILL }},
7070 { &hf_atn_cpdlc_dM103NULL,
7071 { "dM103NULL", "atn-cpdlc.dM103NULL_element",
7072 FT_NONE, BASE_NONE, NULL, 0,
7073 NULL, HFILL }},
7074 { &hf_atn_cpdlc_dM104PositionTime,
7075 { "dM104PositionTime", "atn-cpdlc.dM104PositionTime_element",
7076 FT_NONE, BASE_NONE, NULL, 0,
7077 "PositionTime", HFILL }},
7078 { &hf_atn_cpdlc_dM105Airport,
7079 { "dM105Airport", "atn-cpdlc.dM105Airport",
7080 FT_STRING, BASE_NONE, NULL, 0,
7081 "Airport", HFILL }},
7082 { &hf_atn_cpdlc_dM106Level,
7083 { "dM106Level", "atn-cpdlc.dM106Level",
7084 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7085 "Level", HFILL }},
7086 { &hf_atn_cpdlc_dM107NULL,
7087 { "dM107NULL", "atn-cpdlc.dM107NULL_element",
7088 FT_NONE, BASE_NONE, NULL, 0,
7089 NULL, HFILL }},
7090 { &hf_atn_cpdlc_dM108NULL,
7091 { "dM108NULL", "atn-cpdlc.dM108NULL_element",
7092 FT_NONE, BASE_NONE, NULL, 0,
7093 NULL, HFILL }},
7094 { &hf_atn_cpdlc_dM109Time,
7095 { "dM109Time", "atn-cpdlc.dM109Time_element",
7096 FT_NONE, BASE_NONE, NULL, 0,
7097 "Time", HFILL }},
7098 { &hf_atn_cpdlc_dM110Position,
7099 { "dM110Position", "atn-cpdlc.dM110Position",
7100 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7101 "Position", HFILL }},
7102 { &hf_atn_cpdlc_dM111TimePosition,
7103 { "dM111TimePosition", "atn-cpdlc.dM111TimePosition_element",
7104 FT_NONE, BASE_NONE, NULL, 0,
7105 "TimePosition", HFILL }},
7106 { &hf_atn_cpdlc_dM112NULL,
7107 { "dM112NULL", "atn-cpdlc.dM112NULL_element",
7108 FT_NONE, BASE_NONE, NULL, 0,
7109 NULL, HFILL }},
7110 { &hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed,
7111 { "dM113SpeedTypeSpeedTypeSpeedTypeSpeed", "atn-cpdlc.dM113SpeedTypeSpeedTypeSpeedTypeSpeed_element",
7112 FT_NONE, BASE_NONE, NULL, 0,
7113 "SpeedTypeSpeedTypeSpeedTypeSpeed", HFILL }},
7114 { &hf_atn_cpdlc_altimeterEnglish,
7115 { "altimeterEnglish", "atn-cpdlc.altimeterEnglish",
7116 FT_UINT32, BASE_DEC, NULL, 0,
7117 NULL, HFILL }},
7118 { &hf_atn_cpdlc_altimeterMetric,
7119 { "altimeterMetric", "atn-cpdlc.altimeterMetric",
7120 FT_UINT32, BASE_DEC, NULL, 0,
7121 NULL, HFILL }},
7122 { &hf_atn_cpdlc_position,
7123 { "position", "atn-cpdlc.position",
7124 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7125 NULL, HFILL }},
7126 { &hf_atn_cpdlc_aTWDistance,
7127 { "aTWDistance", "atn-cpdlc.aTWDistance_element",
7128 FT_NONE, BASE_NONE, NULL, 0,
7129 NULL, HFILL }},
7130 { &hf_atn_cpdlc_speed,
7131 { "speed", "atn-cpdlc.speed",
7132 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
7133 NULL, HFILL }},
7134 { &hf_atn_cpdlc_aTWLevels,
7135 { "aTWLevels", "atn-cpdlc.aTWLevels",
7136 FT_UINT32, BASE_DEC, NULL, 0,
7137 "ATWLevelSequence", HFILL }},
7138 { &hf_atn_cpdlc_atw,
7139 { "atw", "atn-cpdlc.atw",
7140 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATWLevelTolerance_vals), 0,
7141 "ATWLevelTolerance", HFILL }},
7142 { &hf_atn_cpdlc_level,
7143 { "level", "atn-cpdlc.level",
7144 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7145 NULL, HFILL }},
7146 { &hf_atn_cpdlc_ATWLevelSequence_item,
7147 { "ATWLevel", "atn-cpdlc.ATWLevel_element",
7148 FT_NONE, BASE_NONE, NULL, 0,
7149 NULL, HFILL }},
7150 { &hf_atn_cpdlc_atwDistanceTolerance,
7151 { "atwDistanceTolerance", "atn-cpdlc.atwDistanceTolerance",
7152 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATWDistanceTolerance_vals), 0,
7153 NULL, HFILL }},
7154 { &hf_atn_cpdlc_distance,
7155 { "distance", "atn-cpdlc.distance",
7156 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Distance_vals), 0,
7157 NULL, HFILL }},
7158 { &hf_atn_cpdlc_Code_item,
7159 { "CodeOctalDigit", "atn-cpdlc.CodeOctalDigit",
7160 FT_UINT32, BASE_DEC, NULL, 0,
7161 NULL, HFILL }},
7162 { &hf_atn_cpdlc_time,
7163 { "time", "atn-cpdlc.time_element",
7164 FT_NONE, BASE_NONE, NULL, 0,
7165 NULL, HFILL }},
7166 { &hf_atn_cpdlc_timeTolerance,
7167 { "timeTolerance", "atn-cpdlc.timeTolerance",
7168 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_TimeTolerance_vals), 0,
7169 NULL, HFILL }},
7170 { &hf_atn_cpdlc_year,
7171 { "year", "atn-cpdlc.year",
7172 FT_UINT32, BASE_DEC, NULL, 0,
7173 NULL, HFILL }},
7174 { &hf_atn_cpdlc_month,
7175 { "month", "atn-cpdlc.month",
7176 FT_UINT32, BASE_DEC, NULL, 0,
7177 NULL, HFILL }},
7178 { &hf_atn_cpdlc_day,
7179 { "day", "atn-cpdlc.day",
7180 FT_UINT32, BASE_DEC, NULL, 0,
7181 NULL, HFILL }},
7182 { &hf_atn_cpdlc_date,
7183 { "date", "atn-cpdlc.date_element",
7184 FT_NONE, BASE_NONE, NULL, 0,
7185 NULL, HFILL }},
7186 { &hf_atn_cpdlc_timehhmmss,
7187 { "timehhmmss", "atn-cpdlc.timehhmmss_element",
7188 FT_NONE, BASE_NONE, NULL, 0,
7189 NULL, HFILL }},
7190 { &hf_atn_cpdlc_degreesMagnetic,
7191 { "degreesMagnetic", "atn-cpdlc.degreesMagnetic",
7192 FT_UINT32, BASE_DEC, NULL, 0,
7193 NULL, HFILL }},
7194 { &hf_atn_cpdlc_degreesTrue,
7195 { "degreesTrue", "atn-cpdlc.degreesTrue",
7196 FT_UINT32, BASE_DEC, NULL, 0,
7197 NULL, HFILL }},
7198 { &hf_atn_cpdlc_aircraftFlightIdentification,
7199 { "aircraftFlightIdentification", "atn-cpdlc.aircraftFlightIdentification",
7200 FT_STRING, BASE_NONE, NULL, 0,
7201 NULL, HFILL }},
7202 { &hf_atn_cpdlc_clearanceLimit,
7203 { "clearanceLimit", "atn-cpdlc.clearanceLimit",
7204 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7205 "Position", HFILL }},
7206 { &hf_atn_cpdlc_flightInformation,
7207 { "flightInformation", "atn-cpdlc.flightInformation",
7208 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_FlightInformation_vals), 0,
7209 NULL, HFILL }},
7210 { &hf_atn_cpdlc_furtherInstructions,
7211 { "furtherInstructions", "atn-cpdlc.furtherInstructions_element",
7212 FT_NONE, BASE_NONE, NULL, 0,
7213 NULL, HFILL }},
7214 { &hf_atn_cpdlc_direction,
7215 { "direction", "atn-cpdlc.direction",
7216 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Direction_vals), 0,
7217 NULL, HFILL }},
7218 { &hf_atn_cpdlc_degrees,
7219 { "degrees", "atn-cpdlc.degrees",
7220 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
7221 NULL, HFILL }},
7222 { &hf_atn_cpdlc_distanceNm,
7223 { "distanceNm", "atn-cpdlc.distanceNm",
7224 FT_UINT32, BASE_DEC, NULL, 0,
7225 NULL, HFILL }},
7226 { &hf_atn_cpdlc_distanceKm,
7227 { "distanceKm", "atn-cpdlc.distanceKm",
7228 FT_UINT32, BASE_DEC, NULL, 0,
7229 NULL, HFILL }},
7230 { &hf_atn_cpdlc_distanceSpecifiedNm,
7231 { "distanceSpecifiedNm", "atn-cpdlc.distanceSpecifiedNm",
7232 FT_UINT32, BASE_DEC, NULL, 0,
7233 NULL, HFILL }},
7234 { &hf_atn_cpdlc_distanceSpecifiedKm,
7235 { "distanceSpecifiedKm", "atn-cpdlc.distanceSpecifiedKm",
7236 FT_UINT32, BASE_DEC, NULL, 0,
7237 NULL, HFILL }},
7238 { &hf_atn_cpdlc_distanceSpecified,
7239 { "distanceSpecified", "atn-cpdlc.distanceSpecified",
7240 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_DistanceSpecified_vals), 0,
7241 NULL, HFILL }},
7242 { &hf_atn_cpdlc_distanceSpecifiedDirection,
7243 { "distanceSpecifiedDirection", "atn-cpdlc.distanceSpecifiedDirection_element",
7244 FT_NONE, BASE_NONE, NULL, 0,
7245 NULL, HFILL }},
7246 { &hf_atn_cpdlc_noFacility,
7247 { "noFacility", "atn-cpdlc.noFacility_element",
7248 FT_NONE, BASE_NONE, NULL, 0,
7249 NULL, HFILL }},
7250 { &hf_atn_cpdlc_facilityDesignation,
7251 { "facilityDesignation", "atn-cpdlc.facilityDesignation",
7252 FT_STRING, BASE_NONE, NULL, 0,
7253 NULL, HFILL }},
7254 { &hf_atn_cpdlc_altimeter,
7255 { "altimeter", "atn-cpdlc.altimeter",
7256 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Altimeter_vals), 0,
7257 NULL, HFILL }},
7258 { &hf_atn_cpdlc_aTISCode,
7259 { "aTISCode", "atn-cpdlc.aTISCode",
7260 FT_STRING, BASE_NONE, NULL, 0,
7261 NULL, HFILL }},
7262 { &hf_atn_cpdlc_fixname_name,
7263 { "name", "atn-cpdlc.name",
7264 FT_STRING, BASE_NONE, NULL, 0,
7265 "Fix", HFILL }},
7266 { &hf_atn_cpdlc_latlon,
7267 { "latlon", "atn-cpdlc.latlon_element",
7268 FT_NONE, BASE_NONE, NULL, 0,
7269 "LatitudeLongitude", HFILL }},
7270 { &hf_atn_cpdlc_routeOfFlight,
7271 { "routeOfFlight", "atn-cpdlc.routeOfFlight",
7272 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RouteInformation_vals), 0,
7273 "RouteInformation", HFILL }},
7274 { &hf_atn_cpdlc_levelsOfFlight,
7275 { "levelsOfFlight", "atn-cpdlc.levelsOfFlight",
7276 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelsOfFlight_vals), 0,
7277 NULL, HFILL }},
7278 { &hf_atn_cpdlc_routeAndLevels,
7279 { "routeAndLevels", "atn-cpdlc.routeAndLevels_element",
7280 FT_NONE, BASE_NONE, NULL, 0,
7281 NULL, HFILL }},
7282 { &hf_atn_cpdlc_frequencyhf,
7283 { "frequencyhf", "atn-cpdlc.frequencyhf",
7284 FT_UINT32, BASE_DEC, NULL, 0,
7285 NULL, HFILL }},
7286 { &hf_atn_cpdlc_frequencyvhf,
7287 { "frequencyvhf", "atn-cpdlc.frequencyvhf",
7288 FT_UINT32, BASE_DEC, NULL, 0,
7289 NULL, HFILL }},
7290 { &hf_atn_cpdlc_frequencyuhf,
7291 { "frequencyuhf", "atn-cpdlc.frequencyuhf",
7292 FT_UINT32, BASE_DEC, NULL, 0,
7293 NULL, HFILL }},
7294 { &hf_atn_cpdlc_frequencysatchannel,
7295 { "frequencysatchannel", "atn-cpdlc.frequencysatchannel",
7296 FT_STRING, BASE_NONE, NULL, 0,
7297 NULL, HFILL }},
7298 { &hf_atn_cpdlc_code,
7299 { "code", "atn-cpdlc.code",
7300 FT_UINT32, BASE_DEC, NULL, 0,
7301 NULL, HFILL }},
7302 { &hf_atn_cpdlc_frequencyDeparture,
7303 { "frequencyDeparture", "atn-cpdlc.frequencyDeparture_element",
7304 FT_NONE, BASE_NONE, NULL, 0,
7305 "UnitNameFrequency", HFILL }},
7306 { &hf_atn_cpdlc_clearanceExpiryTime,
7307 { "clearanceExpiryTime", "atn-cpdlc.clearanceExpiryTime_element",
7308 FT_NONE, BASE_NONE, NULL, 0,
7309 "Time", HFILL }},
7310 { &hf_atn_cpdlc_airportDeparture,
7311 { "airportDeparture", "atn-cpdlc.airportDeparture",
7312 FT_STRING, BASE_NONE, NULL, 0,
7313 "Airport", HFILL }},
7314 { &hf_atn_cpdlc_airportDestination,
7315 { "airportDestination", "atn-cpdlc.airportDestination",
7316 FT_STRING, BASE_NONE, NULL, 0,
7317 "Airport", HFILL }},
7318 { &hf_atn_cpdlc_timeDeparture,
7319 { "timeDeparture", "atn-cpdlc.timeDeparture_element",
7320 FT_NONE, BASE_NONE, NULL, 0,
7321 NULL, HFILL }},
7322 { &hf_atn_cpdlc_runwayDeparture,
7323 { "runwayDeparture", "atn-cpdlc.runwayDeparture_element",
7324 FT_NONE, BASE_NONE, NULL, 0,
7325 "Runway", HFILL }},
7326 { &hf_atn_cpdlc_revisionNumber,
7327 { "revisionNumber", "atn-cpdlc.revisionNumber",
7328 FT_UINT32, BASE_DEC, NULL, 0,
7329 NULL, HFILL }},
7330 { &hf_atn_cpdlc_holdatwaypointspeedlow,
7331 { "holdatwaypointspeedlow", "atn-cpdlc.holdatwaypointspeedlow",
7332 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
7333 "Speed", HFILL }},
7334 { &hf_atn_cpdlc_aTWlevel,
7335 { "aTWlevel", "atn-cpdlc.aTWlevel_element",
7336 FT_NONE, BASE_NONE, NULL, 0,
7337 NULL, HFILL }},
7338 { &hf_atn_cpdlc_holdatwaypointspeedhigh,
7339 { "holdatwaypointspeedhigh", "atn-cpdlc.holdatwaypointspeedhigh",
7340 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
7341 "Speed", HFILL }},
7342 { &hf_atn_cpdlc_eFCtime,
7343 { "eFCtime", "atn-cpdlc.eFCtime_element",
7344 FT_NONE, BASE_NONE, NULL, 0,
7345 "Time", HFILL }},
7346 { &hf_atn_cpdlc_legtype,
7347 { "legtype", "atn-cpdlc.legtype",
7348 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegType_vals), 0,
7349 NULL, HFILL }},
7350 { &hf_atn_cpdlc_legType,
7351 { "legType", "atn-cpdlc.legType",
7352 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegType_vals), 0,
7353 NULL, HFILL }},
7354 { &hf_atn_cpdlc_fromSelection,
7355 { "fromSelection", "atn-cpdlc.fromSelection",
7356 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_InterceptCourseFromSelection_vals), 0,
7357 "InterceptCourseFromSelection", HFILL }},
7358 { &hf_atn_cpdlc_publishedIdentifier,
7359 { "publishedIdentifier", "atn-cpdlc.publishedIdentifier",
7360 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PublishedIdentifier_vals), 0,
7361 NULL, HFILL }},
7362 { &hf_atn_cpdlc_latitudeLongitude,
7363 { "latitudeLongitude", "atn-cpdlc.latitudeLongitude_element",
7364 FT_NONE, BASE_NONE, NULL, 0,
7365 NULL, HFILL }},
7366 { &hf_atn_cpdlc_placeBearingPlaceBearing,
7367 { "placeBearingPlaceBearing", "atn-cpdlc.placeBearingPlaceBearing",
7368 FT_UINT32, BASE_DEC, NULL, 0,
7369 NULL, HFILL }},
7370 { &hf_atn_cpdlc_placeBearingDistance,
7371 { "placeBearingDistance", "atn-cpdlc.placeBearingDistance_element",
7372 FT_NONE, BASE_NONE, NULL, 0,
7373 NULL, HFILL }},
7374 { &hf_atn_cpdlc_latitudeType,
7375 { "latitudeType", "atn-cpdlc.latitudeType",
7376 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatitudeType_vals), 0,
7377 NULL, HFILL }},
7378 { &hf_atn_cpdlc_latitudeDirection,
7379 { "latitudeDirection", "atn-cpdlc.latitudeDirection",
7380 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatitudeDirection_vals), 0,
7381 NULL, HFILL }},
7382 { &hf_atn_cpdlc_latitudeWholeDegrees,
7383 { "latitudeWholeDegrees", "atn-cpdlc.latitudeWholeDegrees",
7384 FT_UINT32, BASE_DEC, NULL, 0,
7385 NULL, HFILL }},
7386 { &hf_atn_cpdlc_minutesLatLon,
7387 { "minutesLatLon", "atn-cpdlc.minutesLatLon",
7388 FT_UINT32, BASE_DEC, NULL, 0,
7389 NULL, HFILL }},
7390 { &hf_atn_cpdlc_latlonWholeMinutes,
7391 { "latlonWholeMinutes", "atn-cpdlc.latlonWholeMinutes",
7392 FT_UINT32, BASE_DEC, NULL, 0,
7393 NULL, HFILL }},
7394 { &hf_atn_cpdlc_secondsLatLon,
7395 { "secondsLatLon", "atn-cpdlc.secondsLatLon",
7396 FT_UINT32, BASE_DEC, NULL, 0,
7397 NULL, HFILL }},
7398 { &hf_atn_cpdlc_latitude,
7399 { "latitude", "atn-cpdlc.latitude_element",
7400 FT_NONE, BASE_NONE, NULL, 0,
7401 NULL, HFILL }},
7402 { &hf_atn_cpdlc_longitude,
7403 { "longitude", "atn-cpdlc.longitude_element",
7404 FT_NONE, BASE_NONE, NULL, 0,
7405 NULL, HFILL }},
7406 { &hf_atn_cpdlc_latitudeDegrees,
7407 { "latitudeDegrees", "atn-cpdlc.latitudeDegrees",
7408 FT_UINT32, BASE_DEC, NULL, 0,
7409 NULL, HFILL }},
7410 { &hf_atn_cpdlc_latitudeDegreesMinutes,
7411 { "latitudeDegreesMinutes", "atn-cpdlc.latitudeDegreesMinutes_element",
7412 FT_NONE, BASE_NONE, NULL, 0,
7413 NULL, HFILL }},
7414 { &hf_atn_cpdlc_latitudeDMS,
7415 { "latitudeDMS", "atn-cpdlc.latitudeDMS_element",
7416 FT_NONE, BASE_NONE, NULL, 0,
7417 "LatitudeDegreesMinutesSeconds", HFILL }},
7418 { &hf_atn_cpdlc_latitudeReportingPoints,
7419 { "latitudeReportingPoints", "atn-cpdlc.latitudeReportingPoints_element",
7420 FT_NONE, BASE_NONE, NULL, 0,
7421 NULL, HFILL }},
7422 { &hf_atn_cpdlc_longitudeReportingPoints,
7423 { "longitudeReportingPoints", "atn-cpdlc.longitudeReportingPoints_element",
7424 FT_NONE, BASE_NONE, NULL, 0,
7425 NULL, HFILL }},
7426 { &hf_atn_cpdlc_legDistanceEnglish,
7427 { "legDistanceEnglish", "atn-cpdlc.legDistanceEnglish",
7428 FT_UINT32, BASE_DEC, NULL, 0,
7429 NULL, HFILL }},
7430 { &hf_atn_cpdlc_legDistanceMetric,
7431 { "legDistanceMetric", "atn-cpdlc.legDistanceMetric",
7432 FT_UINT32, BASE_DEC, NULL, 0,
7433 NULL, HFILL }},
7434 { &hf_atn_cpdlc_legDistance,
7435 { "legDistance", "atn-cpdlc.legDistance",
7436 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegDistance_vals), 0,
7437 NULL, HFILL }},
7438 { &hf_atn_cpdlc_legTime,
7439 { "legTime", "atn-cpdlc.legTime",
7440 FT_UINT32, BASE_DEC, NULL, 0,
7441 NULL, HFILL }},
7442 { &hf_atn_cpdlc_singleLevel,
7443 { "singleLevel", "atn-cpdlc.singleLevel",
7444 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelType_vals), 0,
7445 "LevelType", HFILL }},
7446 { &hf_atn_cpdlc_blockLevel,
7447 { "blockLevel", "atn-cpdlc.blockLevel",
7448 FT_UINT32, BASE_DEC, NULL, 0,
7449 "SEQUENCE_SIZE_2_OF_LevelType", HFILL }},
7450 { &hf_atn_cpdlc_blockLevel_item,
7451 { "LevelType", "atn-cpdlc.LevelType",
7452 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelType_vals), 0,
7453 NULL, HFILL }},
7454 { &hf_atn_cpdlc_LevelLevel_item,
7455 { "Level", "atn-cpdlc.Level",
7456 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7457 NULL, HFILL }},
7458 { &hf_atn_cpdlc_procedureName,
7459 { "procedureName", "atn-cpdlc.procedureName_element",
7460 FT_NONE, BASE_NONE, NULL, 0,
7461 NULL, HFILL }},
7462 { &hf_atn_cpdlc_levelProcedureName,
7463 { "levelProcedureName", "atn-cpdlc.levelProcedureName_element",
7464 FT_NONE, BASE_NONE, NULL, 0,
7465 NULL, HFILL }},
7466 { &hf_atn_cpdlc_levelspeed_speed,
7467 { "speed", "atn-cpdlc.speed",
7468 FT_UINT32, BASE_DEC, NULL, 0,
7469 "SpeedSpeed", HFILL }},
7470 { &hf_atn_cpdlc_speeds,
7471 { "speeds", "atn-cpdlc.speeds",
7472 FT_UINT32, BASE_DEC, NULL, 0,
7473 "SpeedSpeed", HFILL }},
7474 { &hf_atn_cpdlc_levelFeet,
7475 { "levelFeet", "atn-cpdlc.levelFeet",
7476 FT_INT32, BASE_DEC, NULL, 0,
7477 NULL, HFILL }},
7478 { &hf_atn_cpdlc_levelMeters,
7479 { "levelMeters", "atn-cpdlc.levelMeters",
7480 FT_INT32, BASE_DEC, NULL, 0,
7481 NULL, HFILL }},
7482 { &hf_atn_cpdlc_levelFlightLevel,
7483 { "levelFlightLevel", "atn-cpdlc.levelFlightLevel",
7484 FT_UINT32, BASE_DEC, NULL, 0,
7485 NULL, HFILL }},
7486 { &hf_atn_cpdlc_levelFlightLevelMetric,
7487 { "levelFlightLevelMetric", "atn-cpdlc.levelFlightLevelMetric",
7488 FT_UINT32, BASE_DEC, NULL, 0,
7489 NULL, HFILL }},
7490 { &hf_atn_cpdlc_longitudeType,
7491 { "longitudeType", "atn-cpdlc.longitudeType",
7492 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LongitudeType_vals), 0,
7493 NULL, HFILL }},
7494 { &hf_atn_cpdlc_longitudeDirection,
7495 { "longitudeDirection", "atn-cpdlc.longitudeDirection",
7496 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LongitudeDirection_vals), 0,
7497 NULL, HFILL }},
7498 { &hf_atn_cpdlc_longitudeWholeDegrees,
7499 { "longitudeWholeDegrees", "atn-cpdlc.longitudeWholeDegrees",
7500 FT_UINT32, BASE_DEC, NULL, 0,
7501 NULL, HFILL }},
7502 { &hf_atn_cpdlc_latLonWholeMinutes,
7503 { "latLonWholeMinutes", "atn-cpdlc.latLonWholeMinutes",
7504 FT_UINT32, BASE_DEC, NULL, 0,
7505 NULL, HFILL }},
7506 { &hf_atn_cpdlc_longitudeDegrees,
7507 { "longitudeDegrees", "atn-cpdlc.longitudeDegrees",
7508 FT_UINT32, BASE_DEC, NULL, 0,
7509 NULL, HFILL }},
7510 { &hf_atn_cpdlc_longitudeDegreesMinutes,
7511 { "longitudeDegreesMinutes", "atn-cpdlc.longitudeDegreesMinutes_element",
7512 FT_NONE, BASE_NONE, NULL, 0,
7513 NULL, HFILL }},
7514 { &hf_atn_cpdlc_longitudeDMS,
7515 { "longitudeDMS", "atn-cpdlc.longitudeDMS_element",
7516 FT_NONE, BASE_NONE, NULL, 0,
7517 "LongitudeDegreesMinutesSeconds", HFILL }},
7518 { &hf_atn_cpdlc_navaid_name,
7519 { "name", "atn-cpdlc.name",
7520 FT_STRING, BASE_NONE, NULL, 0,
7521 "NavaidName", HFILL }},
7522 { &hf_atn_cpdlc_PlaceBearingPlaceBearing_item,
7523 { "PlaceBearing", "atn-cpdlc.PlaceBearing_element",
7524 FT_NONE, BASE_NONE, NULL, 0,
7525 NULL, HFILL }},
7526 { &hf_atn_cpdlc_fixName,
7527 { "fixName", "atn-cpdlc.fixName_element",
7528 FT_NONE, BASE_NONE, NULL, 0,
7529 NULL, HFILL }},
7530 { &hf_atn_cpdlc_navaid,
7531 { "navaid", "atn-cpdlc.navaid_element",
7532 FT_NONE, BASE_NONE, NULL, 0,
7533 NULL, HFILL }},
7534 { &hf_atn_cpdlc_airport,
7535 { "airport", "atn-cpdlc.airport",
7536 FT_STRING, BASE_NONE, NULL, 0,
7537 NULL, HFILL }},
7538 { &hf_atn_cpdlc_levels,
7539 { "levels", "atn-cpdlc.levels",
7540 FT_UINT32, BASE_DEC, NULL, 0,
7541 "LevelLevel", HFILL }},
7542 { &hf_atn_cpdlc_positionlevel,
7543 { "positionlevel", "atn-cpdlc.positionlevel_element",
7544 FT_NONE, BASE_NONE, NULL, 0,
7545 NULL, HFILL }},
7546 { &hf_atn_cpdlc_PositionPosition_item,
7547 { "Position", "atn-cpdlc.Position",
7548 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7549 NULL, HFILL }},
7550 { &hf_atn_cpdlc_positioncurrent,
7551 { "positioncurrent", "atn-cpdlc.positioncurrent",
7552 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7553 "Position", HFILL }},
7554 { &hf_atn_cpdlc_timeatpositioncurrent,
7555 { "timeatpositioncurrent", "atn-cpdlc.timeatpositioncurrent_element",
7556 FT_NONE, BASE_NONE, NULL, 0,
7557 "Time", HFILL }},
7558 { &hf_atn_cpdlc_fixnext,
7559 { "fixnext", "atn-cpdlc.fixnext",
7560 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7561 "Position", HFILL }},
7562 { &hf_atn_cpdlc_timeetaatfixnext,
7563 { "timeetaatfixnext", "atn-cpdlc.timeetaatfixnext_element",
7564 FT_NONE, BASE_NONE, NULL, 0,
7565 "Time", HFILL }},
7566 { &hf_atn_cpdlc_fixnextplusone,
7567 { "fixnextplusone", "atn-cpdlc.fixnextplusone",
7568 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7569 "Position", HFILL }},
7570 { &hf_atn_cpdlc_timeetaatdestination,
7571 { "timeetaatdestination", "atn-cpdlc.timeetaatdestination_element",
7572 FT_NONE, BASE_NONE, NULL, 0,
7573 "Time", HFILL }},
7574 { &hf_atn_cpdlc_remainingFuel,
7575 { "remainingFuel", "atn-cpdlc.remainingFuel_element",
7576 FT_NONE, BASE_NONE, NULL, 0,
7577 NULL, HFILL }},
7578 { &hf_atn_cpdlc_temperature,
7579 { "temperature", "atn-cpdlc.temperature",
7580 FT_INT32, BASE_DEC, NULL, 0,
7581 NULL, HFILL }},
7582 { &hf_atn_cpdlc_winds,
7583 { "winds", "atn-cpdlc.winds_element",
7584 FT_NONE, BASE_NONE, NULL, 0,
7585 NULL, HFILL }},
7586 { &hf_atn_cpdlc_turbulence,
7587 { "turbulence", "atn-cpdlc.turbulence",
7588 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Turbulence_vals), 0,
7589 NULL, HFILL }},
7590 { &hf_atn_cpdlc_icing,
7591 { "icing", "atn-cpdlc.icing",
7592 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Icing_vals), 0,
7593 NULL, HFILL }},
7594 { &hf_atn_cpdlc_speedground,
7595 { "speedground", "atn-cpdlc.speedground",
7596 FT_INT32, BASE_DEC, NULL, 0,
7597 NULL, HFILL }},
7598 { &hf_atn_cpdlc_verticalChange,
7599 { "verticalChange", "atn-cpdlc.verticalChange_element",
7600 FT_NONE, BASE_NONE, NULL, 0,
7601 NULL, HFILL }},
7602 { &hf_atn_cpdlc_trackAngle,
7603 { "trackAngle", "atn-cpdlc.trackAngle",
7604 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
7605 "Degrees", HFILL }},
7606 { &hf_atn_cpdlc_heading,
7607 { "heading", "atn-cpdlc.heading",
7608 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0,
7609 "Degrees", HFILL }},
7610 { &hf_atn_cpdlc_humidity,
7611 { "humidity", "atn-cpdlc.humidity",
7612 FT_UINT32, BASE_DEC, NULL, 0,
7613 NULL, HFILL }},
7614 { &hf_atn_cpdlc_reportedWaypointPosition,
7615 { "reportedWaypointPosition", "atn-cpdlc.reportedWaypointPosition",
7616 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0,
7617 "Position", HFILL }},
7618 { &hf_atn_cpdlc_reportedWaypointTime,
7619 { "reportedWaypointTime", "atn-cpdlc.reportedWaypointTime_element",
7620 FT_NONE, BASE_NONE, NULL, 0,
7621 "Time", HFILL }},
7622 { &hf_atn_cpdlc_reportedWaypointLevel,
7623 { "reportedWaypointLevel", "atn-cpdlc.reportedWaypointLevel",
7624 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0,
7625 "Level", HFILL }},
7626 { &hf_atn_cpdlc_routeClearanceIndex,
7627 { "routeClearanceIndex", "atn-cpdlc.routeClearanceIndex",
7628 FT_UINT32, BASE_DEC, NULL, 0,
7629 NULL, HFILL }},
7630 { &hf_atn_cpdlc_positionTime,
7631 { "positionTime", "atn-cpdlc.positionTime_element",
7632 FT_NONE, BASE_NONE, NULL, 0,
7633 NULL, HFILL }},
7634 { &hf_atn_cpdlc_times,
7635 { "times", "atn-cpdlc.times",
7636 FT_UINT32, BASE_DEC, NULL, 0,
7637 "TimeTime", HFILL }},
7638 { &hf_atn_cpdlc_unitname,
7639 { "unitname", "atn-cpdlc.unitname_element",
7640 FT_NONE, BASE_NONE, NULL, 0,
7641 NULL, HFILL }},
7642 { &hf_atn_cpdlc_frequency,
7643 { "frequency", "atn-cpdlc.frequency",
7644 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0,
7645 NULL, HFILL }},
7646 { &hf_atn_cpdlc_type,
7647 { "type", "atn-cpdlc.type",
7648 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProcedureType_vals), 0,
7649 "ProcedureType", HFILL }},
7650 { &hf_atn_cpdlc_procedure,
7651 { "procedure", "atn-cpdlc.procedure",
7652 FT_STRING, BASE_NONE, NULL, 0,
7653 NULL, HFILL }},
7654 { &hf_atn_cpdlc_transition,
7655 { "transition", "atn-cpdlc.transition",
7656 FT_STRING, BASE_NONE, NULL, 0,
7657 "ProcedureTransition", HFILL }},
7658 { &hf_atn_cpdlc_personsOnBoard,
7659 { "personsOnBoard", "atn-cpdlc.personsOnBoard",
7660 FT_UINT32, BASE_DEC, NULL, 0,
7661 NULL, HFILL }},
7662 { &hf_atn_cpdlc_latLonReportingPoints,
7663 { "latLonReportingPoints", "atn-cpdlc.latLonReportingPoints",
7664 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatLonReportingPoints_vals), 0,
7665 NULL, HFILL }},
7666 { &hf_atn_cpdlc_degreeIncrement,
7667 { "degreeIncrement", "atn-cpdlc.degreeIncrement",
7668 FT_UINT32, BASE_DEC, NULL, 0,
7669 NULL, HFILL }},
7670 { &hf_atn_cpdlc_procedureDeparture,
7671 { "procedureDeparture", "atn-cpdlc.procedureDeparture_element",
7672 FT_NONE, BASE_NONE, NULL, 0,
7673 "ProcedureName", HFILL }},
7674 { &hf_atn_cpdlc_runwayArrival,
7675 { "runwayArrival", "atn-cpdlc.runwayArrival_element",
7676 FT_NONE, BASE_NONE, NULL, 0,
7677 "Runway", HFILL }},
7678 { &hf_atn_cpdlc_procedureApproach,
7679 { "procedureApproach", "atn-cpdlc.procedureApproach_element",
7680 FT_NONE, BASE_NONE, NULL, 0,
7681 "ProcedureName", HFILL }},
7682 { &hf_atn_cpdlc_procedureArrival,
7683 { "procedureArrival", "atn-cpdlc.procedureArrival_element",
7684 FT_NONE, BASE_NONE, NULL, 0,
7685 "ProcedureName", HFILL }},
7686 { &hf_atn_cpdlc_routeInformations,
7687 { "routeInformations", "atn-cpdlc.routeInformations",
7688 FT_UINT32, BASE_DEC, NULL, 0,
7689 "SEQUENCE_SIZE_1_128_OF_RouteInformation", HFILL }},
7690 { &hf_atn_cpdlc_routeInformations_item,
7691 { "RouteInformation", "atn-cpdlc.RouteInformation",
7692 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RouteInformation_vals), 0,
7693 NULL, HFILL }},
7694 { &hf_atn_cpdlc_routeInformationAdditional,
7695 { "routeInformationAdditional", "atn-cpdlc.routeInformationAdditional_element",
7696 FT_NONE, BASE_NONE, NULL, 0,
7697 NULL, HFILL }},
7698 { &hf_atn_cpdlc_aTSRouteDesignator,
7699 { "aTSRouteDesignator", "atn-cpdlc.aTSRouteDesignator",
7700 FT_STRING, BASE_NONE, NULL, 0,
7701 NULL, HFILL }},
7702 { &hf_atn_cpdlc_aTWAlongTrackWaypoints,
7703 { "aTWAlongTrackWaypoints", "atn-cpdlc.aTWAlongTrackWaypoints",
7704 FT_UINT32, BASE_DEC, NULL, 0,
7705 "SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint", HFILL }},
7706 { &hf_atn_cpdlc_aTWAlongTrackWaypoints_item,
7707 { "ATWAlongTrackWaypoint", "atn-cpdlc.ATWAlongTrackWaypoint_element",
7708 FT_NONE, BASE_NONE, NULL, 0,
7709 NULL, HFILL }},
7710 { &hf_atn_cpdlc_reportingpoints,
7711 { "reportingpoints", "atn-cpdlc.reportingpoints_element",
7712 FT_NONE, BASE_NONE, NULL, 0,
7713 NULL, HFILL }},
7714 { &hf_atn_cpdlc_interceptCourseFroms,
7715 { "interceptCourseFroms", "atn-cpdlc.interceptCourseFroms",
7716 FT_UINT32, BASE_DEC, NULL, 0,
7717 "SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom", HFILL }},
7718 { &hf_atn_cpdlc_interceptCourseFroms_item,
7719 { "InterceptCourseFrom", "atn-cpdlc.InterceptCourseFrom_element",
7720 FT_NONE, BASE_NONE, NULL, 0,
7721 NULL, HFILL }},
7722 { &hf_atn_cpdlc_holdAtWaypoints,
7723 { "holdAtWaypoints", "atn-cpdlc.holdAtWaypoints",
7724 FT_UINT32, BASE_DEC, NULL, 0,
7725 "SEQUENCE_SIZE_1_8_OF_Holdatwaypoint", HFILL }},
7726 { &hf_atn_cpdlc_holdAtWaypoints_item,
7727 { "Holdatwaypoint", "atn-cpdlc.Holdatwaypoint_element",
7728 FT_NONE, BASE_NONE, NULL, 0,
7729 NULL, HFILL }},
7730 { &hf_atn_cpdlc_waypointSpeedLevels,
7731 { "waypointSpeedLevels", "atn-cpdlc.waypointSpeedLevels",
7732 FT_UINT32, BASE_DEC, NULL, 0,
7733 "SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel", HFILL }},
7734 { &hf_atn_cpdlc_waypointSpeedLevels_item,
7735 { "WaypointSpeedLevel", "atn-cpdlc.WaypointSpeedLevel_element",
7736 FT_NONE, BASE_NONE, NULL, 0,
7737 NULL, HFILL }},
7738 { &hf_atn_cpdlc_rTARequiredTimeArrivals,
7739 { "rTARequiredTimeArrivals", "atn-cpdlc.rTARequiredTimeArrivals",
7740 FT_UINT32, BASE_DEC, NULL, 0,
7741 "SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival", HFILL }},
7742 { &hf_atn_cpdlc_rTARequiredTimeArrivals_item,
7743 { "RTARequiredTimeArrival", "atn-cpdlc.RTARequiredTimeArrival_element",
7744 FT_NONE, BASE_NONE, NULL, 0,
7745 NULL, HFILL }},
7746 { &hf_atn_cpdlc_rTATime,
7747 { "rTATime", "atn-cpdlc.rTATime_element",
7748 FT_NONE, BASE_NONE, NULL, 0,
7749 NULL, HFILL }},
7750 { &hf_atn_cpdlc_rTATolerance,
7751 { "rTATolerance", "atn-cpdlc.rTATolerance",
7752 FT_UINT32, BASE_DEC, NULL, 0,
7753 NULL, HFILL }},
7754 { &hf_atn_cpdlc_runway_direction,
7755 { "direction", "atn-cpdlc.direction",
7756 FT_UINT32, BASE_DEC, NULL, 0,
7757 "RunwayDirection", HFILL }},
7758 { &hf_atn_cpdlc_configuration,
7759 { "configuration", "atn-cpdlc.configuration",
7760 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RunwayConfiguration_vals), 0,
7761 "RunwayConfiguration", HFILL }},
7762 { &hf_atn_cpdlc_runway,
7763 { "runway", "atn-cpdlc.runway_element",
7764 FT_NONE, BASE_NONE, NULL, 0,
7765 NULL, HFILL }},
7766 { &hf_atn_cpdlc_rVR,
7767 { "rVR", "atn-cpdlc.rVR",
7768 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RVR_vals), 0,
7769 NULL, HFILL }},
7770 { &hf_atn_cpdlc_rVRFeet,
7771 { "rVRFeet", "atn-cpdlc.rVRFeet",
7772 FT_UINT32, BASE_DEC, NULL, 0,
7773 NULL, HFILL }},
7774 { &hf_atn_cpdlc_rVRMeters,
7775 { "rVRMeters", "atn-cpdlc.rVRMeters",
7776 FT_UINT32, BASE_DEC, NULL, 0,
7777 NULL, HFILL }},
7778 { &hf_atn_cpdlc_speedIndicated,
7779 { "speedIndicated", "atn-cpdlc.speedIndicated",
7780 FT_UINT32, BASE_DEC, NULL, 0,
7781 NULL, HFILL }},
7782 { &hf_atn_cpdlc_speedIndicatedMetric,
7783 { "speedIndicatedMetric", "atn-cpdlc.speedIndicatedMetric",
7784 FT_UINT32, BASE_DEC, NULL, 0,
7785 NULL, HFILL }},
7786 { &hf_atn_cpdlc_speedTrue,
7787 { "speedTrue", "atn-cpdlc.speedTrue",
7788 FT_UINT32, BASE_DEC, NULL, 0,
7789 NULL, HFILL }},
7790 { &hf_atn_cpdlc_speedTrueMetric,
7791 { "speedTrueMetric", "atn-cpdlc.speedTrueMetric",
7792 FT_UINT32, BASE_DEC, NULL, 0,
7793 NULL, HFILL }},
7794 { &hf_atn_cpdlc_speedGround,
7795 { "speedGround", "atn-cpdlc.speedGround",
7796 FT_INT32, BASE_DEC, NULL, 0,
7797 NULL, HFILL }},
7798 { &hf_atn_cpdlc_speedGroundMetric,
7799 { "speedGroundMetric", "atn-cpdlc.speedGroundMetric",
7800 FT_INT32, BASE_DEC, NULL, 0,
7801 NULL, HFILL }},
7802 { &hf_atn_cpdlc_speedMach,
7803 { "speedMach", "atn-cpdlc.speedMach",
7804 FT_UINT32, BASE_DEC, NULL, 0,
7805 NULL, HFILL }},
7806 { &hf_atn_cpdlc_SpeedSpeed_item,
7807 { "Speed", "atn-cpdlc.Speed",
7808 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0,
7809 NULL, HFILL }},
7810 { &hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item,
7811 { "SpeedType", "atn-cpdlc.SpeedType",
7812 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_SpeedType_vals), 0,
7813 NULL, HFILL }},
7814 { &hf_atn_cpdlc_speedTypes,
7815 { "speedTypes", "atn-cpdlc.speedTypes",
7816 FT_UINT32, BASE_DEC, NULL, 0,
7817 "SpeedTypeSpeedTypeSpeedType", HFILL }},
7818 { &hf_atn_cpdlc_hours,
7819 { "hours", "atn-cpdlc.hours",
7820 FT_UINT32, BASE_DEC, NULL, 0,
7821 "TimeHours", HFILL }},
7822 { &hf_atn_cpdlc_minutes,
7823 { "minutes", "atn-cpdlc.minutes",
7824 FT_UINT32, BASE_DEC, NULL, 0,
7825 "TimeMinutes", HFILL }},
7826 { &hf_atn_cpdlc_timeDepartureAllocated,
7827 { "timeDepartureAllocated", "atn-cpdlc.timeDepartureAllocated_element",
7828 FT_NONE, BASE_NONE, NULL, 0,
7829 "Time", HFILL }},
7830 { &hf_atn_cpdlc_timeDepartureControlled,
7831 { "timeDepartureControlled", "atn-cpdlc.timeDepartureControlled_element",
7832 FT_NONE, BASE_NONE, NULL, 0,
7833 "ControlledTime", HFILL }},
7834 { &hf_atn_cpdlc_timeDepartureClearanceExpected,
7835 { "timeDepartureClearanceExpected", "atn-cpdlc.timeDepartureClearanceExpected_element",
7836 FT_NONE, BASE_NONE, NULL, 0,
7837 "Time", HFILL }},
7838 { &hf_atn_cpdlc_departureMinimumInterval,
7839 { "departureMinimumInterval", "atn-cpdlc.departureMinimumInterval",
7840 FT_UINT32, BASE_DEC, NULL, 0,
7841 NULL, HFILL }},
7842 { &hf_atn_cpdlc_tofrom,
7843 { "tofrom", "atn-cpdlc.tofrom",
7844 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ToFrom_vals), 0,
7845 NULL, HFILL }},
7846 { &hf_atn_cpdlc_hoursminutes,
7847 { "hoursminutes", "atn-cpdlc.hoursminutes_element",
7848 FT_NONE, BASE_NONE, NULL, 0,
7849 "Time", HFILL }},
7850 { &hf_atn_cpdlc_seconds,
7851 { "seconds", "atn-cpdlc.seconds",
7852 FT_UINT32, BASE_DEC, NULL, 0,
7853 "TimeSeconds", HFILL }},
7854 { &hf_atn_cpdlc_unitName,
7855 { "unitName", "atn-cpdlc.unitName_element",
7856 FT_NONE, BASE_NONE, NULL, 0,
7857 NULL, HFILL }},
7858 { &hf_atn_cpdlc_timeposition,
7859 { "timeposition", "atn-cpdlc.timeposition_element",
7860 FT_NONE, BASE_NONE, NULL, 0,
7861 NULL, HFILL }},
7862 { &hf_atn_cpdlc_levelspeed,
7863 { "levelspeed", "atn-cpdlc.levelspeed_element",
7864 FT_NONE, BASE_NONE, NULL, 0,
7865 NULL, HFILL }},
7866 { &hf_atn_cpdlc_speedspeed,
7867 { "speedspeed", "atn-cpdlc.speedspeed",
7868 FT_UINT32, BASE_DEC, NULL, 0,
7869 NULL, HFILL }},
7870 { &hf_atn_cpdlc_TimeTime_item,
7871 { "Time", "atn-cpdlc.Time_element",
7872 FT_NONE, BASE_NONE, NULL, 0,
7873 NULL, HFILL }},
7874 { &hf_atn_cpdlc_toFrom,
7875 { "toFrom", "atn-cpdlc.toFrom",
7876 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ToFrom_vals), 0,
7877 NULL, HFILL }},
7878 { &hf_atn_cpdlc_facilityName,
7879 { "facilityName", "atn-cpdlc.facilityName",
7880 FT_STRING, BASE_NONE, NULL, 0,
7881 NULL, HFILL }},
7882 { &hf_atn_cpdlc_facilityFunction,
7883 { "facilityFunction", "atn-cpdlc.facilityFunction",
7884 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_FacilityFunction_vals), 0,
7885 NULL, HFILL }},
7886 { &hf_atn_cpdlc_vertical_direction,
7887 { "direction", "atn-cpdlc.direction",
7888 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalDirection_vals), 0,
7889 "VerticalDirection", HFILL }},
7890 { &hf_atn_cpdlc_rate,
7891 { "rate", "atn-cpdlc.rate",
7892 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0,
7893 "VerticalRate", HFILL }},
7894 { &hf_atn_cpdlc_verticalRateEnglish,
7895 { "verticalRateEnglish", "atn-cpdlc.verticalRateEnglish",
7896 FT_UINT32, BASE_DEC, NULL, 0,
7897 NULL, HFILL }},
7898 { &hf_atn_cpdlc_verticalRateMetric,
7899 { "verticalRateMetric", "atn-cpdlc.verticalRateMetric",
7900 FT_UINT32, BASE_DEC, NULL, 0,
7901 NULL, HFILL }},
7902 { &hf_atn_cpdlc_winds_direction,
7903 { "direction", "atn-cpdlc.direction",
7904 FT_UINT32, BASE_DEC, NULL, 0,
7905 "WindDirection", HFILL }},
7906 { &hf_atn_cpdlc_winds_speed,
7907 { "speed", "atn-cpdlc.speed",
7908 FT_UINT32, BASE_DEC, VALS(atn_cpdlc_WindSpeed_vals), 0,
7909 "WindSpeed", HFILL }},
7910 { &hf_atn_cpdlc_windSpeedEnglish,
7911 { "windSpeedEnglish", "atn-cpdlc.windSpeedEnglish",
7912 FT_UINT32, BASE_DEC, NULL, 0,
7913 NULL, HFILL }},
7914 { &hf_atn_cpdlc_windSpeedMetric,
7915 { "windSpeedMetric", "atn-cpdlc.windSpeedMetric",
7916 FT_UINT32, BASE_DEC, NULL, 0,
7917 NULL, HFILL }},
7919 /*--- End of included file: packet-atn-cpdlc-hfarr.c ---*/
7920 #line 315 "../../asn1/atn-cpdlc/packet-atn-cpdlc-template.c"
7923 static gint *ett[] = {
7925 /*--- Included file: packet-atn-cpdlc-ettarr.c ---*/
7926 #line 1 "../../asn1/atn-cpdlc/packet-atn-cpdlc-ettarr.c"
7927 &ett_atn_cpdlc_GroundPDUs,
7928 &ett_atn_cpdlc_UplinkMessage,
7929 &ett_atn_cpdlc_AircraftPDUs,
7930 &ett_atn_cpdlc_StartDownMessage,
7931 &ett_atn_cpdlc_DownlinkMessage,
7932 &ett_atn_cpdlc_ProtectedGroundPDUs,
7933 &ett_atn_cpdlc_ProtectedUplinkMessage,
7934 &ett_atn_cpdlc_ATCForwardMessage,
7935 &ett_atn_cpdlc_ForwardHeader,
7936 &ett_atn_cpdlc_ForwardMessage,
7937 &ett_atn_cpdlc_ProtectedAircraftPDUs,
7938 &ett_atn_cpdlc_ProtectedStartDownMessage,
7939 &ett_atn_cpdlc_ProtectedDownlinkMessage,
7940 &ett_atn_cpdlc_ATCUplinkMessage,
7941 &ett_atn_cpdlc_ATCUplinkMessageData,
7942 &ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId,
7943 &ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata,
7944 &ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance,
7945 &ett_atn_cpdlc_ATCDownlinkMessage,
7946 &ett_atn_cpdlc_ATCDownlinkMessageData,
7947 &ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId,
7948 &ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata,
7949 &ett_atn_cpdlc_ATCMessageHeader,
7950 &ett_atn_cpdlc_ATCUplinkMsgElementId,
7951 &ett_atn_cpdlc_ATCDownlinkMsgElementId,
7952 &ett_atn_cpdlc_Altimeter,
7953 &ett_atn_cpdlc_ATWAlongTrackWaypoint,
7954 &ett_atn_cpdlc_ATWLevel,
7955 &ett_atn_cpdlc_ATWLevelSequence,
7956 &ett_atn_cpdlc_ATWDistance,
7957 &ett_atn_cpdlc_Code,
7958 &ett_atn_cpdlc_ControlledTime,
7959 &ett_atn_cpdlc_Date,
7960 &ett_atn_cpdlc_DateTimeGroup,
7961 &ett_atn_cpdlc_Degrees,
7962 &ett_atn_cpdlc_DepartureClearance,
7963 &ett_atn_cpdlc_DirectionDegrees,
7964 &ett_atn_cpdlc_Distance,
7965 &ett_atn_cpdlc_DistanceSpecified,
7966 &ett_atn_cpdlc_DistanceSpecifiedDirection,
7967 &ett_atn_cpdlc_DistanceSpecifiedDirectionTime,
7968 &ett_atn_cpdlc_Facility,
7969 &ett_atn_cpdlc_FacilityDesignationAltimeter,
7970 &ett_atn_cpdlc_FacilityDesignationATISCode,
7971 &ett_atn_cpdlc_FixName,
7972 &ett_atn_cpdlc_FlightInformation,
7973 &ett_atn_cpdlc_Frequency,
7974 &ett_atn_cpdlc_FurtherInstructions,
7975 &ett_atn_cpdlc_Holdatwaypoint,
7976 &ett_atn_cpdlc_HoldClearance,
7977 &ett_atn_cpdlc_InterceptCourseFrom,
7978 &ett_atn_cpdlc_InterceptCourseFromSelection,
7979 &ett_atn_cpdlc_Latitude,
7980 &ett_atn_cpdlc_LatitudeDegreesMinutes,
7981 &ett_atn_cpdlc_LatitudeDegreesMinutesSeconds,
7982 &ett_atn_cpdlc_LatitudeLongitude,
7983 &ett_atn_cpdlc_LatitudeReportingPoints,
7984 &ett_atn_cpdlc_LatitudeType,
7985 &ett_atn_cpdlc_LatLonReportingPoints,
7986 &ett_atn_cpdlc_LegDistance,
7987 &ett_atn_cpdlc_LegType,
7988 &ett_atn_cpdlc_Level,
7989 &ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType,
7990 &ett_atn_cpdlc_LevelLevel,
7991 &ett_atn_cpdlc_LevelPosition,
7992 &ett_atn_cpdlc_LevelProcedureName,
7993 &ett_atn_cpdlc_LevelsOfFlight,
7994 &ett_atn_cpdlc_LevelSpeed,
7995 &ett_atn_cpdlc_LevelSpeedSpeed,
7996 &ett_atn_cpdlc_LevelTime,
7997 &ett_atn_cpdlc_LevelType,
7998 &ett_atn_cpdlc_Longitude,
7999 &ett_atn_cpdlc_LongitudeDegreesMinutes,
8000 &ett_atn_cpdlc_LongitudeDegreesMinutesSeconds,
8001 &ett_atn_cpdlc_LongitudeReportingPoints,
8002 &ett_atn_cpdlc_LongitudeType,
8003 &ett_atn_cpdlc_Navaid,
8004 &ett_atn_cpdlc_PlaceBearing,
8005 &ett_atn_cpdlc_PlaceBearingDistance,
8006 &ett_atn_cpdlc_PlaceBearingPlaceBearing,
8007 &ett_atn_cpdlc_Position,
8008 &ett_atn_cpdlc_PositionDegrees,
8009 &ett_atn_cpdlc_PositionDistanceSpecifiedDirection,
8010 &ett_atn_cpdlc_PositionLevel,
8011 &ett_atn_cpdlc_PositionLevelLevel,
8012 &ett_atn_cpdlc_PositionLevelSpeed,
8013 &ett_atn_cpdlc_PositionPosition,
8014 &ett_atn_cpdlc_PositionProcedureName,
8015 &ett_atn_cpdlc_PositionReport,
8016 &ett_atn_cpdlc_PositionRouteClearanceIndex,
8017 &ett_atn_cpdlc_PositionSpeed,
8018 &ett_atn_cpdlc_PositionSpeedSpeed,
8019 &ett_atn_cpdlc_PositionTime,
8020 &ett_atn_cpdlc_PositionTimeLevel,
8021 &ett_atn_cpdlc_PositionTimeTime,
8022 &ett_atn_cpdlc_PositionUnitNameFrequency,
8023 &ett_atn_cpdlc_ProcedureName,
8024 &ett_atn_cpdlc_PublishedIdentifier,
8025 &ett_atn_cpdlc_RemainingFuelPersonsOnBoard,
8026 &ett_atn_cpdlc_ReportingPoints,
8027 &ett_atn_cpdlc_RouteAndLevels,
8028 &ett_atn_cpdlc_RouteClearance,
8029 &ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation,
8030 &ett_atn_cpdlc_RouteInformation,
8031 &ett_atn_cpdlc_RouteInformationAdditional,
8032 &ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint,
8033 &ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom,
8034 &ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint,
8035 &ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel,
8036 &ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival,
8037 &ett_atn_cpdlc_RTARequiredTimeArrival,
8038 &ett_atn_cpdlc_RTATime,
8039 &ett_atn_cpdlc_Runway,
8040 &ett_atn_cpdlc_RunwayRVR,
8041 &ett_atn_cpdlc_RVR,
8042 &ett_atn_cpdlc_Speed,
8043 &ett_atn_cpdlc_SpeedSpeed,
8044 &ett_atn_cpdlc_SpeedTime,
8045 &ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType,
8046 &ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed,
8047 &ett_atn_cpdlc_Time,
8048 &ett_atn_cpdlc_TimeLevel,
8049 &ett_atn_cpdlc_TimeDeparture,
8050 &ett_atn_cpdlc_TimeDistanceSpecifiedDirection,
8051 &ett_atn_cpdlc_TimeDistanceToFromPosition,
8052 &ett_atn_cpdlc_Timehhmmss,
8053 &ett_atn_cpdlc_TimeUnitNameFrequency,
8054 &ett_atn_cpdlc_TimePosition,
8055 &ett_atn_cpdlc_TimePositionLevel,
8056 &ett_atn_cpdlc_TimePositionLevelSpeed,
8057 &ett_atn_cpdlc_TimeSpeed,
8058 &ett_atn_cpdlc_TimeSpeedSpeed,
8059 &ett_atn_cpdlc_TimeTime,
8060 &ett_atn_cpdlc_TimeToFromPosition,
8061 &ett_atn_cpdlc_ToFromPosition,
8062 &ett_atn_cpdlc_UnitName,
8063 &ett_atn_cpdlc_UnitNameFrequency,
8064 &ett_atn_cpdlc_VerticalChange,
8065 &ett_atn_cpdlc_VerticalRate,
8066 &ett_atn_cpdlc_WaypointSpeedLevel,
8067 &ett_atn_cpdlc_Winds,
8068 &ett_atn_cpdlc_WindSpeed,
8070 /*--- End of included file: packet-atn-cpdlc-ettarr.c ---*/
8071 #line 319 "../../asn1/atn-cpdlc/packet-atn-cpdlc-template.c"
8072 &ett_atn_cpdlc
8075 /* register CPDLC */
8076 proto_atn_cpdlc = proto_register_protocol(
8077 ATN_CPDLC_PROTO ,
8078 "ATN-CPDLC",
8079 "atn-cpdlc");
8081 proto_register_field_array(
8082 proto_atn_cpdlc,
8083 hf_atn_cpdlc,
8084 array_length(hf_atn_cpdlc));
8086 proto_register_subtree_array(
8087 ett,
8088 array_length(ett));
8090 new_register_dissector(
8091 "atn-cpdlc",
8092 dissect_atn_cpdlc,
8093 proto_atn_cpdlc);
8096 void proto_reg_handoff_atn_cpdlc(void)
8098 /* add session dissector to atn dissector list dissector list*/
8099 heur_dissector_add(
8100 "atn-ulcs",
8101 dissect_atn_cpdlc_heur,
8102 proto_atn_cpdlc);
8107 * Editor modelines - http://www.wireshark.org/tools/modelines.html
8109 * Local variables:
8110 * c-basic-offset: 2
8111 * tab-width: 2
8112 * indent-tabs-mode: t
8113 * End:
8115 * vi: set shiftwidth=2 tabstop=2 noexpandtab:
8116 * :indentSize=2:tabSize=2:noTabs=false: