/* Do not modify this file. Changes will be overwritten. */ /* Generated automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-atn-cpdlc.c */ /* asn2wrs.py -u -q -L -p atn-cpdlc -c ./atn-cpdlc.cnf -s ./packet-atn-cpdlc-template -D . -O ../.. atn-cpdlc.asn */ /* packet-atn-cpdlc-template.c * By Mathias Guettler * Copyright 2013 * * Routines for ATN Cpdlcc protocol packet disassembly * * details see: * https://en.wikipedia.org/wiki/CPDLC * https://members.optusnet.com.au/~cjr/introduction.htm * * standards: * We are dealing with ATN/CPDLC aka ICAO Doc 9705 Second Edition here * (CPDLC may also be transmitted via ACARS/AOA aka "FANS-1/A "). * https://www.icao.int/safety/acp/repository/_%20Doc9705_ed2_1999.pdf * * Wireshark - Network traffic analyzer * By Gerald Combs * Copyright 1998 Gerald Combs * * SPDX-License-Identifier: GPL-2.0-or-later */ /* developper comments: Which CPDLC messages are supported ? Protected Mode CPDLC (AeQualifier 22) and Plain Old CPDLC (AeQualifier 2) The dissector has been tested with ICAO doc9705 Edition2 compliant traffic. */ #include "config.h" #include #include #include #include #include "packet-ber.h" #include "packet-per.h" #include "packet-atn-ulcs.h" #define ATN_CPDLC_PROTO "ICAO Doc9705 CPDLC" void proto_register_atn_cpdlc(void); void proto_reg_handoff_atn_cpdlc(void); static const char *object_identifier_id; /* IA5 charset (7-bit) for PER IA5 decoding */ static const char ia5alpha[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, \ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, \ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, \ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, \ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, \ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, \ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, \ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, \ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, '\0' }; /* forward declarations */ static int dissect_GroundPDUs_PDU( tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_AircraftPDUs_PDU( tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_ProtectedGroundPDUs_PDU( tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_ProtectedAircraftPDUs_PDU( tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int hf_atn_cpdlc_GroundPDUs_PDU; /* GroundPDUs */ static int hf_atn_cpdlc_AircraftPDUs_PDU; /* AircraftPDUs */ static int hf_atn_cpdlc_ProtectedGroundPDUs_PDU; /* ProtectedGroundPDUs */ static int hf_atn_cpdlc_ProtectedAircraftPDUs_PDU; /* ProtectedAircraftPDUs */ static int hf_atn_cpdlc_abortUser; /* CPDLCUserAbortReason */ static int hf_atn_cpdlc_abortProvider; /* CPDLCProviderAbortReason */ static int hf_atn_cpdlc_startup; /* UplinkMessage */ static int hf_atn_cpdlc_groundpdus_send; /* ATCUplinkMessage */ static int hf_atn_cpdlc_forward; /* ATCForwardMessage */ static int hf_atn_cpdlc_forwardresponse; /* ATCForwardResponse */ static int hf_atn_cpdlc_noMessage; /* NULL */ static int hf_atn_cpdlc_aTCUplinkMessage; /* ATCUplinkMessage */ static int hf_atn_cpdlc_startdown; /* StartDownMessage */ static int hf_atn_cpdlc_aircraftpdus_send; /* ATCDownlinkMessage */ static int hf_atn_cpdlc_mode; /* Mode */ static int hf_atn_cpdlc_startDownlinkMessage; /* DownlinkMessage */ static int hf_atn_cpdlc_aTCDownlinkMessage; /* ATCDownlinkMessage */ static int hf_atn_cpdlc_pmcpdlcuserabortreason; /* PMCPDLCUserAbortReason */ static int hf_atn_cpdlc_pmcpdlcproviderabortreason; /* PMCPDLCProviderAbortReason */ static int hf_atn_cpdlc_protecteduplinkmessage; /* ProtectedUplinkMessage */ static int hf_atn_cpdlc_algorithmIdentifier; /* AlgorithmIdentifier */ static int hf_atn_cpdlc_protectedMessage; /* CPDLCMessage */ static int hf_atn_cpdlc_integrityCheck; /* BIT_STRING */ static int hf_atn_cpdlc_forwardHeader; /* ForwardHeader */ static int hf_atn_cpdlc_forwardMessage; /* ForwardMessage */ static int hf_atn_cpdlc_dateTime; /* DateTimeGroup */ static int hf_atn_cpdlc_aircraftID; /* AircraftFlightIdentification */ static int hf_atn_cpdlc_aircraftAddress; /* AircraftAddress */ static int hf_atn_cpdlc_upElementIDs; /* BIT_STRING */ static int hf_atn_cpdlc_downElementIDs; /* BIT_STRING */ static int hf_atn_cpdlc_protectedstartDownmessage; /* ProtectedStartDownMessage */ static int hf_atn_cpdlc_send; /* ProtectedDownlinkMessage */ static int hf_atn_cpdlc_protectedmode; /* ProtectedMode */ static int hf_atn_cpdlc_protecteddownlinkmessage; /* ProtectedDownlinkMessage */ static int hf_atn_cpdlc_header; /* ATCMessageHeader */ static int hf_atn_cpdlc_atcuplinkmessage_messagedata; /* ATCUplinkMessageData */ static int hf_atn_cpdlc_atcuplinkmessagedata_elementids; /* SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId */ static int hf_atn_cpdlc_atcuplinkmessagedata_elementids_item; /* ATCUplinkMsgElementId */ static int hf_atn_cpdlc_atcuplinkmessagedata_constraineddata; /* T_atcuplinkmessagedata_constraineddata */ static int hf_atn_cpdlc_routeClearanceData; /* SEQUENCE_SIZE_1_2_OF_RouteClearance */ static int hf_atn_cpdlc_routeClearanceData_item; /* RouteClearance */ static int hf_atn_cpdlc_atcdownlinkmessage_messagedata; /* ATCDownlinkMessageData */ static int hf_atn_cpdlc_atcdownlinkmessagedata_elementids; /* SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId */ static int hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item; /* ATCDownlinkMsgElementId */ static int hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata; /* T_atcdownlinkmessagedata_constraineddata */ static int hf_atn_cpdlc_messageIdNumber; /* MsgIdentificationNumber */ static int hf_atn_cpdlc_messageRefNumber; /* MsgReferenceNumber */ static int hf_atn_cpdlc_logicalAck; /* LogicalAck */ static int hf_atn_cpdlc_uM0NULL; /* NULL */ static int hf_atn_cpdlc_uM1NULL; /* NULL */ static int hf_atn_cpdlc_uM2NULL; /* NULL */ static int hf_atn_cpdlc_uM3NULL; /* NULL */ static int hf_atn_cpdlc_uM4NULL; /* NULL */ static int hf_atn_cpdlc_uM5NULL; /* NULL */ static int hf_atn_cpdlc_uM6Level; /* Level */ static int hf_atn_cpdlc_uM7Time; /* Time */ static int hf_atn_cpdlc_uM8Position; /* Position */ static int hf_atn_cpdlc_uM9Time; /* Time */ static int hf_atn_cpdlc_uM10Position; /* Position */ static int hf_atn_cpdlc_uM11Time; /* Time */ static int hf_atn_cpdlc_uM12Position; /* Position */ static int hf_atn_cpdlc_uM13TimeLevel; /* TimeLevel */ static int hf_atn_cpdlc_uM14PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM15TimeLevel; /* TimeLevel */ static int hf_atn_cpdlc_uM16PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM17TimeLevel; /* TimeLevel */ static int hf_atn_cpdlc_uM18PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM19Level; /* Level */ static int hf_atn_cpdlc_uM20Level; /* Level */ static int hf_atn_cpdlc_uM21TimeLevel; /* TimeLevel */ static int hf_atn_cpdlc_uM22PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM23Level; /* Level */ static int hf_atn_cpdlc_uM24TimeLevel; /* TimeLevel */ static int hf_atn_cpdlc_uM25PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM26LevelTime; /* LevelTime */ static int hf_atn_cpdlc_uM27LevelPosition; /* LevelPosition */ static int hf_atn_cpdlc_uM28LevelTime; /* LevelTime */ static int hf_atn_cpdlc_uM29LevelPosition; /* LevelPosition */ static int hf_atn_cpdlc_uM30LevelLevel; /* LevelLevel */ static int hf_atn_cpdlc_uM31LevelLevel; /* LevelLevel */ static int hf_atn_cpdlc_uM32LevelLevel; /* LevelLevel */ static int hf_atn_cpdlc_uM33NULL; /* NULL */ static int hf_atn_cpdlc_uM34Level; /* Level */ static int hf_atn_cpdlc_uM35Level; /* Level */ static int hf_atn_cpdlc_uM36Level; /* Level */ static int hf_atn_cpdlc_uM37Level; /* Level */ static int hf_atn_cpdlc_uM38Level; /* Level */ static int hf_atn_cpdlc_uM39Level; /* Level */ static int hf_atn_cpdlc_uM40NULL; /* NULL */ static int hf_atn_cpdlc_uM41NULL; /* NULL */ static int hf_atn_cpdlc_uM42PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM43PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM44PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM45PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM46PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM47PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM48PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM49PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM50PositionLevelLevel; /* PositionLevelLevel */ static int hf_atn_cpdlc_uM51PositionTime; /* PositionTime */ static int hf_atn_cpdlc_uM52PositionTime; /* PositionTime */ static int hf_atn_cpdlc_uM53PositionTime; /* PositionTime */ static int hf_atn_cpdlc_uM54PositionTimeTime; /* PositionTimeTime */ static int hf_atn_cpdlc_uM55PositionSpeed; /* PositionSpeed */ static int hf_atn_cpdlc_uM56PositionSpeed; /* PositionSpeed */ static int hf_atn_cpdlc_uM57PositionSpeed; /* PositionSpeed */ static int hf_atn_cpdlc_uM58PositionTimeLevel; /* PositionTimeLevel */ static int hf_atn_cpdlc_uM59PositionTimeLevel; /* PositionTimeLevel */ static int hf_atn_cpdlc_uM60PositionTimeLevel; /* PositionTimeLevel */ static int hf_atn_cpdlc_uM61PositionLevelSpeed; /* PositionLevelSpeed */ static int hf_atn_cpdlc_uM62TimePositionLevel; /* TimePositionLevel */ static int hf_atn_cpdlc_uM63TimePositionLevelSpeed; /* TimePositionLevelSpeed */ static int hf_atn_cpdlc_uM64DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection; /* PositionDistanceSpecifiedDirection */ static int hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection; /* TimeDistanceSpecifiedDirection */ static int hf_atn_cpdlc_uM67NULL; /* NULL */ static int hf_atn_cpdlc_uM68Position; /* Position */ static int hf_atn_cpdlc_uM69Time; /* Time */ static int hf_atn_cpdlc_uM70Position; /* Position */ static int hf_atn_cpdlc_uM71Time; /* Time */ static int hf_atn_cpdlc_uM72NULL; /* NULL */ static int hf_atn_cpdlc_uM73DepartureClearance; /* DepartureClearance */ static int hf_atn_cpdlc_uM74Position; /* Position */ static int hf_atn_cpdlc_uM75Position; /* Position */ static int hf_atn_cpdlc_uM76TimePosition; /* TimePosition */ static int hf_atn_cpdlc_uM77PositionPosition; /* PositionPosition */ static int hf_atn_cpdlc_uM78LevelPosition; /* LevelPosition */ static int hf_atn_cpdlc_uM79PositionRouteClearance; /* PositionRouteClearanceIndex */ static int hf_atn_cpdlc_uM80RouteClearance; /* RouteClearanceIndex */ static int hf_atn_cpdlc_uM81ProcedureName; /* ProcedureName */ static int hf_atn_cpdlc_uM82DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_uM83PositionRouteClearance; /* PositionRouteClearanceIndex */ static int hf_atn_cpdlc_uM84PositionProcedureName; /* PositionProcedureName */ static int hf_atn_cpdlc_uM85RouteClearance; /* RouteClearanceIndex */ static int hf_atn_cpdlc_uM86PositionRouteClearance; /* PositionRouteClearanceIndex */ static int hf_atn_cpdlc_uM87Position; /* Position */ static int hf_atn_cpdlc_uM88PositionPosition; /* PositionPosition */ static int hf_atn_cpdlc_uM89TimePosition; /* TimePosition */ static int hf_atn_cpdlc_uM90LevelPosition; /* LevelPosition */ static int hf_atn_cpdlc_uM91HoldClearance; /* HoldClearance */ static int hf_atn_cpdlc_uM92PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM93Time; /* Time */ static int hf_atn_cpdlc_uM94DirectionDegrees; /* DirectionDegrees */ static int hf_atn_cpdlc_uM95DirectionDegrees; /* DirectionDegrees */ static int hf_atn_cpdlc_uM96NULL; /* NULL */ static int hf_atn_cpdlc_uM97PositionDegrees; /* PositionDegrees */ static int hf_atn_cpdlc_uM98DirectionDegrees; /* DirectionDegrees */ static int hf_atn_cpdlc_uM99ProcedureName; /* ProcedureName */ static int hf_atn_cpdlc_uM100TimeSpeed; /* TimeSpeed */ static int hf_atn_cpdlc_uM101PositionSpeed; /* PositionSpeed */ static int hf_atn_cpdlc_uM102LevelSpeed; /* LevelSpeed */ static int hf_atn_cpdlc_uM103TimeSpeedSpeed; /* TimeSpeedSpeed */ static int hf_atn_cpdlc_uM104PositionSpeedSpeed; /* PositionSpeedSpeed */ static int hf_atn_cpdlc_uM105LevelSpeedSpeed; /* LevelSpeedSpeed */ static int hf_atn_cpdlc_uM106Speed; /* Speed */ static int hf_atn_cpdlc_uM107NULL; /* NULL */ static int hf_atn_cpdlc_uM108Speed; /* Speed */ static int hf_atn_cpdlc_uM109Speed; /* Speed */ static int hf_atn_cpdlc_uM110SpeedSpeed; /* SpeedSpeed */ static int hf_atn_cpdlc_uM111Speed; /* Speed */ static int hf_atn_cpdlc_uM112Speed; /* Speed */ static int hf_atn_cpdlc_uM113Speed; /* Speed */ static int hf_atn_cpdlc_uM114Speed; /* Speed */ static int hf_atn_cpdlc_uM115Speed; /* Speed */ static int hf_atn_cpdlc_uM116NULL; /* NULL */ static int hf_atn_cpdlc_uM117UnitNameFrequency; /* UnitNameFrequency */ static int hf_atn_cpdlc_uM118PositionUnitNameFrequency; /* PositionUnitNameFrequency */ static int hf_atn_cpdlc_uM119TimeUnitNameFrequency; /* TimeUnitNameFrequency */ static int hf_atn_cpdlc_uM120UnitNameFrequency; /* UnitNameFrequency */ static int hf_atn_cpdlc_uM121PositionUnitNameFrequency; /* PositionUnitNameFrequency */ static int hf_atn_cpdlc_uM122TimeUnitNameFrequency; /* TimeUnitNameFrequency */ static int hf_atn_cpdlc_uM123Code; /* Code */ static int hf_atn_cpdlc_uM124NULL; /* NULL */ static int hf_atn_cpdlc_uM125NULL; /* NULL */ static int hf_atn_cpdlc_uM126NULL; /* NULL */ static int hf_atn_cpdlc_uM127NULL; /* NULL */ static int hf_atn_cpdlc_uM128Level; /* Level */ static int hf_atn_cpdlc_uM129Level; /* Level */ static int hf_atn_cpdlc_uM130Position; /* Position */ static int hf_atn_cpdlc_uM131NULL; /* NULL */ static int hf_atn_cpdlc_uM132NULL; /* NULL */ static int hf_atn_cpdlc_uM133NULL; /* NULL */ static int hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType; /* SpeedTypeSpeedTypeSpeedType */ static int hf_atn_cpdlc_uM135NULL; /* NULL */ static int hf_atn_cpdlc_uM136NULL; /* NULL */ static int hf_atn_cpdlc_uM137NULL; /* NULL */ static int hf_atn_cpdlc_uM138NULL; /* NULL */ static int hf_atn_cpdlc_uM139NULL; /* NULL */ static int hf_atn_cpdlc_uM140NULL; /* NULL */ static int hf_atn_cpdlc_uM141NULL; /* NULL */ static int hf_atn_cpdlc_uM142NULL; /* NULL */ static int hf_atn_cpdlc_uM143NULL; /* NULL */ static int hf_atn_cpdlc_uM144NULL; /* NULL */ static int hf_atn_cpdlc_uM145NULL; /* NULL */ static int hf_atn_cpdlc_uM146NULL; /* NULL */ static int hf_atn_cpdlc_uM147NULL; /* NULL */ static int hf_atn_cpdlc_uM148Level; /* Level */ static int hf_atn_cpdlc_uM149LevelPosition; /* LevelPosition */ static int hf_atn_cpdlc_uM150LevelTime; /* LevelTime */ static int hf_atn_cpdlc_uM151Speed; /* Speed */ static int hf_atn_cpdlc_uM152DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_uM153Altimeter; /* Altimeter */ static int hf_atn_cpdlc_uM154NULL; /* NULL */ static int hf_atn_cpdlc_uM155Position; /* Position */ static int hf_atn_cpdlc_uM156NULL; /* NULL */ static int hf_atn_cpdlc_uM157Frequency; /* Frequency */ static int hf_atn_cpdlc_uM158AtisCode; /* ATISCode */ static int hf_atn_cpdlc_uM159ErrorInformation; /* ErrorInformation */ static int hf_atn_cpdlc_uM160Facility; /* Facility */ static int hf_atn_cpdlc_uM161NULL; /* NULL */ static int hf_atn_cpdlc_uM162NULL; /* NULL */ static int hf_atn_cpdlc_uM163FacilityDesignation; /* FacilityDesignation */ static int hf_atn_cpdlc_uM164NULL; /* NULL */ static int hf_atn_cpdlc_uM165NULL; /* NULL */ static int hf_atn_cpdlc_uM166TrafficType; /* TrafficType */ static int hf_atn_cpdlc_uM167NULL; /* NULL */ static int hf_atn_cpdlc_uM168NULL; /* NULL */ static int hf_atn_cpdlc_uM169FreeText; /* FreeText */ static int hf_atn_cpdlc_uM170FreeText; /* FreeText */ static int hf_atn_cpdlc_uM171VerticalRate; /* VerticalRate */ static int hf_atn_cpdlc_uM172VerticalRate; /* VerticalRate */ static int hf_atn_cpdlc_uM173VerticalRate; /* VerticalRate */ static int hf_atn_cpdlc_uM174VerticalRate; /* VerticalRate */ static int hf_atn_cpdlc_uM175Level; /* Level */ static int hf_atn_cpdlc_uM176NULL; /* NULL */ static int hf_atn_cpdlc_uM177NULL; /* NULL */ static int hf_atn_cpdlc_uM178NULL; /* NULL */ static int hf_atn_cpdlc_uM179NULL; /* NULL */ static int hf_atn_cpdlc_uM180LevelLevel; /* LevelLevel */ static int hf_atn_cpdlc_uM181ToFromPosition; /* ToFromPosition */ static int hf_atn_cpdlc_uM182NULL; /* NULL */ static int hf_atn_cpdlc_uM183FreeText; /* FreeText */ static int hf_atn_cpdlc_uM184TimeToFromPosition; /* TimeToFromPosition */ static int hf_atn_cpdlc_uM185PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM186PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_uM187FreeText; /* FreeText */ static int hf_atn_cpdlc_uM188PositionSpeed; /* PositionSpeed */ static int hf_atn_cpdlc_uM189Speed; /* Speed */ static int hf_atn_cpdlc_uM190Degrees; /* Degrees */ static int hf_atn_cpdlc_uM191NULL; /* NULL */ static int hf_atn_cpdlc_uM192LevelTime; /* LevelTime */ static int hf_atn_cpdlc_uM193NULL; /* NULL */ static int hf_atn_cpdlc_uM194FreeText; /* FreeText */ static int hf_atn_cpdlc_uM195FreeText; /* FreeText */ static int hf_atn_cpdlc_uM196FreeText; /* FreeText */ static int hf_atn_cpdlc_uM197FreeText; /* FreeText */ static int hf_atn_cpdlc_uM198FreeText; /* FreeText */ static int hf_atn_cpdlc_uM199FreeText; /* FreeText */ static int hf_atn_cpdlc_uM200NULL; /* NULL */ static int hf_atn_cpdlc_uM201NULL; /* NULL */ static int hf_atn_cpdlc_uM202NULL; /* NULL */ static int hf_atn_cpdlc_uM203FreeText; /* FreeText */ static int hf_atn_cpdlc_uM204FreeText; /* FreeText */ static int hf_atn_cpdlc_uM205FreeText; /* FreeText */ static int hf_atn_cpdlc_uM206FreeText; /* FreeText */ static int hf_atn_cpdlc_uM207FreeText; /* FreeText */ static int hf_atn_cpdlc_uM208FreeText; /* FreeText */ static int hf_atn_cpdlc_uM209LevelPosition; /* LevelPosition */ static int hf_atn_cpdlc_uM210Position; /* Position */ static int hf_atn_cpdlc_uM211NULL; /* NULL */ static int hf_atn_cpdlc_uM212FacilityDesignationATISCode; /* FacilityDesignationATISCode */ static int hf_atn_cpdlc_uM213FacilityDesignationAltimeter; /* FacilityDesignationAltimeter */ static int hf_atn_cpdlc_uM214RunwayRVR; /* RunwayRVR */ static int hf_atn_cpdlc_uM215DirectionDegrees; /* DirectionDegrees */ static int hf_atn_cpdlc_uM216NULL; /* NULL */ static int hf_atn_cpdlc_uM217NULL; /* NULL */ static int hf_atn_cpdlc_uM218NULL; /* NULL */ static int hf_atn_cpdlc_uM219Level; /* Level */ static int hf_atn_cpdlc_uM220Level; /* Level */ static int hf_atn_cpdlc_uM221Degrees; /* Degrees */ static int hf_atn_cpdlc_uM222NULL; /* NULL */ static int hf_atn_cpdlc_uM223NULL; /* NULL */ static int hf_atn_cpdlc_uM224NULL; /* NULL */ static int hf_atn_cpdlc_uM225NULL; /* NULL */ static int hf_atn_cpdlc_uM226Time; /* Time */ static int hf_atn_cpdlc_uM227NULL; /* NULL */ static int hf_atn_cpdlc_uM228Position; /* Position */ static int hf_atn_cpdlc_uM229NULL; /* NULL */ static int hf_atn_cpdlc_uM230NULL; /* NULL */ static int hf_atn_cpdlc_uM231NULL; /* NULL */ static int hf_atn_cpdlc_uM232NULL; /* NULL */ static int hf_atn_cpdlc_uM233NULL; /* NULL */ static int hf_atn_cpdlc_uM234NULL; /* NULL */ static int hf_atn_cpdlc_uM235NULL; /* NULL */ static int hf_atn_cpdlc_uM236NULL; /* NULL */ static int hf_atn_cpdlc_uM237NULL; /* NULL */ static int hf_atn_cpdlc_dM0NULL; /* NULL */ static int hf_atn_cpdlc_dM1NULL; /* NULL */ static int hf_atn_cpdlc_dM2NULL; /* NULL */ static int hf_atn_cpdlc_dM3NULL; /* NULL */ static int hf_atn_cpdlc_dM4NULL; /* NULL */ static int hf_atn_cpdlc_dM5NULL; /* NULL */ static int hf_atn_cpdlc_dM6Level; /* Level */ static int hf_atn_cpdlc_dM7LevelLevel; /* LevelLevel */ static int hf_atn_cpdlc_dM8Level; /* Level */ static int hf_atn_cpdlc_dM9Level; /* Level */ static int hf_atn_cpdlc_dM10Level; /* Level */ static int hf_atn_cpdlc_dM11PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_dM12PositionLevel; /* PositionLevel */ static int hf_atn_cpdlc_dM13TimeLevel; /* TimeLevel */ static int hf_atn_cpdlc_dM14TimeLevel; /* TimeLevel */ static int hf_atn_cpdlc_dM15DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection; /* PositionDistanceSpecifiedDirection */ static int hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection; /* TimeDistanceSpecifiedDirection */ static int hf_atn_cpdlc_dM18Speed; /* Speed */ static int hf_atn_cpdlc_dM19SpeedSpeed; /* SpeedSpeed */ static int hf_atn_cpdlc_dM20NULL; /* NULL */ static int hf_atn_cpdlc_dM21Frequency; /* Frequency */ static int hf_atn_cpdlc_dM22Position; /* Position */ static int hf_atn_cpdlc_dM23ProcedureName; /* ProcedureName */ static int hf_atn_cpdlc_dM24RouteClearance; /* RouteClearanceIndex */ static int hf_atn_cpdlc_dM25ClearanceType; /* ClearanceType */ static int hf_atn_cpdlc_dM26PositionRouteClearance; /* PositionRouteClearanceIndex */ static int hf_atn_cpdlc_dM27DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_dM28Level; /* Level */ static int hf_atn_cpdlc_dM29Level; /* Level */ static int hf_atn_cpdlc_dM30Level; /* Level */ static int hf_atn_cpdlc_dM31Position; /* Position */ static int hf_atn_cpdlc_dM32Level; /* Level */ static int hf_atn_cpdlc_dM33Position; /* Position */ static int hf_atn_cpdlc_dM34Speed; /* Speed */ static int hf_atn_cpdlc_dM35Degrees; /* Degrees */ static int hf_atn_cpdlc_dM36Degrees; /* Degrees */ static int hf_atn_cpdlc_dM37Level; /* Level */ static int hf_atn_cpdlc_dM38Level; /* Level */ static int hf_atn_cpdlc_dM39Speed; /* Speed */ static int hf_atn_cpdlc_dM40RouteClearance; /* RouteClearanceIndex */ static int hf_atn_cpdlc_dM41NULL; /* NULL */ static int hf_atn_cpdlc_dM42Position; /* Position */ static int hf_atn_cpdlc_dM43Time; /* Time */ static int hf_atn_cpdlc_dM44Position; /* Position */ static int hf_atn_cpdlc_dM45Position; /* Position */ static int hf_atn_cpdlc_dM46Time; /* Time */ static int hf_atn_cpdlc_dM47Code; /* Code */ static int hf_atn_cpdlc_dM48PositionReport; /* PositionReport */ static int hf_atn_cpdlc_dM49Speed; /* Speed */ static int hf_atn_cpdlc_dM50SpeedSpeed; /* SpeedSpeed */ static int hf_atn_cpdlc_dM51NULL; /* NULL */ static int hf_atn_cpdlc_dM52NULL; /* NULL */ static int hf_atn_cpdlc_dM53NULL; /* NULL */ static int hf_atn_cpdlc_dM54Level; /* Level */ static int hf_atn_cpdlc_dM55NULL; /* NULL */ static int hf_atn_cpdlc_dM56NULL; /* NULL */ static int hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard; /* RemainingFuelPersonsOnBoard */ static int hf_atn_cpdlc_dM58NULL; /* NULL */ static int hf_atn_cpdlc_dM59PositionRouteClearance; /* PositionRouteClearanceIndex */ static int hf_atn_cpdlc_dM60DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_dM61Level; /* Level */ static int hf_atn_cpdlc_dM62ErrorInformation; /* ErrorInformation */ static int hf_atn_cpdlc_dM63NULL; /* NULL */ static int hf_atn_cpdlc_dM64FacilityDesignation; /* FacilityDesignation */ static int hf_atn_cpdlc_dM65NULL; /* NULL */ static int hf_atn_cpdlc_dM66NULL; /* NULL */ static int hf_atn_cpdlc_dM67FreeText; /* FreeText */ static int hf_atn_cpdlc_dM68FreeText; /* FreeText */ static int hf_atn_cpdlc_dM69NULL; /* NULL */ static int hf_atn_cpdlc_dM70Degrees; /* Degrees */ static int hf_atn_cpdlc_dM71Degrees; /* Degrees */ static int hf_atn_cpdlc_dM72Level; /* Level */ static int hf_atn_cpdlc_dM73Versionnumber; /* VersionNumber */ static int hf_atn_cpdlc_dM74NULL; /* NULL */ static int hf_atn_cpdlc_dM75NULL; /* NULL */ static int hf_atn_cpdlc_dM76LevelLevel; /* LevelLevel */ static int hf_atn_cpdlc_dM77LevelLevel; /* LevelLevel */ static int hf_atn_cpdlc_dM78TimeDistanceToFromPosition; /* TimeDistanceToFromPosition */ static int hf_atn_cpdlc_dM79AtisCode; /* ATISCode */ static int hf_atn_cpdlc_dM80DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_dM81LevelTime; /* LevelTime */ static int hf_atn_cpdlc_dM82Level; /* Level */ static int hf_atn_cpdlc_dM83SpeedTime; /* SpeedTime */ static int hf_atn_cpdlc_dM84Speed; /* Speed */ static int hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime; /* DistanceSpecifiedDirectionTime */ static int hf_atn_cpdlc_dM86DistanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_dM87Level; /* Level */ static int hf_atn_cpdlc_dM88Level; /* Level */ static int hf_atn_cpdlc_dM89UnitnameFrequency; /* UnitNameFrequency */ static int hf_atn_cpdlc_dM90FreeText; /* FreeText */ static int hf_atn_cpdlc_dM91FreeText; /* FreeText */ static int hf_atn_cpdlc_dM92FreeText; /* FreeText */ static int hf_atn_cpdlc_dM93FreeText; /* FreeText */ static int hf_atn_cpdlc_dM94FreeText; /* FreeText */ static int hf_atn_cpdlc_dM95FreeText; /* FreeText */ static int hf_atn_cpdlc_dM96FreeText; /* FreeText */ static int hf_atn_cpdlc_dM97FreeText; /* FreeText */ static int hf_atn_cpdlc_dM98FreeText; /* FreeText */ static int hf_atn_cpdlc_dM99NULL; /* NULL */ static int hf_atn_cpdlc_dM100NULL; /* NULL */ static int hf_atn_cpdlc_dM101NULL; /* NULL */ static int hf_atn_cpdlc_dM102NULL; /* NULL */ static int hf_atn_cpdlc_dM103NULL; /* NULL */ static int hf_atn_cpdlc_dM104PositionTime; /* PositionTime */ static int hf_atn_cpdlc_dM105Airport; /* Airport */ static int hf_atn_cpdlc_dM106Level; /* Level */ static int hf_atn_cpdlc_dM107NULL; /* NULL */ static int hf_atn_cpdlc_dM108NULL; /* NULL */ static int hf_atn_cpdlc_dM109Time; /* Time */ static int hf_atn_cpdlc_dM110Position; /* Position */ static int hf_atn_cpdlc_dM111TimePosition; /* TimePosition */ static int hf_atn_cpdlc_dM112NULL; /* NULL */ static int hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed; /* SpeedTypeSpeedTypeSpeedTypeSpeed */ static int hf_atn_cpdlc_altimeterEnglish; /* AltimeterEnglish */ static int hf_atn_cpdlc_altimeterMetric; /* AltimeterMetric */ static int hf_atn_cpdlc_position; /* Position */ static int hf_atn_cpdlc_aTWDistance; /* ATWDistance */ static int hf_atn_cpdlc_speed; /* Speed */ static int hf_atn_cpdlc_aTWLevels; /* ATWLevelSequence */ static int hf_atn_cpdlc_atw; /* ATWLevelTolerance */ static int hf_atn_cpdlc_level; /* Level */ static int hf_atn_cpdlc_ATWLevelSequence_item; /* ATWLevel */ static int hf_atn_cpdlc_atwDistanceTolerance; /* ATWDistanceTolerance */ static int hf_atn_cpdlc_distance; /* Distance */ static int hf_atn_cpdlc_Code_item; /* CodeOctalDigit */ static int hf_atn_cpdlc_time; /* Time */ static int hf_atn_cpdlc_timeTolerance; /* TimeTolerance */ static int hf_atn_cpdlc_year; /* Year */ static int hf_atn_cpdlc_month; /* Month */ static int hf_atn_cpdlc_day; /* Day */ static int hf_atn_cpdlc_date; /* Date */ static int hf_atn_cpdlc_timehhmmss; /* Timehhmmss */ static int hf_atn_cpdlc_degreesMagnetic; /* DegreesMagnetic */ static int hf_atn_cpdlc_degreesTrue; /* DegreesTrue */ static int hf_atn_cpdlc_aircraftFlightIdentification; /* AircraftFlightIdentification */ static int hf_atn_cpdlc_clearanceLimit; /* Position */ static int hf_atn_cpdlc_flightInformation; /* FlightInformation */ static int hf_atn_cpdlc_furtherInstructions; /* FurtherInstructions */ static int hf_atn_cpdlc_direction; /* Direction */ static int hf_atn_cpdlc_degrees; /* Degrees */ static int hf_atn_cpdlc_distanceNm; /* DistanceNm */ static int hf_atn_cpdlc_distanceKm; /* DistanceKm */ static int hf_atn_cpdlc_distanceSpecifiedNm; /* DistanceSpecifiedNm */ static int hf_atn_cpdlc_distanceSpecifiedKm; /* DistanceSpecifiedKm */ static int hf_atn_cpdlc_distanceSpecified; /* DistanceSpecified */ static int hf_atn_cpdlc_distanceSpecifiedDirection; /* DistanceSpecifiedDirection */ static int hf_atn_cpdlc_noFacility; /* NULL */ static int hf_atn_cpdlc_facilityDesignation; /* FacilityDesignation */ static int hf_atn_cpdlc_altimeter; /* Altimeter */ static int hf_atn_cpdlc_aTISCode; /* ATISCode */ static int hf_atn_cpdlc_fixname_name; /* Fix */ static int hf_atn_cpdlc_latlon; /* LatitudeLongitude */ static int hf_atn_cpdlc_routeOfFlight; /* RouteInformation */ static int hf_atn_cpdlc_levelsOfFlight; /* LevelsOfFlight */ static int hf_atn_cpdlc_routeAndLevels; /* RouteAndLevels */ static int hf_atn_cpdlc_frequencyhf; /* Frequencyhf */ static int hf_atn_cpdlc_frequencyvhf; /* Frequencyvhf */ static int hf_atn_cpdlc_frequencyuhf; /* Frequencyuhf */ static int hf_atn_cpdlc_frequencysatchannel; /* Frequencysatchannel */ static int hf_atn_cpdlc_code; /* Code */ static int hf_atn_cpdlc_frequencyDeparture; /* UnitNameFrequency */ static int hf_atn_cpdlc_clearanceExpiryTime; /* Time */ static int hf_atn_cpdlc_airportDeparture; /* Airport */ static int hf_atn_cpdlc_airportDestination; /* Airport */ static int hf_atn_cpdlc_timeDeparture; /* TimeDeparture */ static int hf_atn_cpdlc_runwayDeparture; /* Runway */ static int hf_atn_cpdlc_revisionNumber; /* RevisionNumber */ static int hf_atn_cpdlc_holdatwaypointspeedlow; /* Speed */ static int hf_atn_cpdlc_aTWlevel; /* ATWLevel */ static int hf_atn_cpdlc_holdatwaypointspeedhigh; /* Speed */ static int hf_atn_cpdlc_eFCtime; /* Time */ static int hf_atn_cpdlc_legtype; /* LegType */ static int hf_atn_cpdlc_legType; /* LegType */ static int hf_atn_cpdlc_fromSelection; /* InterceptCourseFromSelection */ static int hf_atn_cpdlc_publishedIdentifier; /* PublishedIdentifier */ static int hf_atn_cpdlc_latitudeLongitude; /* LatitudeLongitude */ static int hf_atn_cpdlc_placeBearingPlaceBearing; /* PlaceBearingPlaceBearing */ static int hf_atn_cpdlc_placeBearingDistance; /* PlaceBearingDistance */ static int hf_atn_cpdlc_latitudeType; /* LatitudeType */ static int hf_atn_cpdlc_latitudeDirection; /* LatitudeDirection */ static int hf_atn_cpdlc_latitudeWholeDegrees; /* LatitudeWholeDegrees */ static int hf_atn_cpdlc_minutesLatLon; /* MinutesLatLon */ static int hf_atn_cpdlc_latlonWholeMinutes; /* LatLonWholeMinutes */ static int hf_atn_cpdlc_secondsLatLon; /* SecondsLatLon */ static int hf_atn_cpdlc_latitude; /* Latitude */ static int hf_atn_cpdlc_longitude; /* Longitude */ static int hf_atn_cpdlc_latitudeDegrees; /* LatitudeDegrees */ static int hf_atn_cpdlc_latitudeDegreesMinutes; /* LatitudeDegreesMinutes */ static int hf_atn_cpdlc_latitudeDMS; /* LatitudeDegreesMinutesSeconds */ static int hf_atn_cpdlc_latitudeReportingPoints; /* LatitudeReportingPoints */ static int hf_atn_cpdlc_longitudeReportingPoints; /* LongitudeReportingPoints */ static int hf_atn_cpdlc_legDistanceEnglish; /* LegDistanceEnglish */ static int hf_atn_cpdlc_legDistanceMetric; /* LegDistanceMetric */ static int hf_atn_cpdlc_legDistance; /* LegDistance */ static int hf_atn_cpdlc_legTime; /* LegTime */ static int hf_atn_cpdlc_singleLevel; /* LevelType */ static int hf_atn_cpdlc_blockLevel; /* SEQUENCE_SIZE_2_OF_LevelType */ static int hf_atn_cpdlc_blockLevel_item; /* LevelType */ static int hf_atn_cpdlc_LevelLevel_item; /* Level */ static int hf_atn_cpdlc_procedureName; /* ProcedureName */ static int hf_atn_cpdlc_levelProcedureName; /* LevelProcedureName */ static int hf_atn_cpdlc_levelspeed_speed; /* SpeedSpeed */ static int hf_atn_cpdlc_speeds; /* SpeedSpeed */ static int hf_atn_cpdlc_levelFeet; /* LevelFeet */ static int hf_atn_cpdlc_levelMeters; /* LevelMeters */ static int hf_atn_cpdlc_levelFlightLevel; /* LevelFlightLevel */ static int hf_atn_cpdlc_levelFlightLevelMetric; /* LevelFlightLevelMetric */ static int hf_atn_cpdlc_longitudeType; /* LongitudeType */ static int hf_atn_cpdlc_longitudeDirection; /* LongitudeDirection */ static int hf_atn_cpdlc_longitudeWholeDegrees; /* LongitudeWholeDegrees */ static int hf_atn_cpdlc_latLonWholeMinutes; /* LatLonWholeMinutes */ static int hf_atn_cpdlc_longitudeDegrees; /* LongitudeDegrees */ static int hf_atn_cpdlc_longitudeDegreesMinutes; /* LongitudeDegreesMinutes */ static int hf_atn_cpdlc_longitudeDMS; /* LongitudeDegreesMinutesSeconds */ static int hf_atn_cpdlc_navaid_name; /* NavaidName */ static int hf_atn_cpdlc_PlaceBearingPlaceBearing_item; /* PlaceBearing */ static int hf_atn_cpdlc_fixName; /* FixName */ static int hf_atn_cpdlc_navaid; /* Navaid */ static int hf_atn_cpdlc_airport; /* Airport */ static int hf_atn_cpdlc_levels; /* LevelLevel */ static int hf_atn_cpdlc_positionlevel; /* PositionLevel */ static int hf_atn_cpdlc_PositionPosition_item; /* Position */ static int hf_atn_cpdlc_positioncurrent; /* Position */ static int hf_atn_cpdlc_timeatpositioncurrent; /* Time */ static int hf_atn_cpdlc_fixnext; /* Position */ static int hf_atn_cpdlc_timeetaatfixnext; /* Time */ static int hf_atn_cpdlc_fixnextplusone; /* Position */ static int hf_atn_cpdlc_timeetaatdestination; /* Time */ static int hf_atn_cpdlc_remainingFuel; /* RemainingFuel */ static int hf_atn_cpdlc_temperature; /* Temperature */ static int hf_atn_cpdlc_winds; /* Winds */ static int hf_atn_cpdlc_turbulence; /* Turbulence */ static int hf_atn_cpdlc_icing; /* Icing */ static int hf_atn_cpdlc_speedground; /* SpeedGround */ static int hf_atn_cpdlc_verticalChange; /* VerticalChange */ static int hf_atn_cpdlc_trackAngle; /* Degrees */ static int hf_atn_cpdlc_heading; /* Degrees */ static int hf_atn_cpdlc_humidity; /* Humidity */ static int hf_atn_cpdlc_reportedWaypointPosition; /* Position */ static int hf_atn_cpdlc_reportedWaypointTime; /* Time */ static int hf_atn_cpdlc_reportedWaypointLevel; /* Level */ static int hf_atn_cpdlc_routeClearanceIndex; /* RouteClearanceIndex */ static int hf_atn_cpdlc_positionTime; /* PositionTime */ static int hf_atn_cpdlc_times; /* TimeTime */ static int hf_atn_cpdlc_unitname; /* UnitName */ static int hf_atn_cpdlc_frequency; /* Frequency */ static int hf_atn_cpdlc_type; /* ProcedureType */ static int hf_atn_cpdlc_procedure; /* Procedure */ static int hf_atn_cpdlc_transition; /* ProcedureTransition */ static int hf_atn_cpdlc_personsOnBoard; /* PersonsOnBoard */ static int hf_atn_cpdlc_latLonReportingPoints; /* LatLonReportingPoints */ static int hf_atn_cpdlc_degreeIncrement; /* DegreeIncrement */ static int hf_atn_cpdlc_procedureDeparture; /* ProcedureName */ static int hf_atn_cpdlc_runwayArrival; /* Runway */ static int hf_atn_cpdlc_procedureApproach; /* ProcedureName */ static int hf_atn_cpdlc_procedureArrival; /* ProcedureName */ static int hf_atn_cpdlc_routeInformations; /* SEQUENCE_SIZE_1_128_OF_RouteInformation */ static int hf_atn_cpdlc_routeInformations_item; /* RouteInformation */ static int hf_atn_cpdlc_routeInformationAdditional; /* RouteInformationAdditional */ static int hf_atn_cpdlc_aTSRouteDesignator; /* ATSRouteDesignator */ static int hf_atn_cpdlc_aTWAlongTrackWaypoints; /* SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint */ static int hf_atn_cpdlc_aTWAlongTrackWaypoints_item; /* ATWAlongTrackWaypoint */ static int hf_atn_cpdlc_reportingpoints; /* ReportingPoints */ static int hf_atn_cpdlc_interceptCourseFroms; /* SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom */ static int hf_atn_cpdlc_interceptCourseFroms_item; /* InterceptCourseFrom */ static int hf_atn_cpdlc_holdAtWaypoints; /* SEQUENCE_SIZE_1_8_OF_Holdatwaypoint */ static int hf_atn_cpdlc_holdAtWaypoints_item; /* Holdatwaypoint */ static int hf_atn_cpdlc_waypointSpeedLevels; /* SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel */ static int hf_atn_cpdlc_waypointSpeedLevels_item; /* WaypointSpeedLevel */ static int hf_atn_cpdlc_rTARequiredTimeArrivals; /* SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival */ static int hf_atn_cpdlc_rTARequiredTimeArrivals_item; /* RTARequiredTimeArrival */ static int hf_atn_cpdlc_rTATime; /* RTATime */ static int hf_atn_cpdlc_rTATolerance; /* RTATolerance */ static int hf_atn_cpdlc_runway_direction; /* RunwayDirection */ static int hf_atn_cpdlc_configuration; /* RunwayConfiguration */ static int hf_atn_cpdlc_runway; /* Runway */ static int hf_atn_cpdlc_rVR; /* RVR */ static int hf_atn_cpdlc_rVRFeet; /* RVRFeet */ static int hf_atn_cpdlc_rVRMeters; /* RVRMeters */ static int hf_atn_cpdlc_speedIndicated; /* SpeedIndicated */ static int hf_atn_cpdlc_speedIndicatedMetric; /* SpeedIndicatedMetric */ static int hf_atn_cpdlc_speedTrue; /* SpeedTrue */ static int hf_atn_cpdlc_speedTrueMetric; /* SpeedTrueMetric */ static int hf_atn_cpdlc_speedGround; /* SpeedGround */ static int hf_atn_cpdlc_speedGroundMetric; /* SpeedGroundMetric */ static int hf_atn_cpdlc_speedMach; /* SpeedMach */ static int hf_atn_cpdlc_SpeedSpeed_item; /* Speed */ static int hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item; /* SpeedType */ static int hf_atn_cpdlc_speedTypes; /* SpeedTypeSpeedTypeSpeedType */ static int hf_atn_cpdlc_hours; /* TimeHours */ static int hf_atn_cpdlc_minutes; /* TimeMinutes */ static int hf_atn_cpdlc_timeDepartureAllocated; /* Time */ static int hf_atn_cpdlc_timeDepartureControlled; /* ControlledTime */ static int hf_atn_cpdlc_timeDepartureClearanceExpected; /* Time */ static int hf_atn_cpdlc_departureMinimumInterval; /* DepartureMinimumInterval */ static int hf_atn_cpdlc_tofrom; /* ToFrom */ static int hf_atn_cpdlc_hoursminutes; /* Time */ static int hf_atn_cpdlc_seconds; /* TimeSeconds */ static int hf_atn_cpdlc_unitName; /* UnitName */ static int hf_atn_cpdlc_timeposition; /* TimePosition */ static int hf_atn_cpdlc_levelspeed; /* LevelSpeed */ static int hf_atn_cpdlc_speedspeed; /* SpeedSpeed */ static int hf_atn_cpdlc_TimeTime_item; /* Time */ static int hf_atn_cpdlc_toFrom; /* ToFrom */ static int hf_atn_cpdlc_facilityName; /* FacilityName */ static int hf_atn_cpdlc_facilityFunction; /* FacilityFunction */ static int hf_atn_cpdlc_vertical_direction; /* VerticalDirection */ static int hf_atn_cpdlc_rate; /* VerticalRate */ static int hf_atn_cpdlc_verticalRateEnglish; /* VerticalRateEnglish */ static int hf_atn_cpdlc_verticalRateMetric; /* VerticalRateMetric */ static int hf_atn_cpdlc_winds_direction; /* WindDirection */ static int hf_atn_cpdlc_winds_speed; /* WindSpeed */ static int hf_atn_cpdlc_windSpeedEnglish; /* WindSpeedEnglish */ static int hf_atn_cpdlc_windSpeedMetric; /* WindSpeedMetric */ static int ett_atn_cpdlc_GroundPDUs; static int ett_atn_cpdlc_UplinkMessage; static int ett_atn_cpdlc_AircraftPDUs; static int ett_atn_cpdlc_StartDownMessage; static int ett_atn_cpdlc_DownlinkMessage; static int ett_atn_cpdlc_ProtectedGroundPDUs; static int ett_atn_cpdlc_ProtectedUplinkMessage; static int ett_atn_cpdlc_ATCForwardMessage; static int ett_atn_cpdlc_ForwardHeader; static int ett_atn_cpdlc_ForwardMessage; static int ett_atn_cpdlc_ProtectedAircraftPDUs; static int ett_atn_cpdlc_ProtectedStartDownMessage; static int ett_atn_cpdlc_ProtectedDownlinkMessage; static int ett_atn_cpdlc_ATCUplinkMessage; static int ett_atn_cpdlc_ATCUplinkMessageData; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId; static int ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance; static int ett_atn_cpdlc_ATCDownlinkMessage; static int ett_atn_cpdlc_ATCDownlinkMessageData; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId; static int ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata; static int ett_atn_cpdlc_ATCMessageHeader; static int ett_atn_cpdlc_ATCUplinkMsgElementId; static int ett_atn_cpdlc_ATCDownlinkMsgElementId; static int ett_atn_cpdlc_Altimeter; static int ett_atn_cpdlc_ATWAlongTrackWaypoint; static int ett_atn_cpdlc_ATWLevel; static int ett_atn_cpdlc_ATWLevelSequence; static int ett_atn_cpdlc_ATWDistance; static int ett_atn_cpdlc_Code; static int ett_atn_cpdlc_ControlledTime; static int ett_atn_cpdlc_Date; static int ett_atn_cpdlc_DateTimeGroup; static int ett_atn_cpdlc_Degrees; static int ett_atn_cpdlc_DepartureClearance; static int ett_atn_cpdlc_DirectionDegrees; static int ett_atn_cpdlc_Distance; static int ett_atn_cpdlc_DistanceSpecified; static int ett_atn_cpdlc_DistanceSpecifiedDirection; static int ett_atn_cpdlc_DistanceSpecifiedDirectionTime; static int ett_atn_cpdlc_Facility; static int ett_atn_cpdlc_FacilityDesignationAltimeter; static int ett_atn_cpdlc_FacilityDesignationATISCode; static int ett_atn_cpdlc_FixName; static int ett_atn_cpdlc_FlightInformation; static int ett_atn_cpdlc_Frequency; static int ett_atn_cpdlc_FurtherInstructions; static int ett_atn_cpdlc_Holdatwaypoint; static int ett_atn_cpdlc_HoldClearance; static int ett_atn_cpdlc_InterceptCourseFrom; static int ett_atn_cpdlc_InterceptCourseFromSelection; static int ett_atn_cpdlc_Latitude; static int ett_atn_cpdlc_LatitudeDegreesMinutes; static int ett_atn_cpdlc_LatitudeDegreesMinutesSeconds; static int ett_atn_cpdlc_LatitudeLongitude; static int ett_atn_cpdlc_LatitudeReportingPoints; static int ett_atn_cpdlc_LatitudeType; static int ett_atn_cpdlc_LatLonReportingPoints; static int ett_atn_cpdlc_LegDistance; static int ett_atn_cpdlc_LegType; static int ett_atn_cpdlc_Level; static int ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType; static int ett_atn_cpdlc_LevelLevel; static int ett_atn_cpdlc_LevelPosition; static int ett_atn_cpdlc_LevelProcedureName; static int ett_atn_cpdlc_LevelsOfFlight; static int ett_atn_cpdlc_LevelSpeed; static int ett_atn_cpdlc_LevelSpeedSpeed; static int ett_atn_cpdlc_LevelTime; static int ett_atn_cpdlc_LevelType; static int ett_atn_cpdlc_Longitude; static int ett_atn_cpdlc_LongitudeDegreesMinutes; static int ett_atn_cpdlc_LongitudeDegreesMinutesSeconds; static int ett_atn_cpdlc_LongitudeReportingPoints; static int ett_atn_cpdlc_LongitudeType; static int ett_atn_cpdlc_Navaid; static int ett_atn_cpdlc_PlaceBearing; static int ett_atn_cpdlc_PlaceBearingDistance; static int ett_atn_cpdlc_PlaceBearingPlaceBearing; static int ett_atn_cpdlc_Position; static int ett_atn_cpdlc_PositionDegrees; static int ett_atn_cpdlc_PositionDistanceSpecifiedDirection; static int ett_atn_cpdlc_PositionLevel; static int ett_atn_cpdlc_PositionLevelLevel; static int ett_atn_cpdlc_PositionLevelSpeed; static int ett_atn_cpdlc_PositionPosition; static int ett_atn_cpdlc_PositionProcedureName; static int ett_atn_cpdlc_PositionReport; static int ett_atn_cpdlc_PositionRouteClearanceIndex; static int ett_atn_cpdlc_PositionSpeed; static int ett_atn_cpdlc_PositionSpeedSpeed; static int ett_atn_cpdlc_PositionTime; static int ett_atn_cpdlc_PositionTimeLevel; static int ett_atn_cpdlc_PositionTimeTime; static int ett_atn_cpdlc_PositionUnitNameFrequency; static int ett_atn_cpdlc_ProcedureName; static int ett_atn_cpdlc_PublishedIdentifier; static int ett_atn_cpdlc_RemainingFuelPersonsOnBoard; static int ett_atn_cpdlc_ReportingPoints; static int ett_atn_cpdlc_RouteAndLevels; static int ett_atn_cpdlc_RouteClearance; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation; static int ett_atn_cpdlc_RouteInformation; static int ett_atn_cpdlc_RouteInformationAdditional; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel; static int ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival; static int ett_atn_cpdlc_RTARequiredTimeArrival; static int ett_atn_cpdlc_RTATime; static int ett_atn_cpdlc_Runway; static int ett_atn_cpdlc_RunwayRVR; static int ett_atn_cpdlc_RVR; static int ett_atn_cpdlc_Speed; static int ett_atn_cpdlc_SpeedSpeed; static int ett_atn_cpdlc_SpeedTime; static int ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType; static int ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed; static int ett_atn_cpdlc_Time; static int ett_atn_cpdlc_TimeLevel; static int ett_atn_cpdlc_TimeDeparture; static int ett_atn_cpdlc_TimeDistanceSpecifiedDirection; static int ett_atn_cpdlc_TimeDistanceToFromPosition; static int ett_atn_cpdlc_Timehhmmss; static int ett_atn_cpdlc_TimeUnitNameFrequency; static int ett_atn_cpdlc_TimePosition; static int ett_atn_cpdlc_TimePositionLevel; static int ett_atn_cpdlc_TimePositionLevelSpeed; static int ett_atn_cpdlc_TimeSpeed; static int ett_atn_cpdlc_TimeSpeedSpeed; static int ett_atn_cpdlc_TimeTime; static int ett_atn_cpdlc_TimeToFromPosition; static int ett_atn_cpdlc_ToFromPosition; static int ett_atn_cpdlc_UnitName; static int ett_atn_cpdlc_UnitNameFrequency; static int ett_atn_cpdlc_VerticalChange; static int ett_atn_cpdlc_VerticalRate; static int ett_atn_cpdlc_WaypointSpeedLevel; static int ett_atn_cpdlc_Winds; static int ett_atn_cpdlc_WindSpeed; static int ett_atn_cpdlc; static const value_string atn_cpdlc_CPDLCUserAbortReason_vals[] = { { 0, "undefined" }, { 1, "no-message-identification-numbers-available" }, { 2, "duplicate-message-identification-numbers" }, { 3, "no-longer-next-data-authority" }, { 4, "current-data-authority-abort" }, { 5, "commanded-termination" }, { 6, "invalid-response" }, { 0, NULL } }; static int dissect_atn_cpdlc_CPDLCUserAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 7, NULL, true, 0, NULL); return offset; } static const value_string atn_cpdlc_CPDLCProviderAbortReason_vals[] = { { 0, "timer-expired" }, { 1, "undefined-error" }, { 2, "invalid-PDU" }, { 3, "protocol-error" }, { 4, "communication-service-error" }, { 5, "communication-service-failure" }, { 6, "invalid-QOS-parameter" }, { 7, "expected-PDU-missing" }, { 0, NULL } }; static int dissect_atn_cpdlc_CPDLCProviderAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 8, NULL, true, 0, NULL); return offset; } static int dissect_atn_cpdlc_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_null(tvb, offset, actx, tree, hf_index); return offset; } static int dissect_atn_cpdlc_MsgIdentificationNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 63U, NULL, false); return offset; } static int dissect_atn_cpdlc_MsgReferenceNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 63U, NULL, false); return offset; } static int dissect_atn_cpdlc_Year(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1996U, 2095U, NULL, false); return offset; } static int dissect_atn_cpdlc_Month(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 12U, NULL, false); return offset; } static int dissect_atn_cpdlc_Day(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 31U, NULL, false); return offset; } static const per_sequence_t Date_sequence[] = { { &hf_atn_cpdlc_year , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Year }, { &hf_atn_cpdlc_month , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Month }, { &hf_atn_cpdlc_day , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Day }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Date(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Date, Date_sequence); return offset; } static int dissect_atn_cpdlc_TimeHours(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 23U, NULL, false); return offset; } static int dissect_atn_cpdlc_TimeMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 59U, NULL, false); return offset; } static const per_sequence_t Time_sequence[] = { { &hf_atn_cpdlc_hours , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeHours }, { &hf_atn_cpdlc_minutes , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeMinutes }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Time, Time_sequence); return offset; } static int dissect_atn_cpdlc_TimeSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 59U, NULL, false); return offset; } static const per_sequence_t Timehhmmss_sequence[] = { { &hf_atn_cpdlc_hoursminutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_seconds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeSeconds }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Timehhmmss(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Timehhmmss, Timehhmmss_sequence); return offset; } static const per_sequence_t DateTimeGroup_sequence[] = { { &hf_atn_cpdlc_date , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Date }, { &hf_atn_cpdlc_timehhmmss, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Timehhmmss }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_DateTimeGroup(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_DateTimeGroup, DateTimeGroup_sequence); return offset; } static const value_string atn_cpdlc_LogicalAck_vals[] = { { 0, "required" }, { 1, "notRequired" }, { 0, NULL } }; static int dissect_atn_cpdlc_LogicalAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, false, 0, NULL); return offset; } static const per_sequence_t ATCMessageHeader_sequence[] = { { &hf_atn_cpdlc_messageIdNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MsgIdentificationNumber }, { &hf_atn_cpdlc_messageRefNumber, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_MsgReferenceNumber }, { &hf_atn_cpdlc_dateTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DateTimeGroup }, { &hf_atn_cpdlc_logicalAck, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LogicalAck }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATCMessageHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATCMessageHeader, ATCMessageHeader_sequence); return offset; } static int dissect_atn_cpdlc_LevelFeet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -60, 7000U, NULL, false); return offset; } static int dissect_atn_cpdlc_LevelMeters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -30, 25000U, NULL, false); return offset; } static int dissect_atn_cpdlc_LevelFlightLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 30U, 700U, NULL, false); return offset; } static int dissect_atn_cpdlc_LevelFlightLevelMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 100U, 2500U, NULL, false); return offset; } static const value_string atn_cpdlc_LevelType_vals[] = { { 0, "levelFeet" }, { 1, "levelMeters" }, { 2, "levelFlightLevel" }, { 3, "levelFlightLevelMetric" }, { 0, NULL } }; static const per_choice_t LevelType_choice[] = { { 0, &hf_atn_cpdlc_levelFeet , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFeet }, { 1, &hf_atn_cpdlc_levelMeters, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelMeters }, { 2, &hf_atn_cpdlc_levelFlightLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFlightLevel }, { 3, &hf_atn_cpdlc_levelFlightLevelMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelFlightLevelMetric }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_LevelType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LevelType, LevelType_choice, NULL); return offset; } static const per_sequence_t SEQUENCE_SIZE_2_OF_LevelType_sequence_of[1] = { { &hf_atn_cpdlc_blockLevel_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelType }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType, SEQUENCE_SIZE_2_OF_LevelType_sequence_of, 2, 2, false); return offset; } static const value_string atn_cpdlc_Level_vals[] = { { 0, "singleLevel" }, { 1, "blockLevel" }, { 0, NULL } }; static const per_choice_t Level_choice[] = { { 0, &hf_atn_cpdlc_singleLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelType }, { 1, &hf_atn_cpdlc_blockLevel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_Level(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Level, Level_choice, NULL); return offset; } static int dissect_atn_cpdlc_Fix(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, false, ia5alpha , 127, NULL); return offset; } static int dissect_atn_cpdlc_LatitudeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 90000U, NULL, false); return offset; } static int dissect_atn_cpdlc_LatitudeWholeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 89U, NULL, false); return offset; } static int dissect_atn_cpdlc_MinutesLatLon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 5999U, NULL, false); return offset; } static const per_sequence_t LatitudeDegreesMinutes_sequence[] = { { &hf_atn_cpdlc_latitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeWholeDegrees }, { &hf_atn_cpdlc_minutesLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MinutesLatLon }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LatitudeDegreesMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LatitudeDegreesMinutes, LatitudeDegreesMinutes_sequence); return offset; } static int dissect_atn_cpdlc_LatLonWholeMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 59U, NULL, false); return offset; } static int dissect_atn_cpdlc_SecondsLatLon(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 59U, NULL, false); return offset; } static const per_sequence_t LatitudeDegreesMinutesSeconds_sequence[] = { { &hf_atn_cpdlc_latitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeWholeDegrees }, { &hf_atn_cpdlc_latlonWholeMinutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonWholeMinutes }, { &hf_atn_cpdlc_secondsLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SecondsLatLon }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LatitudeDegreesMinutesSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LatitudeDegreesMinutesSeconds, LatitudeDegreesMinutesSeconds_sequence); return offset; } static const value_string atn_cpdlc_LatitudeType_vals[] = { { 0, "latitudeDegrees" }, { 1, "latitudeDegreesMinutes" }, { 2, "latitudeDMS" }, { 0, NULL } }; static const per_choice_t LatitudeType_choice[] = { { 0, &hf_atn_cpdlc_latitudeDegrees, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegrees }, { 1, &hf_atn_cpdlc_latitudeDegreesMinutes, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegreesMinutes }, { 2, &hf_atn_cpdlc_latitudeDMS, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeDegreesMinutesSeconds }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_LatitudeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LatitudeType, LatitudeType_choice, NULL); return offset; } static const value_string atn_cpdlc_LatitudeDirection_vals[] = { { 0, "north" }, { 1, "south" }, { 0, NULL } }; static int dissect_atn_cpdlc_LatitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, false, 0, NULL); return offset; } static const per_sequence_t Latitude_sequence[] = { { &hf_atn_cpdlc_latitudeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeType }, { &hf_atn_cpdlc_latitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDirection }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Latitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Latitude, Latitude_sequence); return offset; } static int dissect_atn_cpdlc_LongitudeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 180000U, NULL, false); return offset; } static int dissect_atn_cpdlc_LongitudeWholeDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 179U, NULL, false); return offset; } static const per_sequence_t LongitudeDegreesMinutes_sequence[] = { { &hf_atn_cpdlc_longitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeWholeDegrees }, { &hf_atn_cpdlc_minutesLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_MinutesLatLon }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LongitudeDegreesMinutes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LongitudeDegreesMinutes, LongitudeDegreesMinutes_sequence); return offset; } static const per_sequence_t LongitudeDegreesMinutesSeconds_sequence[] = { { &hf_atn_cpdlc_longitudeWholeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeWholeDegrees }, { &hf_atn_cpdlc_latLonWholeMinutes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonWholeMinutes }, { &hf_atn_cpdlc_secondsLatLon, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SecondsLatLon }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LongitudeDegreesMinutesSeconds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LongitudeDegreesMinutesSeconds, LongitudeDegreesMinutesSeconds_sequence); return offset; } static const value_string atn_cpdlc_LongitudeType_vals[] = { { 0, "longitudeDegrees" }, { 1, "longitudeDegreesMinutes" }, { 2, "longitudeDMS" }, { 0, NULL } }; static const per_choice_t LongitudeType_choice[] = { { 0, &hf_atn_cpdlc_longitudeDegrees, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegrees }, { 1, &hf_atn_cpdlc_longitudeDegreesMinutes, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegreesMinutes }, { 2, &hf_atn_cpdlc_longitudeDMS, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeDegreesMinutesSeconds }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_LongitudeType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LongitudeType, LongitudeType_choice, NULL); return offset; } static const value_string atn_cpdlc_LongitudeDirection_vals[] = { { 0, "east" }, { 1, "west" }, { 0, NULL } }; static int dissect_atn_cpdlc_LongitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, false, 0, NULL); return offset; } static const per_sequence_t Longitude_sequence[] = { { &hf_atn_cpdlc_longitudeType, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeType }, { &hf_atn_cpdlc_longitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDirection }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Longitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Longitude, Longitude_sequence); return offset; } static const per_sequence_t LatitudeLongitude_sequence[] = { { &hf_atn_cpdlc_latitude , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Latitude }, { &hf_atn_cpdlc_longitude , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Longitude }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LatitudeLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LatitudeLongitude, LatitudeLongitude_sequence); return offset; } static const per_sequence_t FixName_sequence[] = { { &hf_atn_cpdlc_fixname_name, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Fix }, { &hf_atn_cpdlc_latlon , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LatitudeLongitude }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_FixName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_FixName, FixName_sequence); return offset; } static int dissect_atn_cpdlc_NavaidName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 4, false, ia5alpha , 127, NULL); return offset; } static const per_sequence_t Navaid_sequence[] = { { &hf_atn_cpdlc_navaid_name, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_NavaidName }, { &hf_atn_cpdlc_latlon , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LatitudeLongitude }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Navaid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Navaid, Navaid_sequence); return offset; } static int dissect_atn_cpdlc_Airport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 4, false, ia5alpha , 127, NULL); return offset; } static const value_string atn_cpdlc_PublishedIdentifier_vals[] = { { 0, "fixName" }, { 1, "navaid" }, { 0, NULL } }; static const per_choice_t PublishedIdentifier_choice[] = { { 0, &hf_atn_cpdlc_fixName , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FixName }, { 1, &hf_atn_cpdlc_navaid , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Navaid }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_PublishedIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PublishedIdentifier, PublishedIdentifier_choice, NULL); return offset; } static int dissect_atn_cpdlc_DegreesMagnetic(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 360U, NULL, false); return offset; } static int dissect_atn_cpdlc_DegreesTrue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 360U, NULL, false); return offset; } static const value_string atn_cpdlc_Degrees_vals[] = { { 0, "degreesMagnetic" }, { 1, "degreesTrue" }, { 0, NULL } }; static const per_choice_t Degrees_choice[] = { { 0, &hf_atn_cpdlc_degreesMagnetic, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DegreesMagnetic }, { 1, &hf_atn_cpdlc_degreesTrue, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DegreesTrue }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_Degrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Degrees, Degrees_choice, NULL); return offset; } static int dissect_atn_cpdlc_DistanceNm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 9999U, NULL, false); return offset; } static int dissect_atn_cpdlc_DistanceKm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 8000U, NULL, false); return offset; } static const value_string atn_cpdlc_Distance_vals[] = { { 0, "distanceNm" }, { 1, "distanceKm" }, { 0, NULL } }; static const per_choice_t Distance_choice[] = { { 0, &hf_atn_cpdlc_distanceNm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceNm }, { 1, &hf_atn_cpdlc_distanceKm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceKm }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_Distance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Distance, Distance_choice, NULL); return offset; } static const per_sequence_t PlaceBearingDistance_sequence[] = { { &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PublishedIdentifier }, { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees }, { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PlaceBearingDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PlaceBearingDistance, PlaceBearingDistance_sequence); return offset; } static const value_string atn_cpdlc_Position_vals[] = { { 0, "fixName" }, { 1, "navaid" }, { 2, "airport" }, { 3, "latitudeLongitude" }, { 4, "placeBearingDistance" }, { 0, NULL } }; static const per_choice_t Position_choice[] = { { 0, &hf_atn_cpdlc_fixName , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FixName }, { 1, &hf_atn_cpdlc_navaid , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Navaid }, { 2, &hf_atn_cpdlc_airport , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Airport }, { 3, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude }, { 4, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_Position(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Position, Position_choice, NULL); return offset; } static const per_sequence_t TimeLevel_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimeLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeLevel, TimeLevel_sequence); return offset; } static const per_sequence_t PositionLevel_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionLevel, PositionLevel_sequence); return offset; } static const per_sequence_t LevelTime_sequence[] = { { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LevelTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LevelTime, LevelTime_sequence); return offset; } static const per_sequence_t LevelPosition_sequence[] = { { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LevelPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LevelPosition, LevelPosition_sequence); return offset; } static const per_sequence_t LevelLevel_sequence_of[1] = { { &hf_atn_cpdlc_LevelLevel_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, }; static int dissect_atn_cpdlc_LevelLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LevelLevel, LevelLevel_sequence_of, 2, 2, false); return offset; } static const per_sequence_t PositionLevelLevel_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_levels , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelLevel }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionLevelLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionLevelLevel, PositionLevelLevel_sequence); return offset; } static const per_sequence_t PositionTime_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionTime, PositionTime_sequence); return offset; } static const per_sequence_t TimeTime_sequence_of[1] = { { &hf_atn_cpdlc_TimeTime_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, }; static int dissect_atn_cpdlc_TimeTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeTime, TimeTime_sequence_of, 2, 2, false); return offset; } static const per_sequence_t PositionTimeTime_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_times , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTime }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionTimeTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionTimeTime, PositionTimeTime_sequence); return offset; } static int dissect_atn_cpdlc_SpeedIndicated(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 400U, NULL, false); return offset; } static int dissect_atn_cpdlc_SpeedIndicatedMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 800U, NULL, false); return offset; } static int dissect_atn_cpdlc_SpeedTrue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 2000U, NULL, false); return offset; } static int dissect_atn_cpdlc_SpeedTrueMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 4000U, NULL, false); return offset; } static int dissect_atn_cpdlc_SpeedGround(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -50, 2000U, NULL, false); return offset; } static int dissect_atn_cpdlc_SpeedGroundMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -100, 4000U, NULL, false); return offset; } static int dissect_atn_cpdlc_SpeedMach(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 500U, 4000U, NULL, false); return offset; } static const value_string atn_cpdlc_Speed_vals[] = { { 0, "speedIndicated" }, { 1, "speedIndicatedMetric" }, { 2, "speedTrue" }, { 3, "speedTrueMetric" }, { 4, "speedGround" }, { 5, "speedGroundMetric" }, { 6, "speedMach" }, { 0, NULL } }; static const per_choice_t Speed_choice[] = { { 0, &hf_atn_cpdlc_speedIndicated, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedIndicated }, { 1, &hf_atn_cpdlc_speedIndicatedMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedIndicatedMetric }, { 2, &hf_atn_cpdlc_speedTrue , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedTrue }, { 3, &hf_atn_cpdlc_speedTrueMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedTrueMetric }, { 4, &hf_atn_cpdlc_speedGround, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedGround }, { 5, &hf_atn_cpdlc_speedGroundMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedGroundMetric }, { 6, &hf_atn_cpdlc_speedMach , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_SpeedMach }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_Speed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Speed, Speed_choice, NULL); return offset; } static const per_sequence_t PositionSpeed_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionSpeed, PositionSpeed_sequence); return offset; } static const per_sequence_t PositionTimeLevel_sequence[] = { { &hf_atn_cpdlc_positionTime, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PositionTime }, { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionTimeLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionTimeLevel, PositionTimeLevel_sequence); return offset; } static const per_sequence_t PositionLevelSpeed_sequence[] = { { &hf_atn_cpdlc_positionlevel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PositionLevel }, { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionLevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionLevelSpeed, PositionLevelSpeed_sequence); return offset; } static const per_sequence_t TimePosition_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimePosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimePosition, TimePosition_sequence); return offset; } static const per_sequence_t TimePositionLevel_sequence[] = { { &hf_atn_cpdlc_timeposition, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimePosition }, { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimePositionLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimePositionLevel, TimePositionLevel_sequence); return offset; } static const per_sequence_t SpeedSpeed_sequence_of[1] = { { &hf_atn_cpdlc_SpeedSpeed_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed }, }; static int dissect_atn_cpdlc_SpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SpeedSpeed, SpeedSpeed_sequence_of, 2, 2, false); return offset; } static const per_sequence_t LevelSpeed_sequence[] = { { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { &hf_atn_cpdlc_levelspeed_speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LevelSpeed, LevelSpeed_sequence); return offset; } static const per_sequence_t TimePositionLevelSpeed_sequence[] = { { &hf_atn_cpdlc_timeposition, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimePosition }, { &hf_atn_cpdlc_levelspeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelSpeed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimePositionLevelSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimePositionLevelSpeed, TimePositionLevelSpeed_sequence); return offset; } static int dissect_atn_cpdlc_DistanceSpecifiedNm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 250U, NULL, false); return offset; } static int dissect_atn_cpdlc_DistanceSpecifiedKm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 500U, NULL, false); return offset; } static const value_string atn_cpdlc_DistanceSpecified_vals[] = { { 0, "distanceSpecifiedNm" }, { 1, "distanceSpecifiedKm" }, { 0, NULL } }; static const per_choice_t DistanceSpecified_choice[] = { { 0, &hf_atn_cpdlc_distanceSpecifiedNm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceSpecifiedNm }, { 1, &hf_atn_cpdlc_distanceSpecifiedKm, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_DistanceSpecifiedKm }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_DistanceSpecified(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_DistanceSpecified, DistanceSpecified_choice, NULL); return offset; } static const value_string atn_cpdlc_Direction_vals[] = { { 0, "left" }, { 1, "right" }, { 2, "eitherSide" }, { 3, "north" }, { 4, "south" }, { 5, "east" }, { 6, "west" }, { 7, "northEast" }, { 8, "northWest" }, { 9, "southEast" }, { 10, "southWest" }, { 0, NULL } }; static int dissect_atn_cpdlc_Direction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 11, NULL, false, 0, NULL); return offset; } static const per_sequence_t DistanceSpecifiedDirection_sequence[] = { { &hf_atn_cpdlc_distanceSpecified, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecified }, { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_DistanceSpecifiedDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_DistanceSpecifiedDirection, DistanceSpecifiedDirection_sequence); return offset; } static const per_sequence_t PositionDistanceSpecifiedDirection_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionDistanceSpecifiedDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionDistanceSpecifiedDirection, PositionDistanceSpecifiedDirection_sequence); return offset; } static const per_sequence_t TimeDistanceSpecifiedDirection_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimeDistanceSpecifiedDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeDistanceSpecifiedDirection, TimeDistanceSpecifiedDirection_sequence); return offset; } static int dissect_atn_cpdlc_AircraftFlightIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 8, false, ia5alpha , 127, NULL); return offset; } static const per_sequence_t PlaceBearing_sequence[] = { { &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PublishedIdentifier }, { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PlaceBearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PlaceBearing, PlaceBearing_sequence); return offset; } static const per_sequence_t PlaceBearingPlaceBearing_sequence_of[1] = { { &hf_atn_cpdlc_PlaceBearingPlaceBearing_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PlaceBearing }, }; static int dissect_atn_cpdlc_PlaceBearingPlaceBearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PlaceBearingPlaceBearing, PlaceBearingPlaceBearing_sequence_of, 2, 2, false); return offset; } static int dissect_atn_cpdlc_ATSRouteDesignator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 7, false, ia5alpha , 127, NULL); return offset; } static const value_string atn_cpdlc_RouteInformation_vals[] = { { 0, "publishedIdentifier" }, { 1, "latitudeLongitude" }, { 2, "placeBearingPlaceBearing" }, { 3, "placeBearingDistance" }, { 4, "aTSRouteDesignator" }, { 0, NULL } }; static const per_choice_t RouteInformation_choice[] = { { 0, &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PublishedIdentifier }, { 1, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude }, { 2, &hf_atn_cpdlc_placeBearingPlaceBearing, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingPlaceBearing }, { 3, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance }, { 4, &hf_atn_cpdlc_aTSRouteDesignator, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATSRouteDesignator }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_RouteInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RouteInformation, RouteInformation_choice, NULL); return offset; } static const value_string atn_cpdlc_ProcedureType_vals[] = { { 0, "arrival" }, { 1, "approach" }, { 2, "departure" }, { 0, NULL } }; static int dissect_atn_cpdlc_ProcedureType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, false, 0, NULL); return offset; } static int dissect_atn_cpdlc_Procedure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 20, false, ia5alpha , 127, NULL); return offset; } static int dissect_atn_cpdlc_ProcedureTransition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, false, ia5alpha , 127, NULL); return offset; } static const per_sequence_t ProcedureName_sequence[] = { { &hf_atn_cpdlc_type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureType }, { &hf_atn_cpdlc_procedure , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Procedure }, { &hf_atn_cpdlc_transition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureTransition }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ProcedureName, ProcedureName_sequence); return offset; } static const per_sequence_t LevelProcedureName_sequence[] = { { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureName }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LevelProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LevelProcedureName, LevelProcedureName_sequence); return offset; } static const value_string atn_cpdlc_LevelsOfFlight_vals[] = { { 0, "level" }, { 1, "procedureName" }, { 2, "levelProcedureName" }, { 0, NULL } }; static const per_choice_t LevelsOfFlight_choice[] = { { 0, &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Level }, { 1, &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ProcedureName }, { 2, &hf_atn_cpdlc_levelProcedureName, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelProcedureName }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_LevelsOfFlight(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LevelsOfFlight, LevelsOfFlight_choice, NULL); return offset; } static const per_sequence_t RouteAndLevels_sequence[] = { { &hf_atn_cpdlc_routeOfFlight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteInformation }, { &hf_atn_cpdlc_levelsOfFlight, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LevelsOfFlight }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_RouteAndLevels(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RouteAndLevels, RouteAndLevels_sequence); return offset; } static const value_string atn_cpdlc_FlightInformation_vals[] = { { 0, "routeOfFlight" }, { 1, "levelsOfFlight" }, { 2, "routeAndLevels" }, { 0, NULL } }; static const per_choice_t FlightInformation_choice[] = { { 0, &hf_atn_cpdlc_routeOfFlight, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RouteInformation }, { 1, &hf_atn_cpdlc_levelsOfFlight, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LevelsOfFlight }, { 2, &hf_atn_cpdlc_routeAndLevels, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RouteAndLevels }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_FlightInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_FlightInformation, FlightInformation_choice, NULL); return offset; } static int dissect_atn_cpdlc_CodeOctalDigit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 7U, NULL, false); return offset; } static const per_sequence_t Code_sequence_of[1] = { { &hf_atn_cpdlc_Code_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_CodeOctalDigit }, }; static int dissect_atn_cpdlc_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Code, Code_sequence_of, 4, 4, false); return offset; } static int dissect_atn_cpdlc_FacilityDesignation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 8, false, ia5alpha , 127, NULL); return offset; } static int dissect_atn_cpdlc_FacilityName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,3, 18, false, ia5alpha , 127, NULL); return offset; } static const value_string atn_cpdlc_FacilityFunction_vals[] = { { 0, "center" }, { 1, "approach" }, { 2, "tower" }, { 3, "final" }, { 4, "groundControl" }, { 5, "clearanceDelivery" }, { 6, "departure" }, { 7, "control" }, { 8, "radio" }, { 0, NULL } }; static int dissect_atn_cpdlc_FacilityFunction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 9, NULL, true, 0, NULL); return offset; } static const per_sequence_t UnitName_sequence[] = { { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation }, { &hf_atn_cpdlc_facilityName, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FacilityName }, { &hf_atn_cpdlc_facilityFunction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityFunction }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_UnitName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_UnitName, UnitName_sequence); return offset; } static int dissect_atn_cpdlc_Frequencyhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 2850U, 28000U, NULL, false); return offset; } static int dissect_atn_cpdlc_Frequencyvhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 23600U, 27398U, NULL, false); return offset; } static int dissect_atn_cpdlc_Frequencyuhf(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 9000U, 15999U, NULL, false); return offset; } static int dissect_atn_cpdlc_Frequencysatchannel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_NumericString(tvb, offset, actx, tree, hf_index, 12, 12, false, NULL); return offset; } static const value_string atn_cpdlc_Frequency_vals[] = { { 0, "frequencyhf" }, { 1, "frequencyvhf" }, { 2, "frequencyuhf" }, { 3, "frequencysatchannel" }, { 0, NULL } }; static const per_choice_t Frequency_choice[] = { { 0, &hf_atn_cpdlc_frequencyhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyhf }, { 1, &hf_atn_cpdlc_frequencyvhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyvhf }, { 2, &hf_atn_cpdlc_frequencyuhf, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencyuhf }, { 3, &hf_atn_cpdlc_frequencysatchannel, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_Frequencysatchannel }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_Frequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Frequency, Frequency_choice, NULL); return offset; } static const per_sequence_t UnitNameFrequency_sequence[] = { { &hf_atn_cpdlc_unitName , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName }, { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_UnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_UnitNameFrequency, UnitNameFrequency_sequence); return offset; } static const value_string atn_cpdlc_TimeTolerance_vals[] = { { 0, "at" }, { 1, "atorafter" }, { 2, "atorbefore" }, { 0, NULL } }; static int dissect_atn_cpdlc_TimeTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, false, 0, NULL); return offset; } static const per_sequence_t ControlledTime_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_timeTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTolerance }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ControlledTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ControlledTime, ControlledTime_sequence); return offset; } static int dissect_atn_cpdlc_DepartureMinimumInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 150U, NULL, false); return offset; } static const per_sequence_t TimeDeparture_sequence[] = { { &hf_atn_cpdlc_timeDepartureAllocated, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_timeDepartureControlled, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ControlledTime }, { &hf_atn_cpdlc_timeDepartureClearanceExpected, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_departureMinimumInterval, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_DepartureMinimumInterval }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimeDeparture(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeDeparture, TimeDeparture_sequence); return offset; } static int dissect_atn_cpdlc_RunwayDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 36U, NULL, false); return offset; } static const value_string atn_cpdlc_RunwayConfiguration_vals[] = { { 0, "left" }, { 1, "right" }, { 2, "center" }, { 3, "none" }, { 0, NULL } }; static int dissect_atn_cpdlc_RunwayConfiguration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 4, NULL, false, 0, NULL); return offset; } static const per_sequence_t Runway_sequence[] = { { &hf_atn_cpdlc_runway_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RunwayDirection }, { &hf_atn_cpdlc_configuration, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RunwayConfiguration }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Runway(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Runway, Runway_sequence); return offset; } static int dissect_atn_cpdlc_RevisionNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 16U, NULL, false); return offset; } static int dissect_atn_cpdlc_ATISCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 1, false, ia5alpha , 127, NULL); return offset; } static const per_sequence_t FurtherInstructions_sequence[] = { { &hf_atn_cpdlc_code , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Code }, { &hf_atn_cpdlc_frequencyDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_UnitNameFrequency }, { &hf_atn_cpdlc_clearanceExpiryTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_airportDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport }, { &hf_atn_cpdlc_airportDestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport }, { &hf_atn_cpdlc_timeDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_TimeDeparture }, { &hf_atn_cpdlc_runwayDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway }, { &hf_atn_cpdlc_revisionNumber, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RevisionNumber }, { &hf_atn_cpdlc_aTISCode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATISCode }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_FurtherInstructions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_FurtherInstructions, FurtherInstructions_sequence); return offset; } static const per_sequence_t DepartureClearance_sequence[] = { { &hf_atn_cpdlc_aircraftFlightIdentification, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftFlightIdentification }, { &hf_atn_cpdlc_clearanceLimit, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_flightInformation, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FlightInformation }, { &hf_atn_cpdlc_furtherInstructions, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_FurtherInstructions }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_DepartureClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_DepartureClearance, DepartureClearance_sequence); return offset; } static const per_sequence_t PositionPosition_sequence_of[1] = { { &hf_atn_cpdlc_PositionPosition_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, }; static int dissect_atn_cpdlc_PositionPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionPosition, PositionPosition_sequence_of, 2, 2, false); return offset; } static int dissect_atn_cpdlc_RouteClearanceIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 2U, NULL, false); return offset; } static const per_sequence_t PositionRouteClearanceIndex_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_routeClearanceIndex, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteClearanceIndex }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionRouteClearanceIndex(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionRouteClearanceIndex, PositionRouteClearanceIndex_sequence); return offset; } static const per_sequence_t PositionProcedureName_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_procedureName, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProcedureName }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionProcedureName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionProcedureName, PositionProcedureName_sequence); return offset; } static int dissect_atn_cpdlc_LegDistanceEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 50U, NULL, false); return offset; } static int dissect_atn_cpdlc_LegDistanceMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 128U, NULL, false); return offset; } static const value_string atn_cpdlc_LegDistance_vals[] = { { 0, "legDistanceEnglish" }, { 1, "legDistanceMetric" }, { 0, NULL } }; static const per_choice_t LegDistance_choice[] = { { 0, &hf_atn_cpdlc_legDistanceEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistanceEnglish }, { 1, &hf_atn_cpdlc_legDistanceMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistanceMetric }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_LegDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LegDistance, LegDistance_choice, NULL); return offset; } static int dissect_atn_cpdlc_LegTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 10U, NULL, false); return offset; } static const value_string atn_cpdlc_LegType_vals[] = { { 0, "legDistance" }, { 1, "legTime" }, { 0, NULL } }; static const per_choice_t LegType_choice[] = { { 0, &hf_atn_cpdlc_legDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegDistance }, { 1, &hf_atn_cpdlc_legTime , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LegTime }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_LegType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LegType, LegType_choice, NULL); return offset; } static const per_sequence_t HoldClearance_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees }, { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction }, { &hf_atn_cpdlc_legType , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LegType }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_HoldClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_HoldClearance, HoldClearance_sequence); return offset; } static const per_sequence_t DirectionDegrees_sequence[] = { { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Direction }, { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_DirectionDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_DirectionDegrees, DirectionDegrees_sequence); return offset; } static const per_sequence_t PositionDegrees_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionDegrees(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionDegrees, PositionDegrees_sequence); return offset; } static const per_sequence_t TimeSpeed_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimeSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeSpeed, TimeSpeed_sequence); return offset; } static const per_sequence_t TimeSpeedSpeed_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_speedspeed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimeSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeSpeedSpeed, TimeSpeedSpeed_sequence); return offset; } static const per_sequence_t PositionSpeedSpeed_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_speeds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionSpeedSpeed, PositionSpeedSpeed_sequence); return offset; } static const per_sequence_t LevelSpeedSpeed_sequence[] = { { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { &hf_atn_cpdlc_speeds , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedSpeed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LevelSpeedSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LevelSpeedSpeed, LevelSpeedSpeed_sequence); return offset; } static const per_sequence_t PositionUnitNameFrequency_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_unitname , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName }, { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionUnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionUnitNameFrequency, PositionUnitNameFrequency_sequence); return offset; } static const per_sequence_t TimeUnitNameFrequency_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_unitName , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_UnitName }, { &hf_atn_cpdlc_frequency , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Frequency }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimeUnitNameFrequency(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeUnitNameFrequency, TimeUnitNameFrequency_sequence); return offset; } static const value_string atn_cpdlc_SpeedType_vals[] = { { 0, "noneSpecified" }, { 1, "indicated" }, { 2, "true" }, { 3, "ground" }, { 4, "mach" }, { 5, "approach" }, { 6, "cruise" }, { 7, "minimum" }, { 8, "maximum" }, { 0, NULL } }; static int dissect_atn_cpdlc_SpeedType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 9, NULL, true, 0, NULL); return offset; } static const per_sequence_t SpeedTypeSpeedTypeSpeedType_sequence_of[1] = { { &hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedType }, }; static int dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType, SpeedTypeSpeedTypeSpeedType_sequence_of, 3, 3, false); return offset; } static int dissect_atn_cpdlc_AltimeterEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 2200U, 3200U, NULL, false); return offset; } static int dissect_atn_cpdlc_AltimeterMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 7500U, 12500U, NULL, false); return offset; } static const value_string atn_cpdlc_Altimeter_vals[] = { { 0, "altimeterEnglish" }, { 1, "altimeterMetric" }, { 0, NULL } }; static const per_choice_t Altimeter_choice[] = { { 0, &hf_atn_cpdlc_altimeterEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_AltimeterEnglish }, { 1, &hf_atn_cpdlc_altimeterMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_AltimeterMetric }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_Altimeter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Altimeter, Altimeter_choice, NULL); return offset; } static const value_string atn_cpdlc_ErrorInformation_vals[] = { { 0, "unrecognizedMsgReferenceNumber" }, { 1, "logicalAcknowledgmentNotAccepted" }, { 2, "insufficientResources" }, { 3, "invalidMessageElementCombination" }, { 4, "invalidMessageElement" }, { 0, NULL } }; static int dissect_atn_cpdlc_ErrorInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 5, NULL, true, 0, NULL); return offset; } static const value_string atn_cpdlc_Facility_vals[] = { { 0, "noFacility" }, { 1, "facilityDesignation" }, { 0, NULL } }; static const per_choice_t Facility_choice[] = { { 0, &hf_atn_cpdlc_noFacility, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL }, { 1, &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_FacilityDesignation }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_Facility(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Facility, Facility_choice, NULL); return offset; } static const value_string atn_cpdlc_TrafficType_vals[] = { { 0, "noneSpecified" }, { 1, "oppositeDirection" }, { 2, "sameDirection" }, { 3, "converging" }, { 4, "crossing" }, { 5, "diverging" }, { 0, NULL } }; static int dissect_atn_cpdlc_TrafficType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 6, NULL, true, 0, NULL); return offset; } static int dissect_atn_cpdlc_FreeText(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 256, false, ia5alpha , 127, NULL); return offset; } static int dissect_atn_cpdlc_VerticalRateEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 3000U, NULL, false); return offset; } static int dissect_atn_cpdlc_VerticalRateMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 1000U, NULL, false); return offset; } static const value_string atn_cpdlc_VerticalRate_vals[] = { { 0, "verticalRateEnglish" }, { 1, "verticalRateMetric" }, { 0, NULL } }; static const per_choice_t VerticalRate_choice[] = { { 0, &hf_atn_cpdlc_verticalRateEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_VerticalRateEnglish }, { 1, &hf_atn_cpdlc_verticalRateMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_VerticalRateMetric }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_VerticalRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_VerticalRate, VerticalRate_choice, NULL); return offset; } static const value_string atn_cpdlc_ToFrom_vals[] = { { 0, "to" }, { 1, "from" }, { 0, NULL } }; static int dissect_atn_cpdlc_ToFrom(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, false, 0, NULL); return offset; } static const per_sequence_t ToFromPosition_sequence[] = { { &hf_atn_cpdlc_toFrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom }, { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ToFromPosition, ToFromPosition_sequence); return offset; } static const per_sequence_t TimeToFromPosition_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_tofrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom }, { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimeToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeToFromPosition, TimeToFromPosition_sequence); return offset; } static const per_sequence_t FacilityDesignationATISCode_sequence[] = { { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation }, { &hf_atn_cpdlc_aTISCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATISCode }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_FacilityDesignationATISCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_FacilityDesignationATISCode, FacilityDesignationATISCode_sequence); return offset; } static const per_sequence_t FacilityDesignationAltimeter_sequence[] = { { &hf_atn_cpdlc_facilityDesignation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_FacilityDesignation }, { &hf_atn_cpdlc_altimeter , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Altimeter }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_FacilityDesignationAltimeter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_FacilityDesignationAltimeter, FacilityDesignationAltimeter_sequence); return offset; } static int dissect_atn_cpdlc_RVRFeet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 6100U, NULL, false); return offset; } static int dissect_atn_cpdlc_RVRMeters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 1500U, NULL, false); return offset; } static const value_string atn_cpdlc_RVR_vals[] = { { 0, "rVRFeet" }, { 1, "rVRMeters" }, { 0, NULL } }; static const per_choice_t RVR_choice[] = { { 0, &hf_atn_cpdlc_rVRFeet , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RVRFeet }, { 1, &hf_atn_cpdlc_rVRMeters , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_RVRMeters }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_RVR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RVR, RVR_choice, NULL); return offset; } static const per_sequence_t RunwayRVR_sequence[] = { { &hf_atn_cpdlc_runway , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Runway }, { &hf_atn_cpdlc_rVR , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RVR }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_RunwayRVR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RunwayRVR, RunwayRVR_sequence); return offset; } static const value_string atn_cpdlc_ATCUplinkMsgElementId_vals[] = { { 0, "uM0NULL" }, { 1, "uM1NULL" }, { 2, "uM2NULL" }, { 3, "uM3NULL" }, { 4, "uM4NULL" }, { 5, "uM5NULL" }, { 6, "uM6Level" }, { 7, "uM7Time" }, { 8, "uM8Position" }, { 9, "uM9Time" }, { 10, "uM10Position" }, { 11, "uM11Time" }, { 12, "uM12Position" }, { 13, "uM13TimeLevel" }, { 14, "uM14PositionLevel" }, { 15, "uM15TimeLevel" }, { 16, "uM16PositionLevel" }, { 17, "uM17TimeLevel" }, { 18, "uM18PositionLevel" }, { 19, "uM19Level" }, { 20, "uM20Level" }, { 21, "uM21TimeLevel" }, { 22, "uM22PositionLevel" }, { 23, "uM23Level" }, { 24, "uM24TimeLevel" }, { 25, "uM25PositionLevel" }, { 26, "uM26LevelTime" }, { 27, "uM27LevelPosition" }, { 28, "uM28LevelTime" }, { 29, "uM29LevelPosition" }, { 30, "uM30LevelLevel" }, { 31, "uM31LevelLevel" }, { 32, "uM32LevelLevel" }, { 33, "uM33NULL" }, { 34, "uM34Level" }, { 35, "uM35Level" }, { 36, "uM36Level" }, { 37, "uM37Level" }, { 38, "uM38Level" }, { 39, "uM39Level" }, { 40, "uM40NULL" }, { 41, "uM41NULL" }, { 42, "uM42PositionLevel" }, { 43, "uM43PositionLevel" }, { 44, "uM44PositionLevel" }, { 45, "uM45PositionLevel" }, { 46, "uM46PositionLevel" }, { 47, "uM47PositionLevel" }, { 48, "uM48PositionLevel" }, { 49, "uM49PositionLevel" }, { 50, "uM50PositionLevelLevel" }, { 51, "uM51PositionTime" }, { 52, "uM52PositionTime" }, { 53, "uM53PositionTime" }, { 54, "uM54PositionTimeTime" }, { 55, "uM55PositionSpeed" }, { 56, "uM56PositionSpeed" }, { 57, "uM57PositionSpeed" }, { 58, "uM58PositionTimeLevel" }, { 59, "uM59PositionTimeLevel" }, { 60, "uM60PositionTimeLevel" }, { 61, "uM61PositionLevelSpeed" }, { 62, "uM62TimePositionLevel" }, { 63, "uM63TimePositionLevelSpeed" }, { 64, "uM64DistanceSpecifiedDirection" }, { 65, "uM65PositionDistanceSpecifiedDirection" }, { 66, "uM66TimeDistanceSpecifiedDirection" }, { 67, "uM67NULL" }, { 68, "uM68Position" }, { 69, "uM69Time" }, { 70, "uM70Position" }, { 71, "uM71Time" }, { 72, "uM72NULL" }, { 73, "uM73DepartureClearance" }, { 74, "uM74Position" }, { 75, "uM75Position" }, { 76, "uM76TimePosition" }, { 77, "uM77PositionPosition" }, { 78, "uM78LevelPosition" }, { 79, "uM79PositionRouteClearance" }, { 80, "uM80RouteClearance" }, { 81, "uM81ProcedureName" }, { 82, "uM82DistanceSpecifiedDirection" }, { 83, "uM83PositionRouteClearance" }, { 84, "uM84PositionProcedureName" }, { 85, "uM85RouteClearance" }, { 86, "uM86PositionRouteClearance" }, { 87, "uM87Position" }, { 88, "uM88PositionPosition" }, { 89, "uM89TimePosition" }, { 90, "uM90LevelPosition" }, { 91, "uM91HoldClearance" }, { 92, "uM92PositionLevel" }, { 93, "uM93Time" }, { 94, "uM94DirectionDegrees" }, { 95, "uM95DirectionDegrees" }, { 96, "uM96NULL" }, { 97, "uM97PositionDegrees" }, { 98, "uM98DirectionDegrees" }, { 99, "uM99ProcedureName" }, { 100, "uM100TimeSpeed" }, { 101, "uM101PositionSpeed" }, { 102, "uM102LevelSpeed" }, { 103, "uM103TimeSpeedSpeed" }, { 104, "uM104PositionSpeedSpeed" }, { 105, "uM105LevelSpeedSpeed" }, { 106, "uM106Speed" }, { 107, "uM107NULL" }, { 108, "uM108Speed" }, { 109, "uM109Speed" }, { 110, "uM110SpeedSpeed" }, { 111, "uM111Speed" }, { 112, "uM112Speed" }, { 113, "uM113Speed" }, { 114, "uM114Speed" }, { 115, "uM115Speed" }, { 116, "uM116NULL" }, { 117, "uM117UnitNameFrequency" }, { 118, "uM118PositionUnitNameFrequency" }, { 119, "uM119TimeUnitNameFrequency" }, { 120, "uM120UnitNameFrequency" }, { 121, "uM121PositionUnitNameFrequency" }, { 122, "uM122TimeUnitNameFrequency" }, { 123, "uM123Code" }, { 124, "uM124NULL" }, { 125, "uM125NULL" }, { 126, "uM126NULL" }, { 127, "uM127NULL" }, { 128, "uM128Level" }, { 129, "uM129Level" }, { 130, "uM130Position" }, { 131, "uM131NULL" }, { 132, "uM132NULL" }, { 133, "uM133NULL" }, { 134, "uM134SpeedTypeSpeedTypeSpeedType" }, { 135, "uM135NULL" }, { 136, "uM136NULL" }, { 137, "uM137NULL" }, { 138, "uM138NULL" }, { 139, "uM139NULL" }, { 140, "uM140NULL" }, { 141, "uM141NULL" }, { 142, "uM142NULL" }, { 143, "uM143NULL" }, { 144, "uM144NULL" }, { 145, "uM145NULL" }, { 146, "uM146NULL" }, { 147, "uM147NULL" }, { 148, "uM148Level" }, { 149, "uM149LevelPosition" }, { 150, "uM150LevelTime" }, { 151, "uM151Speed" }, { 152, "uM152DistanceSpecifiedDirection" }, { 153, "uM153Altimeter" }, { 154, "uM154NULL" }, { 155, "uM155Position" }, { 156, "uM156NULL" }, { 157, "uM157Frequency" }, { 158, "uM158AtisCode" }, { 159, "uM159ErrorInformation" }, { 160, "uM160Facility" }, { 161, "uM161NULL" }, { 162, "uM162NULL" }, { 163, "uM163FacilityDesignation" }, { 164, "uM164NULL" }, { 165, "uM165NULL" }, { 166, "uM166TrafficType" }, { 167, "uM167NULL" }, { 168, "uM168NULL" }, { 169, "uM169FreeText" }, { 170, "uM170FreeText" }, { 171, "uM171VerticalRate" }, { 172, "uM172VerticalRate" }, { 173, "uM173VerticalRate" }, { 174, "uM174VerticalRate" }, { 175, "uM175Level" }, { 176, "uM176NULL" }, { 177, "uM177NULL" }, { 178, "uM178NULL" }, { 179, "uM179NULL" }, { 180, "uM180LevelLevel" }, { 181, "uM181ToFromPosition" }, { 182, "uM182NULL" }, { 183, "uM183FreeText" }, { 184, "uM184TimeToFromPosition" }, { 185, "uM185PositionLevel" }, { 186, "uM186PositionLevel" }, { 187, "uM187FreeText" }, { 188, "uM188PositionSpeed" }, { 189, "uM189Speed" }, { 190, "uM190Degrees" }, { 191, "uM191NULL" }, { 192, "uM192LevelTime" }, { 193, "uM193NULL" }, { 194, "uM194FreeText" }, { 195, "uM195FreeText" }, { 196, "uM196FreeText" }, { 197, "uM197FreeText" }, { 198, "uM198FreeText" }, { 199, "uM199FreeText" }, { 200, "uM200NULL" }, { 201, "uM201NULL" }, { 202, "uM202NULL" }, { 203, "uM203FreeText" }, { 204, "uM204FreeText" }, { 205, "uM205FreeText" }, { 206, "uM206FreeText" }, { 207, "uM207FreeText" }, { 208, "uM208FreeText" }, { 209, "uM209LevelPosition" }, { 210, "uM210Position" }, { 211, "uM211NULL" }, { 212, "uM212FacilityDesignationATISCode" }, { 213, "uM213FacilityDesignationAltimeter" }, { 214, "uM214RunwayRVR" }, { 215, "uM215DirectionDegrees" }, { 216, "uM216NULL" }, { 217, "uM217NULL" }, { 218, "uM218NULL" }, { 219, "uM219Level" }, { 220, "uM220Level" }, { 221, "uM221Degrees" }, { 222, "uM222NULL" }, { 223, "uM223NULL" }, { 224, "uM224NULL" }, { 225, "uM225NULL" }, { 226, "uM226Time" }, { 227, "uM227NULL" }, { 228, "uM228Position" }, { 229, "uM229NULL" }, { 230, "uM230NULL" }, { 231, "uM231NULL" }, { 232, "uM232NULL" }, { 233, "uM233NULL" }, { 234, "uM234NULL" }, { 235, "uM235NULL" }, { 236, "uM236NULL" }, { 237, "uM237NULL" }, { 0, NULL } }; static const per_choice_t ATCUplinkMsgElementId_choice[] = { { 0, &hf_atn_cpdlc_uM0NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 1, &hf_atn_cpdlc_uM1NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 2, &hf_atn_cpdlc_uM2NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 3, &hf_atn_cpdlc_uM3NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 4, &hf_atn_cpdlc_uM4NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 5, &hf_atn_cpdlc_uM5NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 6, &hf_atn_cpdlc_uM6Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 7, &hf_atn_cpdlc_uM7Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 8, &hf_atn_cpdlc_uM8Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 9, &hf_atn_cpdlc_uM9Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 10, &hf_atn_cpdlc_uM10Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 11, &hf_atn_cpdlc_uM11Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 12, &hf_atn_cpdlc_uM12Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 13, &hf_atn_cpdlc_uM13TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel }, { 14, &hf_atn_cpdlc_uM14PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 15, &hf_atn_cpdlc_uM15TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel }, { 16, &hf_atn_cpdlc_uM16PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 17, &hf_atn_cpdlc_uM17TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel }, { 18, &hf_atn_cpdlc_uM18PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 19, &hf_atn_cpdlc_uM19Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 20, &hf_atn_cpdlc_uM20Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 21, &hf_atn_cpdlc_uM21TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel }, { 22, &hf_atn_cpdlc_uM22PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 23, &hf_atn_cpdlc_uM23Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 24, &hf_atn_cpdlc_uM24TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel }, { 25, &hf_atn_cpdlc_uM25PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 26, &hf_atn_cpdlc_uM26LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime }, { 27, &hf_atn_cpdlc_uM27LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition }, { 28, &hf_atn_cpdlc_uM28LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime }, { 29, &hf_atn_cpdlc_uM29LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition }, { 30, &hf_atn_cpdlc_uM30LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel }, { 31, &hf_atn_cpdlc_uM31LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel }, { 32, &hf_atn_cpdlc_uM32LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel }, { 33, &hf_atn_cpdlc_uM33NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 34, &hf_atn_cpdlc_uM34Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 35, &hf_atn_cpdlc_uM35Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 36, &hf_atn_cpdlc_uM36Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 37, &hf_atn_cpdlc_uM37Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 38, &hf_atn_cpdlc_uM38Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 39, &hf_atn_cpdlc_uM39Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 40, &hf_atn_cpdlc_uM40NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 41, &hf_atn_cpdlc_uM41NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 42, &hf_atn_cpdlc_uM42PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 43, &hf_atn_cpdlc_uM43PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 44, &hf_atn_cpdlc_uM44PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 45, &hf_atn_cpdlc_uM45PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 46, &hf_atn_cpdlc_uM46PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 47, &hf_atn_cpdlc_uM47PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 48, &hf_atn_cpdlc_uM48PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 49, &hf_atn_cpdlc_uM49PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 50, &hf_atn_cpdlc_uM50PositionLevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevelLevel }, { 51, &hf_atn_cpdlc_uM51PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime }, { 52, &hf_atn_cpdlc_uM52PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime }, { 53, &hf_atn_cpdlc_uM53PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime }, { 54, &hf_atn_cpdlc_uM54PositionTimeTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeTime }, { 55, &hf_atn_cpdlc_uM55PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed }, { 56, &hf_atn_cpdlc_uM56PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed }, { 57, &hf_atn_cpdlc_uM57PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed }, { 58, &hf_atn_cpdlc_uM58PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel }, { 59, &hf_atn_cpdlc_uM59PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel }, { 60, &hf_atn_cpdlc_uM60PositionTimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTimeLevel }, { 61, &hf_atn_cpdlc_uM61PositionLevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevelSpeed }, { 62, &hf_atn_cpdlc_uM62TimePositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePositionLevel }, { 63, &hf_atn_cpdlc_uM63TimePositionLevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePositionLevelSpeed }, { 64, &hf_atn_cpdlc_uM64DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection }, { 65, &hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDistanceSpecifiedDirection }, { 66, &hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceSpecifiedDirection }, { 67, &hf_atn_cpdlc_uM67NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 68, &hf_atn_cpdlc_uM68Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 69, &hf_atn_cpdlc_uM69Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 70, &hf_atn_cpdlc_uM70Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 71, &hf_atn_cpdlc_uM71Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 72, &hf_atn_cpdlc_uM72NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 73, &hf_atn_cpdlc_uM73DepartureClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DepartureClearance }, { 74, &hf_atn_cpdlc_uM74Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 75, &hf_atn_cpdlc_uM75Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 76, &hf_atn_cpdlc_uM76TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition }, { 77, &hf_atn_cpdlc_uM77PositionPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionPosition }, { 78, &hf_atn_cpdlc_uM78LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition }, { 79, &hf_atn_cpdlc_uM79PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex }, { 80, &hf_atn_cpdlc_uM80RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex }, { 81, &hf_atn_cpdlc_uM81ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName }, { 82, &hf_atn_cpdlc_uM82DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection }, { 83, &hf_atn_cpdlc_uM83PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex }, { 84, &hf_atn_cpdlc_uM84PositionProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionProcedureName }, { 85, &hf_atn_cpdlc_uM85RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex }, { 86, &hf_atn_cpdlc_uM86PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex }, { 87, &hf_atn_cpdlc_uM87Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 88, &hf_atn_cpdlc_uM88PositionPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionPosition }, { 89, &hf_atn_cpdlc_uM89TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition }, { 90, &hf_atn_cpdlc_uM90LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition }, { 91, &hf_atn_cpdlc_uM91HoldClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_HoldClearance }, { 92, &hf_atn_cpdlc_uM92PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 93, &hf_atn_cpdlc_uM93Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 94, &hf_atn_cpdlc_uM94DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees }, { 95, &hf_atn_cpdlc_uM95DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees }, { 96, &hf_atn_cpdlc_uM96NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 97, &hf_atn_cpdlc_uM97PositionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDegrees }, { 98, &hf_atn_cpdlc_uM98DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees }, { 99, &hf_atn_cpdlc_uM99ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName }, { 100, &hf_atn_cpdlc_uM100TimeSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeSpeed }, { 101, &hf_atn_cpdlc_uM101PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed }, { 102, &hf_atn_cpdlc_uM102LevelSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelSpeed }, { 103, &hf_atn_cpdlc_uM103TimeSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeSpeedSpeed }, { 104, &hf_atn_cpdlc_uM104PositionSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeedSpeed }, { 105, &hf_atn_cpdlc_uM105LevelSpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelSpeedSpeed }, { 106, &hf_atn_cpdlc_uM106Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 107, &hf_atn_cpdlc_uM107NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 108, &hf_atn_cpdlc_uM108Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 109, &hf_atn_cpdlc_uM109Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 110, &hf_atn_cpdlc_uM110SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed }, { 111, &hf_atn_cpdlc_uM111Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 112, &hf_atn_cpdlc_uM112Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 113, &hf_atn_cpdlc_uM113Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 114, &hf_atn_cpdlc_uM114Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 115, &hf_atn_cpdlc_uM115Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 116, &hf_atn_cpdlc_uM116NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 117, &hf_atn_cpdlc_uM117UnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency }, { 118, &hf_atn_cpdlc_uM118PositionUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionUnitNameFrequency }, { 119, &hf_atn_cpdlc_uM119TimeUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeUnitNameFrequency }, { 120, &hf_atn_cpdlc_uM120UnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency }, { 121, &hf_atn_cpdlc_uM121PositionUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionUnitNameFrequency }, { 122, &hf_atn_cpdlc_uM122TimeUnitNameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeUnitNameFrequency }, { 123, &hf_atn_cpdlc_uM123Code , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Code }, { 124, &hf_atn_cpdlc_uM124NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 125, &hf_atn_cpdlc_uM125NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 126, &hf_atn_cpdlc_uM126NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 127, &hf_atn_cpdlc_uM127NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 128, &hf_atn_cpdlc_uM128Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 129, &hf_atn_cpdlc_uM129Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 130, &hf_atn_cpdlc_uM130Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 131, &hf_atn_cpdlc_uM131NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 132, &hf_atn_cpdlc_uM132NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 133, &hf_atn_cpdlc_uM133NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 134, &hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType }, { 135, &hf_atn_cpdlc_uM135NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 136, &hf_atn_cpdlc_uM136NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 137, &hf_atn_cpdlc_uM137NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 138, &hf_atn_cpdlc_uM138NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 139, &hf_atn_cpdlc_uM139NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 140, &hf_atn_cpdlc_uM140NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 141, &hf_atn_cpdlc_uM141NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 142, &hf_atn_cpdlc_uM142NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 143, &hf_atn_cpdlc_uM143NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 144, &hf_atn_cpdlc_uM144NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 145, &hf_atn_cpdlc_uM145NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 146, &hf_atn_cpdlc_uM146NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 147, &hf_atn_cpdlc_uM147NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 148, &hf_atn_cpdlc_uM148Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 149, &hf_atn_cpdlc_uM149LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition }, { 150, &hf_atn_cpdlc_uM150LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime }, { 151, &hf_atn_cpdlc_uM151Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 152, &hf_atn_cpdlc_uM152DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection }, { 153, &hf_atn_cpdlc_uM153Altimeter, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Altimeter }, { 154, &hf_atn_cpdlc_uM154NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 155, &hf_atn_cpdlc_uM155Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 156, &hf_atn_cpdlc_uM156NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 157, &hf_atn_cpdlc_uM157Frequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Frequency }, { 158, &hf_atn_cpdlc_uM158AtisCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATISCode }, { 159, &hf_atn_cpdlc_uM159ErrorInformation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ErrorInformation }, { 160, &hf_atn_cpdlc_uM160Facility, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Facility }, { 161, &hf_atn_cpdlc_uM161NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 162, &hf_atn_cpdlc_uM162NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 163, &hf_atn_cpdlc_uM163FacilityDesignation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignation }, { 164, &hf_atn_cpdlc_uM164NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 165, &hf_atn_cpdlc_uM165NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 166, &hf_atn_cpdlc_uM166TrafficType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TrafficType }, { 167, &hf_atn_cpdlc_uM167NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 168, &hf_atn_cpdlc_uM168NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 169, &hf_atn_cpdlc_uM169FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 170, &hf_atn_cpdlc_uM170FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 171, &hf_atn_cpdlc_uM171VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate }, { 172, &hf_atn_cpdlc_uM172VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate }, { 173, &hf_atn_cpdlc_uM173VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate }, { 174, &hf_atn_cpdlc_uM174VerticalRate, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VerticalRate }, { 175, &hf_atn_cpdlc_uM175Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 176, &hf_atn_cpdlc_uM176NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 177, &hf_atn_cpdlc_uM177NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 178, &hf_atn_cpdlc_uM178NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 179, &hf_atn_cpdlc_uM179NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 180, &hf_atn_cpdlc_uM180LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel }, { 181, &hf_atn_cpdlc_uM181ToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ToFromPosition }, { 182, &hf_atn_cpdlc_uM182NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 183, &hf_atn_cpdlc_uM183FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 184, &hf_atn_cpdlc_uM184TimeToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeToFromPosition }, { 185, &hf_atn_cpdlc_uM185PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 186, &hf_atn_cpdlc_uM186PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 187, &hf_atn_cpdlc_uM187FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 188, &hf_atn_cpdlc_uM188PositionSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionSpeed }, { 189, &hf_atn_cpdlc_uM189Speed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 190, &hf_atn_cpdlc_uM190Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees }, { 191, &hf_atn_cpdlc_uM191NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 192, &hf_atn_cpdlc_uM192LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime }, { 193, &hf_atn_cpdlc_uM193NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 194, &hf_atn_cpdlc_uM194FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 195, &hf_atn_cpdlc_uM195FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 196, &hf_atn_cpdlc_uM196FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 197, &hf_atn_cpdlc_uM197FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 198, &hf_atn_cpdlc_uM198FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 199, &hf_atn_cpdlc_uM199FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 200, &hf_atn_cpdlc_uM200NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 201, &hf_atn_cpdlc_uM201NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 202, &hf_atn_cpdlc_uM202NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 203, &hf_atn_cpdlc_uM203FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 204, &hf_atn_cpdlc_uM204FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 205, &hf_atn_cpdlc_uM205FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 206, &hf_atn_cpdlc_uM206FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 207, &hf_atn_cpdlc_uM207FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 208, &hf_atn_cpdlc_uM208FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 209, &hf_atn_cpdlc_uM209LevelPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelPosition }, { 210, &hf_atn_cpdlc_uM210Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 211, &hf_atn_cpdlc_uM211NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 212, &hf_atn_cpdlc_uM212FacilityDesignationATISCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignationATISCode }, { 213, &hf_atn_cpdlc_uM213FacilityDesignationAltimeter, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignationAltimeter }, { 214, &hf_atn_cpdlc_uM214RunwayRVR, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RunwayRVR }, { 215, &hf_atn_cpdlc_uM215DirectionDegrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DirectionDegrees }, { 216, &hf_atn_cpdlc_uM216NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 217, &hf_atn_cpdlc_uM217NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 218, &hf_atn_cpdlc_uM218NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 219, &hf_atn_cpdlc_uM219Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 220, &hf_atn_cpdlc_uM220Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 221, &hf_atn_cpdlc_uM221Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees }, { 222, &hf_atn_cpdlc_uM222NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 223, &hf_atn_cpdlc_uM223NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 224, &hf_atn_cpdlc_uM224NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 225, &hf_atn_cpdlc_uM225NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 226, &hf_atn_cpdlc_uM226Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 227, &hf_atn_cpdlc_uM227NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 228, &hf_atn_cpdlc_uM228Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 229, &hf_atn_cpdlc_uM229NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 230, &hf_atn_cpdlc_uM230NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 231, &hf_atn_cpdlc_uM231NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 232, &hf_atn_cpdlc_uM232NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 233, &hf_atn_cpdlc_uM233NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 234, &hf_atn_cpdlc_uM234NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 235, &hf_atn_cpdlc_uM235NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 236, &hf_atn_cpdlc_uM236NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 237, &hf_atn_cpdlc_uM237NULL , ASN1_NOT_EXTENSION_ROOT, dissect_atn_cpdlc_NULL }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_ATCUplinkMsgElementId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATCUplinkMsgElementId, ATCUplinkMsgElementId_choice, NULL); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId_sequence_of[1] = { { &hf_atn_cpdlc_atcuplinkmessagedata_elementids_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCUplinkMsgElementId }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId, SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId_sequence_of, 1, 5, false); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_128_OF_RouteInformation_sequence_of[1] = { { &hf_atn_cpdlc_routeInformations_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteInformation }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation, SEQUENCE_SIZE_1_128_OF_RouteInformation_sequence_of, 1, 128, false); return offset; } static const value_string atn_cpdlc_ATWDistanceTolerance_vals[] = { { 0, "plus" }, { 1, "minus" }, { 0, NULL } }; static int dissect_atn_cpdlc_ATWDistanceTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, false, 0, NULL); return offset; } static const per_sequence_t ATWDistance_sequence[] = { { &hf_atn_cpdlc_atwDistanceTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWDistanceTolerance }, { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATWDistance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATWDistance, ATWDistance_sequence); return offset; } static const value_string atn_cpdlc_ATWLevelTolerance_vals[] = { { 0, "at" }, { 1, "atorabove" }, { 2, "atorbelow" }, { 0, NULL } }; static int dissect_atn_cpdlc_ATWLevelTolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, false, 0, NULL); return offset; } static const per_sequence_t ATWLevel_sequence[] = { { &hf_atn_cpdlc_atw , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWLevelTolerance }, { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATWLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATWLevel, ATWLevel_sequence); return offset; } static const per_sequence_t ATWLevelSequence_sequence_of[1] = { { &hf_atn_cpdlc_ATWLevelSequence_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWLevel }, }; static int dissect_atn_cpdlc_ATWLevelSequence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATWLevelSequence, ATWLevelSequence_sequence_of, 1, 2, false); return offset; } static const per_sequence_t ATWAlongTrackWaypoint_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_aTWDistance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWDistance }, { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed }, { &hf_atn_cpdlc_aTWLevels , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevelSequence }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATWAlongTrackWaypoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATWAlongTrackWaypoint, ATWAlongTrackWaypoint_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint_sequence_of[1] = { { &hf_atn_cpdlc_aTWAlongTrackWaypoints_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATWAlongTrackWaypoint }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint, SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint_sequence_of, 1, 8, false); return offset; } static const per_sequence_t LatitudeReportingPoints_sequence[] = { { &hf_atn_cpdlc_latitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDirection }, { &hf_atn_cpdlc_latitudeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatitudeDegrees }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LatitudeReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LatitudeReportingPoints, LatitudeReportingPoints_sequence); return offset; } static const per_sequence_t LongitudeReportingPoints_sequence[] = { { &hf_atn_cpdlc_longitudeDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDirection }, { &hf_atn_cpdlc_longitudeDegrees, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LongitudeDegrees }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_LongitudeReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LongitudeReportingPoints, LongitudeReportingPoints_sequence); return offset; } static const value_string atn_cpdlc_LatLonReportingPoints_vals[] = { { 0, "latitudeReportingPoints" }, { 1, "longitudeReportingPoints" }, { 0, NULL } }; static const per_choice_t LatLonReportingPoints_choice[] = { { 0, &hf_atn_cpdlc_latitudeReportingPoints, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeReportingPoints }, { 1, &hf_atn_cpdlc_longitudeReportingPoints, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LongitudeReportingPoints }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_LatLonReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_LatLonReportingPoints, LatLonReportingPoints_choice, NULL); return offset; } static int dissect_atn_cpdlc_DegreeIncrement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 20U, NULL, false); return offset; } static const per_sequence_t ReportingPoints_sequence[] = { { &hf_atn_cpdlc_latLonReportingPoints, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_LatLonReportingPoints }, { &hf_atn_cpdlc_degreeIncrement, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_DegreeIncrement }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ReportingPoints(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ReportingPoints, ReportingPoints_sequence); return offset; } static const value_string atn_cpdlc_InterceptCourseFromSelection_vals[] = { { 0, "publishedIdentifier" }, { 1, "latitudeLongitude" }, { 2, "placeBearingPlaceBearing" }, { 3, "placeBearingDistance" }, { 0, NULL } }; static const per_choice_t InterceptCourseFromSelection_choice[] = { { 0, &hf_atn_cpdlc_publishedIdentifier, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PublishedIdentifier }, { 1, &hf_atn_cpdlc_latitudeLongitude, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_LatitudeLongitude }, { 2, &hf_atn_cpdlc_placeBearingPlaceBearing, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingPlaceBearing }, { 3, &hf_atn_cpdlc_placeBearingDistance, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_PlaceBearingDistance }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_InterceptCourseFromSelection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_InterceptCourseFromSelection, InterceptCourseFromSelection_choice, NULL); return offset; } static const per_sequence_t InterceptCourseFrom_sequence[] = { { &hf_atn_cpdlc_fromSelection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_InterceptCourseFromSelection }, { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Degrees }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_InterceptCourseFrom(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_InterceptCourseFrom, InterceptCourseFrom_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom_sequence_of[1] = { { &hf_atn_cpdlc_interceptCourseFroms_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_InterceptCourseFrom }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom, SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom_sequence_of, 1, 4, false); return offset; } static const per_sequence_t Holdatwaypoint_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_holdatwaypointspeedlow, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed }, { &hf_atn_cpdlc_aTWlevel , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevel }, { &hf_atn_cpdlc_holdatwaypointspeedhigh, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed }, { &hf_atn_cpdlc_direction , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Direction }, { &hf_atn_cpdlc_degrees , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees }, { &hf_atn_cpdlc_eFCtime , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_legtype , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_LegType }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Holdatwaypoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Holdatwaypoint, Holdatwaypoint_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_8_OF_Holdatwaypoint_sequence_of[1] = { { &hf_atn_cpdlc_holdAtWaypoints_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Holdatwaypoint }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint, SEQUENCE_SIZE_1_8_OF_Holdatwaypoint_sequence_of, 1, 8, false); return offset; } static const per_sequence_t WaypointSpeedLevel_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed }, { &hf_atn_cpdlc_aTWLevels , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ATWLevelSequence }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_WaypointSpeedLevel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_WaypointSpeedLevel, WaypointSpeedLevel_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel_sequence_of[1] = { { &hf_atn_cpdlc_waypointSpeedLevels_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WaypointSpeedLevel }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel, SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel_sequence_of, 1, 32, false); return offset; } static const per_sequence_t RTATime_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_timeTolerance, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_TimeTolerance }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_RTATime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RTATime, RTATime_sequence); return offset; } static int dissect_atn_cpdlc_RTATolerance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 150U, NULL, false); return offset; } static const per_sequence_t RTARequiredTimeArrival_sequence[] = { { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_rTATime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RTATime }, { &hf_atn_cpdlc_rTATolerance, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RTATolerance }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_RTARequiredTimeArrival(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RTARequiredTimeArrival, RTARequiredTimeArrival_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival_sequence_of[1] = { { &hf_atn_cpdlc_rTARequiredTimeArrivals_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RTARequiredTimeArrival }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival, SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival_sequence_of, 1, 32, false); return offset; } static const per_sequence_t RouteInformationAdditional_sequence[] = { { &hf_atn_cpdlc_aTWAlongTrackWaypoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint }, { &hf_atn_cpdlc_reportingpoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ReportingPoints }, { &hf_atn_cpdlc_interceptCourseFroms, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom }, { &hf_atn_cpdlc_holdAtWaypoints, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint }, { &hf_atn_cpdlc_waypointSpeedLevels, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel }, { &hf_atn_cpdlc_rTARequiredTimeArrivals, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_RouteInformationAdditional(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RouteInformationAdditional, RouteInformationAdditional_sequence); return offset; } static const per_sequence_t RouteClearance_sequence[] = { { &hf_atn_cpdlc_airportDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport }, { &hf_atn_cpdlc_airportDestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Airport }, { &hf_atn_cpdlc_runwayDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway }, { &hf_atn_cpdlc_procedureDeparture, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName }, { &hf_atn_cpdlc_runwayArrival, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Runway }, { &hf_atn_cpdlc_procedureApproach, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName }, { &hf_atn_cpdlc_procedureArrival, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProcedureName }, { &hf_atn_cpdlc_routeInformations, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation }, { &hf_atn_cpdlc_routeInformationAdditional, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RouteInformationAdditional }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_RouteClearance(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RouteClearance, RouteClearance_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_2_OF_RouteClearance_sequence_of[1] = { { &hf_atn_cpdlc_routeClearanceData_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RouteClearance }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance, SEQUENCE_SIZE_1_2_OF_RouteClearance_sequence_of, 1, 2, false); return offset; } static const per_sequence_t T_atcuplinkmessagedata_constraineddata_sequence[] = { { &hf_atn_cpdlc_routeClearanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance }, { NULL, 0, 0, NULL } }; static int 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_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata, T_atcuplinkmessagedata_constraineddata_sequence); return offset; } static const per_sequence_t ATCUplinkMessageData_sequence[] = { { &hf_atn_cpdlc_atcuplinkmessagedata_elementids, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId }, { &hf_atn_cpdlc_atcuplinkmessagedata_constraineddata, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_T_atcuplinkmessagedata_constraineddata }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATCUplinkMessageData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATCUplinkMessageData, ATCUplinkMessageData_sequence); return offset; } static const per_sequence_t ATCUplinkMessage_sequence[] = { { &hf_atn_cpdlc_header , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCMessageHeader }, { &hf_atn_cpdlc_atcuplinkmessage_messagedata, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCUplinkMessageData }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATCUplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATCUplinkMessage, ATCUplinkMessage_sequence); return offset; } static const value_string atn_cpdlc_UplinkMessage_vals[] = { { 0, "noMessage" }, { 1, "aTCUplinkMessage" }, { 0, NULL } }; static const per_choice_t UplinkMessage_choice[] = { { 0, &hf_atn_cpdlc_noMessage , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL }, { 1, &hf_atn_cpdlc_aTCUplinkMessage, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATCUplinkMessage }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_UplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_UplinkMessage, UplinkMessage_choice, NULL); return offset; } static int dissect_atn_cpdlc_AircraftAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 24, 24, false, NULL, 0, NULL, NULL); return offset; } static const per_sequence_t ForwardHeader_sequence[] = { { &hf_atn_cpdlc_dateTime , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DateTimeGroup }, { &hf_atn_cpdlc_aircraftID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftFlightIdentification }, { &hf_atn_cpdlc_aircraftAddress, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_AircraftAddress }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ForwardHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ForwardHeader, ForwardHeader_sequence); return offset; } static int 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_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, false, NULL, 0, NULL, NULL); return offset; } static const value_string atn_cpdlc_ForwardMessage_vals[] = { { 0, "upElementIDs" }, { 1, "downElementIDs" }, { 0, NULL } }; static const per_choice_t ForwardMessage_choice[] = { { 0, &hf_atn_cpdlc_upElementIDs, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_BIT_STRING }, { 1, &hf_atn_cpdlc_downElementIDs, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_BIT_STRING }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_ForwardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ForwardMessage, ForwardMessage_choice, NULL); return offset; } static const per_sequence_t ATCForwardMessage_sequence[] = { { &hf_atn_cpdlc_forwardHeader, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ForwardHeader }, { &hf_atn_cpdlc_forwardMessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ForwardMessage }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATCForwardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATCForwardMessage, ATCForwardMessage_sequence); return offset; } static const value_string atn_cpdlc_ATCForwardResponse_vals[] = { { 0, "success" }, { 1, "service-not-supported" }, { 2, "version-not-equal" }, { 0, NULL } }; static int dissect_atn_cpdlc_ATCForwardResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, true, 0, NULL); return offset; } static const value_string atn_cpdlc_GroundPDUs_vals[] = { { 0, "abortUser" }, { 1, "abortProvider" }, { 2, "startup" }, { 3, "send" }, { 4, "forward" }, { 5, "forwardresponse" }, { 0, NULL } }; static const per_choice_t GroundPDUs_choice[] = { { 0, &hf_atn_cpdlc_abortUser , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCUserAbortReason }, { 1, &hf_atn_cpdlc_abortProvider, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCProviderAbortReason }, { 2, &hf_atn_cpdlc_startup , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UplinkMessage }, { 3, &hf_atn_cpdlc_groundpdus_send, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCUplinkMessage }, { 4, &hf_atn_cpdlc_forward , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardMessage }, { 5, &hf_atn_cpdlc_forwardresponse, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardResponse }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_GroundPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_GroundPDUs, GroundPDUs_choice, NULL); return offset; } static const value_string atn_cpdlc_Mode_vals[] = { { 0, "cpdlc" }, { 1, "dsc" }, { 0, NULL } }; static int dissect_atn_cpdlc_Mode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, false, 0, NULL); return offset; } static const value_string atn_cpdlc_ClearanceType_vals[] = { { 0, "noneSpecified" }, { 1, "approach" }, { 2, "departure" }, { 3, "further" }, { 4, "start-up" }, { 5, "pushback" }, { 6, "taxi" }, { 7, "take-off" }, { 8, "landing" }, { 9, "oceanic" }, { 10, "en-route" }, { 11, "downstream" }, { 0, NULL } }; static int dissect_atn_cpdlc_ClearanceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 12, NULL, true, 0, NULL); return offset; } static int dissect_atn_cpdlc_RemainingFuel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_atn_cpdlc_Time(tvb, offset, actx, tree, hf_index); return offset; } static int dissect_atn_cpdlc_Temperature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -100, 100U, NULL, false); return offset; } static int dissect_atn_cpdlc_WindDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 360U, NULL, false); return offset; } static int dissect_atn_cpdlc_WindSpeedEnglish(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, NULL, false); return offset; } static int dissect_atn_cpdlc_WindSpeedMetric(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 511U, NULL, false); return offset; } static const value_string atn_cpdlc_WindSpeed_vals[] = { { 0, "windSpeedEnglish" }, { 1, "windSpeedMetric" }, { 0, NULL } }; static const per_choice_t WindSpeed_choice[] = { { 0, &hf_atn_cpdlc_windSpeedEnglish, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_WindSpeedEnglish }, { 1, &hf_atn_cpdlc_windSpeedMetric, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_WindSpeedMetric }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_WindSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_WindSpeed, WindSpeed_choice, NULL); return offset; } static const per_sequence_t Winds_sequence[] = { { &hf_atn_cpdlc_winds_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WindDirection }, { &hf_atn_cpdlc_winds_speed, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_WindSpeed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_Winds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_Winds, Winds_sequence); return offset; } static const value_string atn_cpdlc_Turbulence_vals[] = { { 0, "light" }, { 1, "moderate" }, { 2, "severe" }, { 0, NULL } }; static int dissect_atn_cpdlc_Turbulence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, false, 0, NULL); return offset; } static const value_string atn_cpdlc_Icing_vals[] = { { 0, "reserved" }, { 1, "light" }, { 2, "moderate" }, { 3, "severe" }, { 0, NULL } }; static int dissect_atn_cpdlc_Icing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 4, NULL, false, 0, NULL); return offset; } static const value_string atn_cpdlc_VerticalDirection_vals[] = { { 0, "up" }, { 1, "down" }, { 0, NULL } }; static int dissect_atn_cpdlc_VerticalDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, false, 0, NULL); return offset; } static const per_sequence_t VerticalChange_sequence[] = { { &hf_atn_cpdlc_vertical_direction, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_VerticalDirection }, { &hf_atn_cpdlc_rate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_VerticalRate }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_VerticalChange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_VerticalChange, VerticalChange_sequence); return offset; } static int dissect_atn_cpdlc_Humidity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 100U, NULL, false); return offset; } static const per_sequence_t PositionReport_sequence[] = { { &hf_atn_cpdlc_positioncurrent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_timeatpositioncurrent, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_level , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Level }, { &hf_atn_cpdlc_fixnext , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_timeetaatfixnext, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_fixnextplusone, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_timeetaatdestination, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_remainingFuel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_RemainingFuel }, { &hf_atn_cpdlc_temperature, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Temperature }, { &hf_atn_cpdlc_winds , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Winds }, { &hf_atn_cpdlc_turbulence, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Turbulence }, { &hf_atn_cpdlc_icing , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Icing }, { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Speed }, { &hf_atn_cpdlc_speedground, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_SpeedGround }, { &hf_atn_cpdlc_verticalChange, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_VerticalChange }, { &hf_atn_cpdlc_trackAngle, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees }, { &hf_atn_cpdlc_heading , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Degrees }, { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Distance }, { &hf_atn_cpdlc_humidity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Humidity }, { &hf_atn_cpdlc_reportedWaypointPosition, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Position }, { &hf_atn_cpdlc_reportedWaypointTime, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_reportedWaypointLevel, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Level }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_PositionReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_PositionReport, PositionReport_sequence); return offset; } static int dissect_atn_cpdlc_PersonsOnBoard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 1024U, NULL, false); return offset; } static const per_sequence_t RemainingFuelPersonsOnBoard_sequence[] = { { &hf_atn_cpdlc_remainingFuel, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_RemainingFuel }, { &hf_atn_cpdlc_personsOnBoard, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_PersonsOnBoard }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_RemainingFuelPersonsOnBoard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_RemainingFuelPersonsOnBoard, RemainingFuelPersonsOnBoard_sequence); return offset; } static int dissect_atn_cpdlc_VersionNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 15U, NULL, false); return offset; } static const per_sequence_t TimeDistanceToFromPosition_sequence[] = { { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { &hf_atn_cpdlc_distance , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Distance }, { &hf_atn_cpdlc_tofrom , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ToFrom }, { &hf_atn_cpdlc_position , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Position }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_TimeDistanceToFromPosition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_TimeDistanceToFromPosition, TimeDistanceToFromPosition_sequence); return offset; } static const per_sequence_t SpeedTime_sequence[] = { { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed }, { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_SpeedTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SpeedTime, SpeedTime_sequence); return offset; } static const per_sequence_t DistanceSpecifiedDirectionTime_sequence[] = { { &hf_atn_cpdlc_distanceSpecifiedDirection, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DistanceSpecifiedDirection }, { &hf_atn_cpdlc_time , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Time }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_DistanceSpecifiedDirectionTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_DistanceSpecifiedDirectionTime, DistanceSpecifiedDirectionTime_sequence); return offset; } static const per_sequence_t SpeedTypeSpeedTypeSpeedTypeSpeed_sequence[] = { { &hf_atn_cpdlc_speedTypes, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedType }, { &hf_atn_cpdlc_speed , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_Speed }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed, SpeedTypeSpeedTypeSpeedTypeSpeed_sequence); return offset; } static const value_string atn_cpdlc_ATCDownlinkMsgElementId_vals[] = { { 0, "dM0NULL" }, { 1, "dM1NULL" }, { 2, "dM2NULL" }, { 3, "dM3NULL" }, { 4, "dM4NULL" }, { 5, "dM5NULL" }, { 6, "dM6Level" }, { 7, "dM7LevelLevel" }, { 8, "dM8Level" }, { 9, "dM9Level" }, { 10, "dM10Level" }, { 11, "dM11PositionLevel" }, { 12, "dM12PositionLevel" }, { 13, "dM13TimeLevel" }, { 14, "dM14TimeLevel" }, { 15, "dM15DistanceSpecifiedDirection" }, { 16, "dM16PositionDistanceSpecifiedDirection" }, { 17, "dM17TimeDistanceSpecifiedDirection" }, { 18, "dM18Speed" }, { 19, "dM19SpeedSpeed" }, { 20, "dM20NULL" }, { 21, "dM21Frequency" }, { 22, "dM22Position" }, { 23, "dM23ProcedureName" }, { 24, "dM24RouteClearance" }, { 25, "dM25ClearanceType" }, { 26, "dM26PositionRouteClearance" }, { 27, "dM27DistanceSpecifiedDirection" }, { 28, "dM28Level" }, { 29, "dM29Level" }, { 30, "dM30Level" }, { 31, "dM31Position" }, { 32, "dM32Level" }, { 33, "dM33Position" }, { 34, "dM34Speed" }, { 35, "dM35Degrees" }, { 36, "dM36Degrees" }, { 37, "dM37Level" }, { 38, "dM38Level" }, { 39, "dM39Speed" }, { 40, "dM40RouteClearance" }, { 41, "dM41NULL" }, { 42, "dM42Position" }, { 43, "dM43Time" }, { 44, "dM44Position" }, { 45, "dM45Position" }, { 46, "dM46Time" }, { 47, "dM47Code" }, { 48, "dM48PositionReport" }, { 49, "dM49Speed" }, { 50, "dM50SpeedSpeed" }, { 51, "dM51NULL" }, { 52, "dM52NULL" }, { 53, "dM53NULL" }, { 54, "dM54Level" }, { 55, "dM55NULL" }, { 56, "dM56NULL" }, { 57, "dM57RemainingFuelPersonsOnBoard" }, { 58, "dM58NULL" }, { 59, "dM59PositionRouteClearance" }, { 60, "dM60DistanceSpecifiedDirection" }, { 61, "dM61Level" }, { 62, "dM62ErrorInformation" }, { 63, "dM63NULL" }, { 64, "dM64FacilityDesignation" }, { 65, "dM65NULL" }, { 66, "dM66NULL" }, { 67, "dM67FreeText" }, { 68, "dM68FreeText" }, { 69, "dM69NULL" }, { 70, "dM70Degrees" }, { 71, "dM71Degrees" }, { 72, "dM72Level" }, { 73, "dM73Versionnumber" }, { 74, "dM74NULL" }, { 75, "dM75NULL" }, { 76, "dM76LevelLevel" }, { 77, "dM77LevelLevel" }, { 78, "dM78TimeDistanceToFromPosition" }, { 79, "dM79AtisCode" }, { 80, "dM80DistanceSpecifiedDirection" }, { 81, "dM81LevelTime" }, { 82, "dM82Level" }, { 83, "dM83SpeedTime" }, { 84, "dM84Speed" }, { 85, "dM85DistanceSpecifiedDirectionTime" }, { 86, "dM86DistanceSpecifiedDirection" }, { 87, "dM87Level" }, { 88, "dM88Level" }, { 89, "dM89UnitnameFrequency" }, { 90, "dM90FreeText" }, { 91, "dM91FreeText" }, { 92, "dM92FreeText" }, { 93, "dM93FreeText" }, { 94, "dM94FreeText" }, { 95, "dM95FreeText" }, { 96, "dM96FreeText" }, { 97, "dM97FreeText" }, { 98, "dM98FreeText" }, { 99, "dM99NULL" }, { 100, "dM100NULL" }, { 101, "dM101NULL" }, { 102, "dM102NULL" }, { 103, "dM103NULL" }, { 104, "dM104PositionTime" }, { 105, "dM105Airport" }, { 106, "dM106Level" }, { 107, "dM107NULL" }, { 108, "dM108NULL" }, { 109, "dM109Time" }, { 110, "dM110Position" }, { 111, "dM111TimePosition" }, { 112, "dM112NULL" }, { 113, "dM113SpeedTypeSpeedTypeSpeedTypeSpeed" }, { 0, NULL } }; static const per_choice_t ATCDownlinkMsgElementId_choice[] = { { 0, &hf_atn_cpdlc_dM0NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 1, &hf_atn_cpdlc_dM1NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 2, &hf_atn_cpdlc_dM2NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 3, &hf_atn_cpdlc_dM3NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 4, &hf_atn_cpdlc_dM4NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 5, &hf_atn_cpdlc_dM5NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 6, &hf_atn_cpdlc_dM6Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 7, &hf_atn_cpdlc_dM7LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel }, { 8, &hf_atn_cpdlc_dM8Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 9, &hf_atn_cpdlc_dM9Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 10, &hf_atn_cpdlc_dM10Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 11, &hf_atn_cpdlc_dM11PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 12, &hf_atn_cpdlc_dM12PositionLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionLevel }, { 13, &hf_atn_cpdlc_dM13TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel }, { 14, &hf_atn_cpdlc_dM14TimeLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeLevel }, { 15, &hf_atn_cpdlc_dM15DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection }, { 16, &hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionDistanceSpecifiedDirection }, { 17, &hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceSpecifiedDirection }, { 18, &hf_atn_cpdlc_dM18Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 19, &hf_atn_cpdlc_dM19SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed }, { 20, &hf_atn_cpdlc_dM20NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 21, &hf_atn_cpdlc_dM21Frequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Frequency }, { 22, &hf_atn_cpdlc_dM22Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 23, &hf_atn_cpdlc_dM23ProcedureName, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProcedureName }, { 24, &hf_atn_cpdlc_dM24RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex }, { 25, &hf_atn_cpdlc_dM25ClearanceType, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ClearanceType }, { 26, &hf_atn_cpdlc_dM26PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex }, { 27, &hf_atn_cpdlc_dM27DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection }, { 28, &hf_atn_cpdlc_dM28Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 29, &hf_atn_cpdlc_dM29Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 30, &hf_atn_cpdlc_dM30Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 31, &hf_atn_cpdlc_dM31Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 32, &hf_atn_cpdlc_dM32Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 33, &hf_atn_cpdlc_dM33Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 34, &hf_atn_cpdlc_dM34Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 35, &hf_atn_cpdlc_dM35Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees }, { 36, &hf_atn_cpdlc_dM36Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees }, { 37, &hf_atn_cpdlc_dM37Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 38, &hf_atn_cpdlc_dM38Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 39, &hf_atn_cpdlc_dM39Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 40, &hf_atn_cpdlc_dM40RouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RouteClearanceIndex }, { 41, &hf_atn_cpdlc_dM41NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 42, &hf_atn_cpdlc_dM42Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 43, &hf_atn_cpdlc_dM43Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 44, &hf_atn_cpdlc_dM44Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 45, &hf_atn_cpdlc_dM45Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 46, &hf_atn_cpdlc_dM46Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 47, &hf_atn_cpdlc_dM47Code , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Code }, { 48, &hf_atn_cpdlc_dM48PositionReport, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionReport }, { 49, &hf_atn_cpdlc_dM49Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 50, &hf_atn_cpdlc_dM50SpeedSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedSpeed }, { 51, &hf_atn_cpdlc_dM51NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 52, &hf_atn_cpdlc_dM52NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 53, &hf_atn_cpdlc_dM53NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 54, &hf_atn_cpdlc_dM54Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 55, &hf_atn_cpdlc_dM55NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 56, &hf_atn_cpdlc_dM56NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 57, &hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_RemainingFuelPersonsOnBoard }, { 58, &hf_atn_cpdlc_dM58NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 59, &hf_atn_cpdlc_dM59PositionRouteClearance, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionRouteClearanceIndex }, { 60, &hf_atn_cpdlc_dM60DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection }, { 61, &hf_atn_cpdlc_dM61Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 62, &hf_atn_cpdlc_dM62ErrorInformation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ErrorInformation }, { 63, &hf_atn_cpdlc_dM63NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 64, &hf_atn_cpdlc_dM64FacilityDesignation, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FacilityDesignation }, { 65, &hf_atn_cpdlc_dM65NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 66, &hf_atn_cpdlc_dM66NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 67, &hf_atn_cpdlc_dM67FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 68, &hf_atn_cpdlc_dM68FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 69, &hf_atn_cpdlc_dM69NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 70, &hf_atn_cpdlc_dM70Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees }, { 71, &hf_atn_cpdlc_dM71Degrees, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Degrees }, { 72, &hf_atn_cpdlc_dM72Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 73, &hf_atn_cpdlc_dM73Versionnumber, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_VersionNumber }, { 74, &hf_atn_cpdlc_dM74NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 75, &hf_atn_cpdlc_dM75NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 76, &hf_atn_cpdlc_dM76LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel }, { 77, &hf_atn_cpdlc_dM77LevelLevel, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelLevel }, { 78, &hf_atn_cpdlc_dM78TimeDistanceToFromPosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimeDistanceToFromPosition }, { 79, &hf_atn_cpdlc_dM79AtisCode, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATISCode }, { 80, &hf_atn_cpdlc_dM80DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection }, { 81, &hf_atn_cpdlc_dM81LevelTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_LevelTime }, { 82, &hf_atn_cpdlc_dM82Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 83, &hf_atn_cpdlc_dM83SpeedTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTime }, { 84, &hf_atn_cpdlc_dM84Speed , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Speed }, { 85, &hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirectionTime }, { 86, &hf_atn_cpdlc_dM86DistanceSpecifiedDirection, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_DistanceSpecifiedDirection }, { 87, &hf_atn_cpdlc_dM87Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 88, &hf_atn_cpdlc_dM88Level , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 89, &hf_atn_cpdlc_dM89UnitnameFrequency, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_UnitNameFrequency }, { 90, &hf_atn_cpdlc_dM90FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 91, &hf_atn_cpdlc_dM91FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 92, &hf_atn_cpdlc_dM92FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 93, &hf_atn_cpdlc_dM93FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 94, &hf_atn_cpdlc_dM94FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 95, &hf_atn_cpdlc_dM95FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 96, &hf_atn_cpdlc_dM96FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 97, &hf_atn_cpdlc_dM97FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 98, &hf_atn_cpdlc_dM98FreeText, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_FreeText }, { 99, &hf_atn_cpdlc_dM99NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 100, &hf_atn_cpdlc_dM100NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 101, &hf_atn_cpdlc_dM101NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 102, &hf_atn_cpdlc_dM102NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 103, &hf_atn_cpdlc_dM103NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 104, &hf_atn_cpdlc_dM104PositionTime, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PositionTime }, { 105, &hf_atn_cpdlc_dM105Airport, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Airport }, { 106, &hf_atn_cpdlc_dM106Level, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Level }, { 107, &hf_atn_cpdlc_dM107NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 108, &hf_atn_cpdlc_dM108NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 109, &hf_atn_cpdlc_dM109Time , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Time }, { 110, &hf_atn_cpdlc_dM110Position, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_Position }, { 111, &hf_atn_cpdlc_dM111TimePosition, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_TimePosition }, { 112, &hf_atn_cpdlc_dM112NULL , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_NULL }, { 113, &hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_ATCDownlinkMsgElementId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATCDownlinkMsgElementId, ATCDownlinkMsgElementId_choice, NULL); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId_sequence_of[1] = { { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCDownlinkMsgElementId }, }; static int 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_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId, SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId_sequence_of, 1, 5, false); return offset; } static const per_sequence_t T_atcdownlinkmessagedata_constraineddata_sequence[] = { { &hf_atn_cpdlc_routeClearanceData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance }, { NULL, 0, 0, NULL } }; static int 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_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata, T_atcdownlinkmessagedata_constraineddata_sequence); return offset; } static const per_sequence_t ATCDownlinkMessageData_sequence[] = { { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId }, { &hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATCDownlinkMessageData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATCDownlinkMessageData, ATCDownlinkMessageData_sequence); return offset; } static const per_sequence_t ATCDownlinkMessage_sequence[] = { { &hf_atn_cpdlc_header , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCMessageHeader }, { &hf_atn_cpdlc_atcdownlinkmessage_messagedata, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ATCDownlinkMessageData }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ATCDownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ATCDownlinkMessage, ATCDownlinkMessage_sequence); return offset; } static const value_string atn_cpdlc_DownlinkMessage_vals[] = { { 0, "noMessage" }, { 1, "aTCDownlinkMessage" }, { 0, NULL } }; static const per_choice_t DownlinkMessage_choice[] = { { 0, &hf_atn_cpdlc_noMessage , ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_NULL }, { 1, &hf_atn_cpdlc_aTCDownlinkMessage, ASN1_NO_EXTENSIONS , dissect_atn_cpdlc_ATCDownlinkMessage }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_DownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_DownlinkMessage, DownlinkMessage_choice, NULL); return offset; } static const per_sequence_t StartDownMessage_sequence[] = { { &hf_atn_cpdlc_mode , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_Mode }, { &hf_atn_cpdlc_startDownlinkMessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_DownlinkMessage }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_StartDownMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_StartDownMessage, StartDownMessage_sequence); return offset; } static const value_string atn_cpdlc_AircraftPDUs_vals[] = { { 0, "abortUser" }, { 1, "abortProvider" }, { 2, "startdown" }, { 3, "send" }, { 0, NULL } }; static const per_choice_t AircraftPDUs_choice[] = { { 0, &hf_atn_cpdlc_abortUser , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCUserAbortReason }, { 1, &hf_atn_cpdlc_abortProvider, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_CPDLCProviderAbortReason }, { 2, &hf_atn_cpdlc_startdown , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_StartDownMessage }, { 3, &hf_atn_cpdlc_aircraftpdus_send, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCDownlinkMessage }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_AircraftPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_AircraftPDUs, AircraftPDUs_choice, NULL); return offset; } static const value_string atn_cpdlc_PMCPDLCUserAbortReason_vals[] = { { 0, "undefined" }, { 1, "no-message-identification-numbers-available" }, { 2, "duplicate-message-identification-numbers" }, { 3, "no-longer-next-data-authority" }, { 4, "current-data-authority-abort" }, { 5, "commanded-termination" }, { 6, "invalid-response" }, { 7, "time-out-of-synchronisation" }, { 8, "unknown-integrity-check" }, { 9, "validation-failure" }, { 10, "unable-to-decode-message" }, { 11, "invalid-pdu" }, { 12, "invalid-CPDLC-message" }, { 0, NULL } }; static int dissect_atn_cpdlc_PMCPDLCUserAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 13, NULL, true, 0, NULL); return offset; } static const value_string atn_cpdlc_PMCPDLCProviderAbortReason_vals[] = { { 0, "timer-expired" }, { 1, "undefined-error" }, { 2, "invalid-PDU" }, { 3, "protocol-error" }, { 4, "communication-service-error" }, { 5, "communication-service-failure" }, { 6, "invalid-QOS-parameter" }, { 7, "expected-PDU-missing" }, { 0, NULL } }; static int dissect_atn_cpdlc_PMCPDLCProviderAbortReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 8, NULL, true, 0, NULL); return offset; } static int dissect_atn_cpdlc_AlgorithmIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_tree *top_tree=NULL; offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree, NULL); return offset; } static int dissect_atn_cpdlc_CPDLCMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { tvbuff_t *tvb_usr = NULL; offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, false, NULL, 0, &tvb_usr, NULL); if (tvb_usr) { switch(check_heur_msg_type(actx->pinfo)){ case dm: dissect_atn_cpdlc_ATCDownlinkMessage(tvb_new_subset_remaining(tvb_usr, 0), 0, actx, tree, hf_index); break; case um: dissect_atn_cpdlc_ATCUplinkMessage(tvb_new_subset_remaining(tvb_usr, 0), 0, actx , tree, hf_index); break; default: break; } } return offset; } static const per_sequence_t ProtectedUplinkMessage_sequence[] = { { &hf_atn_cpdlc_algorithmIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_AlgorithmIdentifier }, { &hf_atn_cpdlc_protectedMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_CPDLCMessage }, { &hf_atn_cpdlc_integrityCheck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_BIT_STRING }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ProtectedUplinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ProtectedUplinkMessage, ProtectedUplinkMessage_sequence); return offset; } static const value_string atn_cpdlc_ProtectedGroundPDUs_vals[] = { { 0, "abortUser" }, { 1, "abortProvider" }, { 2, "startup" }, { 3, "send" }, { 4, "forward" }, { 5, "forwardresponse" }, { 0, NULL } }; static const per_choice_t ProtectedGroundPDUs_choice[] = { { 0, &hf_atn_cpdlc_pmcpdlcuserabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCUserAbortReason }, { 1, &hf_atn_cpdlc_pmcpdlcproviderabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCProviderAbortReason }, { 2, &hf_atn_cpdlc_protecteduplinkmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedUplinkMessage }, { 3, &hf_atn_cpdlc_protecteduplinkmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedUplinkMessage }, { 4, &hf_atn_cpdlc_forward , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardMessage }, { 5, &hf_atn_cpdlc_forwardresponse, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ATCForwardResponse }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_ProtectedGroundPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ProtectedGroundPDUs, ProtectedGroundPDUs_choice, NULL); return offset; } static const value_string atn_cpdlc_ProtectedMode_vals[] = { { 0, "cpdlc" }, { 1, "dsc" }, { 0, NULL } }; static int dissect_atn_cpdlc_ProtectedMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, false, 0, NULL); return offset; } static const per_sequence_t ProtectedDownlinkMessage_sequence[] = { { &hf_atn_cpdlc_algorithmIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_AlgorithmIdentifier }, { &hf_atn_cpdlc_protectedMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_atn_cpdlc_CPDLCMessage }, { &hf_atn_cpdlc_integrityCheck, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_BIT_STRING }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ProtectedDownlinkMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ProtectedDownlinkMessage, ProtectedDownlinkMessage_sequence); return offset; } static const per_sequence_t ProtectedStartDownMessage_sequence[] = { { &hf_atn_cpdlc_protectedmode, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_atn_cpdlc_ProtectedMode }, { &hf_atn_cpdlc_protecteddownlinkmessage, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_atn_cpdlc_ProtectedDownlinkMessage }, { NULL, 0, 0, NULL } }; static int dissect_atn_cpdlc_ProtectedStartDownMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ProtectedStartDownMessage, ProtectedStartDownMessage_sequence); return offset; } static const value_string atn_cpdlc_ProtectedAircraftPDUs_vals[] = { { 0, "abortUser" }, { 1, "abortProvider" }, { 2, "startdown" }, { 3, "send" }, { 0, NULL } }; static const per_choice_t ProtectedAircraftPDUs_choice[] = { { 0, &hf_atn_cpdlc_pmcpdlcuserabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCUserAbortReason }, { 1, &hf_atn_cpdlc_pmcpdlcproviderabortreason, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_PMCPDLCProviderAbortReason }, { 2, &hf_atn_cpdlc_protectedstartDownmessage, ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedStartDownMessage }, { 3, &hf_atn_cpdlc_send , ASN1_EXTENSION_ROOT , dissect_atn_cpdlc_ProtectedDownlinkMessage }, { 0, NULL, 0, NULL } }; static int dissect_atn_cpdlc_ProtectedAircraftPDUs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_atn_cpdlc_ProtectedAircraftPDUs, ProtectedAircraftPDUs_choice, NULL); return offset; } /*--- PDUs ---*/ static int dissect_GroundPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo); offset = dissect_atn_cpdlc_GroundPDUs(tvb, offset, &asn1_ctx, tree, hf_atn_cpdlc_GroundPDUs_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_AircraftPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo); offset = dissect_atn_cpdlc_AircraftPDUs(tvb, offset, &asn1_ctx, tree, hf_atn_cpdlc_AircraftPDUs_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_ProtectedGroundPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo); offset = dissect_atn_cpdlc_ProtectedGroundPDUs(tvb, offset, &asn1_ctx, tree, hf_atn_cpdlc_ProtectedGroundPDUs_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_ProtectedAircraftPDUs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, false, pinfo); offset = dissect_atn_cpdlc_ProtectedAircraftPDUs(tvb, offset, &asn1_ctx, tree, hf_atn_cpdlc_ProtectedAircraftPDUs_PDU); offset += 7; offset >>= 3; return offset; } /* Wireshark ID of CPDLC protocol */ static int proto_atn_cpdlc; static int dissect_atn_cpdlc( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { /* note: */ /* there are two co-existing applications of CPDLC: */ /* "plain old" (ae-qualifier 2) and */ /* "protected mode" (ae-qualifier 22) CPDLC. */ /* "protected mode" was introduced to cope with a */ /* safety issue in which a message would sent to the wrong aircraft. */ /* note:*/ /* The protection is an additional checksum and covers the message content, */ /* the 24-bit address of the aircraft, the current flight id and */ /* the current ground facility so that an aircraft would be able to reject */ /* messages which are unexpected (i.e. messages to another flight or */ /* messages from the wrong center). */ /*note:*/ /* although "plain old" CPDLC is more or less deprecated */ /* many aircraft cannot perform */ /* "protected mode" for this largely depends on */ /* upgraded avionics packages */ /*note:*/ /* The use of CPDLC is *optional* as the pilot */ /* may always use a voice radio channel to talk to the controller.*/ proto_tree *atn_cpdlc_tree = NULL; atn_conversation_t *atn_cv = NULL; /* note: */ /* we need the ae qualifier stored within the conversation */ /* to decode "plain old cpdlc" or */ /* "protected mode cpdlc correctly " */ /* DT: dstref present, srcref is always zero */ if((pinfo->clnp_dstref) && (!pinfo->clnp_srcref)){ atn_cv = find_atn_conversation( &pinfo->dst, pinfo->clnp_dstref, &pinfo->src ); } /* CR: srcref present, dstref is always zero */ if((!pinfo->clnp_dstref) && (pinfo->clnp_srcref)){ atn_cv = find_atn_conversation( &pinfo->src, pinfo->clnp_srcref, &pinfo->dst ); } /* CC: srcref and dstref present, always use src/srcref & dst */ if((pinfo->clnp_dstref) && (pinfo->clnp_srcref)){ atn_cv = find_atn_conversation( &pinfo->src, pinfo->clnp_srcref, &pinfo->dst ); } if(!atn_cv){ /* atn conversation not found */ return 0; } atn_cpdlc_tree = proto_tree_add_subtree( tree, tvb, 0, -1, ett_atn_cpdlc, NULL, ATN_CPDLC_PROTO ); switch(atn_cv->ae_qualifier){ case pmcpdlc: if( check_heur_msg_type(pinfo) == um ) { /* uplink PDU's = Ground PDU's */ dissect_ProtectedGroundPDUs_PDU( tvb, pinfo, atn_cpdlc_tree, NULL); }else { /* downlink PDU's = Aircraft PDU's */ dissect_ProtectedAircraftPDUs_PDU( tvb, pinfo, atn_cpdlc_tree, NULL); } break; case cpdlc: if( check_heur_msg_type(pinfo) == um ) { /* uplink PDU's = Ground PDU's */ dissect_GroundPDUs_PDU( tvb, pinfo, atn_cpdlc_tree, NULL); }else { /* downlink PDU's = Aircraft PDU's */ dissect_AircraftPDUs_PDU( tvb, pinfo, atn_cpdlc_tree, NULL); } break; default: break; } return tvb_reported_length_remaining(tvb, 0); } static bool dissect_atn_cpdlc_heur( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { atn_conversation_t *volatile atn_cv = NULL; volatile bool is_atn_cpdlc = false; volatile bool is_pm = false; int type; type = check_heur_msg_type(pinfo); switch(type){ case um: TRY { dissect_ProtectedGroundPDUs_PDU(tvb, pinfo, NULL, NULL); is_atn_cpdlc = true; is_pm = true;} CATCH_ALL{ is_atn_cpdlc = false; is_pm = false;} ENDTRY; if (is_atn_cpdlc) { break; } TRY { dissect_GroundPDUs_PDU(tvb, pinfo, NULL, NULL); is_pm = false; is_atn_cpdlc = true;} CATCH_ALL{ is_atn_cpdlc = false; is_pm = false;} ENDTRY; break; case dm: TRY { dissect_ProtectedAircraftPDUs_PDU(tvb, pinfo, NULL, NULL); is_atn_cpdlc = true; is_pm = true;} CATCH_ALL { is_atn_cpdlc = false; is_pm = false; } ENDTRY; if (is_atn_cpdlc) { break; } TRY{ dissect_AircraftPDUs_PDU(tvb, pinfo, NULL, NULL); is_atn_cpdlc = true; is_pm = false;} CATCH_ALL{ is_atn_cpdlc = false; is_pm = false;} ENDTRY; break; default: break; } if(is_atn_cpdlc){ /* note: */ /* all subsequent PDU's belonging to this conversation */ /* are considered CPDLC */ /* if the first CPDLC PDU has been decoded successfully */ /* (This is done in "atn-ulcs" by using "call_dissector_with_data()") */ /* DT: dstref present, srcref is always zero */ if((pinfo->clnp_dstref) && (!pinfo->clnp_srcref)){ atn_cv = find_atn_conversation(&pinfo->dst, pinfo->clnp_dstref, &pinfo->src ); } /* CR: srcref present, dstref is always zero */ if((!pinfo->clnp_dstref) && (pinfo->clnp_srcref)){ atn_cv = find_atn_conversation(&pinfo->src, pinfo->clnp_srcref, &pinfo->dst ); } /* CC: srcref and dstref present, always use src/srcref & dst */ if((pinfo->clnp_dstref) && (pinfo->clnp_srcref)){ atn_cv = find_atn_conversation(&pinfo->src, pinfo->clnp_srcref, &pinfo->dst ); } if(atn_cv){ /* atn conversation found */ if(is_pm == true) { atn_cv->ae_qualifier = pmcpdlc; } else { atn_cv->ae_qualifier = cpdlc; } dissect_atn_cpdlc(tvb, pinfo, tree, NULL); } }else { /* there should *always* be an atn conversation */ is_atn_cpdlc = false; } return is_atn_cpdlc; } void proto_register_atn_cpdlc (void) { static hf_register_info hf_atn_cpdlc[] = { { &hf_atn_cpdlc_GroundPDUs_PDU, { "GroundPDUs", "atn-cpdlc.GroundPDUs", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_GroundPDUs_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_AircraftPDUs_PDU, { "AircraftPDUs", "atn-cpdlc.AircraftPDUs", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_AircraftPDUs_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_ProtectedGroundPDUs_PDU, { "ProtectedGroundPDUs", "atn-cpdlc.ProtectedGroundPDUs", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedGroundPDUs_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_ProtectedAircraftPDUs_PDU, { "ProtectedAircraftPDUs", "atn-cpdlc.ProtectedAircraftPDUs", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedAircraftPDUs_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_abortUser, { "abortUser", "atn-cpdlc.abortUser", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_CPDLCUserAbortReason_vals), 0, "CPDLCUserAbortReason", HFILL }}, { &hf_atn_cpdlc_abortProvider, { "abortProvider", "atn-cpdlc.abortProvider", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_CPDLCProviderAbortReason_vals), 0, "CPDLCProviderAbortReason", HFILL }}, { &hf_atn_cpdlc_startup, { "startup", "atn-cpdlc.startup", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_UplinkMessage_vals), 0, "UplinkMessage", HFILL }}, { &hf_atn_cpdlc_groundpdus_send, { "send", "atn-cpdlc.send_element", FT_NONE, BASE_NONE, NULL, 0, "ATCUplinkMessage", HFILL }}, { &hf_atn_cpdlc_forward, { "forward", "atn-cpdlc.forward_element", FT_NONE, BASE_NONE, NULL, 0, "ATCForwardMessage", HFILL }}, { &hf_atn_cpdlc_forwardresponse, { "forwardresponse", "atn-cpdlc.forwardresponse", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCForwardResponse_vals), 0, "ATCForwardResponse", HFILL }}, { &hf_atn_cpdlc_noMessage, { "noMessage", "atn-cpdlc.noMessage_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_aTCUplinkMessage, { "aTCUplinkMessage", "atn-cpdlc.aTCUplinkMessage_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_startdown, { "startdown", "atn-cpdlc.startdown_element", FT_NONE, BASE_NONE, NULL, 0, "StartDownMessage", HFILL }}, { &hf_atn_cpdlc_aircraftpdus_send, { "send", "atn-cpdlc.send_element", FT_NONE, BASE_NONE, NULL, 0, "ATCDownlinkMessage", HFILL }}, { &hf_atn_cpdlc_mode, { "mode", "atn-cpdlc.mode", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Mode_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_startDownlinkMessage, { "startDownlinkMessage", "atn-cpdlc.startDownlinkMessage", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_DownlinkMessage_vals), 0, "DownlinkMessage", HFILL }}, { &hf_atn_cpdlc_aTCDownlinkMessage, { "aTCDownlinkMessage", "atn-cpdlc.aTCDownlinkMessage_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_pmcpdlcuserabortreason, { "abortUser", "atn-cpdlc.abortUser", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PMCPDLCUserAbortReason_vals), 0, "PMCPDLCUserAbortReason", HFILL }}, { &hf_atn_cpdlc_pmcpdlcproviderabortreason, { "abortProvider", "atn-cpdlc.abortProvider", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PMCPDLCProviderAbortReason_vals), 0, "PMCPDLCProviderAbortReason", HFILL }}, { &hf_atn_cpdlc_protecteduplinkmessage, { "startup", "atn-cpdlc.startup_element", FT_NONE, BASE_NONE, NULL, 0, "ProtectedUplinkMessage", HFILL }}, { &hf_atn_cpdlc_algorithmIdentifier, { "algorithmIdentifier", "atn-cpdlc.algorithmIdentifier", FT_REL_OID, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_protectedMessage, { "protectedMessage", "atn-cpdlc.protectedMessage", FT_BYTES, BASE_NONE, NULL, 0, "CPDLCMessage", HFILL }}, { &hf_atn_cpdlc_integrityCheck, { "integrityCheck", "atn-cpdlc.integrityCheck", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING", HFILL }}, { &hf_atn_cpdlc_forwardHeader, { "forwardHeader", "atn-cpdlc.forwardHeader_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_forwardMessage, { "forwardMessage", "atn-cpdlc.forwardMessage", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ForwardMessage_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_dateTime, { "dateTime", "atn-cpdlc.dateTime_element", FT_NONE, BASE_NONE, NULL, 0, "DateTimeGroup", HFILL }}, { &hf_atn_cpdlc_aircraftID, { "aircraftID", "atn-cpdlc.aircraftID", FT_STRING, BASE_NONE, NULL, 0, "AircraftFlightIdentification", HFILL }}, { &hf_atn_cpdlc_aircraftAddress, { "aircraftAddress", "atn-cpdlc.aircraftAddress", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_upElementIDs, { "upElementIDs", "atn-cpdlc.upElementIDs", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING", HFILL }}, { &hf_atn_cpdlc_downElementIDs, { "downElementIDs", "atn-cpdlc.downElementIDs", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING", HFILL }}, { &hf_atn_cpdlc_protectedstartDownmessage, { "startdown", "atn-cpdlc.startdown_element", FT_NONE, BASE_NONE, NULL, 0, "ProtectedStartDownMessage", HFILL }}, { &hf_atn_cpdlc_send, { "send", "atn-cpdlc.send_element", FT_NONE, BASE_NONE, NULL, 0, "ProtectedDownlinkMessage", HFILL }}, { &hf_atn_cpdlc_protectedmode, { "mode", "atn-cpdlc.mode", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProtectedMode_vals), 0, "ProtectedMode", HFILL }}, { &hf_atn_cpdlc_protecteddownlinkmessage, { "startDownlinkMessage", "atn-cpdlc.startDownlinkMessage_element", FT_NONE, BASE_NONE, NULL, 0, "ProtectedDownlinkMessage", HFILL }}, { &hf_atn_cpdlc_header, { "header", "atn-cpdlc.header_element", FT_NONE, BASE_NONE, NULL, 0, "ATCMessageHeader", HFILL }}, { &hf_atn_cpdlc_atcuplinkmessage_messagedata, { "messageData", "atn-cpdlc.messageData_element", FT_NONE, BASE_NONE, NULL, 0, "ATCUplinkMessageData", HFILL }}, { &hf_atn_cpdlc_atcuplinkmessagedata_elementids, { "elementIds", "atn-cpdlc.elementIds", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId", HFILL }}, { &hf_atn_cpdlc_atcuplinkmessagedata_elementids_item, { "ATCUplinkMsgElementId", "atn-cpdlc.ATCUplinkMsgElementId", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCUplinkMsgElementId_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_atcuplinkmessagedata_constraineddata, { "constrainedData", "atn-cpdlc.constrainedData_element", FT_NONE, BASE_NONE, NULL, 0, "T_atcuplinkmessagedata_constraineddata", HFILL }}, { &hf_atn_cpdlc_routeClearanceData, { "routeClearanceData", "atn-cpdlc.routeClearanceData", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_2_OF_RouteClearance", HFILL }}, { &hf_atn_cpdlc_routeClearanceData_item, { "RouteClearance", "atn-cpdlc.RouteClearance_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_atcdownlinkmessage_messagedata, { "messageData", "atn-cpdlc.messageData_element", FT_NONE, BASE_NONE, NULL, 0, "ATCDownlinkMessageData", HFILL }}, { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids, { "elementIds", "atn-cpdlc.elementIds", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId", HFILL }}, { &hf_atn_cpdlc_atcdownlinkmessagedata_elementids_item, { "ATCDownlinkMsgElementId", "atn-cpdlc.ATCDownlinkMsgElementId", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATCDownlinkMsgElementId_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_atcdownlinkmessagedata_constraineddata, { "constrainedData", "atn-cpdlc.constrainedData_element", FT_NONE, BASE_NONE, NULL, 0, "T_atcdownlinkmessagedata_constraineddata", HFILL }}, { &hf_atn_cpdlc_messageIdNumber, { "messageIdNumber", "atn-cpdlc.messageIdNumber", FT_UINT32, BASE_DEC, NULL, 0, "MsgIdentificationNumber", HFILL }}, { &hf_atn_cpdlc_messageRefNumber, { "messageRefNumber", "atn-cpdlc.messageRefNumber", FT_UINT32, BASE_DEC, NULL, 0, "MsgReferenceNumber", HFILL }}, { &hf_atn_cpdlc_logicalAck, { "logicalAck", "atn-cpdlc.logicalAck", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LogicalAck_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM0NULL, { "uM0NULL", "atn-cpdlc.uM0NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM1NULL, { "uM1NULL", "atn-cpdlc.uM1NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM2NULL, { "uM2NULL", "atn-cpdlc.uM2NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM3NULL, { "uM3NULL", "atn-cpdlc.uM3NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM4NULL, { "uM4NULL", "atn-cpdlc.uM4NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM5NULL, { "uM5NULL", "atn-cpdlc.uM5NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM6Level, { "uM6Level", "atn-cpdlc.uM6Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM7Time, { "uM7Time", "atn-cpdlc.uM7Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_uM8Position, { "uM8Position", "atn-cpdlc.uM8Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM9Time, { "uM9Time", "atn-cpdlc.uM9Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_uM10Position, { "uM10Position", "atn-cpdlc.uM10Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM11Time, { "uM11Time", "atn-cpdlc.uM11Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_uM12Position, { "uM12Position", "atn-cpdlc.uM12Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM13TimeLevel, { "uM13TimeLevel", "atn-cpdlc.uM13TimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "TimeLevel", HFILL }}, { &hf_atn_cpdlc_uM14PositionLevel, { "uM14PositionLevel", "atn-cpdlc.uM14PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM15TimeLevel, { "uM15TimeLevel", "atn-cpdlc.uM15TimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "TimeLevel", HFILL }}, { &hf_atn_cpdlc_uM16PositionLevel, { "uM16PositionLevel", "atn-cpdlc.uM16PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM17TimeLevel, { "uM17TimeLevel", "atn-cpdlc.uM17TimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "TimeLevel", HFILL }}, { &hf_atn_cpdlc_uM18PositionLevel, { "uM18PositionLevel", "atn-cpdlc.uM18PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM19Level, { "uM19Level", "atn-cpdlc.uM19Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM20Level, { "uM20Level", "atn-cpdlc.uM20Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM21TimeLevel, { "uM21TimeLevel", "atn-cpdlc.uM21TimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "TimeLevel", HFILL }}, { &hf_atn_cpdlc_uM22PositionLevel, { "uM22PositionLevel", "atn-cpdlc.uM22PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM23Level, { "uM23Level", "atn-cpdlc.uM23Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM24TimeLevel, { "uM24TimeLevel", "atn-cpdlc.uM24TimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "TimeLevel", HFILL }}, { &hf_atn_cpdlc_uM25PositionLevel, { "uM25PositionLevel", "atn-cpdlc.uM25PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM26LevelTime, { "uM26LevelTime", "atn-cpdlc.uM26LevelTime_element", FT_NONE, BASE_NONE, NULL, 0, "LevelTime", HFILL }}, { &hf_atn_cpdlc_uM27LevelPosition, { "uM27LevelPosition", "atn-cpdlc.uM27LevelPosition_element", FT_NONE, BASE_NONE, NULL, 0, "LevelPosition", HFILL }}, { &hf_atn_cpdlc_uM28LevelTime, { "uM28LevelTime", "atn-cpdlc.uM28LevelTime_element", FT_NONE, BASE_NONE, NULL, 0, "LevelTime", HFILL }}, { &hf_atn_cpdlc_uM29LevelPosition, { "uM29LevelPosition", "atn-cpdlc.uM29LevelPosition_element", FT_NONE, BASE_NONE, NULL, 0, "LevelPosition", HFILL }}, { &hf_atn_cpdlc_uM30LevelLevel, { "uM30LevelLevel", "atn-cpdlc.uM30LevelLevel", FT_UINT32, BASE_DEC, NULL, 0, "LevelLevel", HFILL }}, { &hf_atn_cpdlc_uM31LevelLevel, { "uM31LevelLevel", "atn-cpdlc.uM31LevelLevel", FT_UINT32, BASE_DEC, NULL, 0, "LevelLevel", HFILL }}, { &hf_atn_cpdlc_uM32LevelLevel, { "uM32LevelLevel", "atn-cpdlc.uM32LevelLevel", FT_UINT32, BASE_DEC, NULL, 0, "LevelLevel", HFILL }}, { &hf_atn_cpdlc_uM33NULL, { "uM33NULL", "atn-cpdlc.uM33NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM34Level, { "uM34Level", "atn-cpdlc.uM34Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM35Level, { "uM35Level", "atn-cpdlc.uM35Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM36Level, { "uM36Level", "atn-cpdlc.uM36Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM37Level, { "uM37Level", "atn-cpdlc.uM37Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM38Level, { "uM38Level", "atn-cpdlc.uM38Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM39Level, { "uM39Level", "atn-cpdlc.uM39Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM40NULL, { "uM40NULL", "atn-cpdlc.uM40NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM41NULL, { "uM41NULL", "atn-cpdlc.uM41NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM42PositionLevel, { "uM42PositionLevel", "atn-cpdlc.uM42PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM43PositionLevel, { "uM43PositionLevel", "atn-cpdlc.uM43PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM44PositionLevel, { "uM44PositionLevel", "atn-cpdlc.uM44PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM45PositionLevel, { "uM45PositionLevel", "atn-cpdlc.uM45PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM46PositionLevel, { "uM46PositionLevel", "atn-cpdlc.uM46PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM47PositionLevel, { "uM47PositionLevel", "atn-cpdlc.uM47PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM48PositionLevel, { "uM48PositionLevel", "atn-cpdlc.uM48PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM49PositionLevel, { "uM49PositionLevel", "atn-cpdlc.uM49PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM50PositionLevelLevel, { "uM50PositionLevelLevel", "atn-cpdlc.uM50PositionLevelLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevelLevel", HFILL }}, { &hf_atn_cpdlc_uM51PositionTime, { "uM51PositionTime", "atn-cpdlc.uM51PositionTime_element", FT_NONE, BASE_NONE, NULL, 0, "PositionTime", HFILL }}, { &hf_atn_cpdlc_uM52PositionTime, { "uM52PositionTime", "atn-cpdlc.uM52PositionTime_element", FT_NONE, BASE_NONE, NULL, 0, "PositionTime", HFILL }}, { &hf_atn_cpdlc_uM53PositionTime, { "uM53PositionTime", "atn-cpdlc.uM53PositionTime_element", FT_NONE, BASE_NONE, NULL, 0, "PositionTime", HFILL }}, { &hf_atn_cpdlc_uM54PositionTimeTime, { "uM54PositionTimeTime", "atn-cpdlc.uM54PositionTimeTime_element", FT_NONE, BASE_NONE, NULL, 0, "PositionTimeTime", HFILL }}, { &hf_atn_cpdlc_uM55PositionSpeed, { "uM55PositionSpeed", "atn-cpdlc.uM55PositionSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "PositionSpeed", HFILL }}, { &hf_atn_cpdlc_uM56PositionSpeed, { "uM56PositionSpeed", "atn-cpdlc.uM56PositionSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "PositionSpeed", HFILL }}, { &hf_atn_cpdlc_uM57PositionSpeed, { "uM57PositionSpeed", "atn-cpdlc.uM57PositionSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "PositionSpeed", HFILL }}, { &hf_atn_cpdlc_uM58PositionTimeLevel, { "uM58PositionTimeLevel", "atn-cpdlc.uM58PositionTimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionTimeLevel", HFILL }}, { &hf_atn_cpdlc_uM59PositionTimeLevel, { "uM59PositionTimeLevel", "atn-cpdlc.uM59PositionTimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionTimeLevel", HFILL }}, { &hf_atn_cpdlc_uM60PositionTimeLevel, { "uM60PositionTimeLevel", "atn-cpdlc.uM60PositionTimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionTimeLevel", HFILL }}, { &hf_atn_cpdlc_uM61PositionLevelSpeed, { "uM61PositionLevelSpeed", "atn-cpdlc.uM61PositionLevelSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevelSpeed", HFILL }}, { &hf_atn_cpdlc_uM62TimePositionLevel, { "uM62TimePositionLevel", "atn-cpdlc.uM62TimePositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "TimePositionLevel", HFILL }}, { &hf_atn_cpdlc_uM63TimePositionLevelSpeed, { "uM63TimePositionLevelSpeed", "atn-cpdlc.uM63TimePositionLevelSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "TimePositionLevelSpeed", HFILL }}, { &hf_atn_cpdlc_uM64DistanceSpecifiedDirection, { "uM64DistanceSpecifiedDirection", "atn-cpdlc.uM64DistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_uM65PositionDistanceSpecifiedDirection, { "uM65PositionDistanceSpecifiedDirection", "atn-cpdlc.uM65PositionDistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "PositionDistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_uM66TimeDistanceSpecifiedDirection, { "uM66TimeDistanceSpecifiedDirection", "atn-cpdlc.uM66TimeDistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "TimeDistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_uM67NULL, { "uM67NULL", "atn-cpdlc.uM67NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM68Position, { "uM68Position", "atn-cpdlc.uM68Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM69Time, { "uM69Time", "atn-cpdlc.uM69Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_uM70Position, { "uM70Position", "atn-cpdlc.uM70Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM71Time, { "uM71Time", "atn-cpdlc.uM71Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_uM72NULL, { "uM72NULL", "atn-cpdlc.uM72NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM73DepartureClearance, { "uM73DepartureClearance", "atn-cpdlc.uM73DepartureClearance_element", FT_NONE, BASE_NONE, NULL, 0, "DepartureClearance", HFILL }}, { &hf_atn_cpdlc_uM74Position, { "uM74Position", "atn-cpdlc.uM74Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM75Position, { "uM75Position", "atn-cpdlc.uM75Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM76TimePosition, { "uM76TimePosition", "atn-cpdlc.uM76TimePosition_element", FT_NONE, BASE_NONE, NULL, 0, "TimePosition", HFILL }}, { &hf_atn_cpdlc_uM77PositionPosition, { "uM77PositionPosition", "atn-cpdlc.uM77PositionPosition", FT_UINT32, BASE_DEC, NULL, 0, "PositionPosition", HFILL }}, { &hf_atn_cpdlc_uM78LevelPosition, { "uM78LevelPosition", "atn-cpdlc.uM78LevelPosition_element", FT_NONE, BASE_NONE, NULL, 0, "LevelPosition", HFILL }}, { &hf_atn_cpdlc_uM79PositionRouteClearance, { "uM79PositionRouteClearance", "atn-cpdlc.uM79PositionRouteClearance_element", FT_NONE, BASE_NONE, NULL, 0, "PositionRouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_uM80RouteClearance, { "uM80RouteClearance", "atn-cpdlc.uM80RouteClearance", FT_UINT32, BASE_DEC, NULL, 0, "RouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_uM81ProcedureName, { "uM81ProcedureName", "atn-cpdlc.uM81ProcedureName_element", FT_NONE, BASE_NONE, NULL, 0, "ProcedureName", HFILL }}, { &hf_atn_cpdlc_uM82DistanceSpecifiedDirection, { "uM82DistanceSpecifiedDirection", "atn-cpdlc.uM82DistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_uM83PositionRouteClearance, { "uM83PositionRouteClearance", "atn-cpdlc.uM83PositionRouteClearance_element", FT_NONE, BASE_NONE, NULL, 0, "PositionRouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_uM84PositionProcedureName, { "uM84PositionProcedureName", "atn-cpdlc.uM84PositionProcedureName_element", FT_NONE, BASE_NONE, NULL, 0, "PositionProcedureName", HFILL }}, { &hf_atn_cpdlc_uM85RouteClearance, { "uM85RouteClearance", "atn-cpdlc.uM85RouteClearance", FT_UINT32, BASE_DEC, NULL, 0, "RouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_uM86PositionRouteClearance, { "uM86PositionRouteClearance", "atn-cpdlc.uM86PositionRouteClearance_element", FT_NONE, BASE_NONE, NULL, 0, "PositionRouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_uM87Position, { "uM87Position", "atn-cpdlc.uM87Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM88PositionPosition, { "uM88PositionPosition", "atn-cpdlc.uM88PositionPosition", FT_UINT32, BASE_DEC, NULL, 0, "PositionPosition", HFILL }}, { &hf_atn_cpdlc_uM89TimePosition, { "uM89TimePosition", "atn-cpdlc.uM89TimePosition_element", FT_NONE, BASE_NONE, NULL, 0, "TimePosition", HFILL }}, { &hf_atn_cpdlc_uM90LevelPosition, { "uM90LevelPosition", "atn-cpdlc.uM90LevelPosition_element", FT_NONE, BASE_NONE, NULL, 0, "LevelPosition", HFILL }}, { &hf_atn_cpdlc_uM91HoldClearance, { "uM91HoldClearance", "atn-cpdlc.uM91HoldClearance_element", FT_NONE, BASE_NONE, NULL, 0, "HoldClearance", HFILL }}, { &hf_atn_cpdlc_uM92PositionLevel, { "uM92PositionLevel", "atn-cpdlc.uM92PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM93Time, { "uM93Time", "atn-cpdlc.uM93Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_uM94DirectionDegrees, { "uM94DirectionDegrees", "atn-cpdlc.uM94DirectionDegrees_element", FT_NONE, BASE_NONE, NULL, 0, "DirectionDegrees", HFILL }}, { &hf_atn_cpdlc_uM95DirectionDegrees, { "uM95DirectionDegrees", "atn-cpdlc.uM95DirectionDegrees_element", FT_NONE, BASE_NONE, NULL, 0, "DirectionDegrees", HFILL }}, { &hf_atn_cpdlc_uM96NULL, { "uM96NULL", "atn-cpdlc.uM96NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM97PositionDegrees, { "uM97PositionDegrees", "atn-cpdlc.uM97PositionDegrees_element", FT_NONE, BASE_NONE, NULL, 0, "PositionDegrees", HFILL }}, { &hf_atn_cpdlc_uM98DirectionDegrees, { "uM98DirectionDegrees", "atn-cpdlc.uM98DirectionDegrees_element", FT_NONE, BASE_NONE, NULL, 0, "DirectionDegrees", HFILL }}, { &hf_atn_cpdlc_uM99ProcedureName, { "uM99ProcedureName", "atn-cpdlc.uM99ProcedureName_element", FT_NONE, BASE_NONE, NULL, 0, "ProcedureName", HFILL }}, { &hf_atn_cpdlc_uM100TimeSpeed, { "uM100TimeSpeed", "atn-cpdlc.uM100TimeSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "TimeSpeed", HFILL }}, { &hf_atn_cpdlc_uM101PositionSpeed, { "uM101PositionSpeed", "atn-cpdlc.uM101PositionSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "PositionSpeed", HFILL }}, { &hf_atn_cpdlc_uM102LevelSpeed, { "uM102LevelSpeed", "atn-cpdlc.uM102LevelSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "LevelSpeed", HFILL }}, { &hf_atn_cpdlc_uM103TimeSpeedSpeed, { "uM103TimeSpeedSpeed", "atn-cpdlc.uM103TimeSpeedSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "TimeSpeedSpeed", HFILL }}, { &hf_atn_cpdlc_uM104PositionSpeedSpeed, { "uM104PositionSpeedSpeed", "atn-cpdlc.uM104PositionSpeedSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "PositionSpeedSpeed", HFILL }}, { &hf_atn_cpdlc_uM105LevelSpeedSpeed, { "uM105LevelSpeedSpeed", "atn-cpdlc.uM105LevelSpeedSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "LevelSpeedSpeed", HFILL }}, { &hf_atn_cpdlc_uM106Speed, { "uM106Speed", "atn-cpdlc.uM106Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM107NULL, { "uM107NULL", "atn-cpdlc.uM107NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM108Speed, { "uM108Speed", "atn-cpdlc.uM108Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM109Speed, { "uM109Speed", "atn-cpdlc.uM109Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM110SpeedSpeed, { "uM110SpeedSpeed", "atn-cpdlc.uM110SpeedSpeed", FT_UINT32, BASE_DEC, NULL, 0, "SpeedSpeed", HFILL }}, { &hf_atn_cpdlc_uM111Speed, { "uM111Speed", "atn-cpdlc.uM111Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM112Speed, { "uM112Speed", "atn-cpdlc.uM112Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM113Speed, { "uM113Speed", "atn-cpdlc.uM113Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM114Speed, { "uM114Speed", "atn-cpdlc.uM114Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM115Speed, { "uM115Speed", "atn-cpdlc.uM115Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM116NULL, { "uM116NULL", "atn-cpdlc.uM116NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM117UnitNameFrequency, { "uM117UnitNameFrequency", "atn-cpdlc.uM117UnitNameFrequency_element", FT_NONE, BASE_NONE, NULL, 0, "UnitNameFrequency", HFILL }}, { &hf_atn_cpdlc_uM118PositionUnitNameFrequency, { "uM118PositionUnitNameFrequency", "atn-cpdlc.uM118PositionUnitNameFrequency_element", FT_NONE, BASE_NONE, NULL, 0, "PositionUnitNameFrequency", HFILL }}, { &hf_atn_cpdlc_uM119TimeUnitNameFrequency, { "uM119TimeUnitNameFrequency", "atn-cpdlc.uM119TimeUnitNameFrequency_element", FT_NONE, BASE_NONE, NULL, 0, "TimeUnitNameFrequency", HFILL }}, { &hf_atn_cpdlc_uM120UnitNameFrequency, { "uM120UnitNameFrequency", "atn-cpdlc.uM120UnitNameFrequency_element", FT_NONE, BASE_NONE, NULL, 0, "UnitNameFrequency", HFILL }}, { &hf_atn_cpdlc_uM121PositionUnitNameFrequency, { "uM121PositionUnitNameFrequency", "atn-cpdlc.uM121PositionUnitNameFrequency_element", FT_NONE, BASE_NONE, NULL, 0, "PositionUnitNameFrequency", HFILL }}, { &hf_atn_cpdlc_uM122TimeUnitNameFrequency, { "uM122TimeUnitNameFrequency", "atn-cpdlc.uM122TimeUnitNameFrequency_element", FT_NONE, BASE_NONE, NULL, 0, "TimeUnitNameFrequency", HFILL }}, { &hf_atn_cpdlc_uM123Code, { "uM123Code", "atn-cpdlc.uM123Code", FT_UINT32, BASE_DEC, NULL, 0, "Code", HFILL }}, { &hf_atn_cpdlc_uM124NULL, { "uM124NULL", "atn-cpdlc.uM124NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM125NULL, { "uM125NULL", "atn-cpdlc.uM125NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM126NULL, { "uM126NULL", "atn-cpdlc.uM126NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM127NULL, { "uM127NULL", "atn-cpdlc.uM127NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM128Level, { "uM128Level", "atn-cpdlc.uM128Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM129Level, { "uM129Level", "atn-cpdlc.uM129Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM130Position, { "uM130Position", "atn-cpdlc.uM130Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM131NULL, { "uM131NULL", "atn-cpdlc.uM131NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM132NULL, { "uM132NULL", "atn-cpdlc.uM132NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM133NULL, { "uM133NULL", "atn-cpdlc.uM133NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM134SpeedTypeSpeedTypeSpeedType, { "uM134SpeedTypeSpeedTypeSpeedType", "atn-cpdlc.uM134SpeedTypeSpeedTypeSpeedType", FT_UINT32, BASE_DEC, NULL, 0, "SpeedTypeSpeedTypeSpeedType", HFILL }}, { &hf_atn_cpdlc_uM135NULL, { "uM135NULL", "atn-cpdlc.uM135NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM136NULL, { "uM136NULL", "atn-cpdlc.uM136NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM137NULL, { "uM137NULL", "atn-cpdlc.uM137NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM138NULL, { "uM138NULL", "atn-cpdlc.uM138NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM139NULL, { "uM139NULL", "atn-cpdlc.uM139NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM140NULL, { "uM140NULL", "atn-cpdlc.uM140NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM141NULL, { "uM141NULL", "atn-cpdlc.uM141NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM142NULL, { "uM142NULL", "atn-cpdlc.uM142NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM143NULL, { "uM143NULL", "atn-cpdlc.uM143NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM144NULL, { "uM144NULL", "atn-cpdlc.uM144NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM145NULL, { "uM145NULL", "atn-cpdlc.uM145NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM146NULL, { "uM146NULL", "atn-cpdlc.uM146NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM147NULL, { "uM147NULL", "atn-cpdlc.uM147NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM148Level, { "uM148Level", "atn-cpdlc.uM148Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM149LevelPosition, { "uM149LevelPosition", "atn-cpdlc.uM149LevelPosition_element", FT_NONE, BASE_NONE, NULL, 0, "LevelPosition", HFILL }}, { &hf_atn_cpdlc_uM150LevelTime, { "uM150LevelTime", "atn-cpdlc.uM150LevelTime_element", FT_NONE, BASE_NONE, NULL, 0, "LevelTime", HFILL }}, { &hf_atn_cpdlc_uM151Speed, { "uM151Speed", "atn-cpdlc.uM151Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM152DistanceSpecifiedDirection, { "uM152DistanceSpecifiedDirection", "atn-cpdlc.uM152DistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_uM153Altimeter, { "uM153Altimeter", "atn-cpdlc.uM153Altimeter", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Altimeter_vals), 0, "Altimeter", HFILL }}, { &hf_atn_cpdlc_uM154NULL, { "uM154NULL", "atn-cpdlc.uM154NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM155Position, { "uM155Position", "atn-cpdlc.uM155Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM156NULL, { "uM156NULL", "atn-cpdlc.uM156NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM157Frequency, { "uM157Frequency", "atn-cpdlc.uM157Frequency", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0, "Frequency", HFILL }}, { &hf_atn_cpdlc_uM158AtisCode, { "uM158AtisCode", "atn-cpdlc.uM158AtisCode", FT_STRING, BASE_NONE, NULL, 0, "ATISCode", HFILL }}, { &hf_atn_cpdlc_uM159ErrorInformation, { "uM159ErrorInformation", "atn-cpdlc.uM159ErrorInformation", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ErrorInformation_vals), 0, "ErrorInformation", HFILL }}, { &hf_atn_cpdlc_uM160Facility, { "uM160Facility", "atn-cpdlc.uM160Facility", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Facility_vals), 0, "Facility", HFILL }}, { &hf_atn_cpdlc_uM161NULL, { "uM161NULL", "atn-cpdlc.uM161NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM162NULL, { "uM162NULL", "atn-cpdlc.uM162NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM163FacilityDesignation, { "uM163FacilityDesignation", "atn-cpdlc.uM163FacilityDesignation", FT_STRING, BASE_NONE, NULL, 0, "FacilityDesignation", HFILL }}, { &hf_atn_cpdlc_uM164NULL, { "uM164NULL", "atn-cpdlc.uM164NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM165NULL, { "uM165NULL", "atn-cpdlc.uM165NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM166TrafficType, { "uM166TrafficType", "atn-cpdlc.uM166TrafficType", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_TrafficType_vals), 0, "TrafficType", HFILL }}, { &hf_atn_cpdlc_uM167NULL, { "uM167NULL", "atn-cpdlc.uM167NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM168NULL, { "uM168NULL", "atn-cpdlc.uM168NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM169FreeText, { "uM169FreeText", "atn-cpdlc.uM169FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM170FreeText, { "uM170FreeText", "atn-cpdlc.uM170FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM171VerticalRate, { "uM171VerticalRate", "atn-cpdlc.uM171VerticalRate", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0, "VerticalRate", HFILL }}, { &hf_atn_cpdlc_uM172VerticalRate, { "uM172VerticalRate", "atn-cpdlc.uM172VerticalRate", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0, "VerticalRate", HFILL }}, { &hf_atn_cpdlc_uM173VerticalRate, { "uM173VerticalRate", "atn-cpdlc.uM173VerticalRate", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0, "VerticalRate", HFILL }}, { &hf_atn_cpdlc_uM174VerticalRate, { "uM174VerticalRate", "atn-cpdlc.uM174VerticalRate", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0, "VerticalRate", HFILL }}, { &hf_atn_cpdlc_uM175Level, { "uM175Level", "atn-cpdlc.uM175Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM176NULL, { "uM176NULL", "atn-cpdlc.uM176NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM177NULL, { "uM177NULL", "atn-cpdlc.uM177NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM178NULL, { "uM178NULL", "atn-cpdlc.uM178NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM179NULL, { "uM179NULL", "atn-cpdlc.uM179NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM180LevelLevel, { "uM180LevelLevel", "atn-cpdlc.uM180LevelLevel", FT_UINT32, BASE_DEC, NULL, 0, "LevelLevel", HFILL }}, { &hf_atn_cpdlc_uM181ToFromPosition, { "uM181ToFromPosition", "atn-cpdlc.uM181ToFromPosition_element", FT_NONE, BASE_NONE, NULL, 0, "ToFromPosition", HFILL }}, { &hf_atn_cpdlc_uM182NULL, { "uM182NULL", "atn-cpdlc.uM182NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM183FreeText, { "uM183FreeText", "atn-cpdlc.uM183FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM184TimeToFromPosition, { "uM184TimeToFromPosition", "atn-cpdlc.uM184TimeToFromPosition_element", FT_NONE, BASE_NONE, NULL, 0, "TimeToFromPosition", HFILL }}, { &hf_atn_cpdlc_uM185PositionLevel, { "uM185PositionLevel", "atn-cpdlc.uM185PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM186PositionLevel, { "uM186PositionLevel", "atn-cpdlc.uM186PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_uM187FreeText, { "uM187FreeText", "atn-cpdlc.uM187FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM188PositionSpeed, { "uM188PositionSpeed", "atn-cpdlc.uM188PositionSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "PositionSpeed", HFILL }}, { &hf_atn_cpdlc_uM189Speed, { "uM189Speed", "atn-cpdlc.uM189Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_uM190Degrees, { "uM190Degrees", "atn-cpdlc.uM190Degrees", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, "Degrees", HFILL }}, { &hf_atn_cpdlc_uM191NULL, { "uM191NULL", "atn-cpdlc.uM191NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM192LevelTime, { "uM192LevelTime", "atn-cpdlc.uM192LevelTime_element", FT_NONE, BASE_NONE, NULL, 0, "LevelTime", HFILL }}, { &hf_atn_cpdlc_uM193NULL, { "uM193NULL", "atn-cpdlc.uM193NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM194FreeText, { "uM194FreeText", "atn-cpdlc.uM194FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM195FreeText, { "uM195FreeText", "atn-cpdlc.uM195FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM196FreeText, { "uM196FreeText", "atn-cpdlc.uM196FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM197FreeText, { "uM197FreeText", "atn-cpdlc.uM197FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM198FreeText, { "uM198FreeText", "atn-cpdlc.uM198FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM199FreeText, { "uM199FreeText", "atn-cpdlc.uM199FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM200NULL, { "uM200NULL", "atn-cpdlc.uM200NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM201NULL, { "uM201NULL", "atn-cpdlc.uM201NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM202NULL, { "uM202NULL", "atn-cpdlc.uM202NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM203FreeText, { "uM203FreeText", "atn-cpdlc.uM203FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM204FreeText, { "uM204FreeText", "atn-cpdlc.uM204FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM205FreeText, { "uM205FreeText", "atn-cpdlc.uM205FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM206FreeText, { "uM206FreeText", "atn-cpdlc.uM206FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM207FreeText, { "uM207FreeText", "atn-cpdlc.uM207FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM208FreeText, { "uM208FreeText", "atn-cpdlc.uM208FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_uM209LevelPosition, { "uM209LevelPosition", "atn-cpdlc.uM209LevelPosition_element", FT_NONE, BASE_NONE, NULL, 0, "LevelPosition", HFILL }}, { &hf_atn_cpdlc_uM210Position, { "uM210Position", "atn-cpdlc.uM210Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM211NULL, { "uM211NULL", "atn-cpdlc.uM211NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM212FacilityDesignationATISCode, { "uM212FacilityDesignationATISCode", "atn-cpdlc.uM212FacilityDesignationATISCode_element", FT_NONE, BASE_NONE, NULL, 0, "FacilityDesignationATISCode", HFILL }}, { &hf_atn_cpdlc_uM213FacilityDesignationAltimeter, { "uM213FacilityDesignationAltimeter", "atn-cpdlc.uM213FacilityDesignationAltimeter_element", FT_NONE, BASE_NONE, NULL, 0, "FacilityDesignationAltimeter", HFILL }}, { &hf_atn_cpdlc_uM214RunwayRVR, { "uM214RunwayRVR", "atn-cpdlc.uM214RunwayRVR_element", FT_NONE, BASE_NONE, NULL, 0, "RunwayRVR", HFILL }}, { &hf_atn_cpdlc_uM215DirectionDegrees, { "uM215DirectionDegrees", "atn-cpdlc.uM215DirectionDegrees_element", FT_NONE, BASE_NONE, NULL, 0, "DirectionDegrees", HFILL }}, { &hf_atn_cpdlc_uM216NULL, { "uM216NULL", "atn-cpdlc.uM216NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM217NULL, { "uM217NULL", "atn-cpdlc.uM217NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM218NULL, { "uM218NULL", "atn-cpdlc.uM218NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM219Level, { "uM219Level", "atn-cpdlc.uM219Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM220Level, { "uM220Level", "atn-cpdlc.uM220Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_uM221Degrees, { "uM221Degrees", "atn-cpdlc.uM221Degrees", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, "Degrees", HFILL }}, { &hf_atn_cpdlc_uM222NULL, { "uM222NULL", "atn-cpdlc.uM222NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM223NULL, { "uM223NULL", "atn-cpdlc.uM223NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM224NULL, { "uM224NULL", "atn-cpdlc.uM224NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM225NULL, { "uM225NULL", "atn-cpdlc.uM225NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM226Time, { "uM226Time", "atn-cpdlc.uM226Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_uM227NULL, { "uM227NULL", "atn-cpdlc.uM227NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM228Position, { "uM228Position", "atn-cpdlc.uM228Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_uM229NULL, { "uM229NULL", "atn-cpdlc.uM229NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM230NULL, { "uM230NULL", "atn-cpdlc.uM230NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM231NULL, { "uM231NULL", "atn-cpdlc.uM231NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM232NULL, { "uM232NULL", "atn-cpdlc.uM232NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM233NULL, { "uM233NULL", "atn-cpdlc.uM233NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM234NULL, { "uM234NULL", "atn-cpdlc.uM234NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM235NULL, { "uM235NULL", "atn-cpdlc.uM235NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM236NULL, { "uM236NULL", "atn-cpdlc.uM236NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_uM237NULL, { "uM237NULL", "atn-cpdlc.uM237NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM0NULL, { "dM0NULL", "atn-cpdlc.dM0NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM1NULL, { "dM1NULL", "atn-cpdlc.dM1NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM2NULL, { "dM2NULL", "atn-cpdlc.dM2NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM3NULL, { "dM3NULL", "atn-cpdlc.dM3NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM4NULL, { "dM4NULL", "atn-cpdlc.dM4NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM5NULL, { "dM5NULL", "atn-cpdlc.dM5NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM6Level, { "dM6Level", "atn-cpdlc.dM6Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM7LevelLevel, { "dM7LevelLevel", "atn-cpdlc.dM7LevelLevel", FT_UINT32, BASE_DEC, NULL, 0, "LevelLevel", HFILL }}, { &hf_atn_cpdlc_dM8Level, { "dM8Level", "atn-cpdlc.dM8Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM9Level, { "dM9Level", "atn-cpdlc.dM9Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM10Level, { "dM10Level", "atn-cpdlc.dM10Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM11PositionLevel, { "dM11PositionLevel", "atn-cpdlc.dM11PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_dM12PositionLevel, { "dM12PositionLevel", "atn-cpdlc.dM12PositionLevel_element", FT_NONE, BASE_NONE, NULL, 0, "PositionLevel", HFILL }}, { &hf_atn_cpdlc_dM13TimeLevel, { "dM13TimeLevel", "atn-cpdlc.dM13TimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "TimeLevel", HFILL }}, { &hf_atn_cpdlc_dM14TimeLevel, { "dM14TimeLevel", "atn-cpdlc.dM14TimeLevel_element", FT_NONE, BASE_NONE, NULL, 0, "TimeLevel", HFILL }}, { &hf_atn_cpdlc_dM15DistanceSpecifiedDirection, { "dM15DistanceSpecifiedDirection", "atn-cpdlc.dM15DistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_dM16PositionDistanceSpecifiedDirection, { "dM16PositionDistanceSpecifiedDirection", "atn-cpdlc.dM16PositionDistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "PositionDistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_dM17TimeDistanceSpecifiedDirection, { "dM17TimeDistanceSpecifiedDirection", "atn-cpdlc.dM17TimeDistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "TimeDistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_dM18Speed, { "dM18Speed", "atn-cpdlc.dM18Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_dM19SpeedSpeed, { "dM19SpeedSpeed", "atn-cpdlc.dM19SpeedSpeed", FT_UINT32, BASE_DEC, NULL, 0, "SpeedSpeed", HFILL }}, { &hf_atn_cpdlc_dM20NULL, { "dM20NULL", "atn-cpdlc.dM20NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM21Frequency, { "dM21Frequency", "atn-cpdlc.dM21Frequency", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0, "Frequency", HFILL }}, { &hf_atn_cpdlc_dM22Position, { "dM22Position", "atn-cpdlc.dM22Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_dM23ProcedureName, { "dM23ProcedureName", "atn-cpdlc.dM23ProcedureName_element", FT_NONE, BASE_NONE, NULL, 0, "ProcedureName", HFILL }}, { &hf_atn_cpdlc_dM24RouteClearance, { "dM24RouteClearance", "atn-cpdlc.dM24RouteClearance", FT_UINT32, BASE_DEC, NULL, 0, "RouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_dM25ClearanceType, { "dM25ClearanceType", "atn-cpdlc.dM25ClearanceType", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ClearanceType_vals), 0, "ClearanceType", HFILL }}, { &hf_atn_cpdlc_dM26PositionRouteClearance, { "dM26PositionRouteClearance", "atn-cpdlc.dM26PositionRouteClearance_element", FT_NONE, BASE_NONE, NULL, 0, "PositionRouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_dM27DistanceSpecifiedDirection, { "dM27DistanceSpecifiedDirection", "atn-cpdlc.dM27DistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_dM28Level, { "dM28Level", "atn-cpdlc.dM28Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM29Level, { "dM29Level", "atn-cpdlc.dM29Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM30Level, { "dM30Level", "atn-cpdlc.dM30Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM31Position, { "dM31Position", "atn-cpdlc.dM31Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_dM32Level, { "dM32Level", "atn-cpdlc.dM32Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM33Position, { "dM33Position", "atn-cpdlc.dM33Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_dM34Speed, { "dM34Speed", "atn-cpdlc.dM34Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_dM35Degrees, { "dM35Degrees", "atn-cpdlc.dM35Degrees", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, "Degrees", HFILL }}, { &hf_atn_cpdlc_dM36Degrees, { "dM36Degrees", "atn-cpdlc.dM36Degrees", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, "Degrees", HFILL }}, { &hf_atn_cpdlc_dM37Level, { "dM37Level", "atn-cpdlc.dM37Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM38Level, { "dM38Level", "atn-cpdlc.dM38Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM39Speed, { "dM39Speed", "atn-cpdlc.dM39Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_dM40RouteClearance, { "dM40RouteClearance", "atn-cpdlc.dM40RouteClearance", FT_UINT32, BASE_DEC, NULL, 0, "RouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_dM41NULL, { "dM41NULL", "atn-cpdlc.dM41NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM42Position, { "dM42Position", "atn-cpdlc.dM42Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_dM43Time, { "dM43Time", "atn-cpdlc.dM43Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_dM44Position, { "dM44Position", "atn-cpdlc.dM44Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_dM45Position, { "dM45Position", "atn-cpdlc.dM45Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_dM46Time, { "dM46Time", "atn-cpdlc.dM46Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_dM47Code, { "dM47Code", "atn-cpdlc.dM47Code", FT_UINT32, BASE_DEC, NULL, 0, "Code", HFILL }}, { &hf_atn_cpdlc_dM48PositionReport, { "dM48PositionReport", "atn-cpdlc.dM48PositionReport_element", FT_NONE, BASE_NONE, NULL, 0, "PositionReport", HFILL }}, { &hf_atn_cpdlc_dM49Speed, { "dM49Speed", "atn-cpdlc.dM49Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_dM50SpeedSpeed, { "dM50SpeedSpeed", "atn-cpdlc.dM50SpeedSpeed", FT_UINT32, BASE_DEC, NULL, 0, "SpeedSpeed", HFILL }}, { &hf_atn_cpdlc_dM51NULL, { "dM51NULL", "atn-cpdlc.dM51NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM52NULL, { "dM52NULL", "atn-cpdlc.dM52NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM53NULL, { "dM53NULL", "atn-cpdlc.dM53NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM54Level, { "dM54Level", "atn-cpdlc.dM54Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM55NULL, { "dM55NULL", "atn-cpdlc.dM55NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM56NULL, { "dM56NULL", "atn-cpdlc.dM56NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM57RemainingFuelPersonsOnBoard, { "dM57RemainingFuelPersonsOnBoard", "atn-cpdlc.dM57RemainingFuelPersonsOnBoard_element", FT_NONE, BASE_NONE, NULL, 0, "RemainingFuelPersonsOnBoard", HFILL }}, { &hf_atn_cpdlc_dM58NULL, { "dM58NULL", "atn-cpdlc.dM58NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM59PositionRouteClearance, { "dM59PositionRouteClearance", "atn-cpdlc.dM59PositionRouteClearance_element", FT_NONE, BASE_NONE, NULL, 0, "PositionRouteClearanceIndex", HFILL }}, { &hf_atn_cpdlc_dM60DistanceSpecifiedDirection, { "dM60DistanceSpecifiedDirection", "atn-cpdlc.dM60DistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_dM61Level, { "dM61Level", "atn-cpdlc.dM61Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM62ErrorInformation, { "dM62ErrorInformation", "atn-cpdlc.dM62ErrorInformation", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ErrorInformation_vals), 0, "ErrorInformation", HFILL }}, { &hf_atn_cpdlc_dM63NULL, { "dM63NULL", "atn-cpdlc.dM63NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM64FacilityDesignation, { "dM64FacilityDesignation", "atn-cpdlc.dM64FacilityDesignation", FT_STRING, BASE_NONE, NULL, 0, "FacilityDesignation", HFILL }}, { &hf_atn_cpdlc_dM65NULL, { "dM65NULL", "atn-cpdlc.dM65NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM66NULL, { "dM66NULL", "atn-cpdlc.dM66NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM67FreeText, { "dM67FreeText", "atn-cpdlc.dM67FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM68FreeText, { "dM68FreeText", "atn-cpdlc.dM68FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM69NULL, { "dM69NULL", "atn-cpdlc.dM69NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM70Degrees, { "dM70Degrees", "atn-cpdlc.dM70Degrees", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, "Degrees", HFILL }}, { &hf_atn_cpdlc_dM71Degrees, { "dM71Degrees", "atn-cpdlc.dM71Degrees", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, "Degrees", HFILL }}, { &hf_atn_cpdlc_dM72Level, { "dM72Level", "atn-cpdlc.dM72Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM73Versionnumber, { "dM73Versionnumber", "atn-cpdlc.dM73Versionnumber", FT_UINT32, BASE_DEC, NULL, 0, "VersionNumber", HFILL }}, { &hf_atn_cpdlc_dM74NULL, { "dM74NULL", "atn-cpdlc.dM74NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM75NULL, { "dM75NULL", "atn-cpdlc.dM75NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM76LevelLevel, { "dM76LevelLevel", "atn-cpdlc.dM76LevelLevel", FT_UINT32, BASE_DEC, NULL, 0, "LevelLevel", HFILL }}, { &hf_atn_cpdlc_dM77LevelLevel, { "dM77LevelLevel", "atn-cpdlc.dM77LevelLevel", FT_UINT32, BASE_DEC, NULL, 0, "LevelLevel", HFILL }}, { &hf_atn_cpdlc_dM78TimeDistanceToFromPosition, { "dM78TimeDistanceToFromPosition", "atn-cpdlc.dM78TimeDistanceToFromPosition_element", FT_NONE, BASE_NONE, NULL, 0, "TimeDistanceToFromPosition", HFILL }}, { &hf_atn_cpdlc_dM79AtisCode, { "dM79AtisCode", "atn-cpdlc.dM79AtisCode", FT_STRING, BASE_NONE, NULL, 0, "ATISCode", HFILL }}, { &hf_atn_cpdlc_dM80DistanceSpecifiedDirection, { "dM80DistanceSpecifiedDirection", "atn-cpdlc.dM80DistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_dM81LevelTime, { "dM81LevelTime", "atn-cpdlc.dM81LevelTime_element", FT_NONE, BASE_NONE, NULL, 0, "LevelTime", HFILL }}, { &hf_atn_cpdlc_dM82Level, { "dM82Level", "atn-cpdlc.dM82Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM83SpeedTime, { "dM83SpeedTime", "atn-cpdlc.dM83SpeedTime_element", FT_NONE, BASE_NONE, NULL, 0, "SpeedTime", HFILL }}, { &hf_atn_cpdlc_dM84Speed, { "dM84Speed", "atn-cpdlc.dM84Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_dM85DistanceSpecifiedDirectionTime, { "dM85DistanceSpecifiedDirectionTime", "atn-cpdlc.dM85DistanceSpecifiedDirectionTime_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirectionTime", HFILL }}, { &hf_atn_cpdlc_dM86DistanceSpecifiedDirection, { "dM86DistanceSpecifiedDirection", "atn-cpdlc.dM86DistanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, "DistanceSpecifiedDirection", HFILL }}, { &hf_atn_cpdlc_dM87Level, { "dM87Level", "atn-cpdlc.dM87Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM88Level, { "dM88Level", "atn-cpdlc.dM88Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM89UnitnameFrequency, { "dM89UnitnameFrequency", "atn-cpdlc.dM89UnitnameFrequency_element", FT_NONE, BASE_NONE, NULL, 0, "UnitNameFrequency", HFILL }}, { &hf_atn_cpdlc_dM90FreeText, { "dM90FreeText", "atn-cpdlc.dM90FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM91FreeText, { "dM91FreeText", "atn-cpdlc.dM91FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM92FreeText, { "dM92FreeText", "atn-cpdlc.dM92FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM93FreeText, { "dM93FreeText", "atn-cpdlc.dM93FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM94FreeText, { "dM94FreeText", "atn-cpdlc.dM94FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM95FreeText, { "dM95FreeText", "atn-cpdlc.dM95FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM96FreeText, { "dM96FreeText", "atn-cpdlc.dM96FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM97FreeText, { "dM97FreeText", "atn-cpdlc.dM97FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM98FreeText, { "dM98FreeText", "atn-cpdlc.dM98FreeText", FT_STRING, BASE_NONE, NULL, 0, "FreeText", HFILL }}, { &hf_atn_cpdlc_dM99NULL, { "dM99NULL", "atn-cpdlc.dM99NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM100NULL, { "dM100NULL", "atn-cpdlc.dM100NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM101NULL, { "dM101NULL", "atn-cpdlc.dM101NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM102NULL, { "dM102NULL", "atn-cpdlc.dM102NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM103NULL, { "dM103NULL", "atn-cpdlc.dM103NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM104PositionTime, { "dM104PositionTime", "atn-cpdlc.dM104PositionTime_element", FT_NONE, BASE_NONE, NULL, 0, "PositionTime", HFILL }}, { &hf_atn_cpdlc_dM105Airport, { "dM105Airport", "atn-cpdlc.dM105Airport", FT_STRING, BASE_NONE, NULL, 0, "Airport", HFILL }}, { &hf_atn_cpdlc_dM106Level, { "dM106Level", "atn-cpdlc.dM106Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_dM107NULL, { "dM107NULL", "atn-cpdlc.dM107NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM108NULL, { "dM108NULL", "atn-cpdlc.dM108NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM109Time, { "dM109Time", "atn-cpdlc.dM109Time_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_dM110Position, { "dM110Position", "atn-cpdlc.dM110Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_dM111TimePosition, { "dM111TimePosition", "atn-cpdlc.dM111TimePosition_element", FT_NONE, BASE_NONE, NULL, 0, "TimePosition", HFILL }}, { &hf_atn_cpdlc_dM112NULL, { "dM112NULL", "atn-cpdlc.dM112NULL_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_dM113SpeedTypeSpeedTypeSpeedTypeSpeed, { "dM113SpeedTypeSpeedTypeSpeedTypeSpeed", "atn-cpdlc.dM113SpeedTypeSpeedTypeSpeedTypeSpeed_element", FT_NONE, BASE_NONE, NULL, 0, "SpeedTypeSpeedTypeSpeedTypeSpeed", HFILL }}, { &hf_atn_cpdlc_altimeterEnglish, { "altimeterEnglish", "atn-cpdlc.altimeterEnglish", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_altimeterMetric, { "altimeterMetric", "atn-cpdlc.altimeterMetric", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_position, { "position", "atn-cpdlc.position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_aTWDistance, { "aTWDistance", "atn-cpdlc.aTWDistance_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speed, { "speed", "atn-cpdlc.speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_aTWLevels, { "aTWLevels", "atn-cpdlc.aTWLevels", FT_UINT32, BASE_DEC, NULL, 0, "ATWLevelSequence", HFILL }}, { &hf_atn_cpdlc_atw, { "atw", "atn-cpdlc.atw", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATWLevelTolerance_vals), 0, "ATWLevelTolerance", HFILL }}, { &hf_atn_cpdlc_level, { "level", "atn-cpdlc.level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_ATWLevelSequence_item, { "ATWLevel", "atn-cpdlc.ATWLevel_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_atwDistanceTolerance, { "atwDistanceTolerance", "atn-cpdlc.atwDistanceTolerance", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ATWDistanceTolerance_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_distance, { "distance", "atn-cpdlc.distance", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Distance_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_Code_item, { "CodeOctalDigit", "atn-cpdlc.CodeOctalDigit", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_time, { "time", "atn-cpdlc.time_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_timeTolerance, { "timeTolerance", "atn-cpdlc.timeTolerance", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_TimeTolerance_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_year, { "year", "atn-cpdlc.year", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_month, { "month", "atn-cpdlc.month", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_day, { "day", "atn-cpdlc.day", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_date, { "date", "atn-cpdlc.date_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_timehhmmss, { "timehhmmss", "atn-cpdlc.timehhmmss_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_degreesMagnetic, { "degreesMagnetic", "atn-cpdlc.degreesMagnetic", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_degreesTrue, { "degreesTrue", "atn-cpdlc.degreesTrue", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_aircraftFlightIdentification, { "aircraftFlightIdentification", "atn-cpdlc.aircraftFlightIdentification", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_clearanceLimit, { "clearanceLimit", "atn-cpdlc.clearanceLimit", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_flightInformation, { "flightInformation", "atn-cpdlc.flightInformation", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_FlightInformation_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_furtherInstructions, { "furtherInstructions", "atn-cpdlc.furtherInstructions_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_direction, { "direction", "atn-cpdlc.direction", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Direction_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_degrees, { "degrees", "atn-cpdlc.degrees", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_distanceNm, { "distanceNm", "atn-cpdlc.distanceNm", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_distanceKm, { "distanceKm", "atn-cpdlc.distanceKm", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_distanceSpecifiedNm, { "distanceSpecifiedNm", "atn-cpdlc.distanceSpecifiedNm", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_distanceSpecifiedKm, { "distanceSpecifiedKm", "atn-cpdlc.distanceSpecifiedKm", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_distanceSpecified, { "distanceSpecified", "atn-cpdlc.distanceSpecified", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_DistanceSpecified_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_distanceSpecifiedDirection, { "distanceSpecifiedDirection", "atn-cpdlc.distanceSpecifiedDirection_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_noFacility, { "noFacility", "atn-cpdlc.noFacility_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_facilityDesignation, { "facilityDesignation", "atn-cpdlc.facilityDesignation", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_altimeter, { "altimeter", "atn-cpdlc.altimeter", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Altimeter_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_aTISCode, { "aTISCode", "atn-cpdlc.aTISCode", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_fixname_name, { "name", "atn-cpdlc.name", FT_STRING, BASE_NONE, NULL, 0, "Fix", HFILL }}, { &hf_atn_cpdlc_latlon, { "latlon", "atn-cpdlc.latlon_element", FT_NONE, BASE_NONE, NULL, 0, "LatitudeLongitude", HFILL }}, { &hf_atn_cpdlc_routeOfFlight, { "routeOfFlight", "atn-cpdlc.routeOfFlight", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RouteInformation_vals), 0, "RouteInformation", HFILL }}, { &hf_atn_cpdlc_levelsOfFlight, { "levelsOfFlight", "atn-cpdlc.levelsOfFlight", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelsOfFlight_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_routeAndLevels, { "routeAndLevels", "atn-cpdlc.routeAndLevels_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_frequencyhf, { "frequencyhf", "atn-cpdlc.frequencyhf", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_frequencyvhf, { "frequencyvhf", "atn-cpdlc.frequencyvhf", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_frequencyuhf, { "frequencyuhf", "atn-cpdlc.frequencyuhf", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_frequencysatchannel, { "frequencysatchannel", "atn-cpdlc.frequencysatchannel", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_code, { "code", "atn-cpdlc.code", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_frequencyDeparture, { "frequencyDeparture", "atn-cpdlc.frequencyDeparture_element", FT_NONE, BASE_NONE, NULL, 0, "UnitNameFrequency", HFILL }}, { &hf_atn_cpdlc_clearanceExpiryTime, { "clearanceExpiryTime", "atn-cpdlc.clearanceExpiryTime_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_airportDeparture, { "airportDeparture", "atn-cpdlc.airportDeparture", FT_STRING, BASE_NONE, NULL, 0, "Airport", HFILL }}, { &hf_atn_cpdlc_airportDestination, { "airportDestination", "atn-cpdlc.airportDestination", FT_STRING, BASE_NONE, NULL, 0, "Airport", HFILL }}, { &hf_atn_cpdlc_timeDeparture, { "timeDeparture", "atn-cpdlc.timeDeparture_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_runwayDeparture, { "runwayDeparture", "atn-cpdlc.runwayDeparture_element", FT_NONE, BASE_NONE, NULL, 0, "Runway", HFILL }}, { &hf_atn_cpdlc_revisionNumber, { "revisionNumber", "atn-cpdlc.revisionNumber", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_holdatwaypointspeedlow, { "holdatwaypointspeedlow", "atn-cpdlc.holdatwaypointspeedlow", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_aTWlevel, { "aTWlevel", "atn-cpdlc.aTWlevel_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_holdatwaypointspeedhigh, { "holdatwaypointspeedhigh", "atn-cpdlc.holdatwaypointspeedhigh", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, "Speed", HFILL }}, { &hf_atn_cpdlc_eFCtime, { "eFCtime", "atn-cpdlc.eFCtime_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_legtype, { "legtype", "atn-cpdlc.legtype", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegType_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_legType, { "legType", "atn-cpdlc.legType", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegType_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_fromSelection, { "fromSelection", "atn-cpdlc.fromSelection", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_InterceptCourseFromSelection_vals), 0, "InterceptCourseFromSelection", HFILL }}, { &hf_atn_cpdlc_publishedIdentifier, { "publishedIdentifier", "atn-cpdlc.publishedIdentifier", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_PublishedIdentifier_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_latitudeLongitude, { "latitudeLongitude", "atn-cpdlc.latitudeLongitude_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_placeBearingPlaceBearing, { "placeBearingPlaceBearing", "atn-cpdlc.placeBearingPlaceBearing", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_placeBearingDistance, { "placeBearingDistance", "atn-cpdlc.placeBearingDistance_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_latitudeType, { "latitudeType", "atn-cpdlc.latitudeType", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatitudeType_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_latitudeDirection, { "latitudeDirection", "atn-cpdlc.latitudeDirection", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatitudeDirection_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_latitudeWholeDegrees, { "latitudeWholeDegrees", "atn-cpdlc.latitudeWholeDegrees", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_minutesLatLon, { "minutesLatLon", "atn-cpdlc.minutesLatLon", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_latlonWholeMinutes, { "latlonWholeMinutes", "atn-cpdlc.latlonWholeMinutes", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_secondsLatLon, { "secondsLatLon", "atn-cpdlc.secondsLatLon", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_latitude, { "latitude", "atn-cpdlc.latitude_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_longitude, { "longitude", "atn-cpdlc.longitude_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_latitudeDegrees, { "latitudeDegrees", "atn-cpdlc.latitudeDegrees", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_latitudeDegreesMinutes, { "latitudeDegreesMinutes", "atn-cpdlc.latitudeDegreesMinutes_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_latitudeDMS, { "latitudeDMS", "atn-cpdlc.latitudeDMS_element", FT_NONE, BASE_NONE, NULL, 0, "LatitudeDegreesMinutesSeconds", HFILL }}, { &hf_atn_cpdlc_latitudeReportingPoints, { "latitudeReportingPoints", "atn-cpdlc.latitudeReportingPoints_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_longitudeReportingPoints, { "longitudeReportingPoints", "atn-cpdlc.longitudeReportingPoints_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_legDistanceEnglish, { "legDistanceEnglish", "atn-cpdlc.legDistanceEnglish", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_legDistanceMetric, { "legDistanceMetric", "atn-cpdlc.legDistanceMetric", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_legDistance, { "legDistance", "atn-cpdlc.legDistance", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LegDistance_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_legTime, { "legTime", "atn-cpdlc.legTime", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_singleLevel, { "singleLevel", "atn-cpdlc.singleLevel", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelType_vals), 0, "LevelType", HFILL }}, { &hf_atn_cpdlc_blockLevel, { "blockLevel", "atn-cpdlc.blockLevel", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_2_OF_LevelType", HFILL }}, { &hf_atn_cpdlc_blockLevel_item, { "LevelType", "atn-cpdlc.LevelType", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LevelType_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_LevelLevel_item, { "Level", "atn-cpdlc.Level", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_procedureName, { "procedureName", "atn-cpdlc.procedureName_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_levelProcedureName, { "levelProcedureName", "atn-cpdlc.levelProcedureName_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_levelspeed_speed, { "speed", "atn-cpdlc.speed", FT_UINT32, BASE_DEC, NULL, 0, "SpeedSpeed", HFILL }}, { &hf_atn_cpdlc_speeds, { "speeds", "atn-cpdlc.speeds", FT_UINT32, BASE_DEC, NULL, 0, "SpeedSpeed", HFILL }}, { &hf_atn_cpdlc_levelFeet, { "levelFeet", "atn-cpdlc.levelFeet", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_levelMeters, { "levelMeters", "atn-cpdlc.levelMeters", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_levelFlightLevel, { "levelFlightLevel", "atn-cpdlc.levelFlightLevel", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_levelFlightLevelMetric, { "levelFlightLevelMetric", "atn-cpdlc.levelFlightLevelMetric", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_longitudeType, { "longitudeType", "atn-cpdlc.longitudeType", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LongitudeType_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_longitudeDirection, { "longitudeDirection", "atn-cpdlc.longitudeDirection", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LongitudeDirection_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_longitudeWholeDegrees, { "longitudeWholeDegrees", "atn-cpdlc.longitudeWholeDegrees", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_latLonWholeMinutes, { "latLonWholeMinutes", "atn-cpdlc.latLonWholeMinutes", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_longitudeDegrees, { "longitudeDegrees", "atn-cpdlc.longitudeDegrees", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_longitudeDegreesMinutes, { "longitudeDegreesMinutes", "atn-cpdlc.longitudeDegreesMinutes_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_longitudeDMS, { "longitudeDMS", "atn-cpdlc.longitudeDMS_element", FT_NONE, BASE_NONE, NULL, 0, "LongitudeDegreesMinutesSeconds", HFILL }}, { &hf_atn_cpdlc_navaid_name, { "name", "atn-cpdlc.name", FT_STRING, BASE_NONE, NULL, 0, "NavaidName", HFILL }}, { &hf_atn_cpdlc_PlaceBearingPlaceBearing_item, { "PlaceBearing", "atn-cpdlc.PlaceBearing_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_fixName, { "fixName", "atn-cpdlc.fixName_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_navaid, { "navaid", "atn-cpdlc.navaid_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_airport, { "airport", "atn-cpdlc.airport", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_levels, { "levels", "atn-cpdlc.levels", FT_UINT32, BASE_DEC, NULL, 0, "LevelLevel", HFILL }}, { &hf_atn_cpdlc_positionlevel, { "positionlevel", "atn-cpdlc.positionlevel_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_PositionPosition_item, { "Position", "atn-cpdlc.Position", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_positioncurrent, { "positioncurrent", "atn-cpdlc.positioncurrent", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_timeatpositioncurrent, { "timeatpositioncurrent", "atn-cpdlc.timeatpositioncurrent_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_fixnext, { "fixnext", "atn-cpdlc.fixnext", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_timeetaatfixnext, { "timeetaatfixnext", "atn-cpdlc.timeetaatfixnext_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_fixnextplusone, { "fixnextplusone", "atn-cpdlc.fixnextplusone", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_timeetaatdestination, { "timeetaatdestination", "atn-cpdlc.timeetaatdestination_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_remainingFuel, { "remainingFuel", "atn-cpdlc.remainingFuel_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_temperature, { "temperature", "atn-cpdlc.temperature", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_winds, { "winds", "atn-cpdlc.winds_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_turbulence, { "turbulence", "atn-cpdlc.turbulence", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Turbulence_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_icing, { "icing", "atn-cpdlc.icing", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Icing_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedground, { "speedground", "atn-cpdlc.speedground", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_verticalChange, { "verticalChange", "atn-cpdlc.verticalChange_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_trackAngle, { "trackAngle", "atn-cpdlc.trackAngle", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, "Degrees", HFILL }}, { &hf_atn_cpdlc_heading, { "heading", "atn-cpdlc.heading", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Degrees_vals), 0, "Degrees", HFILL }}, { &hf_atn_cpdlc_humidity, { "humidity", "atn-cpdlc.humidity", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_reportedWaypointPosition, { "reportedWaypointPosition", "atn-cpdlc.reportedWaypointPosition", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Position_vals), 0, "Position", HFILL }}, { &hf_atn_cpdlc_reportedWaypointTime, { "reportedWaypointTime", "atn-cpdlc.reportedWaypointTime_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_reportedWaypointLevel, { "reportedWaypointLevel", "atn-cpdlc.reportedWaypointLevel", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Level_vals), 0, "Level", HFILL }}, { &hf_atn_cpdlc_routeClearanceIndex, { "routeClearanceIndex", "atn-cpdlc.routeClearanceIndex", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_positionTime, { "positionTime", "atn-cpdlc.positionTime_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_times, { "times", "atn-cpdlc.times", FT_UINT32, BASE_DEC, NULL, 0, "TimeTime", HFILL }}, { &hf_atn_cpdlc_unitname, { "unitname", "atn-cpdlc.unitname_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_frequency, { "frequency", "atn-cpdlc.frequency", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Frequency_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_type, { "type", "atn-cpdlc.type", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ProcedureType_vals), 0, "ProcedureType", HFILL }}, { &hf_atn_cpdlc_procedure, { "procedure", "atn-cpdlc.procedure", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_transition, { "transition", "atn-cpdlc.transition", FT_STRING, BASE_NONE, NULL, 0, "ProcedureTransition", HFILL }}, { &hf_atn_cpdlc_personsOnBoard, { "personsOnBoard", "atn-cpdlc.personsOnBoard", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_latLonReportingPoints, { "latLonReportingPoints", "atn-cpdlc.latLonReportingPoints", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_LatLonReportingPoints_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_degreeIncrement, { "degreeIncrement", "atn-cpdlc.degreeIncrement", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_procedureDeparture, { "procedureDeparture", "atn-cpdlc.procedureDeparture_element", FT_NONE, BASE_NONE, NULL, 0, "ProcedureName", HFILL }}, { &hf_atn_cpdlc_runwayArrival, { "runwayArrival", "atn-cpdlc.runwayArrival_element", FT_NONE, BASE_NONE, NULL, 0, "Runway", HFILL }}, { &hf_atn_cpdlc_procedureApproach, { "procedureApproach", "atn-cpdlc.procedureApproach_element", FT_NONE, BASE_NONE, NULL, 0, "ProcedureName", HFILL }}, { &hf_atn_cpdlc_procedureArrival, { "procedureArrival", "atn-cpdlc.procedureArrival_element", FT_NONE, BASE_NONE, NULL, 0, "ProcedureName", HFILL }}, { &hf_atn_cpdlc_routeInformations, { "routeInformations", "atn-cpdlc.routeInformations", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_128_OF_RouteInformation", HFILL }}, { &hf_atn_cpdlc_routeInformations_item, { "RouteInformation", "atn-cpdlc.RouteInformation", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RouteInformation_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_routeInformationAdditional, { "routeInformationAdditional", "atn-cpdlc.routeInformationAdditional_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_aTSRouteDesignator, { "aTSRouteDesignator", "atn-cpdlc.aTSRouteDesignator", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_aTWAlongTrackWaypoints, { "aTWAlongTrackWaypoints", "atn-cpdlc.aTWAlongTrackWaypoints", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint", HFILL }}, { &hf_atn_cpdlc_aTWAlongTrackWaypoints_item, { "ATWAlongTrackWaypoint", "atn-cpdlc.ATWAlongTrackWaypoint_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_reportingpoints, { "reportingpoints", "atn-cpdlc.reportingpoints_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_interceptCourseFroms, { "interceptCourseFroms", "atn-cpdlc.interceptCourseFroms", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom", HFILL }}, { &hf_atn_cpdlc_interceptCourseFroms_item, { "InterceptCourseFrom", "atn-cpdlc.InterceptCourseFrom_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_holdAtWaypoints, { "holdAtWaypoints", "atn-cpdlc.holdAtWaypoints", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_8_OF_Holdatwaypoint", HFILL }}, { &hf_atn_cpdlc_holdAtWaypoints_item, { "Holdatwaypoint", "atn-cpdlc.Holdatwaypoint_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_waypointSpeedLevels, { "waypointSpeedLevels", "atn-cpdlc.waypointSpeedLevels", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel", HFILL }}, { &hf_atn_cpdlc_waypointSpeedLevels_item, { "WaypointSpeedLevel", "atn-cpdlc.WaypointSpeedLevel_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_rTARequiredTimeArrivals, { "rTARequiredTimeArrivals", "atn-cpdlc.rTARequiredTimeArrivals", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival", HFILL }}, { &hf_atn_cpdlc_rTARequiredTimeArrivals_item, { "RTARequiredTimeArrival", "atn-cpdlc.RTARequiredTimeArrival_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_rTATime, { "rTATime", "atn-cpdlc.rTATime_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_rTATolerance, { "rTATolerance", "atn-cpdlc.rTATolerance", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_runway_direction, { "direction", "atn-cpdlc.direction", FT_UINT32, BASE_DEC, NULL, 0, "RunwayDirection", HFILL }}, { &hf_atn_cpdlc_configuration, { "configuration", "atn-cpdlc.configuration", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RunwayConfiguration_vals), 0, "RunwayConfiguration", HFILL }}, { &hf_atn_cpdlc_runway, { "runway", "atn-cpdlc.runway_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_rVR, { "rVR", "atn-cpdlc.rVR", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_RVR_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_rVRFeet, { "rVRFeet", "atn-cpdlc.rVRFeet", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_rVRMeters, { "rVRMeters", "atn-cpdlc.rVRMeters", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedIndicated, { "speedIndicated", "atn-cpdlc.speedIndicated", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedIndicatedMetric, { "speedIndicatedMetric", "atn-cpdlc.speedIndicatedMetric", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedTrue, { "speedTrue", "atn-cpdlc.speedTrue", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedTrueMetric, { "speedTrueMetric", "atn-cpdlc.speedTrueMetric", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedGround, { "speedGround", "atn-cpdlc.speedGround", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedGroundMetric, { "speedGroundMetric", "atn-cpdlc.speedGroundMetric", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedMach, { "speedMach", "atn-cpdlc.speedMach", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_SpeedSpeed_item, { "Speed", "atn-cpdlc.Speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_Speed_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_SpeedTypeSpeedTypeSpeedType_item, { "SpeedType", "atn-cpdlc.SpeedType", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_SpeedType_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedTypes, { "speedTypes", "atn-cpdlc.speedTypes", FT_UINT32, BASE_DEC, NULL, 0, "SpeedTypeSpeedTypeSpeedType", HFILL }}, { &hf_atn_cpdlc_hours, { "hours", "atn-cpdlc.hours", FT_UINT32, BASE_DEC, NULL, 0, "TimeHours", HFILL }}, { &hf_atn_cpdlc_minutes, { "minutes", "atn-cpdlc.minutes", FT_UINT32, BASE_DEC, NULL, 0, "TimeMinutes", HFILL }}, { &hf_atn_cpdlc_timeDepartureAllocated, { "timeDepartureAllocated", "atn-cpdlc.timeDepartureAllocated_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_timeDepartureControlled, { "timeDepartureControlled", "atn-cpdlc.timeDepartureControlled_element", FT_NONE, BASE_NONE, NULL, 0, "ControlledTime", HFILL }}, { &hf_atn_cpdlc_timeDepartureClearanceExpected, { "timeDepartureClearanceExpected", "atn-cpdlc.timeDepartureClearanceExpected_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_departureMinimumInterval, { "departureMinimumInterval", "atn-cpdlc.departureMinimumInterval", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_tofrom, { "tofrom", "atn-cpdlc.tofrom", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ToFrom_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_hoursminutes, { "hoursminutes", "atn-cpdlc.hoursminutes_element", FT_NONE, BASE_NONE, NULL, 0, "Time", HFILL }}, { &hf_atn_cpdlc_seconds, { "seconds", "atn-cpdlc.seconds", FT_UINT32, BASE_DEC, NULL, 0, "TimeSeconds", HFILL }}, { &hf_atn_cpdlc_unitName, { "unitName", "atn-cpdlc.unitName_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_timeposition, { "timeposition", "atn-cpdlc.timeposition_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_levelspeed, { "levelspeed", "atn-cpdlc.levelspeed_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_speedspeed, { "speedspeed", "atn-cpdlc.speedspeed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_TimeTime_item, { "Time", "atn-cpdlc.Time_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_toFrom, { "toFrom", "atn-cpdlc.toFrom", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_ToFrom_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_facilityName, { "facilityName", "atn-cpdlc.facilityName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_facilityFunction, { "facilityFunction", "atn-cpdlc.facilityFunction", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_FacilityFunction_vals), 0, NULL, HFILL }}, { &hf_atn_cpdlc_vertical_direction, { "direction", "atn-cpdlc.direction", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalDirection_vals), 0, "VerticalDirection", HFILL }}, { &hf_atn_cpdlc_rate, { "rate", "atn-cpdlc.rate", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_VerticalRate_vals), 0, "VerticalRate", HFILL }}, { &hf_atn_cpdlc_verticalRateEnglish, { "verticalRateEnglish", "atn-cpdlc.verticalRateEnglish", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_verticalRateMetric, { "verticalRateMetric", "atn-cpdlc.verticalRateMetric", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_winds_direction, { "direction", "atn-cpdlc.direction", FT_UINT32, BASE_DEC, NULL, 0, "WindDirection", HFILL }}, { &hf_atn_cpdlc_winds_speed, { "speed", "atn-cpdlc.speed", FT_UINT32, BASE_DEC, VALS(atn_cpdlc_WindSpeed_vals), 0, "WindSpeed", HFILL }}, { &hf_atn_cpdlc_windSpeedEnglish, { "windSpeedEnglish", "atn-cpdlc.windSpeedEnglish", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_atn_cpdlc_windSpeedMetric, { "windSpeedMetric", "atn-cpdlc.windSpeedMetric", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, }; static int *ett[] = { &ett_atn_cpdlc_GroundPDUs, &ett_atn_cpdlc_UplinkMessage, &ett_atn_cpdlc_AircraftPDUs, &ett_atn_cpdlc_StartDownMessage, &ett_atn_cpdlc_DownlinkMessage, &ett_atn_cpdlc_ProtectedGroundPDUs, &ett_atn_cpdlc_ProtectedUplinkMessage, &ett_atn_cpdlc_ATCForwardMessage, &ett_atn_cpdlc_ForwardHeader, &ett_atn_cpdlc_ForwardMessage, &ett_atn_cpdlc_ProtectedAircraftPDUs, &ett_atn_cpdlc_ProtectedStartDownMessage, &ett_atn_cpdlc_ProtectedDownlinkMessage, &ett_atn_cpdlc_ATCUplinkMessage, &ett_atn_cpdlc_ATCUplinkMessageData, &ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCUplinkMsgElementId, &ett_atn_cpdlc_T_atcuplinkmessagedata_constraineddata, &ett_atn_cpdlc_SEQUENCE_SIZE_1_2_OF_RouteClearance, &ett_atn_cpdlc_ATCDownlinkMessage, &ett_atn_cpdlc_ATCDownlinkMessageData, &ett_atn_cpdlc_SEQUENCE_SIZE_1_5_OF_ATCDownlinkMsgElementId, &ett_atn_cpdlc_T_atcdownlinkmessagedata_constraineddata, &ett_atn_cpdlc_ATCMessageHeader, &ett_atn_cpdlc_ATCUplinkMsgElementId, &ett_atn_cpdlc_ATCDownlinkMsgElementId, &ett_atn_cpdlc_Altimeter, &ett_atn_cpdlc_ATWAlongTrackWaypoint, &ett_atn_cpdlc_ATWLevel, &ett_atn_cpdlc_ATWLevelSequence, &ett_atn_cpdlc_ATWDistance, &ett_atn_cpdlc_Code, &ett_atn_cpdlc_ControlledTime, &ett_atn_cpdlc_Date, &ett_atn_cpdlc_DateTimeGroup, &ett_atn_cpdlc_Degrees, &ett_atn_cpdlc_DepartureClearance, &ett_atn_cpdlc_DirectionDegrees, &ett_atn_cpdlc_Distance, &ett_atn_cpdlc_DistanceSpecified, &ett_atn_cpdlc_DistanceSpecifiedDirection, &ett_atn_cpdlc_DistanceSpecifiedDirectionTime, &ett_atn_cpdlc_Facility, &ett_atn_cpdlc_FacilityDesignationAltimeter, &ett_atn_cpdlc_FacilityDesignationATISCode, &ett_atn_cpdlc_FixName, &ett_atn_cpdlc_FlightInformation, &ett_atn_cpdlc_Frequency, &ett_atn_cpdlc_FurtherInstructions, &ett_atn_cpdlc_Holdatwaypoint, &ett_atn_cpdlc_HoldClearance, &ett_atn_cpdlc_InterceptCourseFrom, &ett_atn_cpdlc_InterceptCourseFromSelection, &ett_atn_cpdlc_Latitude, &ett_atn_cpdlc_LatitudeDegreesMinutes, &ett_atn_cpdlc_LatitudeDegreesMinutesSeconds, &ett_atn_cpdlc_LatitudeLongitude, &ett_atn_cpdlc_LatitudeReportingPoints, &ett_atn_cpdlc_LatitudeType, &ett_atn_cpdlc_LatLonReportingPoints, &ett_atn_cpdlc_LegDistance, &ett_atn_cpdlc_LegType, &ett_atn_cpdlc_Level, &ett_atn_cpdlc_SEQUENCE_SIZE_2_OF_LevelType, &ett_atn_cpdlc_LevelLevel, &ett_atn_cpdlc_LevelPosition, &ett_atn_cpdlc_LevelProcedureName, &ett_atn_cpdlc_LevelsOfFlight, &ett_atn_cpdlc_LevelSpeed, &ett_atn_cpdlc_LevelSpeedSpeed, &ett_atn_cpdlc_LevelTime, &ett_atn_cpdlc_LevelType, &ett_atn_cpdlc_Longitude, &ett_atn_cpdlc_LongitudeDegreesMinutes, &ett_atn_cpdlc_LongitudeDegreesMinutesSeconds, &ett_atn_cpdlc_LongitudeReportingPoints, &ett_atn_cpdlc_LongitudeType, &ett_atn_cpdlc_Navaid, &ett_atn_cpdlc_PlaceBearing, &ett_atn_cpdlc_PlaceBearingDistance, &ett_atn_cpdlc_PlaceBearingPlaceBearing, &ett_atn_cpdlc_Position, &ett_atn_cpdlc_PositionDegrees, &ett_atn_cpdlc_PositionDistanceSpecifiedDirection, &ett_atn_cpdlc_PositionLevel, &ett_atn_cpdlc_PositionLevelLevel, &ett_atn_cpdlc_PositionLevelSpeed, &ett_atn_cpdlc_PositionPosition, &ett_atn_cpdlc_PositionProcedureName, &ett_atn_cpdlc_PositionReport, &ett_atn_cpdlc_PositionRouteClearanceIndex, &ett_atn_cpdlc_PositionSpeed, &ett_atn_cpdlc_PositionSpeedSpeed, &ett_atn_cpdlc_PositionTime, &ett_atn_cpdlc_PositionTimeLevel, &ett_atn_cpdlc_PositionTimeTime, &ett_atn_cpdlc_PositionUnitNameFrequency, &ett_atn_cpdlc_ProcedureName, &ett_atn_cpdlc_PublishedIdentifier, &ett_atn_cpdlc_RemainingFuelPersonsOnBoard, &ett_atn_cpdlc_ReportingPoints, &ett_atn_cpdlc_RouteAndLevels, &ett_atn_cpdlc_RouteClearance, &ett_atn_cpdlc_SEQUENCE_SIZE_1_128_OF_RouteInformation, &ett_atn_cpdlc_RouteInformation, &ett_atn_cpdlc_RouteInformationAdditional, &ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_ATWAlongTrackWaypoint, &ett_atn_cpdlc_SEQUENCE_SIZE_1_4_OF_InterceptCourseFrom, &ett_atn_cpdlc_SEQUENCE_SIZE_1_8_OF_Holdatwaypoint, &ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_WaypointSpeedLevel, &ett_atn_cpdlc_SEQUENCE_SIZE_1_32_OF_RTARequiredTimeArrival, &ett_atn_cpdlc_RTARequiredTimeArrival, &ett_atn_cpdlc_RTATime, &ett_atn_cpdlc_Runway, &ett_atn_cpdlc_RunwayRVR, &ett_atn_cpdlc_RVR, &ett_atn_cpdlc_Speed, &ett_atn_cpdlc_SpeedSpeed, &ett_atn_cpdlc_SpeedTime, &ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedType, &ett_atn_cpdlc_SpeedTypeSpeedTypeSpeedTypeSpeed, &ett_atn_cpdlc_Time, &ett_atn_cpdlc_TimeLevel, &ett_atn_cpdlc_TimeDeparture, &ett_atn_cpdlc_TimeDistanceSpecifiedDirection, &ett_atn_cpdlc_TimeDistanceToFromPosition, &ett_atn_cpdlc_Timehhmmss, &ett_atn_cpdlc_TimeUnitNameFrequency, &ett_atn_cpdlc_TimePosition, &ett_atn_cpdlc_TimePositionLevel, &ett_atn_cpdlc_TimePositionLevelSpeed, &ett_atn_cpdlc_TimeSpeed, &ett_atn_cpdlc_TimeSpeedSpeed, &ett_atn_cpdlc_TimeTime, &ett_atn_cpdlc_TimeToFromPosition, &ett_atn_cpdlc_ToFromPosition, &ett_atn_cpdlc_UnitName, &ett_atn_cpdlc_UnitNameFrequency, &ett_atn_cpdlc_VerticalChange, &ett_atn_cpdlc_VerticalRate, &ett_atn_cpdlc_WaypointSpeedLevel, &ett_atn_cpdlc_Winds, &ett_atn_cpdlc_WindSpeed, &ett_atn_cpdlc }; /* register CPDLC */ proto_atn_cpdlc = proto_register_protocol(ATN_CPDLC_PROTO, "ATN-CPDLC", "atn-cpdlc"); proto_register_field_array( proto_atn_cpdlc, hf_atn_cpdlc, array_length(hf_atn_cpdlc)); proto_register_subtree_array( ett, array_length(ett)); register_dissector( "atn-cpdlc", dissect_atn_cpdlc, proto_atn_cpdlc); } void proto_reg_handoff_atn_cpdlc(void) { /* add session dissector to atn dissector list dissector list*/ heur_dissector_add( "atn-ulcs", dissect_atn_cpdlc_heur, "ATN-CPDLC over ATN-ULCS", "atn-cpdlc-ulcs", proto_atn_cpdlc, HEURISTIC_ENABLE); } /* * Editor modelines - https://www.wireshark.org/tools/modelines.html * * Local variables: * c-basic-offset: 4 * tab-width: 8 * indent-tabs-mode: nil * End: * * vi: set shiftwidth=4 tabstop=8 expandtab: * :indentSize=4:tabSize=8:noTabs=true: */