CMMessageSetVersion1 DEFINITIONS ::= BEGIN -- The ASN.1 module CMMessageSetVersion1 is used by both CM version 1 and CM version 2. The change in the ASN.1 for CM version 2 is the addition of PDUs for the CM-server-facility-query and CM- server-facility-update services and security enhancements, along with the supporting new service and security elements. -- This is an import of the encoding of the subject's public key from SV8 for CM Version 2 IMPORTS ECPoint FROM ATNPKIVersion2; -- ---------------------------------------------------------------------------------- -- CM Message Structure -- ---------------------------------------------------------------------------------- -- Aircraft-generated messages CMAircraftMessage ::=CHOICE { cmLogonRequest [0] CMLogonRequest, cmContactResponse [1] CMContactResponse, cmAbortReason [2] CMAbortReason, ..., -- the PDU after extensibility is CM Version 2 only cmServerFacilityQueryRequest [3] CMServerFacilityQueryRequest } -- Ground-generated messages CMGroundMessage ::=CHOICE { cmLogonResponse [0] CMLogonResponse, cmUpdate [1] CMUpdate, cmContactRequest [2] CMContactRequest, cmForwardRequest [3] CMForwardRequest, cmAbortReason [4] CMAbortReason, cmForwardResponse [5] CMForwardResponse, ..., -- All PDUs after extensibility are CM Version 2 only cmServerFacilityQueryResponse [6] CMServerFacilityQueryResponse, cmServerFacilityUpdate [7] CMServerFacilityUpdate, cmSecureLogonResponse [8] CMSecureLogonResponse, cmSecureUpdate [9] CMSecureUpdate, cmEnhancedForwardRequest [10] CMEnhancedForwardRequest } -- ---------------------------------------------------------------------------------- -- CM Message Components -- ---------------------------------------------------------------------------------- AircraftFlightIdentification ::=IA5String (SIZE(2..8)) Airport ::=IA5String (SIZE(4)) APAddress ::= CHOICE { longTsap [0] LongTsap, shortTsap [1] ShortTsap } AEQualifier ::= INTEGER (0..255) -- ATN AE-Qualifier Numeric Values are described in 9 AEQualifierVersion ::= SEQUENCE { aeQualifier AEQualifier, apVersion VersionNumber } AEQualifierVersionAddress ::= SEQUENCE { aeQualifier AEQualifier, apVersion VersionNumber, apAddress APAddress } CMAbortReason ::= ENUMERATED { timer-expired (0), undefined-error (1), invalid-PDU (2), protocol-error (3), dialogue-acceptance-not-permitted (4), dialogue-end-not-accepted (5), communication-service-error (6), communication-service-failure (7), invalid-QOS-parameter (8), expected-PDU-missing (9), ... } CMContactRequest ::= SEQUENCE { facilityDesignation FacilityDesignation, address LongTsap } CMContactResponse ::= Response CMEnhancedForwardRequest ::= SEQUENCE -- CM Version 2 only { cmVersionNumber VersionNumber, cmForwardRequest CMLogonRequest, ... } CMForwardRequest ::= CMLogonRequest CMForwardResponse ::= ENUMERATED { success (0), incompatible-version (1), service-not-supported (2) } CMLogonRequest ::= SEQUENCE { aircraftFlightIdentification [0] AircraftFlightIdentification, cMLongTSAP [1] LongTsap, groundInitiatedApplications [2] SEQUENCE SIZE (1..256) OF AEQualifierVersionAddress OPTIONAL, airOnlyInitiatedApplications [3] SEQUENCE SIZE (1..256) OF AEQualifierVersion OPTIONAL, facilityDesignation [4] FacilityDesignation OPTIONAL, airportDeparture [5] Airport OPTIONAL, airportDestination [6] Airport OPTIONAL, dateTimeDepartureETD [7] DateTime OPTIONAL } CMLogonResponse ::= SEQUENCE { airInitiatedApplications [0] SEQUENCE SIZE (1..256) OF AEQualifierVersionAddress OPTIONAL, groundOnlyInitiatedApplications [1] SEQUENCE SIZE (1..256) OF AEQualifierVersion OPTIONAL } CMSecureLogonResponse ::= SEQUENCE -- CM Version 2 only { facilityDesignation [0] FacilityDesignation OPTIONAL, secureAirInitiatedApplications [1] SEQUENCE SIZE (1..256) OF SecAir OPTIONAL, secureGroundOnlyInitiatedApplications [2] SEQUENCE SIZE (1..256) OF SecGnd OPTIONAL, ... } CMSecureUpdate ::= CMSecureLogonResponse -- CM Version 2 only CMServerFacilityQueryRequest ::= SEQUENCE -- CM Version 2 only { aircraftFlightIdentification [0] AircraftFlightIdentification, cMLongTSAP [1] LongTsap, groundInitiatedApplications [2] SEQUENCE SIZE (1..256) OF AEQualifierVersionAddress OPTIONAL, airOnlyInitiatedApplications [3] SEQUENCE SIZE (1..256) OF AEQualifierVersion OPTIONAL, requestedFacilities [4] SEQUENCE SIZE (1..8) OF FacilityDesignation, airportDeparture [5] Airport OPTIONAL, airportDestination [6] Airport OPTIONAL, dateTimeDepartureETD [7] DateTime OPTIONAL, ... } CMServerFacilityQueryResponse ::= CHOICE -- CM Version 2 only { infoUnavailable [0] InfoUnavailable, requestedInfo [1] SEQUENCE SIZE (1..8) OF RequestedInfo, ... } CMServerFacilityUpdate ::= SEQUENCE SIZE (1..8) OF RequestedInfo -- CM Version 2 only CMUpdate ::= CMLogonResponse Date ::= SEQUENCE { year Year, month Month, day Day } -- The Date field does not have to correspond to the flight if the field is not to be used; -- the field's value can be assigned a meaningless, but compliant, value locally. If operational -- use of the Date field is intended, there must be bilateral agreements in place to ensure its proper -- use. This is a local implementation issue. DateTime ::= SEQUENCE { date Date, time Time } Day ::= INTEGER (1..31) --unit = Day, Range (1..31), resolution = 1 DomainFlag ::= ENUMERATED -- CM Version 2 only { keySharedInADM (0), keyNotSharedInADM (1), ... } FacilityDesignation ::= IA5String (SIZE(4..8)) InfoUnavailable ::= ENUMERATED -- CM Version 2 only { serverNotSupported (0), serverUnavailable (1), serviceInterrupted (2), ... } LongTsap ::= SEQUENCE { rDP OCTET STRING (SIZE(5)), shortTsap ShortTsap } Month ::= INTEGER (1..12) --unit = Month, Range (1..12), resolution = 1 RequestedInfo ::= SEQUENCE -- CM Version 2 only { facilityDesignation [0] FacilityDesignation, cMLongTSAP [1] LongTsap OPTIONAL, airInitiatedApplications [2] SEQUENCE SIZE (1..256) OF SecAir OPTIONAL, groundOnlyInitiatedApplications [3] SEQUENCE SIZE (1..256) OF SecGnd OPTIONAL, ... } Response ::= ENUMERATED { contactSuccess (0), contactNotSuccessful (1) } SecAir ::= SEQUENCE -- CM Version 2 only { applicationInformation [0] AEQualifierVersionAddress, keyAgreementPublicKey [1] ECPoint OPTIONAL, domainFlag [2] DomainFlag OPTIONAL, ... } SecGnd ::= SEQUENCE -- CM Version 2 only { applicationInformation [0] AEQualifierVersion, keyAgreementPublicKey [1] ECPoint OPTIONAL, domainFlag [2] DomainFlag OPTIONAL, ... } ShortTsap ::= SEQUENCE { aRS [0] OCTET STRING (SIZE(3)) OPTIONAL, -- the aRS contains the ICAO 24 bit aircraft address when the ShortTsap belongs to an aircraft; -- or a ground address when the Short Tsap belongs to a ground system locSysNselTsel [1] OCTET STRING (SIZE(10..11)) } Time ::= SEQUENCE { hours Timehours, minutes Timeminutes } Timehours ::= INTEGER (0..23) -- units = hour, range (0..23), resolution = 1 hour Timeminutes ::= INTEGER (0..59) -- units = minute, range (0..59), resolution = 1 minute VersionNumber ::= INTEGER (1..255) -- VersionNumber 0 is reserved for the Dialogue Service Year ::= INTEGER (1996..2095) --unit = Year, Range (1996..2095), resolution = 1 END