aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2015-08-09 12:20:54 -0400
committerBill Meier <wmeier@newsguy.com>2015-08-09 16:30:05 +0000
commitc5af152628f84cfddfa3d872d8be5b58d9a0ae03 (patch)
treebc0337c7da51eb15f30951497138e1bdebdad32d /asn1
parentdbf314a4ab3e005bc9650d69f47fb44aa446fb58 (diff)
Trivial: Convert 'tabs' indentation to '4 space' indentation
Change-Id: If71dd8a04050ce11e37ad88ee862419313c06639 Reviewed-on: https://code.wireshark.org/review/9946 Reviewed-by: Bill Meier <wmeier@newsguy.com>
Diffstat (limited to 'asn1')
-rw-r--r--asn1/atn-cm/atn-cm.asn197
-rw-r--r--asn1/atn-cm/atn-cm.cnf18
-rw-r--r--asn1/atn-cm/packet-atn-cm-template.c317
-rw-r--r--asn1/atn-cpdlc/atn-cpdlc.asn3464
-rw-r--r--asn1/atn-cpdlc/atn-cpdlc.cnf130
-rw-r--r--asn1/atn-cpdlc/packet-atn-cpdlc-template.c510
-rw-r--r--asn1/atn-ulcs/atn-ulcs.asn484
-rw-r--r--asn1/atn-ulcs/atn-ulcs.cnf912
-rw-r--r--asn1/atn-ulcs/packet-atn-ulcs-template.c1277
-rw-r--r--asn1/atn-ulcs/packet-atn-ulcs-template.h83
10 files changed, 3672 insertions, 3720 deletions
diff --git a/asn1/atn-cm/atn-cm.asn b/asn1/atn-cm/atn-cm.asn
index ccd9bbe198..fdbf4ddf70 100644
--- a/asn1/atn-cm/atn-cm.asn
+++ b/asn1/atn-cm/atn-cm.asn
@@ -1,10 +1,5 @@
--- c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
--- vi: set shiftwidth=2 tabstop=2 noexpandtab:
--- :indentSize=2:tabSize=2:noTabs=false:
-
-
-- ICAO doc 9705 Edition 2 Contact Management (CM)
-CMMessageSetVersion1 DEFINITIONS AUTOMATIC TAGS ::=
+CMMessageSetVersion1 DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- ----------------------------------------------------------------------------------
@@ -14,24 +9,24 @@ BEGIN
CMAircraftMessage ::= CHOICE
{
- cmLogonRequest [0] CMLogonRequest,
- cmContactResponse [1] CMContactResponse,
- cmAbortReason [2] CMAbortReason,
- ...
-}
+ cmLogonRequest [0] CMLogonRequest,
+ cmContactResponse [1] CMContactResponse,
+ cmAbortReason [2] CMAbortReason,
+ ...
+}
-- Ground-generated messages
CMGroundMessage ::= CHOICE
{
- cmLogonResponse [0] CMLogonResponse,
- cmUpdate [1] CMUpdate,
- cmContactRequest [2] CMContactRequest,
- cmForwardRequest [3] CMForwardRequest,
- cmAbortReason [4] CMAbortReason,
- cmForwardResponse [5] CMForwardResponse,
- ...
-}
+ cmLogonResponse [0] CMLogonResponse,
+ cmUpdate [1] CMUpdate,
+ cmContactRequest [2] CMContactRequest,
+ cmForwardRequest [3] CMForwardRequest,
+ cmAbortReason [4] CMAbortReason,
+ cmForwardResponse [5] CMForwardResponse,
+ ...
+}
-- ----------------------------------------------------------------------------------
-- CM Message Components
@@ -42,145 +37,145 @@ Airport ::=IA5String (SIZE(4))
APAddress ::= CHOICE
{
- longTsap [0] LongTsap,
- shortTsap [1] ShortTsap
-}
+ longTsap [0] LongTsap,
+ shortTsap [1] ShortTsap
+}
AEQualifier ::= INTEGER (0..255)
--- ATN AE-Qualifier Numeric Values are described in 4
+-- ATN AE-Qualifier Numeric Values are described in 4
AEQualifierVersion ::= SEQUENCE
{
- aeQualifier AEQualifier,
- apVersion VersionNumber
-}
+ aeQualifier AEQualifier,
+ apVersion VersionNumber
+}
AEQualifierVersionAddress ::= SEQUENCE
{
- aeQualifier AEQualifier,
- apVersion VersionNumber,
- apAddress APAddress
-}
+ 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),
- ...
-}
-
+ 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
-}
+ facilityDesignation FacilityDesignation,
+ address LongTsap
+}
-CMContactResponse ::= Response
+CMContactResponse ::= Response
-CMForwardRequest ::= CMLogonRequest
+CMForwardRequest ::= CMLogonRequest
CMForwardResponse ::= ENUMERATED
{
- success (0),
- incompatible-version (1),
- service-not-supported (2)
+ success (0),
+ incompatible-version (1),
+ service-not-supported (2)
}
CMLogonRequest ::= SEQUENCE
{
- aircraftFlightIdentification [0] AircraftFlightIdentification,
- cMLongTSAP [1] LongTsap,
+ 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
-}
+ 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
-}
+ airInitiatedApplications [0] SEQUENCE SIZE (1..256) OF AEQualifierVersionAddress
+ OPTIONAL,
+ groundOnlyInitiatedApplications [1] SEQUENCE SIZE (1..256) OF AEQualifierVersion
+ OPTIONAL
+}
CMUpdate ::= CMLogonResponse
Date ::= SEQUENCE
{
- year Year,
- month Month,
- day Day
+ 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.
+ -- 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
-}
+ date Date,
+ time Time
+}
Day ::= INTEGER (1..31)
- --unit = Day, Range (1..31), resolution = 1
+ --unit = Day, Range (1..31), resolution = 1
FacilityDesignation ::= IA5String (SIZE(4..8))
LongTsap ::= SEQUENCE
{
- rDP OCTET STRING (SIZE(5)),
- shortTsap ShortTsap
-}
+ rDP OCTET STRING (SIZE(5)),
+ shortTsap ShortTsap
+}
Month ::= INTEGER (1..12)
- --unit = Month, Range (1..12), resolution = 1
+ --unit = Month, Range (1..12), resolution = 1
Response ::= ENUMERATED
{
- contactSuccess (0),
- contactNotSuccessful (1)
-}
+ contactSuccess (0),
+ contactNotSuccessful (1)
+}
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))
-}
+ 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
-}
+ hours Timehours,
+ minutes Timeminutes
+}
-Timehours ::= INTEGER (0..23)
+Timehours ::= INTEGER (0..23)
-- units = hour, range (0..23), resolution = 1 hour
-Timeminutes ::= INTEGER (0..59)
+Timeminutes ::= INTEGER (0..59)
-- units = minute, range (0..59), resolution = 1 minute
-VersionNumber ::= INTEGER (1..255)
- -- VersionNumber 0 is reserved for the Dialogue Service
+VersionNumber ::= INTEGER (1..255)
+ -- VersionNumber 0 is reserved for the Dialogue Service
Year ::= INTEGER (1996..2095)
- --unit = Year, Range (1996..2095), resolution = 1
+ --unit = Year, Range (1996..2095), resolution = 1
END
@@ -188,12 +183,12 @@ END
-- Editor modelines - http://www.wireshark.org/tools/modelines.html
--
-- Local variables:
--- c-basic-offset: 2
--- tab-width: 2
--- indent-tabs-mode: t
+-- c-basic-offset: 4
+-- tab-width: 8
+-- indent-tabs-mode: nil
-- End:
--
--- vi: set shiftwidth=2 tabstop=2 noexpandtab:
--- :indentSize=2:tabSize=2:noTabs=false:
+-- vi: set shiftwidth=4 tabstop=8 expandtab:
+-- :indentSize=4:tabSize=8:noTabs=true:
--
diff --git a/asn1/atn-cm/atn-cm.cnf b/asn1/atn-cm/atn-cm.cnf
index 38e23bc0bd..4f7d282f6d 100644
--- a/asn1/atn-cm/atn-cm.cnf
+++ b/asn1/atn-cm/atn-cm.cnf
@@ -1,24 +1,20 @@
-# c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
-# vi: set shiftwidth=2 tabstop=2 noexpandtab:
-# :indentSize=2:tabSize=2:noTabs=false:
-
#.MODULE_IMPORT
#.EXPORTS
#.PDU_NEW
- CMAircraftMessage
- CMGroundMessage
+ CMAircraftMessage
+ CMGroundMessage
#.END
#
# Editor modelines - http://www.wireshark.org/tools/modelines.html
#
# Local variables:
-# c-basic-offset: 2
-# tab-width: 2
-# indent-tabs-mode: t
+# c-basic-offset: 4
+# tab-width: 8
+# indent-tabs-mode: nil
# End:
#
-# vi: set shiftwidth=2 tabstop=2 noexpandtab:
-# :indentSize=2:tabSize=2:noTabs=false:
+# vi: set shiftwidth=4 tabstop=8 expandtab:
+# :indentSize=4:tabSize=8:noTabs=true:
diff --git a/asn1/atn-cm/packet-atn-cm-template.c b/asn1/atn-cm/packet-atn-cm-template.c
index 46373fd277..4dddf6ef53 100644
--- a/asn1/atn-cm/packet-atn-cm-template.c
+++ b/asn1/atn-cm/packet-atn-cm-template.c
@@ -1,9 +1,3 @@
-/* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
- * vi: set shiftwidth=2 tabstop=2 noexpandtab:
- * :indentSize=2:tabSize=2:noTabs=false:
- */
-
-
/* packet-atn-cm.c
* By Mathias Guettler <guettler@web.de>
* Copyright 2013
@@ -67,185 +61,184 @@ static int proto_atn_cm = -1;
static int
dissect_atn_cm(
- tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- void *data _U_)
+ tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ void *data _U_)
{
- int type;
- proto_tree *sub_tree;
-
- sub_tree = proto_tree_add_subtree(
- tree, tvb, 0, -1, ett_atn_cm, NULL, ATN_CM_PROTO);
-
- /* ti = proto_tree_add_item(tree, proto_atn_cm, tvb, 0, 0 , ENC_NA); */
- /* sub_tree = proto_item_add_subtree(ti, ett_atn_cm_pdu); */
-
- /* determine whether it is uplink or downlink */
- type = check_heur_msg_type(pinfo);
-
- switch(type){
- case um:
- dissect_CMGroundMessage_PDU(
- tvb,
- pinfo,
- sub_tree, NULL);
- break;
- case dm:
- dissect_CMAircraftMessage_PDU(
- tvb,
- pinfo,
- sub_tree, NULL);
- break;
- default:
- break;
- }
- return tvb_reported_length_remaining(tvb, 0);
+ int type;
+ proto_tree *sub_tree;
+
+ sub_tree = proto_tree_add_subtree(
+ tree, tvb, 0, -1, ett_atn_cm, NULL, ATN_CM_PROTO);
+
+ /* ti = proto_tree_add_item(tree, proto_atn_cm, tvb, 0, 0 , ENC_NA); */
+ /* sub_tree = proto_item_add_subtree(ti, ett_atn_cm_pdu); */
+
+ /* determine whether it is uplink or downlink */
+ type = check_heur_msg_type(pinfo);
+
+ switch(type){
+ case um:
+ dissect_CMGroundMessage_PDU(
+ tvb,
+ pinfo,
+ sub_tree, NULL);
+ break;
+ case dm:
+ dissect_CMAircraftMessage_PDU(
+ tvb,
+ pinfo,
+ sub_tree, NULL);
+ break;
+ default:
+ break;
+ }
+ return tvb_reported_length_remaining(tvb, 0);
}
static gboolean
dissect_atn_cm_heur(
- tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- void *data _U_)
+ tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ void *data _U_)
{
- atn_conversation_t *atn_cv = NULL;
- volatile gboolean is_atn_cm = FALSE;
- int type;
-
- /* determine whether it is uplink or downlink */
- type = check_heur_msg_type(pinfo);
-
- /* heuristically decode message */
- switch(type){
- case um:
- TRY {
- dissect_CMGroundMessage_PDU(
- tvb,
- pinfo,
- NULL, NULL);
- /* no exception thrown: looks like it is a CM PDU */
- is_atn_cm = TRUE; }
- CATCH_ALL {
- is_atn_cm = FALSE; }
- ENDTRY;
- break;
- case dm:
- TRY {
- dissect_CMAircraftMessage_PDU(
- tvb,
- pinfo,
- NULL, NULL);
- /* no exception thrown: looks like it is a CM PDU */
- is_atn_cm = TRUE;}
- CATCH_ALL {
- is_atn_cm = FALSE; }
- ENDTRY;
- break;
- default:
- break;
- }
-
- if (is_atn_cm == TRUE) {
- /* note: */
- /* all subsequent PDU's belonging to this conversation are considered CM */
- /* if the first CM PDU has been decoded succesfully */
- /* (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 */
- if((pinfo->clnp_dstref) &&
- (pinfo->clnp_srcref)){
- atn_cv = find_atn_conversation(
- &pinfo->src,
- pinfo->clnp_srcref,
- &pinfo->dst );
- }
- if(atn_cv){
- atn_cv->ae_qualifier = cma;
- }
- dissect_atn_cm(
- tvb,
- pinfo,
- tree,
- NULL);
- }
-
- return is_atn_cm;
+ atn_conversation_t *atn_cv = NULL;
+ volatile gboolean is_atn_cm = FALSE;
+ int type;
+
+ /* determine whether it is uplink or downlink */
+ type = check_heur_msg_type(pinfo);
+
+ /* heuristically decode message */
+ switch(type){
+ case um:
+ TRY {
+ dissect_CMGroundMessage_PDU(
+ tvb,
+ pinfo,
+ NULL, NULL);
+ /* no exception thrown: looks like it is a CM PDU */
+ is_atn_cm = TRUE; }
+ CATCH_ALL {
+ is_atn_cm = FALSE; }
+ ENDTRY;
+ break;
+ case dm:
+ TRY {
+ dissect_CMAircraftMessage_PDU(
+ tvb,
+ pinfo,
+ NULL, NULL);
+ /* no exception thrown: looks like it is a CM PDU */
+ is_atn_cm = TRUE;}
+ CATCH_ALL {
+ is_atn_cm = FALSE; }
+ ENDTRY;
+ break;
+ default:
+ break;
+ }
+
+ if (is_atn_cm == TRUE) {
+ /* note: */
+ /* all subsequent PDU's belonging to this conversation are considered CM */
+ /* if the first CM PDU has been decoded succesfully */
+ /* (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 */
+ if((pinfo->clnp_dstref) &&
+ (pinfo->clnp_srcref)){
+ atn_cv = find_atn_conversation(
+ &pinfo->src,
+ pinfo->clnp_srcref,
+ &pinfo->dst );
+ }
+ if(atn_cv){
+ atn_cv->ae_qualifier = cma;
+ }
+ dissect_atn_cm(
+ tvb,
+ pinfo,
+ tree,
+ NULL);
+ }
+
+ return is_atn_cm;
}
void proto_register_atn_cm (void)
{
static hf_register_info hf_atn_cm[] = {
- #include "packet-atn-cm-hfarr.c"
+ #include "packet-atn-cm-hfarr.c"
};
- static gint *ett[] = {
- #include "packet-atn-cm-ettarr.c"
- &ett_atn_cm
- };
-
- /* register CM application */
- proto_atn_cm = proto_register_protocol(
- ATN_CM_PROTO ,
- "ATN-CM",
- "atn-cm");
-
- proto_register_field_array(
- proto_atn_cm,
- hf_atn_cm,
- array_length(hf_atn_cm));
-
- proto_register_subtree_array(
- ett,
- array_length(ett));
-
- new_register_dissector(
- "atn-cm",
- dissect_atn_cm,
- proto_atn_cm);
+ static gint *ett[] = {
+ #include "packet-atn-cm-ettarr.c"
+ &ett_atn_cm
+ };
+
+ /* register CM application */
+ proto_atn_cm = proto_register_protocol(
+ ATN_CM_PROTO ,
+ "ATN-CM",
+ "atn-cm");
+
+ proto_register_field_array(
+ proto_atn_cm,
+ hf_atn_cm,
+ array_length(hf_atn_cm));
+
+ proto_register_subtree_array(
+ ett,
+ array_length(ett));
+
+ new_register_dissector(
+ "atn-cm",
+ dissect_atn_cm,
+ proto_atn_cm);
}
void proto_reg_handoff_atn_cm(void)
{
- /* add session dissector to subdissector list*/
- heur_dissector_add(
- "atn-ulcs",
- dissect_atn_cm_heur,
- "ATN-CM over ATN-ULCS",
- "atn-cm-ulcs",
- proto_atn_cm, HEURISTIC_ENABLE);
+ /* add session dissector to subdissector list*/
+ heur_dissector_add(
+ "atn-ulcs",
+ dissect_atn_cm_heur,
+ "ATN-CM over ATN-ULCS",
+ "atn-cm-ulcs",
+ proto_atn_cm, HEURISTIC_ENABLE);
}
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*
* Local variables:
- * c-basic-offset: 2
- * tab-width: 2
- * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=2 tabstop=2 noexpandtab:
- * :indentSize=2:tabSize=2:noTabs=false:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
-
diff --git a/asn1/atn-cpdlc/atn-cpdlc.asn b/asn1/atn-cpdlc/atn-cpdlc.asn
index 7702d39b17..32fc1a13f9 100644
--- a/asn1/atn-cpdlc/atn-cpdlc.asn
+++ b/asn1/atn-cpdlc/atn-cpdlc.asn
@@ -1,98 +1,94 @@
--- c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
--- vi: set shiftwidth=2 tabstop=2 noexpandtab:
--- :indentSize=2:tabSize=2:noTabs=false:
-
-- Sub-Volume IV ASN.1 reference definitions for ICAO Doc. 9705,
-- Second Edition
-- Version 1.1, 03 Oct 2001
-- protected mode PDR's
--- 2011-10-25 Doc 9705 Draft Ed 3 (ICAO web site - 11/00) including "9705 PDRS FOR CPDLC"
+-- 2011-10-25 Doc 9705 Draft Ed 3 (ICAO web site - 11/00) including "9705 PDRS FOR CPDLC"
-- based on "ACP WGN SG/N2 Version 1.1 (Output Montreal - May 2005)"
--- plain old CPDLC
-CPDLCAPDUsVersion1 DEFINITIONS ::=
+-- plain old CPDLC
+CPDLCAPDUsVersion1 DEFINITIONS ::=
BEGIN
IMPORTS
- ATCUplinkMessage, ATCDownlinkMessage
- FROM PMCPDLCMessageSetVersion1
- ATCForwardMessage, ATCForwardResponse
- FROM PMCPDLCAPDUsVersion1;
+ ATCUplinkMessage, ATCDownlinkMessage
+ FROM PMCPDLCMessageSetVersion1
+ ATCForwardMessage, ATCForwardResponse
+ FROM PMCPDLCAPDUsVersion1;
-- ----------------------------------------------------------------------------------
-- Ground Generated Messages - Top level
-- ----------------------------------------------------------------------------------
GroundPDUs ::= CHOICE
{
- abortUser [0] CPDLCUserAbortReason,
- abortProvider [1] CPDLCProviderAbortReason,
- startup [2] UplinkMessage,
- send [3] ATCUplinkMessage,
- forward [4] ATCForwardMessage,
- forwardresponse [5] ATCForwardResponse,
- ...
+ abortUser [0] CPDLCUserAbortReason,
+ abortProvider [1] CPDLCProviderAbortReason,
+ startup [2] UplinkMessage,
+ send [3] ATCUplinkMessage,
+ forward [4] ATCForwardMessage,
+ forwardresponse [5] ATCForwardResponse,
+ ...
}
UplinkMessage ::= CHOICE
{
- noMessage [0] NULL,
- aTCUplinkMessage [1] ATCUplinkMessage
+ noMessage [0] NULL,
+ aTCUplinkMessage [1] ATCUplinkMessage
}
AircraftPDUs::= CHOICE
{
- abortUser [0] CPDLCUserAbortReason,
- abortProvider [1] CPDLCProviderAbortReason,
- startdown [2] StartDownMessage,
- send [3] ATCDownlinkMessage,
- ...
+ abortUser [0] CPDLCUserAbortReason,
+ abortProvider [1] CPDLCProviderAbortReason,
+ startdown [2] StartDownMessage,
+ send [3] ATCDownlinkMessage,
+ ...
}
StartDownMessage ::= SEQUENCE
{
- mode Mode DEFAULT cpdlc,
- startDownlinkMessage DownlinkMessage
+ mode Mode DEFAULT cpdlc,
+ startDownlinkMessage DownlinkMessage
}
Mode ::= ENUMERATED
{
- cpdlc (0),
- dsc (1)
+ cpdlc (0),
+ dsc (1)
}
DownlinkMessage ::= CHOICE
{
- noMessage [0] NULL,
- aTCDownlinkMessage [1] ATCDownlinkMessage
+ noMessage [0] NULL,
+ aTCDownlinkMessage [1] ATCDownlinkMessage
}
CPDLCUserAbortReason ::= ENUMERATED
{
- undefined (0),
- no-message-identification-numbers-available (1),
- duplicate-message-identification-numbers (2),
- no-longer-next-data-authority (3),
- current-data-authority-abort (4),
- commanded-termination (5),
- invalid-response (6),
- ...
+ undefined (0),
+ no-message-identification-numbers-available (1),
+ duplicate-message-identification-numbers (2),
+ no-longer-next-data-authority (3),
+ current-data-authority-abort (4),
+ commanded-termination (5),
+ invalid-response (6),
+ ...
}
CPDLCProviderAbortReason ::= ENUMERATED
{
- timer-expired (0),
- undefined-error (1),
- invalid-PDU (2),
- protocol-error (3),
- communication-service-error (4),
- communication-service-failure (5),
- invalid-QOS-parameter (6),
- expected-PDU-missing (7),
- ...
- }
+ timer-expired (0),
+ undefined-error (1),
+ invalid-PDU (2),
+ protocol-error (3),
+ communication-service-error (4),
+ communication-service-failure (5),
+ invalid-QOS-parameter (6),
+ expected-PDU-missing (7),
+ ...
+ }
END
@@ -111,127 +107,127 @@ FROM PMCPDLCMessageSetVersion1;
-- ----------------------------------------------------------------------------------
ProtectedGroundPDUs ::= CHOICE
{
- abortUser [0] PMCPDLCUserAbortReason,
- abortProvider [1] PMCPDLCProviderAbortReason,
- startup [2] ProtectedUplinkMessage,
- send [3] ProtectedUplinkMessage,
- forward [4] ATCForwardMessage,
- forwardresponse [5] ATCForwardResponse,
- ...
+ abortUser [0] PMCPDLCUserAbortReason,
+ abortProvider [1] PMCPDLCProviderAbortReason,
+ startup [2] ProtectedUplinkMessage,
+ send [3] ProtectedUplinkMessage,
+ forward [4] ATCForwardMessage,
+ forwardresponse [5] ATCForwardResponse,
+ ...
}
ProtectedUplinkMessage::= SEQUENCE
{
- algorithmIdentifier [0] AlgorithmIdentifier OPTIONAL,
- protectedMessage [1] CPDLCMessage OPTIONAL,
+ algorithmIdentifier [0] AlgorithmIdentifier OPTIONAL,
+ protectedMessage [1] CPDLCMessage OPTIONAL,
-- PER encoded ATCUplinkMessage
-- (see Module PMCPDLCMessageSetVersion1)
- integrityCheck [2] BIT STRING,
- ...
+ integrityCheck [2] BIT STRING,
+ ...
}
ATCForwardMessage ::= SEQUENCE
{
- forwardHeader ForwardHeader,
- forwardMessage ForwardMessage
+ forwardHeader ForwardHeader,
+ forwardMessage ForwardMessage
}
ForwardHeader ::= SEQUENCE
{
- dateTime DateTimeGroup,
- aircraftID AircraftFlightIdentification,
- aircraftAddress AircraftAddress
+ dateTime DateTimeGroup,
+ aircraftID AircraftFlightIdentification,
+ aircraftAddress AircraftAddress
}
ForwardMessage ::= CHOICE
{
- upElementIDs [0] BIT STRING,
+ upElementIDs [0] BIT STRING,
--PER encoded ATCUplinkMessageData,
-- (see Module PMCPDLCMessageSetVersion1)
- downElementIDs [1] BIT STRING
+ downElementIDs [1] BIT STRING
--PER encoded ATCDownlinkMessageData,
-- (see Module PMCPDLCMessageSetVersion1)
}
ATCForwardResponse ::= ENUMERATED
{
- success (0),
- service-not-supported (1),
- version-not-equal (2),
- ...
+ success (0),
+ service-not-supported (1),
+ version-not-equal (2),
+ ...
}
-- ----------------------------------------------------------------------------------
-- Aircraft Generated Messages - Top level
-- ----------------------------------------------------------------------------------
ProtectedAircraftPDUs::= CHOICE
{
- abortUser [0] PMCPDLCUserAbortReason,
- abortProvider [1] PMCPDLCProviderAbortReason,
- startdown [2] ProtectedStartDownMessage,
- send [3] ProtectedDownlinkMessage,
- ...
+ abortUser [0] PMCPDLCUserAbortReason,
+ abortProvider [1] PMCPDLCProviderAbortReason,
+ startdown [2] ProtectedStartDownMessage,
+ send [3] ProtectedDownlinkMessage,
+ ...
}
ProtectedStartDownMessage ::= SEQUENCE
{
- mode ProtectedMode DEFAULT cpdlc,
- startDownlinkMessage ProtectedDownlinkMessage
+ mode ProtectedMode DEFAULT cpdlc,
+ startDownlinkMessage ProtectedDownlinkMessage
}
ProtectedMode ::= ENUMERATED
{
- cpdlc (0),
- dsc (1)
+ cpdlc (0),
+ dsc (1)
}
ProtectedDownlinkMessage::= SEQUENCE
{
- algorithmIdentifier [0] AlgorithmIdentifier OPTIONAL,
- protectedMessage [1] CPDLCMessage OPTIONAL,
+ algorithmIdentifier [0] AlgorithmIdentifier OPTIONAL,
+ protectedMessage [1] CPDLCMessage OPTIONAL,
--PER encoded ATCDownlinkMessage,
-- (see Module PMCPDLCMessageSetVersion1)
- integrityCheck [2] BIT STRING,
- ...
+ integrityCheck [2] BIT STRING,
+ ...
}
-- ----------------------------------------------------------------------------------
-- Uplink and Downlink messages - Common Elements
-- ----------------------------------------------------------------------------------
-AlgorithmIdentifier ::= RELATIVE-OID
+AlgorithmIdentifier ::= RELATIVE-OID
--root is {icao-arc atn-algorithms(9)}
CPDLCMessage ::= BIT STRING
PMCPDLCUserAbortReason ::= ENUMERATED
{
- undefined (0),
- no-message-identification-numbers-available (1),
- duplicate-message-identification-numbers (2),
- no-longer-next-data-authority (3),
- current-data-authority-abort (4),
- commanded-termination (5),
- invalid-response (6),
- time-out-of-synchronisation (7),
- unknown-integrity-check (8),
- validation-failure (9),
- unable-to-decode-message (10),
- invalid-pdu (11),
- invalid-CPDLC-message (12),
- ...
+ undefined (0),
+ no-message-identification-numbers-available (1),
+ duplicate-message-identification-numbers (2),
+ no-longer-next-data-authority (3),
+ current-data-authority-abort (4),
+ commanded-termination (5),
+ invalid-response (6),
+ time-out-of-synchronisation (7),
+ unknown-integrity-check (8),
+ validation-failure (9),
+ unable-to-decode-message (10),
+ invalid-pdu (11),
+ invalid-CPDLC-message (12),
+ ...
}
PMCPDLCProviderAbortReason ::= ENUMERATED
{
- timer-expired (0),
- undefined-error (1),
- invalid-PDU (2),
- protocol-error (3),
- communication-service-error (4),
- communication-service-failure (5),
- invalid-QOS-parameter (6),
- expected-PDU-missing (7),
- ...
+ timer-expired (0),
+ undefined-error (1),
+ invalid-PDU (2),
+ protocol-error (3),
+ communication-service-error (4),
+ communication-service-failure (5),
+ invalid-QOS-parameter (6),
+ expected-PDU-missing (7),
+ ...
}
END
@@ -241,34 +237,34 @@ BEGIN
ATCUplinkMessage ::= SEQUENCE
{
- header ATCMessageHeader,
- messageData ATCUplinkMessageData
+ header ATCMessageHeader,
+ messageData ATCUplinkMessageData
}
ATCUplinkMessageData ::= SEQUENCE
{
- elementIds SEQUENCE SIZE (1..5) OF ATCUplinkMsgElementId,
- constrainedData SEQUENCE
- {
- routeClearanceData SEQUENCE SIZE (1..2) OF RouteClearance OPTIONAL,
- ...
- } OPTIONAL
+ elementIds SEQUENCE SIZE (1..5) OF ATCUplinkMsgElementId,
+ constrainedData SEQUENCE
+ {
+ routeClearanceData SEQUENCE SIZE (1..2) OF RouteClearance OPTIONAL,
+ ...
+ } OPTIONAL
}
ATCDownlinkMessage ::= SEQUENCE
{
- header ATCMessageHeader,
- messageData ATCDownlinkMessageData
+ header ATCMessageHeader,
+ messageData ATCDownlinkMessageData
}
ATCDownlinkMessageData ::= SEQUENCE
{
- elementIds SEQUENCE SIZE (1..5) OF ATCDownlinkMsgElementId,
- constrainedData SEQUENCE
- {
- routeClearanceData SEQUENCE SIZE (1..2) OF RouteClearance OPTIONAL,
- ...
- } OPTIONAL
+ elementIds SEQUENCE SIZE (1..5) OF ATCDownlinkMsgElementId,
+ constrainedData SEQUENCE
+ {
+ routeClearanceData SEQUENCE SIZE (1..2) OF RouteClearance OPTIONAL,
+ ...
+ } OPTIONAL
}
-- ----------------------------------------------------------------------------------
@@ -276,10 +272,10 @@ ATCDownlinkMessageData ::= SEQUENCE
-- ----------------------------------------------------------------------------------
ATCMessageHeader ::= SEQUENCE
{
- messageIdNumber [0] MsgIdentificationNumber,
- messageRefNumber [1] MsgReferenceNumber OPTIONAL,
- dateTime [2] DateTimeGroup,
- logicalAck [3] LogicalAck DEFAULT notRequired
+ messageIdNumber [0] MsgIdentificationNumber,
+ messageRefNumber [1] MsgReferenceNumber OPTIONAL,
+ dateTime [2] DateTimeGroup,
+ logicalAck [3] LogicalAck DEFAULT notRequired
}
MsgIdentificationNumber ::= INTEGER (0..63)
@@ -288,8 +284,8 @@ MsgReferenceNumber ::= INTEGER (0..63)
LogicalAck ::= ENUMERATED
{
- required (0),
- notRequired (1)
+ required (0),
+ notRequired (1)
}
-- ----------------------------------------------------------------------------------
@@ -297,956 +293,956 @@ LogicalAck ::= ENUMERATED
-- ----------------------------------------------------------------------------------
ATCUplinkMsgElementId ::= CHOICE
{
- -- UNABLE
- -- Urg(N)/Alr(M)/Resp(N)
- uM0NULL [0] NULL,
-
- -- STANDBY
- -- Urg(N)/Alr(L)/Resp(N)
- uM1NULL [1] NULL,
-
- -- REQUEST DEFERRED
- -- Urg(N)/Alr(L)/Resp(N)
- uM2NULL [2] NULL,
-
- -- ROGER
- -- Urg(N)/Alr(L)/Resp(N)
- uM3NULL [3] NULL,
-
- -- AFFIRM
- -- Urg(N)/Alr(L)/Resp(N)
- uM4NULL [4] NULL,
-
- -- NEGATIVE Urg(N)/Alr(L)/Resp(N)
- uM5NULL [5] NULL,
-
- -- EXPECT [level] Urg(L)/Alr(L)/Resp(R)
- uM6Level [6] Level,
-
- -- EXPECT CLIMB AT [time]
- -- Urg(L)/Alr(L)/Resp(R)
- uM7Time [7] Time,
-
- -- EXPECT CLIMB AT [position]
- -- Urg(L)/Alr(L)/Resp(R)
- uM8Position [8] Position,
-
- -- EXPECT DESCENT AT [time]
- -- Urg(L)/Alr(L)/Resp(R)
- uM9Time [9] Time,
-
- -- EXPECT DESCENT AT [position]
- -- Urg(L)/Alr(L)/Resp(R)
- uM10Position [10] Position,
-
- -- EXPECT CRUISE CLIMB AT [time]
- -- Urg(L)/Alr(L)/Resp(R)
- uM11Time [11] Time,
-
- -- EXPECT CRUISE CLIMB AT [position]
- -- Urg(L)/Alr(L)/Resp(R)
- uM12Position [12] Position,
-
- -- AT [time] EXPECT CLIMB TO [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM13TimeLevel [13] TimeLevel,
-
- -- AT [position] EXPECT CLIMB TO [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM14PositionLevel [14] PositionLevel,
-
- -- AT [time] EXPECT DESCENT TO [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM15TimeLevel [15] TimeLevel,
-
- -- AT [position] EXPECT DESCENT TO [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM16PositionLevel [16] PositionLevel,
-
- -- AT [time] EXPECT CRUISE CLIMB TO [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM17TimeLevel [17] TimeLevel,
-
- -- AT [position] EXPECT CRUISE CLIMB TO [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM18PositionLevel [18] PositionLevel,
-
- -- MAINTAIN [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM19Level [19] Level,
-
- -- CLIMB TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM20Level [20] Level,
-
- -- AT [time] CLIMB TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM21TimeLevel [21] TimeLevel,
-
- -- AT [position] CLIMB TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM22PositionLevel [22] PositionLevel,
-
- -- DESCEND TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM23Level [23] Level,
-
- -- AT [time] DESCEND TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM24TimeLevel [24] TimeLevel,
-
- -- AT [position] DESCEND TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM25PositionLevel [25] PositionLevel,
-
- -- CLIMB TO REACH [level] BY [time]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM26LevelTime [26] LevelTime,
-
- -- CLIMB TO REACH [level] BY [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM27LevelPosition [27] LevelPosition,
-
- -- DESCEND TO REACH [level] BY [time]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM28LevelTime [28] LevelTime,
-
- -- DESCEND TO REACH [level] BY [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM29LevelPosition [29] LevelPosition,
-
- -- MAINTAIN BLOCK [level] TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM30LevelLevel [30] LevelLevel,
-
- -- CLIMB TO AND MAINTAIN BLOCK [level] TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM31LevelLevel [31] LevelLevel,
-
- -- DESCEND TO AND MAINTAIN BLOCK [level] TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM32LevelLevel [32] LevelLevel,
-
- -- Reserved
- -- Urg(L)/Alr(L)/Resp(Y)
- uM33NULL [33] NULL,
-
- -- CRUISE CLIMB TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM34Level [34] Level,
-
- -- CRUISE CLIMB ABOVE [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM35Level [35] Level,
-
- -- EXPEDITE CLIMB TO [level]
- -- Urg(U)/Alr(M)/Resp(W/U)
- uM36Level [36] Level,
-
- -- EXPEDITE DESCENT TO [level]
- -- Urg(U)/Alr(M)/Resp(W/U)
- uM37Level [37] Level,
-
- -- IMMEDIATELY CLIMB TO [level]
- -- Urg(D)/Alr(H)/Resp(W/U)
- uM38Level [38] Level,
-
- -- IMMEDIATELY DESCEND TO [level]
- -- Urg(D)/Alr(H)/Resp(W/U)
- uM39Level [39] Level,
-
- -- Reserved
- -- Urg(L)/Alr(L)/Resp(Y)
- uM40NULL [40] NULL,
-
- -- Reserved Urg(L)/Alr(L)/Resp(Y)
- uM41NULL [41] NULL,
-
- -- EXPECT TO CROSS [position] AT [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM42PositionLevel [42] PositionLevel,
-
- -- EXPECT TO CROSS [position] AT OR ABOVE [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM43PositionLevel [43] PositionLevel,
-
- -- EXPECT TO CROSS [position] AT OR BELOW [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM44PositionLevel [44] PositionLevel,
-
- -- EXPECT TO CROSS [position] AT AND MAINTAIN [level]
- -- Urg(L)/Alr(L)/Resp(R)
- uM45PositionLevel [45] PositionLevel,
-
- -- CROSS [position] AT [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM46PositionLevel [46] PositionLevel,
-
- -- CROSS [position] AT OR ABOVE [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM47PositionLevel [47] PositionLevel,
-
- -- CROSS [position] AT OR BELOW [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM48PositionLevel [48] PositionLevel,
-
- -- CROSS [position] AT AND MAINTAIN [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM49PositionLevel [49] PositionLevel,
-
- -- CROSS [position] BETWEEN [level] AND [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM50PositionLevelLevel [50] PositionLevelLevel,
-
- -- CROSS [position] AT [time]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM51PositionTime [51] PositionTime,
-
- -- CROSS [position] AT OR BEFORE [time]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM52PositionTime [52] PositionTime,
-
- -- CROSS [position] AT OR AFTER [time]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM53PositionTime [53] PositionTime,
-
- -- CROSS [position] BETWEEN [time] AND [time]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM54PositionTimeTime [54] PositionTimeTime,
-
- -- CROSS [position] AT [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM55PositionSpeed [55] PositionSpeed,
-
- -- CROSS [position] AT OR LESS THAN [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM56PositionSpeed [56] PositionSpeed,
-
- -- CROSS [position] AT OR GREATER THAN [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM57PositionSpeed [57] PositionSpeed,
-
- -- CROSS [position] AT [time] AT [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM58PositionTimeLevel [58] PositionTimeLevel,
-
- -- CROSS [position] AT OR BEFORE [time] AT [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM59PositionTimeLevel [59] PositionTimeLevel,
-
- -- CROSS [position] AT OR AFTER [time] AT [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM60PositionTimeLevel [60] PositionTimeLevel,
-
- -- CROSS [position] AT AND MAINTAIN [level] AT [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM61PositionLevelSpeed [61] PositionLevelSpeed,
+ -- UNABLE
+ -- Urg(N)/Alr(M)/Resp(N)
+ uM0NULL [0] NULL,
+
+ -- STANDBY
+ -- Urg(N)/Alr(L)/Resp(N)
+ uM1NULL [1] NULL,
+
+ -- REQUEST DEFERRED
+ -- Urg(N)/Alr(L)/Resp(N)
+ uM2NULL [2] NULL,
+
+ -- ROGER
+ -- Urg(N)/Alr(L)/Resp(N)
+ uM3NULL [3] NULL,
+
+ -- AFFIRM
+ -- Urg(N)/Alr(L)/Resp(N)
+ uM4NULL [4] NULL,
+
+ -- NEGATIVE Urg(N)/Alr(L)/Resp(N)
+ uM5NULL [5] NULL,
+
+ -- EXPECT [level] Urg(L)/Alr(L)/Resp(R)
+ uM6Level [6] Level,
+
+ -- EXPECT CLIMB AT [time]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM7Time [7] Time,
+
+ -- EXPECT CLIMB AT [position]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM8Position [8] Position,
+
+ -- EXPECT DESCENT AT [time]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM9Time [9] Time,
+
+ -- EXPECT DESCENT AT [position]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM10Position [10] Position,
+
+ -- EXPECT CRUISE CLIMB AT [time]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM11Time [11] Time,
+
+ -- EXPECT CRUISE CLIMB AT [position]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM12Position [12] Position,
+
+ -- AT [time] EXPECT CLIMB TO [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM13TimeLevel [13] TimeLevel,
+
+ -- AT [position] EXPECT CLIMB TO [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM14PositionLevel [14] PositionLevel,
+
+ -- AT [time] EXPECT DESCENT TO [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM15TimeLevel [15] TimeLevel,
+
+ -- AT [position] EXPECT DESCENT TO [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM16PositionLevel [16] PositionLevel,
+
+ -- AT [time] EXPECT CRUISE CLIMB TO [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM17TimeLevel [17] TimeLevel,
+
+ -- AT [position] EXPECT CRUISE CLIMB TO [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM18PositionLevel [18] PositionLevel,
+
+ -- MAINTAIN [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM19Level [19] Level,
+
+ -- CLIMB TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM20Level [20] Level,
+
+ -- AT [time] CLIMB TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM21TimeLevel [21] TimeLevel,
+
+ -- AT [position] CLIMB TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM22PositionLevel [22] PositionLevel,
+
+ -- DESCEND TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM23Level [23] Level,
+
+ -- AT [time] DESCEND TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM24TimeLevel [24] TimeLevel,
+
+ -- AT [position] DESCEND TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM25PositionLevel [25] PositionLevel,
+
+ -- CLIMB TO REACH [level] BY [time]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM26LevelTime [26] LevelTime,
+
+ -- CLIMB TO REACH [level] BY [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM27LevelPosition [27] LevelPosition,
+
+ -- DESCEND TO REACH [level] BY [time]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM28LevelTime [28] LevelTime,
+
+ -- DESCEND TO REACH [level] BY [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM29LevelPosition [29] LevelPosition,
+
+ -- MAINTAIN BLOCK [level] TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM30LevelLevel [30] LevelLevel,
+
+ -- CLIMB TO AND MAINTAIN BLOCK [level] TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM31LevelLevel [31] LevelLevel,
+
+ -- DESCEND TO AND MAINTAIN BLOCK [level] TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM32LevelLevel [32] LevelLevel,
+
+ -- Reserved
+ -- Urg(L)/Alr(L)/Resp(Y)
+ uM33NULL [33] NULL,
+
+ -- CRUISE CLIMB TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM34Level [34] Level,
+
+ -- CRUISE CLIMB ABOVE [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM35Level [35] Level,
+
+ -- EXPEDITE CLIMB TO [level]
+ -- Urg(U)/Alr(M)/Resp(W/U)
+ uM36Level [36] Level,
+
+ -- EXPEDITE DESCENT TO [level]
+ -- Urg(U)/Alr(M)/Resp(W/U)
+ uM37Level [37] Level,
+
+ -- IMMEDIATELY CLIMB TO [level]
+ -- Urg(D)/Alr(H)/Resp(W/U)
+ uM38Level [38] Level,
+
+ -- IMMEDIATELY DESCEND TO [level]
+ -- Urg(D)/Alr(H)/Resp(W/U)
+ uM39Level [39] Level,
- -- AT [time] CROSS [position] AT AND MAINTAIN [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM62TimePositionLevel [62] TimePositionLevel,
+ -- Reserved
+ -- Urg(L)/Alr(L)/Resp(Y)
+ uM40NULL [40] NULL,
- -- AT [time] CROSS [position] AT AND MAINTAIN [level] AT [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM63TimePositionLevelSpeed [63] TimePositionLevelSpeed,
+ -- Reserved Urg(L)/Alr(L)/Resp(Y)
+ uM41NULL [41] NULL,
- -- OFFSET [specifiedDistance] [direction] OF ROUTE
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM64DistanceSpecifiedDirection [64] DistanceSpecifiedDirection,
+ -- EXPECT TO CROSS [position] AT [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM42PositionLevel [42] PositionLevel,
- -- AT [position] OFFSET [specifiedDistance] [direction] OF ROUTE
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM65PositionDistanceSpecifiedDirection[65] PositionDistanceSpecifiedDirection,
+ -- EXPECT TO CROSS [position] AT OR ABOVE [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM43PositionLevel [43] PositionLevel,
- -- AT [time] OFFSET [specifiedDistance] [direction] OF ROUTE
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM66TimeDistanceSpecifiedDirection [66] TimeDistanceSpecifiedDirection,
+ -- EXPECT TO CROSS [position] AT OR BELOW [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM44PositionLevel [44] PositionLevel,
- -- PROCEED BACK ON ROUTE
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM67NULL [67] NULL,
+ -- EXPECT TO CROSS [position] AT AND MAINTAIN [level]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM45PositionLevel [45] PositionLevel,
- -- REJOIN ROUTE BY [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM68Position [68] Position,
+ -- CROSS [position] AT [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM46PositionLevel [46] PositionLevel,
- -- REJOIN ROUTE BY [time]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM69Time [69] Time,
+ -- CROSS [position] AT OR ABOVE [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM47PositionLevel [47] PositionLevel,
- -- EXPECT BACK ON ROUTE BY [position]
- -- Urg(L)/Alr(L)/Resp(R)
- uM70Position [70] Position,
+ -- CROSS [position] AT OR BELOW [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM48PositionLevel [48] PositionLevel,
- -- EXPECT BACK ON ROUTE BY [time]
- -- Urg(L)/Alr(L)/Resp(R)
- uM71Time [71] Time,
+ -- CROSS [position] AT AND MAINTAIN [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM49PositionLevel [49] PositionLevel,
- -- RESUME OWN NAVIGATION
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM72NULL [72] NULL,
+ -- CROSS [position] BETWEEN [level] AND [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM50PositionLevelLevel [50] PositionLevelLevel,
- -- [DepartureClearance]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM73DepartureClearance [73] DepartureClearance,
+ -- CROSS [position] AT [time]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM51PositionTime [51] PositionTime,
- -- PROCEED DIRECT TO [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM74Position [74] Position,
+ -- CROSS [position] AT OR BEFORE [time]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM52PositionTime [52] PositionTime,
- -- WHEN ABLE PROCEED DIRECT TO [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM75Position [75] Position,
+ -- CROSS [position] AT OR AFTER [time]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM53PositionTime [53] PositionTime,
- -- AT [time] PROCEED DIRECT TO [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM76TimePosition [76] TimePosition,
+ -- CROSS [position] BETWEEN [time] AND [time]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM54PositionTimeTime [54] PositionTimeTime,
- -- AT [position] PROCEED DIRECT TO [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM77PositionPosition [77] PositionPosition,
+ -- CROSS [position] AT [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM55PositionSpeed [55] PositionSpeed,
- -- AT [level] PROCEED DIRECT TO [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM78LevelPosition [78] LevelPosition,
+ -- CROSS [position] AT OR LESS THAN [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM56PositionSpeed [56] PositionSpeed,
- -- CLEARED TO [position] VIA [routeClearance]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM79PositionRouteClearance [79] PositionRouteClearanceIndex,
+ -- CROSS [position] AT OR GREATER THAN [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM57PositionSpeed [57] PositionSpeed,
- -- CLEARED [routeClearance]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM80RouteClearance [80] RouteClearanceIndex,
+ -- CROSS [position] AT [time] AT [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM58PositionTimeLevel [58] PositionTimeLevel,
- -- CLEARED [procedureName]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM81ProcedureName [81] ProcedureName,
+ -- CROSS [position] AT OR BEFORE [time] AT [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM59PositionTimeLevel [59] PositionTimeLevel,
- -- CLEARED TO DEVIATE UP TO [specifiedDistance] [direction] OF ROUTE
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM82DistanceSpecifiedDirection [82] DistanceSpecifiedDirection,
+ -- CROSS [position] AT OR AFTER [time] AT [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM60PositionTimeLevel [60] PositionTimeLevel,
- -- AT [position] CLEARED [routeClearance]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM83PositionRouteClearance [83] PositionRouteClearanceIndex,
+ -- CROSS [position] AT AND MAINTAIN [level] AT [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM61PositionLevelSpeed [61] PositionLevelSpeed,
- -- AT [position] CLEARED [procedureName]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM84PositionProcedureName [84] PositionProcedureName,
+ -- AT [time] CROSS [position] AT AND MAINTAIN [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM62TimePositionLevel [62] TimePositionLevel,
- -- EXPECT [routeClearance]
- -- Urg(L)/Alr(L)/Resp(R)
- uM85RouteClearance [85] RouteClearanceIndex,
+ -- AT [time] CROSS [position] AT AND MAINTAIN [level] AT [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM63TimePositionLevelSpeed [63] TimePositionLevelSpeed,
- -- AT [position] EXPECT [routeClearance]
- -- Urg(L)/Alr(L)/Resp(R)
- uM86PositionRouteClearance [86] PositionRouteClearanceIndex,
+ -- OFFSET [specifiedDistance] [direction] OF ROUTE
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM64DistanceSpecifiedDirection [64] DistanceSpecifiedDirection,
- -- EXPECT DIRECT TO [position]
- -- Urg(L)/Alr(L)/Resp(R)
- uM87Position [87] Position,
+ -- AT [position] OFFSET [specifiedDistance] [direction] OF ROUTE
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM65PositionDistanceSpecifiedDirection[65] PositionDistanceSpecifiedDirection,
- -- AT [position] EXPECT DIRECT TO [position]
- -- Urg(L)/Alr(L)/Resp(R)
- uM88PositionPosition [88]PositionPosition,
+ -- AT [time] OFFSET [specifiedDistance] [direction] OF ROUTE
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM66TimeDistanceSpecifiedDirection [66] TimeDistanceSpecifiedDirection,
- -- AT [time] EXPECT DIRECT TO [position]
- -- Urg(L)/Alr(L)/Resp(R)
- uM89TimePosition [89] TimePosition,
+ -- PROCEED BACK ON ROUTE
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM67NULL [67] NULL,
+ -- REJOIN ROUTE BY [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM68Position [68] Position,
- -- AT [level] EXPECT DIRECT TO [position]
- -- Urg(L)/Alr(L)/Resp(R)
- uM90LevelPosition [90] LevelPosition,
+ -- REJOIN ROUTE BY [time]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM69Time [69] Time,
- -- HOLD AT [position] MAINTAIN [level] INBOUND TRACK [degrees][direction] TURNS [legtype]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM91HoldClearance [91] HoldClearance,
+ -- EXPECT BACK ON ROUTE BY [position]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM70Position [70] Position,
- -- HOLD AT [position] AS PUBLISHED MAINTAIN [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM92PositionLevel [92] PositionLevel,
+ -- EXPECT BACK ON ROUTE BY [time]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM71Time [71] Time,
- -- EXPECT FURTHER CLEARANCE AT [time]
- -- Urg(L)/Alr(L)/Resp(R)
- uM93Time [93] Time,
+ -- RESUME OWN NAVIGATION
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM72NULL [72] NULL,
- -- TURN [direction] HEADING [degrees]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM94DirectionDegrees [94] DirectionDegrees,
+ -- [DepartureClearance]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM73DepartureClearance [73] DepartureClearance,
- -- TURN [direction] GROUND TRACK [degrees]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM95DirectionDegrees [95] DirectionDegrees,
+ -- PROCEED DIRECT TO [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM74Position [74] Position,
- -- CONTINUE PRESENT HEADING
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM96NULL [96] NULL,
+ -- WHEN ABLE PROCEED DIRECT TO [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM75Position [75] Position,
- -- AT [position] FLY HEADING [degrees]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM97PositionDegrees [97] PositionDegrees,
+ -- AT [time] PROCEED DIRECT TO [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM76TimePosition [76] TimePosition,
- -- IMMEDIATELY TURN [direction] HEADING [degrees]
- -- Urg(D)/Alr(H)/Resp(W/U)
- uM98DirectionDegrees [98] DirectionDegrees,
+ -- AT [position] PROCEED DIRECT TO [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM77PositionPosition [77] PositionPosition,
- -- EXPECT [procedureName]
- -- Urg(L)/Alr(L)/Resp(R)
- uM99ProcedureName [99] ProcedureName,
+ -- AT [level] PROCEED DIRECT TO [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM78LevelPosition [78] LevelPosition,
- -- AT [time] EXPECT [speed]
- -- Urg(L)/Alr(L)/Resp(R)
- uM100TimeSpeed [100] TimeSpeed,
+ -- CLEARED TO [position] VIA [routeClearance]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM79PositionRouteClearance [79] PositionRouteClearanceIndex,
- -- AT [position] EXPECT [speed]
- -- Urg(L)/Alr(L)/Resp(R)
- uM101PositionSpeed [101] PositionSpeed,
+ -- CLEARED [routeClearance]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM80RouteClearance [80] RouteClearanceIndex,
- -- AT [level] EXPECT [speed]
- -- Urg(L)/Alr(L)/Resp(R)
- uM102LevelSpeed [102] LevelSpeed,
+ -- CLEARED [procedureName]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM81ProcedureName [81] ProcedureName,
- -- AT [time] EXPECT [speed] TO [speed]
- -- Urg(L)/Alr(L)/Resp(R)
- uM103TimeSpeedSpeed [103] TimeSpeedSpeed,
+ -- CLEARED TO DEVIATE UP TO [specifiedDistance] [direction] OF ROUTE
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM82DistanceSpecifiedDirection [82] DistanceSpecifiedDirection,
- -- AT [position] EXPECT [speed] TO [speed]
- -- Urg(L)/Alr(L)/Resp(R)
- uM104PositionSpeedSpeed [104] PositionSpeedSpeed,
+ -- AT [position] CLEARED [routeClearance]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM83PositionRouteClearance [83] PositionRouteClearanceIndex,
- -- AT [level] EXPECT [speed] TO [speed]
- -- Urg(L)/Alr(L)/Resp(R)
- uM105LevelSpeedSpeed [105] LevelSpeedSpeed,
+ -- AT [position] CLEARED [procedureName]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM84PositionProcedureName [84] PositionProcedureName,
- -- MAINTAIN [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM106Speed [106] Speed,
+ -- EXPECT [routeClearance]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM85RouteClearance [85] RouteClearanceIndex,
- -- MAINTAIN PRESENT SPEED
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM107NULL [107] NULL,
+ -- AT [position] EXPECT [routeClearance]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM86PositionRouteClearance [86] PositionRouteClearanceIndex,
- -- MAINTAIN [speed] OR GREATER
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM108Speed [108] Speed,
+ -- EXPECT DIRECT TO [position]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM87Position [87] Position,
- -- MAINTAIN [speed] OR LESS
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM109Speed [109] Speed,
+ -- AT [position] EXPECT DIRECT TO [position]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM88PositionPosition [88]PositionPosition,
- -- MAINTAIN [speed] TO [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM110SpeedSpeed [110] SpeedSpeed,
+ -- AT [time] EXPECT DIRECT TO [position]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM89TimePosition [89] TimePosition,
- -- INCREASE SPEED TO [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM111Speed [111] Speed,
- -- INCREASE SPEED TO [speed] OR GREATER
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM112Speed [112] Speed,
+ -- AT [level] EXPECT DIRECT TO [position]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM90LevelPosition [90] LevelPosition,
- -- REDUCE SPEED TO [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM113Speed [113] Speed,
+ -- HOLD AT [position] MAINTAIN [level] INBOUND TRACK [degrees][direction] TURNS [legtype]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM91HoldClearance [91] HoldClearance,
- -- REDUCE SPEED TO [speed] OR LESS
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM114Speed [114] Speed,
+ -- HOLD AT [position] AS PUBLISHED MAINTAIN [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM92PositionLevel [92] PositionLevel,
- -- DO NOT EXCEED [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM115Speed [115] Speed,
+ -- EXPECT FURTHER CLEARANCE AT [time]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM93Time [93] Time,
- -- RESUME NORMAL SPEED
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM116NULL [116] NULL,
+ -- TURN [direction] HEADING [degrees]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM94DirectionDegrees [94] DirectionDegrees,
- -- CONTACT [unitname] [frequency]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM117UnitNameFrequency [117] UnitNameFrequency,
+ -- TURN [direction] GROUND TRACK [degrees]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM95DirectionDegrees [95] DirectionDegrees,
- -- AT [position] CONTACT [unitname] [frequency]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM118PositionUnitNameFrequency [118] PositionUnitNameFrequency,
+ -- CONTINUE PRESENT HEADING
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM96NULL [96] NULL,
- -- AT [time] CONTACT [unitname] [frequency]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM119TimeUnitNameFrequency [119] TimeUnitNameFrequency,
+ -- AT [position] FLY HEADING [degrees]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM97PositionDegrees [97] PositionDegrees,
- -- MONITOR [unitname] [frequency]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM120UnitNameFrequency [120] UnitNameFrequency,
+ -- IMMEDIATELY TURN [direction] HEADING [degrees]
+ -- Urg(D)/Alr(H)/Resp(W/U)
+ uM98DirectionDegrees [98] DirectionDegrees,
- -- AT [position] MONITOR [unitname] [frequency]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM121PositionUnitNameFrequency [121] PositionUnitNameFrequency,
+ -- EXPECT [procedureName]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM99ProcedureName [99] ProcedureName,
- -- AT [time] MONITOR [unitname] [frequency]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM122TimeUnitNameFrequency [122] TimeUnitNameFrequency,
+ -- AT [time] EXPECT [speed]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM100TimeSpeed [100] TimeSpeed,
- -- SQUAWK [code]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM123Code [123] Code,
+ -- AT [position] EXPECT [speed]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM101PositionSpeed [101] PositionSpeed,
- -- STOP SQUAWK
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM124NULL [124] NULL,
+ -- AT [level] EXPECT [speed]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM102LevelSpeed [102] LevelSpeed,
- -- SQUAWK MODE CHARLIE
- -- Urg(N)/Alr(M)/Resp(W/U)
+ -- AT [time] EXPECT [speed] TO [speed]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM103TimeSpeedSpeed [103] TimeSpeedSpeed,
+
+ -- AT [position] EXPECT [speed] TO [speed]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM104PositionSpeedSpeed [104] PositionSpeedSpeed,
+
+ -- AT [level] EXPECT [speed] TO [speed]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM105LevelSpeedSpeed [105] LevelSpeedSpeed,
+
+ -- MAINTAIN [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM106Speed [106] Speed,
+
+ -- MAINTAIN PRESENT SPEED
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM107NULL [107] NULL,
+
+ -- MAINTAIN [speed] OR GREATER
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM108Speed [108] Speed,
+
+ -- MAINTAIN [speed] OR LESS
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM109Speed [109] Speed,
+
+ -- MAINTAIN [speed] TO [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM110SpeedSpeed [110] SpeedSpeed,
+
+ -- INCREASE SPEED TO [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM111Speed [111] Speed,
+
+ -- INCREASE SPEED TO [speed] OR GREATER
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM112Speed [112] Speed,
+
+ -- REDUCE SPEED TO [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM113Speed [113] Speed,
+
+ -- REDUCE SPEED TO [speed] OR LESS
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM114Speed [114] Speed,
+
+ -- DO NOT EXCEED [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM115Speed [115] Speed,
+
+ -- RESUME NORMAL SPEED
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM116NULL [116] NULL,
+
+ -- CONTACT [unitname] [frequency]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM117UnitNameFrequency [117] UnitNameFrequency,
+
+ -- AT [position] CONTACT [unitname] [frequency]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM118PositionUnitNameFrequency [118] PositionUnitNameFrequency,
+
+ -- AT [time] CONTACT [unitname] [frequency]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM119TimeUnitNameFrequency [119] TimeUnitNameFrequency,
+
+ -- MONITOR [unitname] [frequency]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM120UnitNameFrequency [120] UnitNameFrequency,
+
+ -- AT [position] MONITOR [unitname] [frequency]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM121PositionUnitNameFrequency [121] PositionUnitNameFrequency,
+
+ -- AT [time] MONITOR [unitname] [frequency]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM122TimeUnitNameFrequency [122] TimeUnitNameFrequency,
+
+ -- SQUAWK [code]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM123Code [123] Code,
+
+ -- STOP SQUAWK
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM124NULL [124] NULL,
+
+ -- SQUAWK MODE CHARLIE
+ -- Urg(N)/Alr(M)/Resp(W/U)
uM125NULL [125] NULL,
- -- STOP SQUAWK MODE CHARLIE
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM126NULL [126] NULL,
-
- -- REPORT BACK ON ROUTE
- -- Urg(N)/Alr(L)/Resp(W/U)
- uM127NULL [127] NULL,
-
- -- REPORT LEAVING [level]
- -- Urg(N)/Alr(L)/Resp(W/U)
- uM128Level [128] Level,
-
- -- REPORT MAINTAINING [level]
- -- Urg(N)/Alr(L)/Resp(W/U)
- uM129Level [129] Level,
-
- -- REPORT PASSING [position]
- -- Urg(N)/Alr(L)/Resp(W/U)
- uM130Position [130] Position,
-
- -- REPORT REMAINING FUEL AND PERSONS ON BOARD
- -- Urg(U)/Alr(M)/Resp(Y)
- uM131NULL [131] NULL,
-
- -- REPORT POSITION
- -- Urg(N)/Alr(M)/Resp(Y)
- uM132NULL [132] NULL,
-
- -- REPORT PRESENT LEVEL
- -- Urg(N)/Alr(M)/Resp(Y)
- uM133NULL [133] NULL,
-
- -- REPORT [speedtype] [speedtype] [speedtype]SPEED
- -- Urg(N)/Alr(M)/Resp(Y)
- uM134SpeedTypeSpeedTypeSpeedType [134] SpeedTypeSpeedTypeSpeedType,
-
- -- CONFIRM ASSIGNED LEVEL
- -- Urg(N)/Alr(L)/Resp(Y)
- uM135NULL [135] NULL,
-
- -- CONFIRM ASSIGNED SPEED
- -- Urg(N)/Alr(L)/Resp(Y)
- uM136NULL [136] NULL,
-
- -- CONFIRM ASSIGNED ROUTE
- -- Urg(N)/Alr(L)/Resp(Y)
- uM137NULL [137] NULL,
-
- -- CONFIRM TIME OVER REPORTED WAYPOINT
- -- Urg(N)/Alr(L)/Resp(Y)
- uM138NULL [138] NULL,
-
- -- CONFIRM REPORTED WAYPOINT
- -- Urg(N)/Alr(L)/Resp(Y)
- uM139NULL [139] NULL,
-
- -- CONFIRM NEXT WAYPOINT
- -- Urg(N)/Alr(L)/Resp(Y)
- uM140NULL [140] NULL,
-
- -- CONFIRM NEXT WAYPOINT ETA
- -- Urg(N)/Alr(L)/Resp(Y)
- uM141NULL [141] NULL,
-
- -- CONFIRM ENSUING WAYPOINT
- -- Urg(N)/Alr(L)/Resp(Y)
- uM142NULL [142] NULL,
-
- -- CONFIRM REQUEST
- -- Urg(N)/Alr(L)/Resp(Y)
- uM143NULL [143] NULL,
-
- -- CONFIRM SQUAWK
- -- Urg(N)/Alr(L)/Resp(Y)
- uM144NULL [144] NULL,
-
- -- REPORT HEADING
- -- Urg(N)/Alr(M)/Resp(Y)
- uM145NULL [145] NULL,
-
- -- REPORT GROUND TRACK
- -- Urg(N)/Alr(M)/Resp(Y)
- uM146NULL [146] NULL,
-
- -- REQUEST POSITION REPORT
- -- Urg(N)/Alr(M)/Resp(Y )
- uM147NULL [147] NULL,
-
- -- WHEN CAN YOU ACCEPT [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- uM148Level [148] Level,
-
- -- CAN YOU ACCEPT [level] AT [position]
- -- Urg(N)/Alr(L)/Resp(A/N)
- uM149LevelPosition [149] LevelPosition,
-
- -- CAN YOU ACCEPT [level] AT [time]
- -- Urg(N)/Alr(L)/Resp(A/N)
- uM150LevelTime [150] LevelTime,
-
- -- WHEN CAN YOU ACCEPT [speed]
- -- Urg(N)/Alr(L)/Resp(Y)
- uM151Speed [151] Speed,
-
- -- WHEN CAN YOU ACCEPT [specifiedDistance] [direction] OFFSET
- -- Urg(N)/Alr(L)/Resp(Y)
- uM152DistanceSpecifiedDirection [152] DistanceSpecifiedDirection,
-
- -- ALTIMETER [altimeter]
- -- Urg(N)/Alr(L)/Resp(R)
- uM153Altimeter [153] Altimeter,
-
- -- RADAR SERVICE TERMINATED
- -- Urg(N)/Alr(L)/Resp(R)
- uM154NULL [154] NULL,
-
- -- RADAR CONTACT [position]
- -- Urg(N)/Alr(M)/Resp(R)
- uM155Position [155] Position,
-
- -- RADAR CONTACT LOST
- -- Urg(N)/Alr(M)/Resp(R)
- uM156NULL [156] NULL,
-
- -- CHECK STUCK MICROPHONE [frequency]
- -- Urg(U)/Alr(M)/Resp(N)
- uM157Frequency [157] Frequency,
-
- -- ATIS [atiscode]
- -- Urg(N)/Alr(L)/Resp(R)
- uM158AtisCode [158] ATISCode,
-
- -- ERROR [errorInformation]
- -- Urg(U)/Alr(M)/Resp(N)
- uM159ErrorInformation [159] ErrorInformation,
-
- -- NEXT DATA AUTHORITY [facility]
- -- Urg(L)/Alr(N)/Resp(N)
- uM160Facility [160] Facility,
-
- -- END SERVICE
- -- Urg(L)/Alr(N)/Resp(N)
- uM161NULL [161] NULL,
-
- -- SERVICE UNAVAILABLE
- -- Urg(L)/Alr(L)/Resp(N )
- uM162NULL [162] NULL,
-
- -- [facilitydesignation]
- -- Urg(L)/Alr(N)/Resp(N)
- uM163FacilityDesignation [163] FacilityDesignation,
-
- -- WHEN READY
- -- Urg(L)/Alr(N)/Resp(N)
- uM164NULL [164] NULL,
-
- -- THEN
- -- Urg(L)/Alr(N)/Resp(N)
- uM165NULL [165] NULL,
-
- -- DUE TO [traffictype]TRAFFIC
- -- Urg(L)/Alr(N)/Resp(N)
- uM166TrafficType [166] TrafficType,
-
- -- DUE TO AIRSPACE RESTRICTION
- -- Urg(L)/Alr(N)/Resp(N)
- uM167NULL [167] NULL,
-
- -- DISREGARD
- -- Urg(U)/Alr(M)/Resp(R)
- uM168NULL [168] NULL,
-
- -- [freetext]
- -- Urg(N)/Alr(L)/Resp(R)
- uM169FreeText [169] FreeText,
-
- -- [freetext]
- -- Urg(D)/Alr(H)/Resp(R)
- uM170FreeText [170] FreeText,
-
- -- CLIMB AT [verticalRate] MINIMUM
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM171VerticalRate [171] VerticalRate,
-
- -- CLIMB AT [verticalRate] MAXIMUM
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM172VerticalRate [172] VerticalRate,
+ -- STOP SQUAWK MODE CHARLIE
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM126NULL [126] NULL,
+
+ -- REPORT BACK ON ROUTE
+ -- Urg(N)/Alr(L)/Resp(W/U)
+ uM127NULL [127] NULL,
+
+ -- REPORT LEAVING [level]
+ -- Urg(N)/Alr(L)/Resp(W/U)
+ uM128Level [128] Level,
+
+ -- REPORT MAINTAINING [level]
+ -- Urg(N)/Alr(L)/Resp(W/U)
+ uM129Level [129] Level,
+
+ -- REPORT PASSING [position]
+ -- Urg(N)/Alr(L)/Resp(W/U)
+ uM130Position [130] Position,
+
+ -- REPORT REMAINING FUEL AND PERSONS ON BOARD
+ -- Urg(U)/Alr(M)/Resp(Y)
+ uM131NULL [131] NULL,
+
+ -- REPORT POSITION
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM132NULL [132] NULL,
+
+ -- REPORT PRESENT LEVEL
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM133NULL [133] NULL,
+
+ -- REPORT [speedtype] [speedtype] [speedtype]SPEED
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM134SpeedTypeSpeedTypeSpeedType [134] SpeedTypeSpeedTypeSpeedType,
+
+ -- CONFIRM ASSIGNED LEVEL
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM135NULL [135] NULL,
+
+ -- CONFIRM ASSIGNED SPEED
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM136NULL [136] NULL,
+
+ -- CONFIRM ASSIGNED ROUTE
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM137NULL [137] NULL,
+
+ -- CONFIRM TIME OVER REPORTED WAYPOINT
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM138NULL [138] NULL,
+
+ -- CONFIRM REPORTED WAYPOINT
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM139NULL [139] NULL,
+
+ -- CONFIRM NEXT WAYPOINT
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM140NULL [140] NULL,
+
+ -- CONFIRM NEXT WAYPOINT ETA
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM141NULL [141] NULL,
+
+ -- CONFIRM ENSUING WAYPOINT
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM142NULL [142] NULL,
+
+ -- CONFIRM REQUEST
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM143NULL [143] NULL,
+
+ -- CONFIRM SQUAWK
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM144NULL [144] NULL,
- -- DESCEND AT [verticalRate] MINIMUM
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM173VerticalRate [173] VerticalRate,
+ -- REPORT HEADING
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM145NULL [145] NULL,
- -- DESCEND AT [verticalRate] MAXIMUM
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM174VerticalRate [174] VerticalRate,
-
- -- REPORT REACHING [level]
- -- Urg(N)/Alr(L)/Resp(W/U)
- uM175Level [175] Level,
-
- -- MAINTAIN OWN SEPARATION AND VMC
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM176NULL [176] NULL,
-
- -- AT PILOTS DISCRETION
- -- Urg(L)/Alr(L)/Resp(N)
- uM177NULL [177] NULL,
-
- -- Reserved
- -- Urg(L)/Alr(L)/Resp(Y)
- uM178NULL [178] NULL,
-
- -- SQUAWK IDENT
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM179NULL [179] NULL,
-
- -- REPORT REACHING BLOCK [level] TO [level]
- -- Urg(N)/Alr(L)/Resp(W/U)
- uM180LevelLevel [180] LevelLevel,
-
- -- REPORT DISTANCE [tofrom] [position]
- -- Urg(N)/Alr(M)/Resp(Y)
- uM181ToFromPosition [181] ToFromPosition,
-
- -- CONFIRM ATIS CODE
- -- Urg(N)/Alr(L)/Resp(Y)
- uM182NULL [182] NULL,
-
- -- [freetext]
- -- Urg(N)/Alr(M)/Resp(N)
- uM183FreeText [183] FreeText,
-
- -- AT [time] REPORT DISTANCE [tofrom] [position]
- -- Urg(N)/Alr(L)/Resp(Y)
- uM184TimeToFromPosition [184] TimeToFromPosition,
-
- -- AFTER PASSING [position] CLIMB TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM185PositionLevel [185] PositionLevel,
-
- -- AFTER PASSING [position] DESCEND TO [level]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM186PositionLevel [186] PositionLevel,
-
- -- [freetext]
- -- Urg(L)/Alr(N)/Resp(N)
- uM187FreeText [187] FreeText,
-
- -- AFTER PASSING [position] MAINTAIN [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM188PositionSpeed [188] PositionSpeed,
-
- -- ADJUST SPEED TO [speed]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM189Speed [189] Speed,
-
- -- FLY HEADING [degrees]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM190Degrees [190] Degrees,
-
- -- ALL ATS TERMINATED
- -- Urg(N)/Alr(M)/Resp(R)
- uM191NULL [191] NULL,
-
- -- REACH [level] BY [time]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM192LevelTime [192] LevelTime,
-
- -- IDENTIFICATION LOST
- -- Urg(N)/Alr(M)/Resp(R)
- uM193NULL [193] NULL,
-
- -- [freetext]
- -- Urg(N)/Alr(L)/Resp(Y)
- uM194FreeText [194] FreeText,
-
- -- [freetext]
- -- Urg(L)/Alr(L)/Resp(R)
- uM195FreeText [195] FreeText,
-
- -- [freetext]
- -- Urg(N)/Alr(M)/Resp
- uM196FreeText [196] FreeText,
-
- -- [freetext]
- -- Urg(U)/Alr(M)/Resp(W/U)
- uM197FreeText [197] FreeText,
-
- -- [freetext]
- -- Urg(D)/Alr(H)/Resp(W/U)
- uM198FreeText [198] FreeText,
-
- -- [freetext]
- -- Urg(N)/Alr(L)/Resp(N)
- uM199FreeText [199] FreeText,
-
- -- REPORT REACHING
- -- Urg(N)/Alr(L)/Resp(W/U)
- uM200NULL [200] NULL,
-
- -- Not Used
- -- Urg(L)/Alr(L)/Resp(N)
- uM201NULL [201] NULL,
-
- -- Not Used
- -- Urg(L)/Alr(L)/Resp(N)
- uM202NULL [202] NULL,
-
- -- [freetext]
- -- Urg(N)/Alr(M)/Resp(R)
- uM203FreeText [203] FreeText,
-
- -- [freetext]
- -- Urg(N)/Alr(M)/Resp(Y)
- uM204FreeText [204] FreeText,
-
- -- [freetext]
- -- Urg(N)/Alr(M)/Resp(A/N)
- uM205FreeText [205] FreeText,
-
- -- [freetext]
- -- Urg(L)/Alr(N)/Resp(Y)
- uM206FreeText [206] FreeText,
-
- -- [freetext]
- -- Urg(L)/Alr(L)/Resp(Y)
- uM207FreeText [207] FreeText,
-
- -- [freetext]
- -- Urg(L)/Alr(L)/Resp(N)
- uM208FreeText [208] FreeText,
-
- -- REACH [level] BY [position]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM209LevelPosition [209] LevelPosition,
-
- -- IDENTIFIED [position]
- -- Urg(N)/Alr(M)/Resp(R)
- uM210Position [210] Position,
-
- -- REQUEST FORWARDED
- -- Urg(N)/Alr(L)/Resp(N)
- uM211NULL [211] NULL,
-
- -- [facilitydesignation] ATIS [atiscode] CURRENT
- -- Urg(N)/Alr(L)/Resp(R)
- uM212FacilityDesignationATISCode [212] FacilityDesignationATISCode,
-
- -- [facilitydesignation] ALTIMETER [altimeter]
- -- Urg(N)/Alr(L)/Resp(R)
- uM213FacilityDesignationAltimeter [213] FacilityDesignationAltimeter,
-
- -- RVR RUNWAY [runway] [rvr]
- -- Urg(N)/Alr(M)/Resp(R)
- uM214RunwayRVR [214] RunwayRVR,
-
- -- TURN [direction][degrees]
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM215DirectionDegrees [215] DirectionDegrees,
-
- -- REQUEST FLIGHT PLAN
- -- Urg(N)/Alr(M)/Resp(Y)
- uM216NULL [216] NULL,
-
- -- REPORT ARRIVAL
- -- Urg(N)/Alr(M)/Resp(Y)
- uM217NULL [217] NULL,
-
- -- REQUEST ALREADY RECEIVED
- -- Urg(L)/Alr(N)/Resp(N)
- uM218NULL [218] NULL,
-
- -- STOP CLIMB AT [level]
- -- Urg(U)/Alr(M)/Resp(W/U)
- uM219Level [219] Level,
-
- -- STOP DESCENT AT [level]
- -- Urg(U)/Alr(M)/Resp(W/U)
- uM220Level [220] Level,
-
- -- STOP TURN HEADING [degrees]
- -- Urg(U)/Alr(M)/Resp(W/U)
- uM221Degrees [221] Degrees,
-
- -- NO SPEED RESTRICTION
- -- Urg(L)/Alr(L)/Resp(R)
- uM222NULL [222] NULL,
-
- -- REDUCE TO MINIMUM APPROACH SPEED
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM223NULL [223] NULL,
-
- -- NO DELAY EXPECTED
- -- Urg(N)/Alr(L)/Resp(R)
- uM224NULL [224] NULL,
-
- -- DELAY NOT DETERMINED
- -- Urg(N)/Alr(L)/Resp(R)
- uM225NULL [225] NULL,
+ -- REPORT GROUND TRACK
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM146NULL [146] NULL,
- -- EXPECTED APPROACH TIME [time]
- -- Urg(N)/Alr(L)/Resp(R)
- uM226Time [226] Time,
+ -- REQUEST POSITION REPORT
+ -- Urg(N)/Alr(M)/Resp(Y )
+ uM147NULL [147] NULL,
- -- LOGICAL ACKNOWLEDGMENT
- -- Urg(N)/Alr(M)/Resp(N)
- uM227NULL [227] NULL,
+ -- WHEN CAN YOU ACCEPT [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM148Level [148] Level,
- -- REPORT ETA [position]
- --Urg(L)/Alr(L)/Resp(Y)
- uM228Position [228] Position,
+ -- CAN YOU ACCEPT [level] AT [position]
+ -- Urg(N)/Alr(L)/Resp(A/N)
+ uM149LevelPosition [149] LevelPosition,
- -- REPORT ALTERNATE AERODROME
- -- Urg(L)/Alr(L)/Resp(Y)
- uM229NULL [229] NULL,
+ -- CAN YOU ACCEPT [level] AT [time]
+ -- Urg(N)/Alr(L)/Resp(A/N)
+ uM150LevelTime [150] LevelTime,
- -- IMMEDIATELY
- -- Urg(D)/Alr(H)/Resp(N)
- uM230NULL [230] NULL,
+ -- WHEN CAN YOU ACCEPT [speed]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM151Speed [151] Speed,
- -- STATE PREFERRED LEVEL
- -- Urg(L)/Alr(L)/Resp(Y)
- uM231NULL [231] NULL,
+ -- WHEN CAN YOU ACCEPT [specifiedDistance] [direction] OFFSET
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM152DistanceSpecifiedDirection [152] DistanceSpecifiedDirection,
- -- STATE TOP OF DESCENT
- -- Urg(L)/Alr(L)/Resp(Y)
- uM232NULL [232] NULL,
+ -- ALTIMETER [altimeter]
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM153Altimeter [153] Altimeter,
- -- USE OF LOGICAL ACKNOWLEDGMENT PROHIBITED
- -- Urg(N)/Alr(M)/Resp(N)
- uM233NULL [233] NULL,
+ -- RADAR SERVICE TERMINATED
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM154NULL [154] NULL,
- -- FLIGHT PLAN NOT HELD
- -- Urg(L)/Alr(L)/Resp(N)
- uM234NULL [234] NULL,
+ -- RADAR CONTACT [position]
+ -- Urg(N)/Alr(M)/Resp(R)
+ uM155Position [155] Position,
- -- ROGER 7500
- -- Urg(U)/Alr(H)/Resp(N)
- uM235NULL [235] NULL,
+ -- RADAR CONTACT LOST
+ -- Urg(N)/Alr(M)/Resp(R)
+ uM156NULL [156] NULL,
- -- LEAVE CONTROLLED AIRSPACE
- -- Urg(N)/Alr(M)/Resp(W/U)
- uM236NULL [236] NULL,
- ...,
+ -- CHECK STUCK MICROPHONE [frequency]
+ -- Urg(U)/Alr(M)/Resp(N)
+ uM157Frequency [157] Frequency,
- -- REQUEST AGAIN WITH NEXT UNIT
- -- Urg(N)/Alr(L)/Resp(N)
- uM237NULL [237]NULL
+ -- ATIS [atiscode]
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM158AtisCode [158] ATISCode,
+
+ -- ERROR [errorInformation]
+ -- Urg(U)/Alr(M)/Resp(N)
+ uM159ErrorInformation [159] ErrorInformation,
+
+ -- NEXT DATA AUTHORITY [facility]
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM160Facility [160] Facility,
+
+ -- END SERVICE
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM161NULL [161] NULL,
+
+ -- SERVICE UNAVAILABLE
+ -- Urg(L)/Alr(L)/Resp(N )
+ uM162NULL [162] NULL,
+
+ -- [facilitydesignation]
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM163FacilityDesignation [163] FacilityDesignation,
+
+ -- WHEN READY
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM164NULL [164] NULL,
+
+ -- THEN
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM165NULL [165] NULL,
+
+ -- DUE TO [traffictype]TRAFFIC
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM166TrafficType [166] TrafficType,
+
+ -- DUE TO AIRSPACE RESTRICTION
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM167NULL [167] NULL,
+
+ -- DISREGARD
+ -- Urg(U)/Alr(M)/Resp(R)
+ uM168NULL [168] NULL,
+
+ -- [freetext]
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM169FreeText [169] FreeText,
+
+ -- [freetext]
+ -- Urg(D)/Alr(H)/Resp(R)
+ uM170FreeText [170] FreeText,
+
+ -- CLIMB AT [verticalRate] MINIMUM
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM171VerticalRate [171] VerticalRate,
+
+ -- CLIMB AT [verticalRate] MAXIMUM
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM172VerticalRate [172] VerticalRate,
+
+ -- DESCEND AT [verticalRate] MINIMUM
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM173VerticalRate [173] VerticalRate,
+
+ -- DESCEND AT [verticalRate] MAXIMUM
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM174VerticalRate [174] VerticalRate,
+
+ -- REPORT REACHING [level]
+ -- Urg(N)/Alr(L)/Resp(W/U)
+ uM175Level [175] Level,
+
+ -- MAINTAIN OWN SEPARATION AND VMC
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM176NULL [176] NULL,
+
+ -- AT PILOTS DISCRETION
+ -- Urg(L)/Alr(L)/Resp(N)
+ uM177NULL [177] NULL,
+
+ -- Reserved
+ -- Urg(L)/Alr(L)/Resp(Y)
+ uM178NULL [178] NULL,
+
+ -- SQUAWK IDENT
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM179NULL [179] NULL,
+
+ -- REPORT REACHING BLOCK [level] TO [level]
+ -- Urg(N)/Alr(L)/Resp(W/U)
+ uM180LevelLevel [180] LevelLevel,
+
+ -- REPORT DISTANCE [tofrom] [position]
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM181ToFromPosition [181] ToFromPosition,
+
+ -- CONFIRM ATIS CODE
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM182NULL [182] NULL,
+
+ -- [freetext]
+ -- Urg(N)/Alr(M)/Resp(N)
+ uM183FreeText [183] FreeText,
+
+ -- AT [time] REPORT DISTANCE [tofrom] [position]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM184TimeToFromPosition [184] TimeToFromPosition,
+
+ -- AFTER PASSING [position] CLIMB TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM185PositionLevel [185] PositionLevel,
+
+ -- AFTER PASSING [position] DESCEND TO [level]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM186PositionLevel [186] PositionLevel,
+
+ -- [freetext]
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM187FreeText [187] FreeText,
+
+ -- AFTER PASSING [position] MAINTAIN [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM188PositionSpeed [188] PositionSpeed,
+
+ -- ADJUST SPEED TO [speed]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM189Speed [189] Speed,
+
+ -- FLY HEADING [degrees]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM190Degrees [190] Degrees,
+
+ -- ALL ATS TERMINATED
+ -- Urg(N)/Alr(M)/Resp(R)
+ uM191NULL [191] NULL,
+
+ -- REACH [level] BY [time]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM192LevelTime [192] LevelTime,
+
+ -- IDENTIFICATION LOST
+ -- Urg(N)/Alr(M)/Resp(R)
+ uM193NULL [193] NULL,
+
+ -- [freetext]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ uM194FreeText [194] FreeText,
+
+ -- [freetext]
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM195FreeText [195] FreeText,
+
+ -- [freetext]
+ -- Urg(N)/Alr(M)/Resp
+ uM196FreeText [196] FreeText,
+
+ -- [freetext]
+ -- Urg(U)/Alr(M)/Resp(W/U)
+ uM197FreeText [197] FreeText,
+
+ -- [freetext]
+ -- Urg(D)/Alr(H)/Resp(W/U)
+ uM198FreeText [198] FreeText,
+
+ -- [freetext]
+ -- Urg(N)/Alr(L)/Resp(N)
+ uM199FreeText [199] FreeText,
+
+ -- REPORT REACHING
+ -- Urg(N)/Alr(L)/Resp(W/U)
+ uM200NULL [200] NULL,
+
+ -- Not Used
+ -- Urg(L)/Alr(L)/Resp(N)
+ uM201NULL [201] NULL,
+
+ -- Not Used
+ -- Urg(L)/Alr(L)/Resp(N)
+ uM202NULL [202] NULL,
+
+ -- [freetext]
+ -- Urg(N)/Alr(M)/Resp(R)
+ uM203FreeText [203] FreeText,
+
+ -- [freetext]
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM204FreeText [204] FreeText,
+
+ -- [freetext]
+ -- Urg(N)/Alr(M)/Resp(A/N)
+ uM205FreeText [205] FreeText,
+
+ -- [freetext]
+ -- Urg(L)/Alr(N)/Resp(Y)
+ uM206FreeText [206] FreeText,
+
+ -- [freetext]
+ -- Urg(L)/Alr(L)/Resp(Y)
+ uM207FreeText [207] FreeText,
+
+ -- [freetext]
+ -- Urg(L)/Alr(L)/Resp(N)
+ uM208FreeText [208] FreeText,
+
+ -- REACH [level] BY [position]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM209LevelPosition [209] LevelPosition,
+
+ -- IDENTIFIED [position]
+ -- Urg(N)/Alr(M)/Resp(R)
+ uM210Position [210] Position,
+
+ -- REQUEST FORWARDED
+ -- Urg(N)/Alr(L)/Resp(N)
+ uM211NULL [211] NULL,
+
+ -- [facilitydesignation] ATIS [atiscode] CURRENT
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM212FacilityDesignationATISCode [212] FacilityDesignationATISCode,
+
+ -- [facilitydesignation] ALTIMETER [altimeter]
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM213FacilityDesignationAltimeter [213] FacilityDesignationAltimeter,
+
+ -- RVR RUNWAY [runway] [rvr]
+ -- Urg(N)/Alr(M)/Resp(R)
+ uM214RunwayRVR [214] RunwayRVR,
+
+ -- TURN [direction][degrees]
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM215DirectionDegrees [215] DirectionDegrees,
+
+ -- REQUEST FLIGHT PLAN
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM216NULL [216] NULL,
+
+ -- REPORT ARRIVAL
+ -- Urg(N)/Alr(M)/Resp(Y)
+ uM217NULL [217] NULL,
+
+ -- REQUEST ALREADY RECEIVED
+ -- Urg(L)/Alr(N)/Resp(N)
+ uM218NULL [218] NULL,
+
+ -- STOP CLIMB AT [level]
+ -- Urg(U)/Alr(M)/Resp(W/U)
+ uM219Level [219] Level,
+
+ -- STOP DESCENT AT [level]
+ -- Urg(U)/Alr(M)/Resp(W/U)
+ uM220Level [220] Level,
+
+ -- STOP TURN HEADING [degrees]
+ -- Urg(U)/Alr(M)/Resp(W/U)
+ uM221Degrees [221] Degrees,
+
+ -- NO SPEED RESTRICTION
+ -- Urg(L)/Alr(L)/Resp(R)
+ uM222NULL [222] NULL,
+
+ -- REDUCE TO MINIMUM APPROACH SPEED
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM223NULL [223] NULL,
+
+ -- NO DELAY EXPECTED
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM224NULL [224] NULL,
+
+ -- DELAY NOT DETERMINED
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM225NULL [225] NULL,
+
+ -- EXPECTED APPROACH TIME [time]
+ -- Urg(N)/Alr(L)/Resp(R)
+ uM226Time [226] Time,
+
+ -- LOGICAL ACKNOWLEDGMENT
+ -- Urg(N)/Alr(M)/Resp(N)
+ uM227NULL [227] NULL,
+
+ -- REPORT ETA [position]
+ --Urg(L)/Alr(L)/Resp(Y)
+ uM228Position [228] Position,
+
+ -- REPORT ALTERNATE AERODROME
+ -- Urg(L)/Alr(L)/Resp(Y)
+ uM229NULL [229] NULL,
+
+ -- IMMEDIATELY
+ -- Urg(D)/Alr(H)/Resp(N)
+ uM230NULL [230] NULL,
+
+ -- STATE PREFERRED LEVEL
+ -- Urg(L)/Alr(L)/Resp(Y)
+ uM231NULL [231] NULL,
+
+ -- STATE TOP OF DESCENT
+ -- Urg(L)/Alr(L)/Resp(Y)
+ uM232NULL [232] NULL,
+
+ -- USE OF LOGICAL ACKNOWLEDGMENT PROHIBITED
+ -- Urg(N)/Alr(M)/Resp(N)
+ uM233NULL [233] NULL,
+
+ -- FLIGHT PLAN NOT HELD
+ -- Urg(L)/Alr(L)/Resp(N)
+ uM234NULL [234] NULL,
+
+ -- ROGER 7500
+ -- Urg(U)/Alr(H)/Resp(N)
+ uM235NULL [235] NULL,
+
+ -- LEAVE CONTROLLED AIRSPACE
+ -- Urg(N)/Alr(M)/Resp(W/U)
+ uM236NULL [236] NULL,
+ ...,
+
+ -- REQUEST AGAIN WITH NEXT UNIT
+ -- Urg(N)/Alr(L)/Resp(N)
+ uM237NULL [237]NULL
}
------------------------------------------------------------------------------------
@@ -1254,462 +1250,462 @@ ATCUplinkMsgElementId ::= CHOICE
-- ----------------------------------------------------------------------------------
ATCDownlinkMsgElementId ::= CHOICE
{
- -- WILCO
- -- Urg(N)/Alr(M)/Resp(N)
- dM0NULL [0] NULL,
+ -- WILCO
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM0NULL [0] NULL,
+
+ --UNABLE
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM1NULL [1] NULL,
- --UNABLE
- -- Urg(N)/Alr(M)/Resp(N)
- dM1NULL [1] NULL,
+ -- STANDBY
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM2NULL [2] NULL,
- -- STANDBY
- -- Urg(N)/Alr(M)/Resp(N)
- dM2NULL [2] NULL,
+ -- ROGER
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM3NULL [3] NULL,
- -- ROGER
- -- Urg(N)/Alr(M)/Resp(N)
- dM3NULL [3] NULL,
+ -- AFFIRM
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM4NULL [4] NULL,
- -- AFFIRM
- -- Urg(N)/Alr(M)/Resp(N)
- dM4NULL [4] NULL,
+ -- NEGATIVE
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM5NULL [5] NULL,
- -- NEGATIVE
- -- Urg(N)/Alr(M)/Resp(N)
- dM5NULL [5] NULL,
+ -- REQUEST [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM6Level [6] Level,
- -- REQUEST [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM6Level [6] Level,
+ -- REQUEST BLOCK [level] TO [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM7LevelLevel [7] LevelLevel,
- -- REQUEST BLOCK [level] TO [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM7LevelLevel [7] LevelLevel,
+ -- REQUEST CRUISE CLIMB TO [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM8Level [8] Level,
- -- REQUEST CRUISE CLIMB TO [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM8Level [8] Level,
+ -- REQUEST CLIMB TO [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM9Level [9] Level,
- -- REQUEST CLIMB TO [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM9Level [9] Level,
+ -- REQUEST DESCENT TO [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM10Level [10] Level,
- -- REQUEST DESCENT TO [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM10Level [10] Level,
+ -- AT [position] REQUEST CLIMB TO [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM11PositionLevel [11] PositionLevel,
- -- AT [position] REQUEST CLIMB TO [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM11PositionLevel [11] PositionLevel,
+ -- AT [position] REQUEST DESCENT TO [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM12PositionLevel [12] PositionLevel,
- -- AT [position] REQUEST DESCENT TO [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM12PositionLevel [12] PositionLevel,
+ -- AT [time] REQUEST CLIMB TO [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM13TimeLevel [13] TimeLevel,
- -- AT [time] REQUEST CLIMB TO [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM13TimeLevel [13] TimeLevel,
+ -- AT [time] REQUEST DESCENT TO [level]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM14TimeLevel [14] TimeLevel,
- -- AT [time] REQUEST DESCENT TO [level]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM14TimeLevel [14] TimeLevel,
+ -- REQUEST OFFSET [specifiedDistance] [direction] OF ROUTE
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM15DistanceSpecifiedDirection [15] DistanceSpecifiedDirection,
- -- REQUEST OFFSET [specifiedDistance] [direction] OF ROUTE
- -- Urg(N)/Alr(L)/Resp(Y)
- dM15DistanceSpecifiedDirection [15] DistanceSpecifiedDirection,
+ -- AT [position] REQUEST OFFSET [specifiedDistance] [direction] OF ROUTE
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM16PositionDistanceSpecifiedDirection [16] PositionDistanceSpecifiedDirection,
- -- AT [position] REQUEST OFFSET [specifiedDistance] [direction] OF ROUTE
- -- Urg(N)/Alr(L)/Resp(Y)
- dM16PositionDistanceSpecifiedDirection [16] PositionDistanceSpecifiedDirection,
+ -- AT [time] REQUEST OFFSET [specifiedDistance] [direction] OF ROUTE
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM17TimeDistanceSpecifiedDirection [17] TimeDistanceSpecifiedDirection,
- -- AT [time] REQUEST OFFSET [specifiedDistance] [direction] OF ROUTE
- -- Urg(N)/Alr(L)/Resp(Y)
- dM17TimeDistanceSpecifiedDirection [17] TimeDistanceSpecifiedDirection,
+ -- REQUEST [speed]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM18Speed [18] Speed,
- -- REQUEST [speed]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM18Speed [18] Speed,
+ -- REQUEST [speed] TO [speed]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM19SpeedSpeed [19] SpeedSpeed,
- -- REQUEST [speed] TO [speed]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM19SpeedSpeed [19] SpeedSpeed,
+ -- REQUEST VOICE CONTACT
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM20NULL [20] NULL,
- -- REQUEST VOICE CONTACT
- -- Urg(N)/Alr(L)/Resp(Y)
- dM20NULL [20] NULL,
+ -- REQUEST VOICE CONTACT [frequency]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM21Frequency [21] Frequency,
- -- REQUEST VOICE CONTACT [frequency]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM21Frequency [21] Frequency,
+ -- REQUEST DIRECT TO [position]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM22Position [22] Position,
- -- REQUEST DIRECT TO [position]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM22Position [22] Position,
+ -- REQUEST [procedureName]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM23ProcedureName [23] ProcedureName,
- -- REQUEST [procedureName]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM23ProcedureName [23] ProcedureName,
+ -- REQUEST CLEARANCE [routeClearance]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM24RouteClearance [24] RouteClearanceIndex,
- -- REQUEST CLEARANCE [routeClearance]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM24RouteClearance [24] RouteClearanceIndex,
+ -- REQUEST [clearanceType] CLEARANCE
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM25ClearanceType [25] ClearanceType,
- -- REQUEST [clearanceType] CLEARANCE
- -- Urg(N)/Alr(L)/Resp(Y)
- dM25ClearanceType [25] ClearanceType,
+ -- REQUEST WEATHER DEVIATION TO [position] VIA [routeClearance]
+ -- Urg(N)/Alr(M)/Resp(Y)
+ dM26PositionRouteClearance [26] PositionRouteClearanceIndex,
- -- REQUEST WEATHER DEVIATION TO [position] VIA [routeClearance]
- -- Urg(N)/Alr(M)/Resp(Y)
- dM26PositionRouteClearance [26] PositionRouteClearanceIndex,
+ -- REQUEST WEATHER DEVIATION UP TO [specifiedDistance] [direction] OF ROUTE
+ -- Urg(N)/Alr(M)/Resp(Y)
+ dM27DistanceSpecifiedDirection [27] DistanceSpecifiedDirection,
- -- REQUEST WEATHER DEVIATION UP TO [specifiedDistance] [direction] OF ROUTE
- -- Urg(N)/Alr(M)/Resp(Y)
- dM27DistanceSpecifiedDirection [27] DistanceSpecifiedDirection,
+ -- LEAVING [level]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM28Level [28] Level,
- -- LEAVING [level]
- -- Urg(N)/Alr(L)/Resp(N)
- dM28Level [28] Level,
+ -- CLIMBING TO [level]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM29Level [29]Level,
- -- CLIMBING TO [level]
- -- Urg(N)/Alr(L)/Resp(N)
- dM29Level [29]Level,
+ -- DESCENDING TO [level]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM30Level [30] Level,
- -- DESCENDING TO [level]
- -- Urg(N)/Alr(L)/Resp(N)
- dM30Level [30] Level,
+ -- PASSING [position]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM31Position [31] Position,
- -- PASSING [position]
- -- Urg(N)/Alr(L)/Resp(N)
- dM31Position [31] Position,
+ -- PRESENT LEVEL [level]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM32Level [32] Level,
- -- PRESENT LEVEL [level]
- -- Urg(N)/Alr(L)/Resp(N)
- dM32Level [32] Level,
+ -- PRESENT POSITION [position]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM33Position [33] Position,
- -- PRESENT POSITION [position]
- -- Urg(N)/Alr(L)/Resp(N)
- dM33Position [33] Position,
+ -- PRESENT SPEED [speed]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM34Speed [34] Speed,
- -- PRESENT SPEED [speed]
- -- Urg(N)/Alr(L)/Resp(N)
- dM34Speed [34] Speed,
+ -- PRESENT HEADING [degrees]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM35Degrees [35] Degrees,
- -- PRESENT HEADING [degrees]
- -- Urg(N)/Alr(L)/Resp(N)
- dM35Degrees [35] Degrees,
+ -- PRESENT GROUND TRACK [degrees]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM36Degrees [36] Degrees,
- -- PRESENT GROUND TRACK [degrees]
- -- Urg(N)/Alr(L)/Resp(N)
- dM36Degrees [36] Degrees,
+ -- MAINTAINING [level]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM37Level [37] Level,
- -- MAINTAINING [level]
- -- Urg(N)/Alr(L)/Resp(N)
- dM37Level [37] Level,
+ -- ASSIGNED LEVEL [level]
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM38Level [38] Level,
- -- ASSIGNED LEVEL [level]
- -- Urg(N)/Alr(M)/Resp(N)
- dM38Level [38] Level,
+ -- ASSIGNED SPEED [speed]
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM39Speed [39] Speed,
- -- ASSIGNED SPEED [speed]
- -- Urg(N)/Alr(M)/Resp(N)
- dM39Speed [39] Speed,
+ -- ASSIGNED ROUTE [routeClearance]
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM40RouteClearance [40] RouteClearanceIndex,
- -- ASSIGNED ROUTE [routeClearance]
- -- Urg(N)/Alr(M)/Resp(N)
- dM40RouteClearance [40] RouteClearanceIndex,
+ -- BACK ON ROUTE
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM41NULL [41] NULL,
- -- BACK ON ROUTE
- -- Urg(N)/Alr(M)/Resp(N)
- dM41NULL [41] NULL,
+ -- NEXT WAYPOINT [position]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM42Position [42] Position,
- -- NEXT WAYPOINT [position]
- -- Urg(N)/Alr(L)/Resp(N)
- dM42Position [42] Position,
+ -- NEXT WAYPOINT ETA [time]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM43Time [43] Time,
- -- NEXT WAYPOINT ETA [time]
- -- Urg(N)/Alr(L)/Resp(N)
- dM43Time [43] Time,
+ -- ENSUING WAYPOINT [position]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM44Position [44] Position,
- -- ENSUING WAYPOINT [position]
- -- Urg(N)/Alr(L)/Resp(N)
- dM44Position [44] Position,
+ -- REPORTED WAYPOINT [position]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM45Position [45] Position,
- -- REPORTED WAYPOINT [position]
- -- Urg(N)/Alr(L)/Resp(N)
- dM45Position [45] Position,
+ -- REPORTED WAYPOINT [time]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM46Time [46] Time,
- -- REPORTED WAYPOINT [time]
- -- Urg(N)/Alr(L)/Resp(N)
- dM46Time [46] Time,
+ -- SQUAWKING [code]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM47Code [47] Code,
- -- SQUAWKING [code]
- -- Urg(N)/Alr(L)/Resp(N)
- dM47Code [47] Code,
+ -- POSITION REPORT [positionreport]
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM48PositionReport [48] PositionReport,
- -- POSITION REPORT [positionreport]
- -- Urg(N)/Alr(M)/Resp(N)
- dM48PositionReport [48] PositionReport,
+ -- WHEN CAN WE EXPECT [speed]
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM49Speed [49] Speed,
- -- WHEN CAN WE EXPECT [speed]
- -- Urg(L)/Alr(L)/Resp(Y)
- dM49Speed [49] Speed,
+ -- WHEN CAN WE EXPECT [speed] TO [speed]
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM50SpeedSpeed [50] SpeedSpeed,
- -- WHEN CAN WE EXPECT [speed] TO [speed]
- -- Urg(L)/Alr(L)/Resp(Y)
- dM50SpeedSpeed [50] SpeedSpeed,
+ -- WHEN CAN WE EXPECT BACK ON ROUTE
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM51NULL [51] NULL,
- -- WHEN CAN WE EXPECT BACK ON ROUTE
- -- Urg(L)/Alr(L)/Resp(Y)
- dM51NULL [51] NULL,
+ -- WHEN CAN WE EXPECT LOWER LEVEL
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM52NULL [52] NULL,
- -- WHEN CAN WE EXPECT LOWER LEVEL
- -- Urg(L)/Alr(L)/Resp(Y)
- dM52NULL [52] NULL,
+ -- WHEN CAN WE EXPECT HIGHER LEVEL Urg(L)/Alr(L)/Resp(Y)
+ dM53NULL [53] NULL,
- -- WHEN CAN WE EXPECT HIGHER LEVEL Urg(L)/Alr(L)/Resp(Y)
- dM53NULL [53] NULL,
-
- -- WHEN CAN WE EXPECT CRUISE CLIMB TO [level]
- -- Urg(L)/Alr(L)/Resp(Y)
- dM54Level [54] Level,
+ -- WHEN CAN WE EXPECT CRUISE CLIMB TO [level]
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM54Level [54] Level,
- -- PAN PAN PAN
- -- Urg(U)/Alr(H)/Resp(Y)
- dM55NULL [55] NULL,
+ -- PAN PAN PAN
+ -- Urg(U)/Alr(H)/Resp(Y)
+ dM55NULL [55] NULL,
- -- MAYDAY MAYDAY MAYDAY
- -- Urg(D)/Alr(H)/Resp(Y)
- dM56NULL [56] NULL,
+ -- MAYDAY MAYDAY MAYDAY
+ -- Urg(D)/Alr(H)/Resp(Y)
+ dM56NULL [56] NULL,
- -- [remainingFuel] OF FUEL REMAINING AND [personsonboard] PERSONS ON BOARD
- -- Urg(U)/Alr(H)/Resp(Y)
- dM57RemainingFuelPersonsOnBoard [57] RemainingFuelPersonsOnBoard,
+ -- [remainingFuel] OF FUEL REMAINING AND [personsonboard] PERSONS ON BOARD
+ -- Urg(U)/Alr(H)/Resp(Y)
+ dM57RemainingFuelPersonsOnBoard [57] RemainingFuelPersonsOnBoard,
- -- CANCEL EMERGENCY
- -- Urg(U)/Alr(M)/Resp(Y)
- dM58NULL [58] NULL,
+ -- CANCEL EMERGENCY
+ -- Urg(U)/Alr(M)/Resp(Y)
+ dM58NULL [58] NULL,
- -- DIVERTING TO [position] VIA [routeClearance]
- -- Urg(U)/Alr(H)/Resp(Y)
- dM59PositionRouteClearance [59] PositionRouteClearanceIndex,
+ -- DIVERTING TO [position] VIA [routeClearance]
+ -- Urg(U)/Alr(H)/Resp(Y)
+ dM59PositionRouteClearance [59] PositionRouteClearanceIndex,
- -- OFFSETTING [specifiedDistance] [direction] OF ROUTE
- -- Urg(U)/Alr(H)/Resp(Y)
- dM60DistanceSpecifiedDirection [60] DistanceSpecifiedDirection,
+ -- OFFSETTING [specifiedDistance] [direction] OF ROUTE
+ -- Urg(U)/Alr(H)/Resp(Y)
+ dM60DistanceSpecifiedDirection [60] DistanceSpecifiedDirection,
- -- DESCENDING TO [level]
- -- Urg(U)/Alr(H)/Resp(Y)
- dM61Level [61] Level,
+ -- DESCENDING TO [level]
+ -- Urg(U)/Alr(H)/Resp(Y)
+ dM61Level [61] Level,
- -- ERROR [errorInformation]
- -- Urg(U)/Alr(L)/Resp(N)
- dM62ErrorInformation [62] ErrorInformation,
+ -- ERROR [errorInformation]
+ -- Urg(U)/Alr(L)/Resp(N)
+ dM62ErrorInformation [62] ErrorInformation,
- -- NOT CURRENT DATA AUTHORITY
- -- Urg(L)/Alr(L)/Resp(N)
- dM63NULL [63] NULL,
+ -- NOT CURRENT DATA AUTHORITY
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM63NULL [63] NULL,
- -- [facilitydesignation]
- -- Urg(L)/Alr(L)/Resp(N)
- dM64FacilityDesignation [64] FacilityDesignation,
+ -- [facilitydesignation]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM64FacilityDesignation [64] FacilityDesignation,
- -- DUE TO WEATHER
- -- Urg(L)/Alr(L)/Resp(N)
- dM65NULL [65] NULL,
+ -- DUE TO WEATHER
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM65NULL [65] NULL,
- -- DUE TO AIRCRAFT PERFORMANCE
- -- Urg(L)/Alr(L)/Resp(N)
- dM66NULL [66] NULL,
+ -- DUE TO AIRCRAFT PERFORMANCE
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM66NULL [66] NULL,
- -- [freetext]
- -- Urg(N)/Alr(L)/Resp(N)
- dM67FreeText [67] FreeText,
+ -- [freetext]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM67FreeText [67] FreeText,
- -- [freetext]
- -- Urg(D)/Alr(H)/Resp(Y)
- dM68FreeText [68] FreeText,
+ -- [freetext]
+ -- Urg(D)/Alr(H)/Resp(Y)
+ dM68FreeText [68] FreeText,
- -- REQUEST VMC DESCENT
- -- Urg(N)/Alr(L)/Resp(Y)
- dM69NULL [69] NULL,
+ -- REQUEST VMC DESCENT
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM69NULL [69] NULL,
- -- REQUEST HEADING [degrees]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM70Degrees [70] Degrees,
+ -- REQUEST HEADING [degrees]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM70Degrees [70] Degrees,
- -- REQUEST GROUND TRACK [degrees]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM71Degrees [71] Degrees,
+ -- REQUEST GROUND TRACK [degrees]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM71Degrees [71] Degrees,
- -- REACHING [level]
- -- Urg(N)/Alr(L)/Resp(N)
- dM72Level [72] Level,
+ -- REACHING [level]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM72Level [72] Level,
- -- [versionnumber]
- -- Urg(L)/Alr(L)/Resp(N)
- dM73Versionnumber [73] VersionNumber,
+ -- [versionnumber]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM73Versionnumber [73] VersionNumber,
- -- REQUEST TO MAINTAIN OWN SEPARATION AND VMC
- -- Urg(L)/Alr(L)/Resp(Y)
- dM74NULL [74] NULL,
+ -- REQUEST TO MAINTAIN OWN SEPARATION AND VMC
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM74NULL [74] NULL,
- -- AT PILOTS DISCRETION
- -- Urg(L)/Alr(L)/Resp(N)
- dM75NULL [75] NULL,
+ -- AT PILOTS DISCRETION
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM75NULL [75] NULL,
- -- REACHING BLOCK [level] TO [level]
- -- Urg(N)/Alr(L)/Resp(N)
- dM76LevelLevel [76] LevelLevel,
+ -- REACHING BLOCK [level] TO [level]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM76LevelLevel [76] LevelLevel,
- -- ASSIGNED BLOCK [level] TO [level]
- -- Urg(N)/Alr(M)/Resp(N)
- dM77LevelLevel [77] LevelLevel,
+ -- ASSIGNED BLOCK [level] TO [level]
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM77LevelLevel [77] LevelLevel,
- -- AT [time] [distance] [tofrom] [position]
- -- Urg(N)/Alr(L)/Resp(N)
- dM78TimeDistanceToFromPosition [78] TimeDistanceToFromPosition,
+ -- AT [time] [distance] [tofrom] [position]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM78TimeDistanceToFromPosition [78] TimeDistanceToFromPosition,
- -- ATIS [atiscode]
- -- Urg(N)/Alr(L)/Resp(N)
- dM79AtisCode [79] ATISCode,
+ -- ATIS [atiscode]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM79AtisCode [79] ATISCode,
- -- DEVIATING UP TO [specifiedDistance] [direction] OF ROUTE
- -- Urg(U)/Alr(H)/Resp(Y)
- dM80DistanceSpecifiedDirection [80] DistanceSpecifiedDirection,
+ -- DEVIATING UP TO [specifiedDistance] [direction] OF ROUTE
+ -- Urg(U)/Alr(H)/Resp(Y)
+ dM80DistanceSpecifiedDirection [80] DistanceSpecifiedDirection,
- -- WE CAN ACCEPT [level] AT [time]
- -- Urg(L)/Alr(L)/Resp(N)
- dM81LevelTime [81] LevelTime,
+ -- WE CAN ACCEPT [level] AT [time]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM81LevelTime [81] LevelTime,
- -- WE CANNOT ACCEPT [level]
- -- Urg(L)/Alr(L)/Resp(N)
- dM82Level [82] Level,
+ -- WE CANNOT ACCEPT [level]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM82Level [82] Level,
- -- WE CAN ACCEPT [speed] AT [time]
- -- Urg(L)/Alr(L)/Resp(N)
- dM83SpeedTime [83] SpeedTime,
+ -- WE CAN ACCEPT [speed] AT [time]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM83SpeedTime [83] SpeedTime,
- -- WE CANNOT ACCEPT [speed]
- -- Urg(L)/Alr(L)/Resp(N)
- dM84Speed [84] Speed,
+ -- WE CANNOT ACCEPT [speed]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM84Speed [84] Speed,
- -- WE CAN ACCEPT [specifiedDistance] [direction] AT [time]
- -- Urg(L)/Alr(L)/Resp(N)
- dM85DistanceSpecifiedDirectionTime [85] DistanceSpecifiedDirectionTime,
+ -- WE CAN ACCEPT [specifiedDistance] [direction] AT [time]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM85DistanceSpecifiedDirectionTime [85] DistanceSpecifiedDirectionTime,
- -- WE CANNOT ACCEPT [specifiedDistance] [direction]
- -- Urg(L)/Alr(L)/Resp(N)
- dM86DistanceSpecifiedDirection [86] DistanceSpecifiedDirection,
+ -- WE CANNOT ACCEPT [specifiedDistance] [direction]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM86DistanceSpecifiedDirection [86] DistanceSpecifiedDirection,
- -- WHEN CAN WE EXPECT CLIMB TO [level]
- -- Urg(L)/Alr(L)/Resp(Y)
- dM87Level [87] Level,
+ -- WHEN CAN WE EXPECT CLIMB TO [level]
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM87Level [87] Level,
- -- WHEN CAN WE EXPECT DESCENT TO [level]
- --Urg(L)/Alr(L)/Resp(Y)
- dM88Level [88] Level,
+ -- WHEN CAN WE EXPECT DESCENT TO [level]
+ --Urg(L)/Alr(L)/Resp(Y)
+ dM88Level [88] Level,
- -- MONITORING [unitname] [frequency]
- -- Urg(U)/Alr(M)/Resp(N)
- dM89UnitnameFrequency [89] UnitNameFrequency,
+ -- MONITORING [unitname] [frequency]
+ -- Urg(U)/Alr(M)/Resp(N)
+ dM89UnitnameFrequency [89] UnitNameFrequency,
- -- [freetext]
- -- Urg(N)/Alr(M)/Resp(N)
- dM90FreeText [90] FreeText,
+ -- [freetext]
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM90FreeText [90] FreeText,
- -- [freetext]
- -- Urg(N)/Alr(L)/Resp(Y)
- dM91FreeText [91] FreeText,
+ -- [freetext]
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM91FreeText [91] FreeText,
- -- [freetext]
- -- Urg(L)/Alr(L)/Resp(Y)
- dM92FreeText [92] FreeText,
+ -- [freetext]
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM92FreeText [92] FreeText,
- -- [freetext]
- -- Urg(U)/Alr(H)/Resp(N)
- dM93FreeText [93] FreeText,
+ -- [freetext]
+ -- Urg(U)/Alr(H)/Resp(N)
+ dM93FreeText [93] FreeText,
- -- [freetext]
- -- Urg(D)/Alr(H)/Resp(N)
- dM94FreeText [94] FreeText,
+ -- [freetext]
+ -- Urg(D)/Alr(H)/Resp(N)
+ dM94FreeText [94] FreeText,
- -- [freetext]
- -- Urg(U)/Alr(M)/Resp(N)
- dM95FreeText [95] FreeText,
+ -- [freetext]
+ -- Urg(U)/Alr(M)/Resp(N)
+ dM95FreeText [95] FreeText,
- -- [freetext]
- -- Urg(U)/Alr(L)/Resp(N)
- dM96FreeText [96] FreeText,
+ -- [freetext]
+ -- Urg(U)/Alr(L)/Resp(N)
+ dM96FreeText [96] FreeText,
- -- [freetext]
- -- Urg(L)/Alr(L)/Resp(N)
- dM97FreeText [97] FreeText,
+ -- [freetext]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM97FreeText [97] FreeText,
- -- [freetext]
- -- Urg(N)/Alr(N)/Resp(N)
- dM98FreeText [98] FreeText,
+ -- [freetext]
+ -- Urg(N)/Alr(N)/Resp(N)
+ dM98FreeText [98] FreeText,
- -- CURRENT DATA AUTHORITY
- -- Urg(L)/Alr(L)/Resp(N)
- dM99NULL [99] NULL,
+ -- CURRENT DATA AUTHORITY
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM99NULL [99] NULL,
- -- LOGICAL ACKNOWLEDGMENT
- -- Urg(N)/Alr(M)/Resp(N)
- dM100NULL [100] NULL,
+ -- LOGICAL ACKNOWLEDGMENT
+ -- Urg(N)/Alr(M)/Resp(N)
+ dM100NULL [100] NULL,
- -- REQUEST END OF SERVICE
- -- Urg(L)/Alr(L)/Resp(Y)
- dM101NULL [101] NULL,
+ -- REQUEST END OF SERVICE
+ -- Urg(L)/Alr(L)/Resp(Y)
+ dM101NULL [101] NULL,
- -- LANDING REPORT
- -- Urg(N)/Alr(N)/Resp(N)
- dM102NULL [102] NULL,
+ -- LANDING REPORT
+ -- Urg(N)/Alr(N)/Resp(N)
+ dM102NULL [102] NULL,
- -- CANCELLING IFR
- -- Urg(N)/Alr(L)/Resp(Y)
- dM103NULL [103] NULL,
+ -- CANCELLING IFR
+ -- Urg(N)/Alr(L)/Resp(Y)
+ dM103NULL [103] NULL,
- -- ETA[position][time]
- -- Urg(L)/Alr(L)/Resp(N)
- dM104PositionTime [104] PositionTime,
+ -- ETA[position][time]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM104PositionTime [104] PositionTime,
- -- ALTERNATE AERODROME[airport]
- -- Urg(L)/Alr(L)/Resp(N)
- dM105Airport [105] Airport,
+ -- ALTERNATE AERODROME[airport]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM105Airport [105] Airport,
- -- PREFERRED LEVEL[level]
- -- Urg(L)/Alr(L)/Resp(N)
- dM106Level [106] Level,
+ -- PREFERRED LEVEL[level]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM106Level [106] Level,
- -- NOT AUTHORIZED NEXT DATA AUTHORITY
- -- Urg(L)/Alr(L)/Resp(N)
- dM107NULL [107] NULL,
+ -- NOT AUTHORIZED NEXT DATA AUTHORITY
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM107NULL [107] NULL,
- -- DE-ICING COMPLETE
- -- Urg(L)/Alr(L)/Resp(N)
- dM108NULL [108] NULL,
+ -- DE-ICING COMPLETE
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM108NULL [108] NULL,
- -- TOP OF DESCENT [time]
- -- Urg(L)/Alr(L)/Resp(N)
- dM109Time [109] Time,
+ -- TOP OF DESCENT [time]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM109Time [109] Time,
- -- TOP OF DESCENT [position]
- -- Urg(L)/Alr(L)/Resp(N)
- dM110Position [110] Position,
+ -- TOP OF DESCENT [position]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM110Position [110] Position,
- -- TOP OF DESCENT [time] [position]
- -- Urg(L)/Alr(L)/Resp(N)
- dM111TimePosition [111] TimePosition,
+ -- TOP OF DESCENT [time] [position]
+ -- Urg(L)/Alr(L)/Resp(N)
+ dM111TimePosition [111] TimePosition,
- -- SQUAWKING 7500
- -- Urg(U)/Alr(H)/Resp(N)
- dM112NULL [112] NULL,
+ -- SQUAWKING 7500
+ -- Urg(U)/Alr(H)/Resp(N)
+ dM112NULL [112] NULL,
- -- [speedType] [speedType] [speedType] SPEED [speed]
- -- Urg(N)/Alr(L)/Resp(N)
- dM113SpeedTypeSpeedTypeSpeedTypeSpeed [113] SpeedTypeSpeedTypeSpeedTypeSpeed,
+ -- [speedType] [speedType] [speedType] SPEED [speed]
+ -- Urg(N)/Alr(L)/Resp(N)
+ dM113SpeedTypeSpeedTypeSpeedTypeSpeed [113] SpeedTypeSpeedTypeSpeedTypeSpeed,
- ...
+ ...
}
AircraftAddress ::= BIT STRING (SIZE(24))
@@ -1720,8 +1716,8 @@ Airport ::= IA5String (SIZE (4))
Altimeter ::= CHOICE
{
- altimeterEnglish [0] AltimeterEnglish,
- altimeterMetric [1] AltimeterMetric
+ altimeterEnglish [0] AltimeterEnglish,
+ altimeterMetric [1] AltimeterMetric
}
AltimeterEnglish ::= INTEGER (2200..3200)
@@ -1736,54 +1732,54 @@ ATSRouteDesignator ::= IA5String (SIZE (2..7))
ATWAlongTrackWaypoint ::= SEQUENCE
{
- position [0] Position,
- aTWDistance [1] ATWDistance,
- speed [2] Speed OPTIONAL,
- aTWLevels [3] ATWLevelSequence OPTIONAL
+ position [0] Position,
+ aTWDistance [1] ATWDistance,
+ speed [2] Speed OPTIONAL,
+ aTWLevels [3] ATWLevelSequence OPTIONAL
}
ATWLevel ::= SEQUENCE
{
- atw ATWLevelTolerance,
- level Level
+ atw ATWLevelTolerance,
+ level Level
}
ATWLevelSequence ::= SEQUENCE SIZE (1..2) OF ATWLevel
ATWLevelTolerance ::= ENUMERATED
{
- at (0),
- atorabove (1),
- atorbelow (2)
+ at (0),
+ atorabove (1),
+ atorbelow (2)
}
ATWDistance ::= SEQUENCE
{
- atwDistanceTolerance ATWDistanceTolerance,
- distance Distance
+ atwDistanceTolerance ATWDistanceTolerance,
+ distance Distance
}
ATWDistanceTolerance ::= ENUMERATED
{
- plus (0),
- minus (1)
+ plus (0),
+ minus (1)
}
ClearanceType ::= ENUMERATED
{
- noneSpecified (0),
- approach (1),
- departure (2),
- further (3),
- start-up (4),
- pushback (5),
- taxi (6),
- take-off (7),
- landing (8),
- oceanic (9),
- en-route (10),
- downstream (11),
- ...
+ noneSpecified (0),
+ approach (1),
+ departure (2),
+ further (3),
+ start-up (4),
+ pushback (5),
+ taxi (6),
+ take-off (7),
+ landing (8),
+ oceanic (9),
+ en-route (10),
+ downstream (11),
+ ...
}
Code ::= SEQUENCE SIZE (4) OF CodeOctalDigit
@@ -1792,21 +1788,21 @@ CodeOctalDigit ::= INTEGER (0..7)
ControlledTime ::= SEQUENCE
{
- time Time,
- timeTolerance TimeTolerance
+ time Time,
+ timeTolerance TimeTolerance
}
Date ::= SEQUENCE
{
- year Year,
- month Month,
- day Day
+ year Year,
+ month Month,
+ day Day
}
DateTimeGroup ::= SEQUENCE
{
- date Date,
- timehhmmss Timehhmmss
+ date Date,
+ timehhmmss Timehhmmss
}
Day ::= INTEGER (1..31)
@@ -1817,8 +1813,8 @@ DegreeIncrement ::= INTEGER (1..20)
Degrees ::= CHOICE
{
- degreesMagnetic [0] DegreesMagnetic,
- degreesTrue [1] DegreesTrue
+ degreesMagnetic [0] DegreesMagnetic,
+ degreesTrue [1] DegreesTrue
}
DegreesMagnetic ::= INTEGER (1..360)
@@ -1829,10 +1825,10 @@ DegreesTrue ::= INTEGER (1..360)
DepartureClearance ::= SEQUENCE
{
- aircraftFlightIdentification [0] AircraftFlightIdentification,
- clearanceLimit [1] Position,
- flightInformation [2] FlightInformation OPTIONAL,
- furtherInstructions [3] FurtherInstructions OPTIONAL
+ aircraftFlightIdentification [0] AircraftFlightIdentification,
+ clearanceLimit [1] Position,
+ flightInformation [2] FlightInformation OPTIONAL,
+ furtherInstructions [3] FurtherInstructions OPTIONAL
}
DepartureMinimumInterval ::= INTEGER (1..150)
@@ -1840,104 +1836,104 @@ DepartureMinimumInterval ::= INTEGER (1..150)
Direction ::= ENUMERATED
{
- left (0),
- right (1),
- eitherSide (2),
- north (3),
- south (4),
- east (5),
- west (6),
- northEast (7),
- northWest (8),
- southEast (9),
- southWest (10)
+ left (0),
+ right (1),
+ eitherSide (2),
+ north (3),
+ south (4),
+ east (5),
+ west (6),
+ northEast (7),
+ northWest (8),
+ southEast (9),
+ southWest (10)
}
DirectionDegrees ::= SEQUENCE
{
- direction Direction,
- degrees Degrees
+ direction Direction,
+ degrees Degrees
}
Distance ::= CHOICE
{
- distanceNm [0] DistanceNm,
- distanceKm [1] DistanceKm
+ distanceNm [0] DistanceNm,
+ distanceKm [1] DistanceKm
}
DistanceKm ::= INTEGER (0..8000)
--- unit = Kilometer, Range (0..2000), resolution = 0.25
+-- unit = Kilometer, Range (0..2000), resolution = 0.25
DistanceNm ::= INTEGER (0..9999)
--- unit = Nautical Mile, Range (0..999.9), resolution = 0.1
+-- unit = Nautical Mile, Range (0..999.9), resolution = 0.1
DistanceSpecified ::= CHOICE
{
- distanceSpecifiedNm [0] DistanceSpecifiedNm,
- distanceSpecifiedKm [1] DistanceSpecifiedKm
+ distanceSpecifiedNm [0] DistanceSpecifiedNm,
+ distanceSpecifiedKm [1] DistanceSpecifiedKm
}
DistanceSpecifiedDirection ::= SEQUENCE
{
- distanceSpecified DistanceSpecified,
- direction Direction
+ distanceSpecified DistanceSpecified,
+ direction Direction
}
DistanceSpecifiedDirectionTime ::= SEQUENCE
{
- distanceSpecifiedDirection DistanceSpecifiedDirection,
- time Time
+ distanceSpecifiedDirection DistanceSpecifiedDirection,
+ time Time
}
DistanceSpecifiedKm ::= INTEGER (1..500)
--- unit = Kilometer, Range (1..500), resolution = 1
+-- unit = Kilometer, Range (1..500), resolution = 1
DistanceSpecifiedNm ::= INTEGER (1..250)
--- unit = Nautical Mile, Range (1..250), resolution = 1
+-- unit = Nautical Mile, Range (1..250), resolution = 1
ErrorInformation ::= ENUMERATED
{
- unrecognizedMsgReferenceNumber (0),
- logicalAcknowledgmentNotAccepted (1),
- insufficientResources (2),
- invalidMessageElementCombination (3),
- invalidMessageElement (4),
- ...
+ unrecognizedMsgReferenceNumber (0),
+ logicalAcknowledgmentNotAccepted (1),
+ insufficientResources (2),
+ invalidMessageElementCombination (3),
+ invalidMessageElement (4),
+ ...
}
Facility ::= CHOICE{
- noFacility [0] NULL,
- facilityDesignation [1] FacilityDesignation
+ noFacility [0] NULL,
+ facilityDesignation [1] FacilityDesignation
}
FacilityDesignation ::= IA5String (SIZE (4..8))
FacilityFunction ::= ENUMERATED
{
- center (0),
- approach (1),
- tower (2),
- final (3),
- groundControl (4),
- clearanceDelivery (5),
- departure (6),
- control (7),
- radio (8),
- ...
+ center (0),
+ approach (1),
+ tower (2),
+ final (3),
+ groundControl (4),
+ clearanceDelivery (5),
+ departure (6),
+ control (7),
+ radio (8),
+ ...
}
FacilityDesignationAltimeter ::= SEQUENCE
{
- facilityDesignation FacilityDesignation,
- altimeter Altimeter
+ facilityDesignation FacilityDesignation,
+ altimeter Altimeter
}
FacilityDesignationATISCode ::= SEQUENCE
{
- facilityDesignation FacilityDesignation,
- aTISCode ATISCode
+ facilityDesignation FacilityDesignation,
+ aTISCode ATISCode
}
FacilityName ::= IA5String (SIZE (3..18))
@@ -1946,105 +1942,105 @@ Fix ::= IA5String (SIZE (1..5))
FixName ::= SEQUENCE
{
- name [0] Fix,
- latlon [1] LatitudeLongitude OPTIONAL
+ name [0] Fix,
+ latlon [1] LatitudeLongitude OPTIONAL
}
FlightInformation ::= CHOICE
{
- routeOfFlight [0] RouteInformation,
- levelsOfFlight [1] LevelsOfFlight,
- routeAndLevels [2] RouteAndLevels
+ routeOfFlight [0] RouteInformation,
+ levelsOfFlight [1] LevelsOfFlight,
+ routeAndLevels [2] RouteAndLevels
}
FreeText ::= IA5String (SIZE (1..256))
Frequency ::= CHOICE
{
- frequencyhf [0] Frequencyhf,
- frequencyvhf [1] Frequencyvhf,
- frequencyuhf [2] Frequencyuhf,
- frequencysatchannel [3] Frequencysatchannel
+ frequencyhf [0] Frequencyhf,
+ frequencyvhf [1] Frequencyvhf,
+ frequencyuhf [2] Frequencyuhf,
+ frequencysatchannel [3] Frequencysatchannel
}
Frequencyhf ::= INTEGER (2850..28000)
--- unit = Kilohertz, Range (2850..28000), resolution = 1
+-- unit = Kilohertz, Range (2850..28000), resolution = 1
Frequencysatchannel ::= NumericString (SIZE (12))
--- Frequencysatchannel corresponds to a 12 digit telephone number
+-- Frequencysatchannel corresponds to a 12 digit telephone number
Frequencyuhf ::= INTEGER (9000..15999)
--- unit = Megahertz, Range (225.000..399.975), resolution = 0.025
+-- unit = Megahertz, Range (225.000..399.975), resolution = 0.025
Frequencyvhf ::= INTEGER (23600..27398)
--- unit = Megahertz, Range (118.000..136.990), resolution = 0.005
+-- unit = Megahertz, Range (118.000..136.990), resolution = 0.005
FurtherInstructions ::= SEQUENCE
{
- code [0] Code OPTIONAL,
- frequencyDeparture [1] UnitNameFrequency OPTIONAL,
- clearanceExpiryTime [2] Time OPTIONAL,
- airportDeparture [3] Airport OPTIONAL,
- airportDestination [4] Airport OPTIONAL,
- timeDeparture [5] TimeDeparture OPTIONAL,
- runwayDeparture [6] Runway OPTIONAL,
- revisionNumber [7] RevisionNumber OPTIONAL,
- aTISCode [8] ATISCode OPTIONAL
+ code [0] Code OPTIONAL,
+ frequencyDeparture [1] UnitNameFrequency OPTIONAL,
+ clearanceExpiryTime [2] Time OPTIONAL,
+ airportDeparture [3] Airport OPTIONAL,
+ airportDestination [4] Airport OPTIONAL,
+ timeDeparture [5] TimeDeparture OPTIONAL,
+ runwayDeparture [6] Runway OPTIONAL,
+ revisionNumber [7] RevisionNumber OPTIONAL,
+ aTISCode [8] ATISCode OPTIONAL
}
Holdatwaypoint ::= SEQUENCE
{
- position [0] Position,
- holdatwaypointspeedlow [1] Speed OPTIONAL,
- aTWlevel [2] ATWLevel OPTIONAL,
- holdatwaypointspeedhigh [3] Speed OPTIONAL,
- direction [4] Direction OPTIONAL,
- degrees [5] Degrees OPTIONAL,
- eFCtime [6] Time OPTIONAL,
- legtype [7] LegType OPTIONAL
+ position [0] Position,
+ holdatwaypointspeedlow [1] Speed OPTIONAL,
+ aTWlevel [2] ATWLevel OPTIONAL,
+ holdatwaypointspeedhigh [3] Speed OPTIONAL,
+ direction [4] Direction OPTIONAL,
+ degrees [5] Degrees OPTIONAL,
+ eFCtime [6] Time OPTIONAL,
+ legtype [7] LegType OPTIONAL
}
HoldClearance ::= SEQUENCE
{
- position [0] Position,
- level [1] Level,
- degrees [2] Degrees,
- direction [3] Direction,
- legType [4] LegType OPTIONAL
+ position [0] Position,
+ level [1] Level,
+ degrees [2] Degrees,
+ direction [3] Direction,
+ legType [4] LegType OPTIONAL
}
Humidity ::= INTEGER (0..100)
--- unit = Percent humidity, Range (0..100), resolution = 1
+-- unit = Percent humidity, Range (0..100), resolution = 1
InterceptCourseFrom ::= SEQUENCE
{
- fromSelection InterceptCourseFromSelection,
- degrees Degrees
+ fromSelection InterceptCourseFromSelection,
+ degrees Degrees
}
InterceptCourseFromSelection ::= CHOICE
{
- publishedIdentifier [0] PublishedIdentifier,
- latitudeLongitude [1] LatitudeLongitude,
- placeBearingPlaceBearing [2] PlaceBearingPlaceBearing,
- placeBearingDistance [3] PlaceBearingDistance
+ publishedIdentifier [0] PublishedIdentifier,
+ latitudeLongitude [1] LatitudeLongitude,
+ placeBearingPlaceBearing [2] PlaceBearingPlaceBearing,
+ placeBearingDistance [3] PlaceBearingDistance
}
Icing ::= ENUMERATED
{
- reserved (0),
- light (1),
- moderate (2),
- severe (3)
+ reserved (0),
+ light (1),
+ moderate (2),
+ severe (3)
}
Latitude ::= SEQUENCE
{
- latitudeType LatitudeType,
- latitudeDirection LatitudeDirection
+ latitudeType LatitudeType,
+ latitudeDirection LatitudeDirection
}
LatitudeDegrees ::= INTEGER (0..90000)
@@ -2052,21 +2048,21 @@ LatitudeDegrees ::= INTEGER (0..90000)
LatitudeDegreesMinutes ::= SEQUENCE
{
- latitudeWholeDegrees LatitudeWholeDegrees,
- minutesLatLon MinutesLatLon
+ latitudeWholeDegrees LatitudeWholeDegrees,
+ minutesLatLon MinutesLatLon
}
LatitudeDegreesMinutesSeconds ::= SEQUENCE
{
- latitudeWholeDegrees LatitudeWholeDegrees,
- latlonWholeMinutes LatLonWholeMinutes,
- secondsLatLon SecondsLatLon
+ latitudeWholeDegrees LatitudeWholeDegrees,
+ latlonWholeMinutes LatLonWholeMinutes,
+ secondsLatLon SecondsLatLon
}
LatitudeDirection ::= ENUMERATED
{
- north (0),
- south (1)
+ north (0),
+ south (1)
}
LatitudeWholeDegrees ::= INTEGER (0..89)
@@ -2074,21 +2070,21 @@ LatitudeWholeDegrees ::= INTEGER (0..89)
LatitudeLongitude ::= SEQUENCE
{
- latitude [0] Latitude OPTIONAL,
- longitude [1] Longitude OPTIONAL
+ latitude [0] Latitude OPTIONAL,
+ longitude [1] Longitude OPTIONAL
}
LatitudeReportingPoints ::= SEQUENCE
{
- latitudeDirection LatitudeDirection,
- latitudeDegrees LatitudeDegrees
+ latitudeDirection LatitudeDirection,
+ latitudeDegrees LatitudeDegrees
}
LatitudeType ::= CHOICE
{
- latitudeDegrees [0] LatitudeDegrees,
- latitudeDegreesMinutes [1] LatitudeDegreesMinutes,
- latitudeDMS [2] LatitudeDegreesMinutesSeconds
+ latitudeDegrees [0] LatitudeDegrees,
+ latitudeDegreesMinutes [1] LatitudeDegreesMinutes,
+ latitudeDMS [2] LatitudeDegreesMinutesSeconds
}
LatLonWholeMinutes ::= INTEGER (0..59)
@@ -2096,14 +2092,14 @@ LatLonWholeMinutes ::= INTEGER (0..59)
LatLonReportingPoints ::= CHOICE
{
- latitudeReportingPoints [0] LatitudeReportingPoints,
- longitudeReportingPoints [1] LongitudeReportingPoints
+ latitudeReportingPoints [0] LatitudeReportingPoints,
+ longitudeReportingPoints [1] LongitudeReportingPoints
}
LegDistance ::= CHOICE
{
- legDistanceEnglish [0] LegDistanceEnglish,
- legDistanceMetric [1] LegDistanceMetric
+ legDistanceEnglish [0] LegDistanceEnglish,
+ legDistanceMetric [1] LegDistanceMetric
}
LegDistanceEnglish ::= INTEGER (0..50)
@@ -2117,14 +2113,14 @@ LegTime ::= INTEGER (0..10)
LegType ::= CHOICE
{
- legDistance [0] LegDistance,
- legTime [1] LegTime
+ legDistance [0] LegDistance,
+ legTime [1] LegTime
}
Level ::= CHOICE
{
- singleLevel [0] LevelType,
- blockLevel [1] SEQUENCE SIZE (2) OF LevelType
+ singleLevel [0] LevelType,
+ blockLevel [1] SEQUENCE SIZE (2) OF LevelType
}
LevelFeet ::= INTEGER (-60..7000)
@@ -2141,53 +2137,53 @@ LevelMeters ::= INTEGER (-30..25000)
LevelPosition ::= SEQUENCE
{
- level Level,
- position Position
+ level Level,
+ position Position
}
LevelProcedureName ::= SEQUENCE
{
- level Level,
- procedureName ProcedureName
+ level Level,
+ procedureName ProcedureName
}
LevelsOfFlight ::= CHOICE
{
- level [0] Level,
- procedureName [1] ProcedureName,
- levelProcedureName [2] LevelProcedureName
+ level [0] Level,
+ procedureName [1] ProcedureName,
+ levelProcedureName [2] LevelProcedureName
}
LevelSpeed ::= SEQUENCE
{
- level Level,
- speed SpeedSpeed
+ level Level,
+ speed SpeedSpeed
}
LevelSpeedSpeed ::= SEQUENCE
{
- level Level,
- speeds SpeedSpeed
+ level Level,
+ speeds SpeedSpeed
}
LevelTime ::= SEQUENCE
{
- level Level,
- time Time
+ level Level,
+ time Time
}
LevelType ::= CHOICE
{
- levelFeet [0] LevelFeet,
- levelMeters [1] LevelMeters,
- levelFlightLevel [2] LevelFlightLevel,
- levelFlightLevelMetric [3] LevelFlightLevelMetric
+ levelFeet [0] LevelFeet,
+ levelMeters [1] LevelMeters,
+ levelFlightLevel [2] LevelFlightLevel,
+ levelFlightLevelMetric [3] LevelFlightLevelMetric
}
Longitude ::= SEQUENCE
{
- longitudeType LongitudeType,
- longitudeDirection LongitudeDirection
+ longitudeType LongitudeType,
+ longitudeDirection LongitudeDirection
}
LongitudeDegrees ::= INTEGER (0..180000)
@@ -2195,21 +2191,21 @@ LongitudeDegrees ::= INTEGER (0..180000)
LongitudeDegreesMinutes ::= SEQUENCE
{
- longitudeWholeDegrees LongitudeWholeDegrees,
- minutesLatLon MinutesLatLon
+ longitudeWholeDegrees LongitudeWholeDegrees,
+ minutesLatLon MinutesLatLon
}
LongitudeDegreesMinutesSeconds ::= SEQUENCE
{
- longitudeWholeDegrees LongitudeWholeDegrees,
- latLonWholeMinutes LatLonWholeMinutes,
- secondsLatLon SecondsLatLon
+ longitudeWholeDegrees LongitudeWholeDegrees,
+ latLonWholeMinutes LatLonWholeMinutes,
+ secondsLatLon SecondsLatLon
}
LongitudeDirection ::= ENUMERATED
{
- east (0),
- west (1)
+ east (0),
+ west (1)
}
LongitudeWholeDegrees ::= INTEGER (0..179)
@@ -2217,15 +2213,15 @@ LongitudeWholeDegrees ::= INTEGER (0..179)
LongitudeReportingPoints ::= SEQUENCE
{
- longitudeDirection LongitudeDirection,
- longitudeDegrees LongitudeDegrees
+ longitudeDirection LongitudeDirection,
+ longitudeDegrees LongitudeDegrees
}
LongitudeType ::= CHOICE
{
- longitudeDegrees [0] LongitudeDegrees,
- longitudeDegreesMinutes [1] LongitudeDegreesMinutes,
- longitudeDMS [2] LongitudeDegreesMinutesSeconds
+ longitudeDegrees [0] LongitudeDegrees,
+ longitudeDegreesMinutes [1] LongitudeDegreesMinutes,
+ longitudeDMS [2] LongitudeDegreesMinutesSeconds
}
MinutesLatLon ::= INTEGER (0..5999)
@@ -2236,8 +2232,8 @@ Month ::= INTEGER (1..12)
Navaid ::= SEQUENCE
{
- name [0] NavaidName,
- latlon [1] LatitudeLongitude OPTIONAL
+ name [0] NavaidName,
+ latlon [1] LatitudeLongitude OPTIONAL
}
NavaidName ::= IA5String (SIZE (1..4))
@@ -2246,193 +2242,193 @@ PersonsOnBoard ::= INTEGER (1..1024)
PlaceBearing ::= SEQUENCE
{
- publishedIdentifier PublishedIdentifier,
- degrees Degrees
+ publishedIdentifier PublishedIdentifier,
+ degrees Degrees
}
PlaceBearingDistance ::= SEQUENCE
{
- publishedIdentifier PublishedIdentifier,
- degrees Degrees,
- distance Distance
+ publishedIdentifier PublishedIdentifier,
+ degrees Degrees,
+ distance Distance
}
PlaceBearingPlaceBearing ::= SEQUENCE SIZE (2) OF PlaceBearing
Position ::= CHOICE
{
- fixName [0] FixName,
- navaid [1] Navaid,
- airport [2] Airport,
- latitudeLongitude [3] LatitudeLongitude,
- placeBearingDistance [4] PlaceBearingDistance
+ fixName [0] FixName,
+ navaid [1] Navaid,
+ airport [2] Airport,
+ latitudeLongitude [3] LatitudeLongitude,
+ placeBearingDistance [4] PlaceBearingDistance
}
PositionDegrees ::= SEQUENCE
{
- position Position,
- degrees Degrees
+ position Position,
+ degrees Degrees
}
PositionDistanceSpecifiedDirection ::= SEQUENCE
{
- position Position,
- distanceSpecifiedDirection DistanceSpecifiedDirection
+ position Position,
+ distanceSpecifiedDirection DistanceSpecifiedDirection
}
PositionLevel ::= SEQUENCE
{
- position Position,
- level Level
+ position Position,
+ level Level
}
PositionLevelLevel ::= SEQUENCE
{
- position Position,
- levels LevelLevel
+ position Position,
+ levels LevelLevel
}
PositionLevelSpeed ::= SEQUENCE
{
- positionlevel PositionLevel,
- speed Speed
+ positionlevel PositionLevel,
+ speed Speed
}
PositionPosition ::= SEQUENCE SIZE (2) OF Position
PositionProcedureName ::= SEQUENCE
{
- position Position,
- procedureName ProcedureName
+ position Position,
+ procedureName ProcedureName
}
PositionReport ::= SEQUENCE
{
- positioncurrent [0] Position,
- timeatpositioncurrent [1] Time,
- level [2] Level,
- fixnext [3] Position OPTIONAL,
- timeetaatfixnext [4] Time OPTIONAL,
- fixnextplusone [5] Position OPTIONAL,
- timeetaatdestination [6] Time OPTIONAL,
- remainingFuel [7] RemainingFuel OPTIONAL,
- temperature [8] Temperature OPTIONAL,
- winds [9] Winds OPTIONAL,
- turbulence [10] Turbulence OPTIONAL,
- icing [11] Icing OPTIONAL,
- speed [12] Speed OPTIONAL,
- speedground [13] SpeedGround OPTIONAL,
- verticalChange [14] VerticalChange OPTIONAL,
- trackAngle [15] Degrees OPTIONAL,
- heading [16] Degrees OPTIONAL,
- distance [17] Distance OPTIONAL,
- humidity [18] Humidity OPTIONAL,
- reportedWaypointPosition[19] Position OPTIONAL,
- reportedWaypointTime [20] Time OPTIONAL,
- reportedWaypointLevel [21] Level OPTIONAL
+ positioncurrent [0] Position,
+ timeatpositioncurrent [1] Time,
+ level [2] Level,
+ fixnext [3] Position OPTIONAL,
+ timeetaatfixnext [4] Time OPTIONAL,
+ fixnextplusone [5] Position OPTIONAL,
+ timeetaatdestination [6] Time OPTIONAL,
+ remainingFuel [7] RemainingFuel OPTIONAL,
+ temperature [8] Temperature OPTIONAL,
+ winds [9] Winds OPTIONAL,
+ turbulence [10] Turbulence OPTIONAL,
+ icing [11] Icing OPTIONAL,
+ speed [12] Speed OPTIONAL,
+ speedground [13] SpeedGround OPTIONAL,
+ verticalChange [14] VerticalChange OPTIONAL,
+ trackAngle [15] Degrees OPTIONAL,
+ heading [16] Degrees OPTIONAL,
+ distance [17] Distance OPTIONAL,
+ humidity [18] Humidity OPTIONAL,
+ reportedWaypointPosition[19] Position OPTIONAL,
+ reportedWaypointTime [20] Time OPTIONAL,
+ reportedWaypointLevel [21] Level OPTIONAL
}
PositionRouteClearanceIndex ::= SEQUENCE
{
- position Position,
- routeClearanceIndex RouteClearanceIndex
+ position Position,
+ routeClearanceIndex RouteClearanceIndex
}
PositionSpeed ::= SEQUENCE
{
- position Position,
- speed Speed
+ position Position,
+ speed Speed
}
PositionSpeedSpeed ::= SEQUENCE
{
- position Position,
- speeds SpeedSpeed
+ position Position,
+ speeds SpeedSpeed
}
PositionTime ::= SEQUENCE
{
- position Position,
- time Time
+ position Position,
+ time Time
}
PositionTimeLevel ::= SEQUENCE
{
- positionTime PositionTime,
- level Level
+ positionTime PositionTime,
+ level Level
}
PositionTimeTime ::= SEQUENCE
{
- position Position,
- times TimeTime
+ position Position,
+ times TimeTime
}
PositionUnitNameFrequency ::= SEQUENCE
{
- position Position,
- unitname UnitName,
- frequency Frequency
+ position Position,
+ unitname UnitName,
+ frequency Frequency
}
Procedure ::= IA5String (SIZE (1..20))
ProcedureName ::= SEQUENCE
{
- type [0] ProcedureType,
- procedure [1] Procedure,
- transition [2] ProcedureTransition OPTIONAL
+ type [0] ProcedureType,
+ procedure [1] Procedure,
+ transition [2] ProcedureTransition OPTIONAL
}
ProcedureTransition ::= IA5String (SIZE (1..5))
ProcedureType ::= ENUMERATED
{
- arrival (0),
- approach (1),
- departure (2)
+ arrival (0),
+ approach (1),
+ departure (2)
}
PublishedIdentifier ::= CHOICE
{
- fixName [0] FixName,
- navaid [1] Navaid
+ fixName [0] FixName,
+ navaid [1] Navaid
}
RemainingFuel ::= Time
RemainingFuelPersonsOnBoard ::= SEQUENCE
{
- remainingFuel RemainingFuel,
- personsOnBoard PersonsOnBoard
+ remainingFuel RemainingFuel,
+ personsOnBoard PersonsOnBoard
}
ReportingPoints ::= SEQUENCE
{
- latLonReportingPoints [0] LatLonReportingPoints,
- degreeIncrement [1] DegreeIncrement OPTIONAL
+ latLonReportingPoints [0] LatLonReportingPoints,
+ degreeIncrement [1] DegreeIncrement OPTIONAL
}
RevisionNumber ::= INTEGER (1..16)
RouteAndLevels ::= SEQUENCE
{
- routeOfFlight RouteInformation,
- levelsOfFlight LevelsOfFlight
+ routeOfFlight RouteInformation,
+ levelsOfFlight LevelsOfFlight
}
RouteClearance ::= SEQUENCE
{
- airportDeparture [0] Airport OPTIONAL,
- airportDestination [1] Airport OPTIONAL,
- runwayDeparture [2] Runway OPTIONAL,
- procedureDeparture [3] ProcedureName OPTIONAL,
- runwayArrival [4] Runway OPTIONAL,
- procedureApproach [5] ProcedureName OPTIONAL,
- procedureArrival [6] ProcedureName OPTIONAL,
- routeInformations [7] SEQUENCE SIZE (1..128) OF RouteInformation OPTIONAL,
- routeInformationAdditional [8] RouteInformationAdditional OPTIONAL
+ airportDeparture [0] Airport OPTIONAL,
+ airportDestination [1] Airport OPTIONAL,
+ runwayDeparture [2] Runway OPTIONAL,
+ procedureDeparture [3] ProcedureName OPTIONAL,
+ runwayArrival [4] Runway OPTIONAL,
+ procedureApproach [5] ProcedureName OPTIONAL,
+ procedureArrival [6] ProcedureName OPTIONAL,
+ routeInformations [7] SEQUENCE SIZE (1..128) OF RouteInformation OPTIONAL,
+ routeInformationAdditional [8] RouteInformationAdditional OPTIONAL
}
RouteClearanceIndex ::= INTEGER (1..2)
@@ -2443,35 +2439,35 @@ RouteClearanceIndex ::= INTEGER (1..2)
RouteInformation ::= CHOICE
{
- publishedIdentifier [0] PublishedIdentifier,
- latitudeLongitude [1] LatitudeLongitude,
- placeBearingPlaceBearing [2] PlaceBearingPlaceBearing,
- placeBearingDistance [3] PlaceBearingDistance,
- aTSRouteDesignator [4] ATSRouteDesignator
+ publishedIdentifier [0] PublishedIdentifier,
+ latitudeLongitude [1] LatitudeLongitude,
+ placeBearingPlaceBearing [2] PlaceBearingPlaceBearing,
+ placeBearingDistance [3] PlaceBearingDistance,
+ aTSRouteDesignator [4] ATSRouteDesignator
}
RouteInformationAdditional ::= SEQUENCE
{
- aTWAlongTrackWaypoints [0] SEQUENCE SIZE (1..8) OF ATWAlongTrackWaypoint OPTIONAL,
- reportingpoints [1] ReportingPoints OPTIONAL,
- interceptCourseFroms [2] SEQUENCE SIZE (1..4) OF InterceptCourseFrom OPTIONAL,
- holdAtWaypoints [3] SEQUENCE SIZE (1..8) OF Holdatwaypoint OPTIONAL,
- waypointSpeedLevels [4] SEQUENCE SIZE (1..32) OF WaypointSpeedLevel OPTIONAL,
- rTARequiredTimeArrivals [5] SEQUENCE SIZE (1..32) OF RTARequiredTimeArrival OPTIONAL
+ aTWAlongTrackWaypoints [0] SEQUENCE SIZE (1..8) OF ATWAlongTrackWaypoint OPTIONAL,
+ reportingpoints [1] ReportingPoints OPTIONAL,
+ interceptCourseFroms [2] SEQUENCE SIZE (1..4) OF InterceptCourseFrom OPTIONAL,
+ holdAtWaypoints [3] SEQUENCE SIZE (1..8) OF Holdatwaypoint OPTIONAL,
+ waypointSpeedLevels [4] SEQUENCE SIZE (1..32) OF WaypointSpeedLevel OPTIONAL,
+ rTARequiredTimeArrivals [5] SEQUENCE SIZE (1..32) OF RTARequiredTimeArrival OPTIONAL
}
RTARequiredTimeArrival ::= SEQUENCE
{
- position [0] Position,
- rTATime [1] RTATime,
- rTATolerance [2] RTATolerance OPTIONAL
+ position [0] Position,
+ rTATime [1] RTATime,
+ rTATolerance [2] RTATolerance OPTIONAL
}
RTATime ::= SEQUENCE
{
- time Time,
- timeTolerance TimeTolerance
+ time Time,
+ timeTolerance TimeTolerance
}
RTATolerance ::= INTEGER (1..150)
@@ -2479,30 +2475,30 @@ RTATolerance ::= INTEGER (1..150)
Runway ::= SEQUENCE
{
- direction RunwayDirection,
- configuration RunwayConfiguration
+ direction RunwayDirection,
+ configuration RunwayConfiguration
}
RunwayDirection ::= INTEGER (1..36)
RunwayConfiguration ::= ENUMERATED
{
- left (0),
- right (1),
- center (2),
- none (3)
+ left (0),
+ right (1),
+ center (2),
+ none (3)
}
RunwayRVR ::= SEQUENCE
{
- runway Runway,
- rVR RVR
+ runway Runway,
+ rVR RVR
}
RVR ::= CHOICE
{
- rVRFeet [0] RVRFeet,
- rVRMeters [1] RVRMeters
+ rVRFeet [0] RVRFeet,
+ rVRMeters [1] RVRMeters
}
RVRFeet ::= INTEGER (0..6100)
@@ -2516,13 +2512,13 @@ SecondsLatLon ::= INTEGER (0..59)
Speed ::= CHOICE
{
- speedIndicated [0] SpeedIndicated,
- speedIndicatedMetric [1] SpeedIndicatedMetric,
- speedTrue [2] SpeedTrue,
- speedTrueMetric [3] SpeedTrueMetric,
- speedGround [4] SpeedGround,
- speedGroundMetric [5] SpeedGroundMetric,
- speedMach [6] SpeedMach
+ speedIndicated [0] SpeedIndicated,
+ speedIndicatedMetric [1] SpeedIndicatedMetric,
+ speedTrue [2] SpeedTrue,
+ speedTrueMetric [3] SpeedTrueMetric,
+ speedGround [4] SpeedGround,
+ speedGroundMetric [5] SpeedGroundMetric,
+ speedMach [6] SpeedMach
}
SpeedIndicated ::= INTEGER (0..400)
@@ -2543,8 +2539,8 @@ SpeedMach ::= INTEGER (500..4000)
SpeedSpeed ::= SEQUENCE SIZE (2) OF Speed
SpeedTime ::= SEQUENCE
{
- speed Speed,
- time Time
+ speed Speed,
+ time Time
}
SpeedTrue ::= INTEGER (0..2000)
@@ -2555,24 +2551,24 @@ SpeedTrueMetric ::= INTEGER (0..4000)
SpeedType ::= ENUMERATED
{
- noneSpecified (0),
- indicated (1),
- true (2),
- ground (3),
- mach (4),
- approach (5),
- cruise (6),
- minimum (7),
- maximum (8),
- ...
+ noneSpecified (0),
+ indicated (1),
+ true (2),
+ ground (3),
+ mach (4),
+ approach (5),
+ cruise (6),
+ minimum (7),
+ maximum (8),
+ ...
}
SpeedTypeSpeedTypeSpeedType ::= SEQUENCE SIZE (3) OF SpeedType
SpeedTypeSpeedTypeSpeedTypeSpeed ::= SEQUENCE
{
- speedTypes SpeedTypeSpeedTypeSpeedType,
- speed Speed
+ speedTypes SpeedTypeSpeedTypeSpeedType,
+ speed Speed
}
Temperature ::= INTEGER (-100..100)
@@ -2580,43 +2576,43 @@ Temperature ::= INTEGER (-100..100)
Time ::= SEQUENCE
{
- hours TimeHours,
- minutes TimeMinutes
+ hours TimeHours,
+ minutes TimeMinutes
}
TimeLevel ::= SEQUENCE
{
- time Time,
- level Level
+ time Time,
+ level Level
}
TimeDeparture ::= SEQUENCE
{
- timeDepartureAllocated [0] Time OPTIONAL,
- timeDepartureControlled [1] ControlledTime OPTIONAL,
- timeDepartureClearanceExpected [2] Time OPTIONAL,
- departureMinimumInterval [3] DepartureMinimumInterval OPTIONAL
+ timeDepartureAllocated [0] Time OPTIONAL,
+ timeDepartureControlled [1] ControlledTime OPTIONAL,
+ timeDepartureClearanceExpected [2] Time OPTIONAL,
+ departureMinimumInterval [3] DepartureMinimumInterval OPTIONAL
}
TimeDistanceSpecifiedDirection ::= SEQUENCE
{
- time Time,
- distanceSpecifiedDirection DistanceSpecifiedDirection
+ time Time,
+ distanceSpecifiedDirection DistanceSpecifiedDirection
}
TimeDistanceToFromPosition ::= SEQUENCE
{
- time Time,
- distance Distance,
- tofrom ToFrom,
- position Position
+ time Time,
+ distance Distance,
+ tofrom ToFrom,
+ position Position
}
Timehhmmss ::= SEQUENCE
{
- hoursminutes Time,
- seconds TimeSeconds
+ hoursminutes Time,
+ seconds TimeSeconds
}
TimeHours ::= INTEGER (0..23)
@@ -2624,9 +2620,9 @@ TimeHours ::= INTEGER (0..23)
TimeUnitNameFrequency ::= SEQUENCE
{
- time Time,
- unitName UnitName,
- frequency Frequency
+ time Time,
+ unitName UnitName,
+ frequency Frequency
}
TimeMinutes ::= INTEGER (0..59)
@@ -2634,20 +2630,20 @@ TimeMinutes ::= INTEGER (0..59)
TimePosition ::= SEQUENCE
{
- time Time,
- position Position
+ time Time,
+ position Position
}
TimePositionLevel ::= SEQUENCE
{
- timeposition TimePosition,
- level Level
+ timeposition TimePosition,
+ level Level
}
TimePositionLevelSpeed ::= SEQUENCE
{
- timeposition TimePosition,
- levelspeed LevelSpeed
+ timeposition TimePosition,
+ levelspeed LevelSpeed
}
TimeSeconds ::= INTEGER (0..59)
@@ -2655,92 +2651,92 @@ TimeSeconds ::= INTEGER (0..59)
TimeSpeed ::= SEQUENCE
{
- time Time,
- speed Speed
+ time Time,
+ speed Speed
}
TimeSpeedSpeed ::= SEQUENCE
{
- time Time,
- speedspeed SpeedSpeed
+ time Time,
+ speedspeed SpeedSpeed
}
TimeTime ::= SEQUENCE SIZE (2) OF Time
TimeToFromPosition ::= SEQUENCE
{
- time Time,
- tofrom ToFrom,
- position Position
+ time Time,
+ tofrom ToFrom,
+ position Position
}
TimeTolerance ::= ENUMERATED
{
- at (0),
- atorafter (1),
- atorbefore(2)
+ at (0),
+ atorafter (1),
+ atorbefore(2)
}
ToFrom ::= ENUMERATED
{
- to (0),
- from (1)
+ to (0),
+ from (1)
}
ToFromPosition ::= SEQUENCE
{
- toFrom ToFrom,
- position Position
+ toFrom ToFrom,
+ position Position
}
TrafficType ::= ENUMERATED
{
- noneSpecified (0),
- oppositeDirection (1),
- sameDirection (2),
- converging (3),
- crossing (4),
- diverging (5),
- ...
+ noneSpecified (0),
+ oppositeDirection (1),
+ sameDirection (2),
+ converging (3),
+ crossing (4),
+ diverging (5),
+ ...
}
Turbulence ::= ENUMERATED
{
- light (0),
- moderate (1),
- severe (2)
+ light (0),
+ moderate (1),
+ severe (2)
}
UnitName ::= SEQUENCE
{
- facilityDesignation [0] FacilityDesignation,
- facilityName [1] FacilityName OPTIONAL,
- facilityFunction [2] FacilityFunction
+ facilityDesignation [0] FacilityDesignation,
+ facilityName [1] FacilityName OPTIONAL,
+ facilityFunction [2] FacilityFunction
}
UnitNameFrequency ::= SEQUENCE
{
- unitName UnitName,
- frequency Frequency
+ unitName UnitName,
+ frequency Frequency
}
VersionNumber ::= INTEGER (0..15)
VerticalChange ::= SEQUENCE
{
- direction VerticalDirection,
- rate VerticalRate
+ direction VerticalDirection,
+ rate VerticalRate
}
VerticalDirection ::= ENUMERATED
{
- up (0),
- down (1)
+ up (0),
+ down (1)
}
VerticalRate ::= CHOICE
{
- verticalRateEnglish [0] VerticalRateEnglish,
- verticalRateMetric [1] VerticalRateMetric
+ verticalRateEnglish [0] VerticalRateEnglish,
+ verticalRateMetric [1] VerticalRateMetric
}
VerticalRateEnglish ::= INTEGER (0..3000)
@@ -2751,9 +2747,9 @@ VerticalRateMetric ::= INTEGER (0..1000)
WaypointSpeedLevel ::= SEQUENCE
{
- position [0] Position,
- speed [1] Speed OPTIONAL,
- aTWLevels [2] ATWLevelSequence OPTIONAL
+ position [0] Position,
+ speed [1] Speed OPTIONAL,
+ aTWLevels [2] ATWLevelSequence OPTIONAL
}
WindDirection ::= INTEGER (1..360)
@@ -2761,14 +2757,14 @@ WindDirection ::= INTEGER (1..360)
Winds ::= SEQUENCE
{
- direction WindDirection,
- speed WindSpeed
+ direction WindDirection,
+ speed WindSpeed
}
WindSpeed ::= CHOICE
{
- windSpeedEnglish [0] WindSpeedEnglish,
- windSpeedMetric [1] WindSpeedMetric
+ windSpeedEnglish [0] WindSpeedEnglish,
+ windSpeedMetric [1] WindSpeedMetric
}
WindSpeedEnglish ::= INTEGER (0..255)
@@ -2787,11 +2783,11 @@ END
-- Editor modelines - http://www.wireshark.org/tools/modelines.html
--
-- Local variables:
--- c-basic-offset: 2
--- tab-width: 2
--- indent-tabs-mode: t
+-- c-basic-offset: 4
+-- tab-width: 8
+-- indent-tabs-mode: nil
-- End:
--
--- vi: set shiftwidth=2 tabstop=2 noexpandtab:
--- :indentSize=2:tabSize=2:noTabs=false:
+-- vi: set shiftwidth=4 tabstop=8 expandtab:
+-- :indentSize=4:tabSize=8:noTabs=true:
--
diff --git a/asn1/atn-cpdlc/atn-cpdlc.cnf b/asn1/atn-cpdlc/atn-cpdlc.cnf
index b1ef6efb53..f9a16b8821 100644
--- a/asn1/atn-cpdlc/atn-cpdlc.cnf
+++ b/asn1/atn-cpdlc/atn-cpdlc.cnf
@@ -1,7 +1,3 @@
-# c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
-# vi: set shiftwidth=2 tabstop=2 noexpandtab:
-# :indentSize=2:tabSize=2:noTabs=false:
-
#.MODULE_IMPORT
#.END
@@ -13,126 +9,126 @@
#.PDU_NEW
AircraftPDUs
- GroundPDUs
- ProtectedAircraftPDUs
- ProtectedGroundPDUs
+ GroundPDUs
+ ProtectedAircraftPDUs
+ ProtectedGroundPDUs
#.END
#.FIELD_RENAME
-AircraftPDUs/send aircraftpdus_send
-GroundPDUs/send groundpdus_send
-ATCUplinkMessageData/constrainedData atcuplinkmessagedata_constraineddata
-ATCDownlinkMessageData/constrainedData atcdownlinkmessagedata_constraineddata
-ATCDownlinkMessageData/elementIds/_item atcdownlinkmessagedata_elementids_item
-ATCUplinkMessageData/elementIds/_item atcuplinkmessagedata_elementids_item
-ATCDownlinkMessageData/elementIds atcdownlinkmessagedata_elementids
-ATCUplinkMessageData/elementIds atcuplinkmessagedata_elementids
-ATCUplinkMessage/messageData atcuplinkmessage_messagedata
-ATCDownlinkMessage/messageData atcdownlinkmessage_messagedata
+AircraftPDUs/send aircraftpdus_send
+GroundPDUs/send groundpdus_send
+ATCUplinkMessageData/constrainedData atcuplinkmessagedata_constraineddata
+ATCDownlinkMessageData/constrainedData atcdownlinkmessagedata_constraineddata
+ATCDownlinkMessageData/elementIds/_item atcdownlinkmessagedata_elementids_item
+ATCUplinkMessageData/elementIds/_item atcuplinkmessagedata_elementids_item
+ATCDownlinkMessageData/elementIds atcdownlinkmessagedata_elementids
+ATCUplinkMessageData/elementIds atcuplinkmessagedata_elementids
+ATCUplinkMessage/messageData atcuplinkmessage_messagedata
+ATCDownlinkMessage/messageData atcdownlinkmessage_messagedata
Runway/direction runway_direction
-Winds/direction winds_direction
-DirectionDegrees/direction direction
-DistanceSpecifiedDirection/direction direction
-Holdatwaypoint/direction direction
-HoldClearance/direction direction
-VerticalChange/direction vertical_direction
-FixName/name fixname_name
-Navaid/name navaid_name
-Winds/speed winds_speed
-LevelSpeed/speed levelspeed_speed
-ProtectedGroundPDUs/abortProvider pmcpdlcproviderabortreason
+Winds/direction winds_direction
+DirectionDegrees/direction direction
+DistanceSpecifiedDirection/direction direction
+Holdatwaypoint/direction direction
+HoldClearance/direction direction
+VerticalChange/direction vertical_direction
+FixName/name fixname_name
+Navaid/name navaid_name
+Winds/speed winds_speed
+LevelSpeed/speed levelspeed_speed
+ProtectedGroundPDUs/abortProvider pmcpdlcproviderabortreason
ProtectedAircraftPDUs/abortProvider pmcpdlcproviderabortreason
-ProtectedGroundPDUs/abortUser pmcpdlcuserabortreason
-ProtectedAircraftPDUs/abortUser pmcpdlcuserabortreason
-ProtectedStartDownMessage/mode protectedmode
-ProtectedGroundPDUs/send protecteduplinkmessage
-ProtectedStartDownMessage/startDownlinkMessage protecteddownlinkmessage
-ProtectedGroundPDUs/startup protecteduplinkmessage
-ProtectedAircraftPDUs/startdown protectedstartDownmessage
+ProtectedGroundPDUs/abortUser pmcpdlcuserabortreason
+ProtectedAircraftPDUs/abortUser pmcpdlcuserabortreason
+ProtectedStartDownMessage/mode protectedmode
+ProtectedGroundPDUs/send protecteduplinkmessage
+ProtectedStartDownMessage/startDownlinkMessage protecteddownlinkmessage
+ProtectedGroundPDUs/startup protecteduplinkmessage
+ProtectedAircraftPDUs/startdown protectedstartDownmessage
#.END
#.FN_BODY CPDLCMessage
- tvbuff_t *tvb_usr = NULL;
+ tvbuff_t *tvb_usr = NULL;
- offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &tvb_usr, NULL);
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &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;
- }
- }
+ 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;
+ }
+ }
#.END
#.FN_BODY AlgorithmIdentifier
- proto_tree *top_tree=NULL;
+ proto_tree *top_tree=NULL;
- offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree, NULL);
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree, NULL);
#.END
#.FN_BODY AircraftFlightIdentification
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 8, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 8, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY Airport
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 4, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 4, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY FacilityDesignation
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 8, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,4, 8, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY FreeText
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 256, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 256, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY NavaidName
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 4, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 4, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY Procedure
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 20, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 20, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY ProcedureTransition
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY Fix
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 5, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY ATISCode
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 1, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,1, 1, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY ATSRouteDesignator
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 7, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,2, 7, FALSE, ia5alpha , 127, NULL);
#.END
#.FN_BODY FacilityName
- offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,3, 18, FALSE, ia5alpha , 127, NULL);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,3, 18, FALSE, ia5alpha , 127, NULL);
#.END
#
# Editor modelines - http://www.wireshark.org/tools/modelines.html
#
# Local variables:
-# c-basic-offset: 2
-# tab-width: 2
-# indent-tabs-mode: t
+# c-basic-offset: 4
+# tab-width: 8
+# indent-tabs-mode: nil
# End:
#
-# vi: set shiftwidth=2 tabstop=2 noexpandtab:
-# :indentSize=2:tabSize=2:noTabs=false:
+# vi: set shiftwidth=4 tabstop=8 expandtab:
+# :indentSize=4:tabSize=8:noTabs=true:
#
diff --git a/asn1/atn-cpdlc/packet-atn-cpdlc-template.c b/asn1/atn-cpdlc/packet-atn-cpdlc-template.c
index 5db061e3d3..c08071ceb3 100644
--- a/asn1/atn-cpdlc/packet-atn-cpdlc-template.c
+++ b/asn1/atn-cpdlc/packet-atn-cpdlc-template.c
@@ -1,8 +1,3 @@
-/* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
- * vi: set shiftwidth=2 tabstop=2 noexpandtab:
- * :indentSize=2:tabSize=2:noTabs=false:
- */
-
/* packet-atn-cpdlc-template.c
* By Mathias Guettler <guettler@web.de>
* Copyright 2013
@@ -42,9 +37,9 @@
/*
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.
+ 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"
@@ -65,25 +60,25 @@ static const char *object_identifier_id;
/* forward declarations */
static int dissect_GroundPDUs_PDU(
- tvbuff_t *tvb _U_,
- packet_info *pinfo _U_,
- proto_tree *tree _U_,
- void *data _U_);
+ 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_);
+ 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_);
+ 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_);
+ tvbuff_t *tvb _U_,
+ packet_info *pinfo _U_,
+ proto_tree *tree _U_,
+ void *data _U_);
#include "packet-atn-cpdlc-hf.c"
@@ -98,206 +93,206 @@ static int proto_atn_cpdlc = -1;
static int
dissect_atn_cpdlc(
- tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- void *data _U_)
+ 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);
+ /* 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 gboolean
dissect_atn_cpdlc_heur(
- tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- void *data _U_)
+ tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ void *data _U_)
{
- atn_conversation_t *atn_cv = NULL;
- volatile gboolean is_atn_cpdlc = FALSE;
- volatile gboolean 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 succesfully */
- /* (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;
+ atn_conversation_t *atn_cv = NULL;
+ volatile gboolean is_atn_cpdlc = FALSE;
+ volatile gboolean 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 succesfully */
+ /* (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;
}
@@ -305,56 +300,55 @@ dissect_atn_cpdlc_heur(
void proto_register_atn_cpdlc (void)
{
static hf_register_info hf_atn_cpdlc[] = {
- #include "packet-atn-cpdlc-hfarr.c"
- };
-
- static gint *ett[] = {
- #include "packet-atn-cpdlc-ettarr.c"
- &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));
-
- new_register_dissector(
- "atn-cpdlc",
- dissect_atn_cpdlc,
- proto_atn_cpdlc);
+ #include "packet-atn-cpdlc-hfarr.c"
+ };
+
+ static gint *ett[] = {
+ #include "packet-atn-cpdlc-ettarr.c"
+ &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));
+
+ new_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);
+ /* 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 - http://www.wireshark.org/tools/modelines.html
*
* Local variables:
- * c-basic-offset: 2
- * tab-width: 2
- * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=2 tabstop=2 noexpandtab:
- * :indentSize=2:tabSize=2:noTabs=false:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
diff --git a/asn1/atn-ulcs/atn-ulcs.asn b/asn1/atn-ulcs/atn-ulcs.asn
index 92a3a1a7e8..8aad7b97e3 100644
--- a/asn1/atn-ulcs/atn-ulcs.asn
+++ b/asn1/atn-ulcs/atn-ulcs.asn
@@ -1,46 +1,42 @@
--- c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
--- vi: set shiftwidth=2 tabstop=2 noexpandtab:
--- :indentSize=2:tabSize=2:noTabs=false:
-
-- File: atn-ulcs.asn
-- Sub-Volume IV ASN.1 reference definitions for ICAO Doc. 9705,
-- Second Edition
-- Version 1.1, 03 Oct 2001
--- The majority of the ULCS protocol definitions are specified in the ULCS
+-- The majority of the ULCS protocol definitions are specified in the ULCS
-- Technical Provisions by reference to ISO/IEC Standards and/or ITU-T
--- Recommendations. The ASN.1 definitions are reproduced here for ease of
--- reference and to allow explanatory annotations to be added. In the case of
--- any discrepancy between the definitions here and the corresponding
--- definitions defined in or referenced by the ULCS Technical Provisions,
+-- Recommendations. The ASN.1 definitions are reproduced here for ease of
+-- reference and to allow explanatory annotations to be added. In the case of
+-- any discrepancy between the definitions here and the corresponding
+-- definitions defined in or referenced by the ULCS Technical Provisions,
-- the latter are assumed to take precedence.
-- The following ASN.1 modules are included here:
--- * General ULCS types. These are ASN.1 definitions used in the ULCS
--- Technical Provisions, though there is no equivalent ASN.1 module
--- defined there. The definitions in this module would generally be
--- incorporated into a wider "user" protocol module if using ASN.1 automated
--- tools. They are defined in a separate module here so that their syntax can
+-- * General ULCS types. These are ASN.1 definitions used in the ULCS
+-- Technical Provisions, though there is no equivalent ASN.1 module
+-- defined there. The definitions in this module would generally be
+-- incorporated into a wider "user" protocol module if using ASN.1 automated
+-- tools. They are defined in a separate module here so that their syntax can
-- easily be verified by an ASN.1 syntax checker.
--- * Connection-oriented ACSE definitions. This is equivalent to the "ACSE-1"
+-- * Connection-oriented ACSE definitions. This is equivalent to the "ACSE-1"
-- module defined in the connection-oriented ACSE protocol standard.
--- * Information Framework. This is an extract of relevant definitions from the
--- InformationFramework module in the OSI standard "Directory : Models". The
--- types defined in this module are not actively used in the ULCS protocol, but
--- they are needed to satisfy IMPORTS statements in the ACSE definitions, and
--- to allow certain CHOICE types in the ACSE definitions to be sorted correctly
--- into canonical order.
+-- * Information Framework. This is an extract of relevant definitions from the
+-- InformationFramework module in the OSI standard "Directory : Models". The
+-- types defined in this module are not actively used in the ULCS protocol, but
+-- they are needed to satisfy IMPORTS statements in the ACSE definitions, and
+-- to allow certain CHOICE types in the ACSE definitions to be sorted correctly
+-- into canonical order.
--- Note.- In the following definitions, the ASN.1 comment " X" indicates
--- choice elements and optional elements in sequence types that are defined as
--- "Excluded" in the ULCS profile. That is, implementations of ULCS provisions
--- are never required to encode values for such elements (though they are
--- required to indicate the absence of these elements in all instances, by means
--- of bits in the appropriate PER preamble or choice index).
+-- Note.- In the following definitions, the ASN.1 comment " X" indicates
+-- choice elements and optional elements in sequence types that are defined as
+-- "Excluded" in the ULCS profile. That is, implementations of ULCS provisions
+-- are never required to encode values for such elements (though they are
+-- required to indicate the absence of these elements in all instances, by means
+-- of bits in the appropriate PER preamble or choice index).
-- General ULCS types
@@ -57,41 +53,41 @@ ULCS DEFINITIONS ::= BEGIN
--Fully-encoded-data ::= SEQUENCE SIZE (1, ...) OF PDV-list
Fully-encoded-data ::= SEQUENCE SIZE (1, ..., 2..MAX) OF PDV-list
-- contains one or more presentation-data-value-list (PDV-list) values
--- ATN commentary: The SIZE constraint above differs from the referenced
--- standard, which specifies (in 8.2):
+-- ATN commentary: The SIZE constraint above differs from the referenced
+-- standard, which specifies (in 8.2):
-- Fully-encoded-data ::= SEQUENCE SIZE (1, ..., 2..MAX) OF PDV-list.
--- The ULCS provisions specify a simplified, but compatible, efficiency
--- constraint as there will never be more than one element in the SEQUENCE OF
--- for the foreseeable future.
+-- The ULCS provisions specify a simplified, but compatible, efficiency
+-- constraint as there will never be more than one element in the SEQUENCE OF
+-- for the foreseeable future.
-- This simplifies matters for some compilers.
PDV-list ::= SEQUENCE {
- transfer-syntax-name Transfer-syntax-name OPTIONAL, -- X
- presentation-context-identifier Presentation-context-identifier,
- presentation-data-values CHOICE
- { single-ASN1-type [0] ABSTRACT-SYNTAX.&Type
- (CONSTRAINED BY {
- -- Type corresponding to presentation context identifier -- }) , -- X
- octet-aligned [1] IMPLICIT OCTET STRING, -- X
- arbitrary [2] IMPLICIT BIT STRING }
- -- contains one or more presentation data values from the same
- -- presentation context.
- -- ATN Commentary: only the arbitrary BIT STRING encoding choice is used.
+ transfer-syntax-name Transfer-syntax-name OPTIONAL, -- X
+ presentation-context-identifier Presentation-context-identifier,
+ presentation-data-values CHOICE
+ { single-ASN1-type [0] ABSTRACT-SYNTAX.&Type
+ (CONSTRAINED BY {
+ -- Type corresponding to presentation context identifier -- }) , -- X
+ octet-aligned [1] IMPLICIT OCTET STRING, -- X
+ arbitrary [2] IMPLICIT BIT STRING }
+ -- contains one or more presentation data values from the same
+ -- presentation context.
+ -- ATN Commentary: only the arbitrary BIT STRING encoding choice is used.
}
Transfer-syntax-name ::= OBJECT IDENTIFIER -- ATN: not used for ATN Upper Layers
-Presentation-context-identifier::= INTEGER -- ATN: the following values are
- -- ATN-specific
-{ acse-apdu (1),
- reserved (2),
- user-ase-apdu (3) } (1..127, ... )
--- ATN commentary: The SIZE constraint above differs from the referenced
--- standard, which specifies (in 8.2):
+Presentation-context-identifier::= INTEGER -- ATN: the following values are
+ -- ATN-specific
+{ acse-apdu (1),
+ reserved (2),
+ user-ase-apdu (3) } (1..127, ... )
+-- ATN commentary: The SIZE constraint above differs from the referenced
+-- standard, which specifies (in 8.2):
-- Presentation-context-identifier::= INTEGER (1..127, ..., 128..MAX ).
--- The ULCS provisions specify a simplified, but compatible, efficiency
--- constraint as there will never be more than 127 presentation contexts in
--- ATN for the foreseeable future.
+-- The ULCS provisions specify a simplified, but compatible, efficiency
+-- constraint as there will never be more than 127 presentation contexts in
+-- ATN for the foreseeable future.
-- This simplifies matters for some compilers. The list of defined values is
-- shown here for guidance only, and has no effect on the PER encoding.
@@ -106,22 +102,22 @@ END -- of ULCS definitions
--*************************************************************************
ACSE-1 {joint-iso-itu-t association-control(2) modules(0) apdus(0) version1(1)}
--- ACSE-1 refers to ACSE version 1
-DEFINITIONS ::=
+-- ACSE-1 refers to ACSE version 1
+DEFINITIONS ::=
BEGIN
- EXPORTS
- acse-as-id, ACSE-apdu, aCSE-id, Application-context-name, AP-title,
- AE-qualifier, -- AE-title, (ATN: AE-title is not needed)
- AP-invocation-identifier,
- AE-invocation-identifier, Mechanism-name, Authentication-value,
- ACSE-requirements;
- IMPORTS Name, RelativeDistinguishedName
- FROM InformationFramework
- { joint-iso-ccitt ds(5) module(1) informationFramework(1) 2 };
- -- The data types Name and RelativeDistinguishedName are imported
- -- from ISO/IEC 9594-2 | ITU-T Rec. X.501.
- -- ATN Commentary: The relevant InformationFramework extracts are given
- -- below.
+ EXPORTS
+ acse-as-id, ACSE-apdu, aCSE-id, Application-context-name, AP-title,
+ AE-qualifier, -- AE-title, (ATN: AE-title is not needed)
+ AP-invocation-identifier,
+ AE-invocation-identifier, Mechanism-name, Authentication-value,
+ ACSE-requirements;
+ IMPORTS Name, RelativeDistinguishedName
+ FROM InformationFramework
+ { joint-iso-ccitt ds(5) module(1) informationFramework(1) 2 };
+ -- The data types Name and RelativeDistinguishedName are imported
+ -- from ISO/IEC 9594-2 | ITU-T Rec. X.501.
+ -- ATN Commentary: The relevant InformationFramework extracts are given
+ -- below.
-- *************************************************************************
-- EXTERNAL
@@ -129,9 +125,9 @@ BEGIN
-- EXTERNAL is an ASN.1 UNIVERSAL type. The definition in the PER standard
-- ISO/IEC 8825-2 | ITU-T Rec. X.691 is assumed for ACSE.
--- The type is used in ACSE user-information
+-- The type is used in ACSE user-information
-- fields. ASN.1 compilers will not in general allow EXTERNAL to be
--- redefined (therefore 'EXTERNALt'),
+-- redefined (therefore 'EXTERNALt'),
-- and it is invalid ASN.1 to define a type with tag [UNIVERSAL 8]
--
-- Workaround for bug in asn2wrs in the .cnf file
@@ -140,13 +136,13 @@ BEGIN
-- tagged assignments.
--
EXTERNALt ::= [8] IMPLICIT SEQUENCE {
- direct-reference OBJECT IDENTIFIER OPTIONAL, -- X
- indirect-reference INTEGER OPTIONAL,
- data-value-descriptor ObjectDescriptor OPTIONAL, -- X
- encoding CHOICE {
- single-ASN1-type [0] ABSTRACT-SYNTAX.&Type,
- octet-aligned [1] IMPLICIT OCTET STRING, -- X
- arbitrary [2] IMPLICIT BIT STRING }}
+ direct-reference OBJECT IDENTIFIER OPTIONAL, -- X
+ indirect-reference INTEGER OPTIONAL,
+ data-value-descriptor ObjectDescriptor OPTIONAL, -- X
+ encoding CHOICE {
+ single-ASN1-type [0] ABSTRACT-SYNTAX.&Type,
+ octet-aligned [1] IMPLICIT OCTET STRING, -- X
+ arbitrary [2] IMPLICIT BIT STRING }}
-- ATN: implementations are advised to use arbitrary (BIT STRING)
-- encodings only (see Guidance Material section 2.6.5.21).
-- BIT STRING values are not padded to octet boundaries.
@@ -155,122 +151,122 @@ EXTERNALt ::= [8] IMPLICIT SEQUENCE {
-- object identifier assignments
acse-as-id OBJECT IDENTIFIER ::=
{joint-iso-itu-t association-control(2) abstract-syntax(1) apdus(0) version1(1)}
- -- may be used to reference the abstract syntax of the ACSE APDUs
-aCSE-id OBJECT IDENTIFIER ::=
+ -- may be used to reference the abstract syntax of the ACSE APDUs
+aCSE-id OBJECT IDENTIFIER ::=
{ joint-iso-itu-t association-control(2) ase-id(3) acse-ase(1) version(1) }
-- may be used to identify the Association Control ASE.
-- top level CHOICE
ACSE-apdu ::= CHOICE
{
- aarq AARQ-apdu, -- ACSE associate request pdu
- aare AARE-apdu, -- ACSE associate response pdu
- rlrq RLRQ-apdu, -- ACSE release request pdu
- rlre RLRE-apdu, -- ACSE release response pdu
- abrt ABRT-apdu, -- ACSE abort pdu
- ...
+ aarq AARQ-apdu, -- ACSE associate request pdu
+ aare AARE-apdu, -- ACSE associate response pdu
+ rlrq RLRQ-apdu, -- ACSE release request pdu
+ rlre RLRE-apdu, -- ACSE release response pdu
+ abrt ABRT-apdu, -- ACSE abort pdu
+ ...
}
AARQ-apdu ::= [ APPLICATION 0 ] IMPLICIT SEQUENCE
-{ protocol-version [0] IMPLICIT BIT STRING { version1 (0) } DEFAULT { version1 }, -- X
- application-context-name [1] Application-context-name,
- called-AP-title [2] AP-title OPTIONAL, -- X
- called-AE-qualifier [3] AE-qualifier OPTIONAL, -- X
- called-AP-invocation-identifier [4] AP-invocation-identifier OPTIONAL, -- X
- called-AE-invocation-identifier [5] AE-invocation-identifier OPTIONAL, -- X
- calling-AP-title [6] AP-title OPTIONAL,
- calling-AE-qualifier [7] AE-qualifier OPTIONAL,
- calling-AP-invocation-identifier [8] AP-invocation-identifier OPTIONAL, -- X
- calling-AE-invocation-identifier [9] AE-invocation-identifier OPTIONAL, -- X
- -- The following field is not present if only the Kernel is used.
- -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
- sender-acse-requirements [10] IMPLICIT ACSE-requirements OPTIONAL,
- -- The following field is only present if the Authentication functional
- -- unit is selected. ATN: not used in Doc 9705 ed 1/ed 2.
- mechanism-name [11] IMPLICIT Mechanism-name OPTIONAL,
- -- The following field is only present if the Authentication functional
- -- unit is selected. ATN: use is deprecated in Doc 9705 ed 1/ed 2.
- calling-authentication-value [12] EXPLICIT Authentication-value OPTIONAL,
- application-context-name-list [13] IMPLICIT Application-context-name-list OPTIONAL, -- X
- -- The above field is only present if the Application Context Negotiation
- -- functional unit is selected - never for ATN
- implementation-information [29] IMPLICIT Implementation-data OPTIONAL, -- X
- ..., ..., -- ATN: Note use of extension marker pair
- user-information [30] IMPLICIT Association-information OPTIONAL
+{ protocol-version [0] IMPLICIT BIT STRING { version1 (0) } DEFAULT { version1 }, -- X
+ application-context-name [1] Application-context-name,
+ called-AP-title [2] AP-title OPTIONAL, -- X
+ called-AE-qualifier [3] AE-qualifier OPTIONAL, -- X
+ called-AP-invocation-identifier [4] AP-invocation-identifier OPTIONAL, -- X
+ called-AE-invocation-identifier [5] AE-invocation-identifier OPTIONAL, -- X
+ calling-AP-title [6] AP-title OPTIONAL,
+ calling-AE-qualifier [7] AE-qualifier OPTIONAL,
+ calling-AP-invocation-identifier [8] AP-invocation-identifier OPTIONAL, -- X
+ calling-AE-invocation-identifier [9] AE-invocation-identifier OPTIONAL, -- X
+ -- The following field is not present if only the Kernel is used.
+ -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
+ sender-acse-requirements [10] IMPLICIT ACSE-requirements OPTIONAL,
+ -- The following field is only present if the Authentication functional
+ -- unit is selected. ATN: not used in Doc 9705 ed 1/ed 2.
+ mechanism-name [11] IMPLICIT Mechanism-name OPTIONAL,
+ -- The following field is only present if the Authentication functional
+ -- unit is selected. ATN: use is deprecated in Doc 9705 ed 1/ed 2.
+ calling-authentication-value [12] EXPLICIT Authentication-value OPTIONAL,
+ application-context-name-list [13] IMPLICIT Application-context-name-list OPTIONAL, -- X
+ -- The above field is only present if the Application Context Negotiation
+ -- functional unit is selected - never for ATN
+ implementation-information [29] IMPLICIT Implementation-data OPTIONAL, -- X
+ ..., ..., -- ATN: Note use of extension marker pair
+ user-information [30] IMPLICIT Association-information OPTIONAL
}
AARE-apdu ::= [ APPLICATION 1 ] IMPLICIT SEQUENCE
-{ protocol-version [0] IMPLICIT BIT STRING{ version1 (0) }
- DEFAULT { version1 }, -- X
- application-context-name [1] Application-context-name,
- result [2] Associate-result,
- result-source-diagnostic [3] Associate-source-diagnostic,
- responding-AP-title [4] AP-title OPTIONAL, -- X
- responding-AE-qualifier [5] AE-qualifier OPTIONAL, -- X
- responding-AP-invocation-identifier [6] AP-invocation-identifier OPTIONAL, -- X
- responding-AE-invocation-identifier [7] AE-invocation-identifier OPTIONAL, -- X
- -- The following field is not present if only the Kernel is used.
- -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
- responder-acse-requirements [8] IMPLICIT ACSE-requirements OPTIONAL,
- -- The following field is only present if the Authentication functional
- -- unit is selected. ATN: not used in Doc 9705 ed 1/ed 2.
- mechanism-name [9] IMPLICIT Mechanism-name OPTIONAL,
- -- The following field is only present if the Authentication functional
- -- unit is selected. ATN: use is deprecated in Doc 9705 ed 1/ed 2.
- responding-authentication-value [10] EXPLICIT Authentication-value OPTIONAL,
- application-context-name-list [11] IMPLICIT Application-context-name-list
- OPTIONAL, -- X
- -- The above field is only present if the Application Context Negotiation
- -- functional unit is selected - never for ATN
- implementation-information [29] IMPLICIT Implementation-data OPTIONAL, --X
- ..., ..., -- ATN: Note use of extension marker pair
- user-information [30] IMPLICIT Association-information OPTIONAL
+{ protocol-version [0] IMPLICIT BIT STRING{ version1 (0) }
+ DEFAULT { version1 }, -- X
+ application-context-name [1] Application-context-name,
+ result [2] Associate-result,
+ result-source-diagnostic [3] Associate-source-diagnostic,
+ responding-AP-title [4] AP-title OPTIONAL, -- X
+ responding-AE-qualifier [5] AE-qualifier OPTIONAL, -- X
+ responding-AP-invocation-identifier [6] AP-invocation-identifier OPTIONAL, -- X
+ responding-AE-invocation-identifier [7] AE-invocation-identifier OPTIONAL, -- X
+ -- The following field is not present if only the Kernel is used.
+ -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
+ responder-acse-requirements [8] IMPLICIT ACSE-requirements OPTIONAL,
+ -- The following field is only present if the Authentication functional
+ -- unit is selected. ATN: not used in Doc 9705 ed 1/ed 2.
+ mechanism-name [9] IMPLICIT Mechanism-name OPTIONAL,
+ -- The following field is only present if the Authentication functional
+ -- unit is selected. ATN: use is deprecated in Doc 9705 ed 1/ed 2.
+ responding-authentication-value [10] EXPLICIT Authentication-value OPTIONAL,
+ application-context-name-list [11] IMPLICIT Application-context-name-list
+ OPTIONAL, -- X
+ -- The above field is only present if the Application Context Negotiation
+ -- functional unit is selected - never for ATN
+ implementation-information [29] IMPLICIT Implementation-data OPTIONAL, --X
+ ..., ..., -- ATN: Note use of extension marker pair
+ user-information [30] IMPLICIT Association-information OPTIONAL
}
RLRQ-apdu ::= [ APPLICATION 2 ] IMPLICIT SEQUENCE
-{ reason [0] IMPLICIT Release-request-reason OPTIONAL,
- ..., ..., -- ATN: Note use of extension marker pair
- user-information [30] IMPLICIT Association-information OPTIONAL
+{ reason [0] IMPLICIT Release-request-reason OPTIONAL,
+ ..., ..., -- ATN: Note use of extension marker pair
+ user-information [30] IMPLICIT Association-information OPTIONAL
}
RLRE-apdu ::= [ APPLICATION 3 ] IMPLICIT SEQUENCE
-{ reason [0] IMPLICIT Release-response-reason OPTIONAL,
- ..., ..., -- ATN: Note use of extension marker pair
- user-information [30] IMPLICIT Association-information OPTIONAL
+{ reason [0] IMPLICIT Release-response-reason OPTIONAL,
+ ..., ..., -- ATN: Note use of extension marker pair
+ user-information [30] IMPLICIT Association-information OPTIONAL
}
ABRT-apdu ::= [ APPLICATION 4 ] IMPLICIT SEQUENCE
-{ abort-source [0] IMPLICIT ABRT-source,
- abort-diagnostic [1] IMPLICIT ABRT-diagnostic OPTIONAL,
- -- The above field is not present if only the Kernel is used.
- -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
- ..., ..., -- ATN: Note use of extension marker pair
- user-information [30] IMPLICIT Association-information OPTIONAL
+{ abort-source [0] IMPLICIT ABRT-source,
+ abort-diagnostic [1] IMPLICIT ABRT-diagnostic OPTIONAL,
+ -- The above field is not present if only the Kernel is used.
+ -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
+ ..., ..., -- ATN: Note use of extension marker pair
+ user-information [30] IMPLICIT Association-information OPTIONAL
}
ABRT-diagnostic ::= ENUMERATED
-{ no-reason-given (1),
- protocol-error (2),
- authentication-mechanism-name-not-recognized (3),
- authentication-mechanism-name-required (4),
- authentication-failure (5),
- authentication-required (6),
- ... }
-
-ABRT-source ::= INTEGER { acse-service-user (0), acse-service-provider (1)} (0..1, ...)
-
-ACSE-requirements ::= BIT STRING
-{ authentication (0), application-context-negotiation(1) }
--- ATN commentary: application-context-negotiation (bit 1) is
+{ no-reason-given (1),
+ protocol-error (2),
+ authentication-mechanism-name-not-recognized (3),
+ authentication-mechanism-name-required (4),
+ authentication-failure (5),
+ authentication-required (6),
+ ... }
+
+ABRT-source ::= INTEGER { acse-service-user (0), acse-service-provider (1)} (0..1, ...)
+
+ACSE-requirements ::= BIT STRING
+{ authentication (0), application-context-negotiation(1) }
+-- ATN commentary: application-context-negotiation (bit 1) is
-- never set for ATN ULCS. Use of authentication is deprecated
-- for Doc 9705 ed 1/ed 2.
-Application-context-name-list ::= SEQUENCE OF Application-context-name
+Application-context-name-list ::= SEQUENCE OF Application-context-name
-- ATN Commentary: the above type is not used for ATN ULCS.
Application-context-name ::= OBJECT IDENTIFIER
@@ -281,31 +277,31 @@ Application-context-name ::= OBJECT IDENTIFIER
-- MG: asn2wrs cannot handle untagged CHOICEs within either a SET or a SEQUENCE.
-- https://wiki.wireshark.org/Asn2wrs_Handmassaging_the_ASN_file
AP-title ::= CHOICE { -- ATN: See encoding guidance in 2.5.11
- -- "form2" is encoded as 0 and "form1" as 1
- ap-title-form2 [0] IMPLICIT AP-title-form2, -- Object Identifier form
- ap-title-form1 [1] IMPLICIT AP-title-form1, -- X (Directory name form)
- ... }
+ -- "form2" is encoded as 0 and "form1" as 1
+ ap-title-form2 [0] IMPLICIT AP-title-form2, -- Object Identifier form
+ ap-title-form1 [1] IMPLICIT AP-title-form1, -- X (Directory name form)
+ ... }
AE-qualifier ::= CHOICE {-- ATN: See encoding guidance in 2.5.11
- -- "form2" is encoded as 0 and "form1" as 1
- ae-qualifier-form2 [0] IMPLICIT AE-qualifier-form2, -- INTEGER form
- ae-qualifier-form1 [1] IMPLICIT AE-qualifier-form1, -- X (RDN form)
- ... }
--- ATN commentary: AE-qualifier is set to "app-type" in Doc 9705 1st and
--- 2nd editions. For forward compatibility, the value should not be
+ -- "form2" is encoded as 0 and "form1" as 1
+ ae-qualifier-form2 [0] IMPLICIT AE-qualifier-form2, -- INTEGER form
+ ae-qualifier-form1 [1] IMPLICIT AE-qualifier-form1, -- X (RDN form)
+ ... }
+-- ATN commentary: AE-qualifier is set to "app-type" in Doc 9705 1st and
+-- 2nd editions. For forward compatibility, the value should not be
-- analysed.
--- When both AP-title and AE-qualifier data values are present in an AARQ or
--- AARE APDU, both have the same form to allow the construction of an
+-- When both AP-title and AE-qualifier data values are present in an AARQ or
+-- AARE APDU, both have the same form to allow the construction of an
-- AE-title as discussed in CCITT Rec. X.665 | ISO/IEC 9834-6.
AP-title-form1 ::= Name -- ATN: Not used for ATN ULCS
--- The value assigned to AP-title-form1 is The Directory Name of an
+-- The value assigned to AP-title-form1 is The Directory Name of an
-- application-process title.
AE-qualifier-form1 ::= RelativeDistinguishedName -- ATN: Not used for ULCS
--- The value assigned to AE-qualifier-form1 is the relative distinguished name
--- of a particular application-entity of the application-process identified by
+-- The value assigned to AE-qualifier-form1 is the relative distinguished name
+-- of a particular application-entity of the application-process identified by
-- AP-title-form1.
AP-title-form2 ::= OBJECT IDENTIFIER
@@ -314,28 +310,28 @@ AE-qualifier-form2 ::= INTEGER
-- ATN commentary: The AE-title productions below are commented out,
-- as they are not required for ATN ULCS.
--- AE-title ::= CHOICE {
--- ae-title-form1 AE-title-form1,
+-- AE-title ::= CHOICE {
+-- ae-title-form1 AE-title-form1,
-- ae-title-form2 AE-title-form2,
-- ... }
--
--- As defined in CCITT Rec. X.650 | ISO 7498-3, an application-entity title is
--- composed of an application-process title and an application-entity qualifier.
--- The ACSE protocol provides for the transfer of an application-entity title
--- value by the transfer of its component values. However, the following data
--- type is provided for International Standards that reference a single
+-- As defined in CCITT Rec. X.650 | ISO 7498-3, an application-entity title is
+-- composed of an application-process title and an application-entity qualifier.
+-- The ACSE protocol provides for the transfer of an application-entity title
+-- value by the transfer of its component values. However, the following data
+-- type is provided for International Standards that reference a single
-- syntactic structure for AE titles. (Not used for ATN ULCS)
--
--- AE-title-form1 ::= Name
--- For access to The Directory (ITU-T Rec. X.500-Series | ISO/IEC 9594), an
+-- AE-title-form1 ::= Name
+-- For access to The Directory (ITU-T Rec. X.500-Series | ISO/IEC 9594), an
-- AE title has AE-title-form1.
--- This value can be constructed from AP-title-form1 and AE-qualifier-form1
--- values contained in an AARQ or AARE APDU. A discussion of forming an
--- AE-title-form1 from AP-title-form1 and AE-qualifier-form1 may be found in
+-- This value can be constructed from AP-title-form1 and AE-qualifier-form1
+-- values contained in an AARQ or AARE APDU. A discussion of forming an
+-- AE-title-form1 from AP-title-form1 and AE-qualifier-form1 may be found in
-- CCITT Rec. X.665 | ISO/IEC 9834-6.
--
-- AE-title-form2 ::= OBJECT IDENTIFIER
--- A discussion of forming an AE-title-form2 from AP-title-form2 and
+-- A discussion of forming an AE-title-form2 from AP-title-form2 and
-- AE-qualifier-form2 may be found in CCITT Rec. X.665 | ISO/IEC 9834-6.
AE-invocation-identifier ::= INTEGER -- ATN: not used in ULCS
@@ -344,31 +340,31 @@ AP-invocation-identifier ::= INTEGER -- ATN: not used in ULCS
-- ***************************************************************************
Associate-result ::= INTEGER
-{ accepted (0),
- rejected-permanent (1),
- rejected-transient (2) } (0..2, ...)
+{ accepted (0),
+ rejected-permanent (1),
+ rejected-transient (2) } (0..2, ...)
Associate-source-diagnostic ::= CHOICE
{ acse-service-user [1] INTEGER
- { null (0),
- no-reason-given (1),
- application-context-name-not-supported (2),
- calling-AP-title-not-recognized (3),
- calling-AP-invocation-identifier-not-recognized (4),
- calling-AE-qualifier-not-recognized (5),
- calling-AE-invocation-identifier-not-recognized (6),
- called-AP-title-not-recognized (7),
- called-AP-invocation-identifier-not-recognized (8),
- called-AE-qualifier-not-recognized (9),
- called-AE-invocation-identifier-not-recognized (10),
- authentication-mechanism-name-not-recognized (11),
- authentication-mechanism-name-required (12),
- authentication-failure (13),
- authentication-required (14) } (0..14 , ...),
- acse-service-provider [2] INTEGER
- { null (0),
- no-reason-given (1),
- no-common-acse-version (2) } (0..2 , ...)
+ { null (0),
+ no-reason-given (1),
+ application-context-name-not-supported (2),
+ calling-AP-title-not-recognized (3),
+ calling-AP-invocation-identifier-not-recognized (4),
+ calling-AE-qualifier-not-recognized (5),
+ calling-AE-invocation-identifier-not-recognized (6),
+ called-AP-title-not-recognized (7),
+ called-AP-invocation-identifier-not-recognized (8),
+ called-AE-qualifier-not-recognized (9),
+ called-AE-invocation-identifier-not-recognized (10),
+ authentication-mechanism-name-not-recognized (11),
+ authentication-mechanism-name-required (12),
+ authentication-failure (13),
+ authentication-required (14) } (0..14 , ...),
+ acse-service-provider [2] INTEGER
+ { null (0),
+ no-reason-given (1),
+ no-common-acse-version (2) } (0..2 , ...)
}
Association-information ::= SEQUENCE SIZE (1, ..., 0 | 2..MAX) OF EXTERNALt
@@ -391,31 +387,31 @@ Release-response-reason ::= INTEGER {normal (0), not-finished (1), user-defined
-- Values are encoded in 5 bits, not 3 as might be expected.
Authentication-value ::= CHOICE -- ATN: use is deprecated in ed 1/ed 2
-{ charstring [0] IMPLICIT OCTET STRING,
- bitstring [1] IMPLICIT BIT STRING,
- external [2] IMPLICIT EXTERNAL,
- other [3] IMPLICIT SEQUENCE {
+{ charstring [0] IMPLICIT OCTET STRING,
+ bitstring [1] IMPLICIT BIT STRING,
+ external [2] IMPLICIT EXTERNAL,
+ other [3] IMPLICIT SEQUENCE {
-- other-mechanism-name MECHANISM-NAME.&id ({ObjectSet}),
- other-mechanism-name OBJECT IDENTIFIER,
--- other-mechanism-value MECHANISM-NAME.&Type ({ObjectSet}{@.other-mechanism-name})
- other-mechanism-value ANY
- } -- X
+ other-mechanism-name OBJECT IDENTIFIER,
+-- other-mechanism-value MECHANISM-NAME.&Type ({ObjectSet}{@.other-mechanism-name})
+ other-mechanism-value ANY
+ } -- X
}
--- The abstract syntax of (calling/responding) authentication-value is
--- determined by the authentication mechanism used during association
+-- The abstract syntax of (calling/responding) authentication-value is
+-- determined by the authentication mechanism used during association
-- establishment. The authentication mechanism is either explicitly
--- denoted by the &id field (of type OBJECT IDENTIFIER) for a mechanism
+-- denoted by the &id field (of type OBJECT IDENTIFIER) for a mechanism
-- belonging to the class MECHANISM-NAME, or it is known implicitly by
--- prior agreement between the communicating partners. If the "other"
--- component is chosen, then the "mechanism-name" component is present
--- in accordance with ITU-T Rec. X.680|ISO/IEC 8824. If the value
--- "mechanism-name" occurs in the AARQ-apdu or the AARE-apdu, then that
+-- prior agreement between the communicating partners. If the "other"
+-- component is chosen, then the "mechanism-name" component is present
+-- in accordance with ITU-T Rec. X.680|ISO/IEC 8824. If the value
+-- "mechanism-name" occurs in the AARQ-apdu or the AARE-apdu, then that
-- value is the same as the value for "other-mechanism-name"
END -- of Connection-Oriented ACSE definitions
-- *************************************************************************
--- The following definitions are adapted from the Directory standard
+-- The following definitions are adapted from the Directory standard
-- ISO/IEC 9594-2:1993 | ITU-T Rec. X.501 (1993 E). In case of any discrepancy,
-- the ISO/IEC standard takes precedence.
-- *************************************************************************
@@ -433,15 +429,15 @@ RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
--- ATN commentary: The following line has been inserted to allow the Name and
--- RelativeDistinguishedName types, as used by ACSE, to be resolved by an
--- ASN.1 compiler, without introducing the unnecessary complexity
+-- ATN commentary: The following line has been inserted to allow the Name and
+-- RelativeDistinguishedName types, as used by ACSE, to be resolved by an
+-- ASN.1 compiler, without introducing the unnecessary complexity
-- Of the ATTRIBUTE information object class, which is used in the
-- Directory standards.
null NULL}
--- The "real" components of AttributeTypeAndValue follow. They have been
--- commented out here, but could be restored if required, for example, for
--- sharing data types with a Directory implementation. The syntax has been
+-- The "real" components of AttributeTypeAndValue follow. They have been
+-- commented out here, but could be restored if required, for example, for
+-- sharing data types with a Directory implementation. The syntax has been
-- verified by the OSS syntax checker.
-- type ATTRIBUTE.&id ({SupportedAttributes}),
-- value ATTRIBUTE.&Type ({SupportedAttributes} {@type})
@@ -450,15 +446,15 @@ AttributeTypeAndValue ::= SEQUENCE {
--SupportedAttributes ATTRIBUTE ::=
-- {objectClass | aliasedEntryName, ...}
--- ATN Commentary: ATTRIBUTE is an information object class, specified in
--- ISO/IEC 9594-2 | ITU-T Rec. X.501, using the notation defined in
--- ISO/IEC 8824-2 | ITU-T Rec. X.681. However, for ULCS implementation, it
--- is only necessary to note that the ACSE CHOICE types AP-title,
+-- ATN Commentary: ATTRIBUTE is an information object class, specified in
+-- ISO/IEC 9594-2 | ITU-T Rec. X.501, using the notation defined in
+-- ISO/IEC 8824-2 | ITU-T Rec. X.681. However, for ULCS implementation, it
+-- is only necessary to note that the ACSE CHOICE types AP-title,
-- AE-qualifier and AE-title are all constrained to be the "form 2" variants,
-- with types Object Identifier, Integer and Object Identifier, respectively.
-- It is however necessary to know the syntax of the "form 1" variants (Name,
--- RelativeDistinguishedName and Name, respectively) so that the CHOICE
--- elements can be sorted into canonical order, based on their ASN.1 types,
+-- RelativeDistinguishedName and Name, respectively) so that the CHOICE
+-- elements can be sorted into canonical order, based on their ASN.1 types,
-- for PER encoding (see 2.5.11).
--
--ATTRIBUTE ::= CLASS {
@@ -502,11 +498,11 @@ END -- of Directory Information Framework extracts
-- Editor modelines - http://www.wireshark.org/tools/modelines.html
--
-- Local variables:
--- c-basic-offset: 2
--- tab-width: 2
--- indent-tabs-mode: t
+-- c-basic-offset: 4
+-- tab-width: 8
+-- indent-tabs-mode: nil
-- End:
--
--- vi: set shiftwidth=2 tabstop=2 noexpandtab:
--- :indentSize=2:tabSize=2:noTabs=false:
+-- vi: set shiftwidth=4 tabstop=8 expandtab:
+-- :indentSize=4:tabSize=8:noTabs=true:
--
diff --git a/asn1/atn-ulcs/atn-ulcs.cnf b/asn1/atn-ulcs/atn-ulcs.cnf
index fce5459851..e24abe7a7b 100644
--- a/asn1/atn-ulcs/atn-ulcs.cnf
+++ b/asn1/atn-ulcs/atn-ulcs.cnf
@@ -1,24 +1,20 @@
-# c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
-# vi: set shiftwidth=2 tabstop=2 noexpandtab:
-# :indentSize=2:tabSize=2:noTabs=false:
-
#.MODULE_IMPORT
#.FIELD_RENAME
-AARQ-apdu/protocol-version aarq-apdu_protocol-version
-AARE-apdu/protocol-version aare-apdu_protocol-version
-RLRE-apdu/reason rlre-apdu_response_reason
-RLRQ-apdu/reason rlrq-apdu_request_reason
-EXTERNALt/encoding/single-ASN1-type externalt_encoding_single-asn1-type
-EXTERNALt/encoding/arbitrary externalt_encoding_arbitrary
-EXTERNALt/encoding/octet-aligned externalt_encoding_octet-aligned
-PDV-list/presentation-data-values/single-ASN1-type pdv-list_presentation-data-values_single-asn1-type
+AARQ-apdu/protocol-version aarq-apdu_protocol-version
+AARE-apdu/protocol-version aare-apdu_protocol-version
+RLRE-apdu/reason rlre-apdu_response_reason
+RLRQ-apdu/reason rlrq-apdu_request_reason
+EXTERNALt/encoding/single-ASN1-type externalt_encoding_single-asn1-type
+EXTERNALt/encoding/arbitrary externalt_encoding_arbitrary
+EXTERNALt/encoding/octet-aligned externalt_encoding_octet-aligned
+PDV-list/presentation-data-values/single-ASN1-type pdv-list_presentation-data-values_single-asn1-type
PDV-list/presentation-data-values/arbitrary pdv-list_presentation-data-values_arbitrary
#.END
#.PDU_NEW
- Fully-encoded-data
- ACSE-apdu
+ Fully-encoded-data
+ ACSE-apdu
#.END
@@ -27,358 +23,358 @@ PDV-list/presentation-data-values/arbitrary pdv-list_presentation-data-values_ar
#.END
-#.FN_BODY Presentation-context-identifier
+#.FN_BODY Presentation-context-identifier
- offset = dissect_per_constrained_integer(
- tvb,
- offset,
- actx,
- tree,
- hf_index,
- 1U,
- 127U,
- &ulcs_context_value,
- TRUE);
+ offset = dissect_per_constrained_integer(
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index,
+ 1U,
+ 127U,
+ &ulcs_context_value,
+ TRUE);
#.END
-#.FN_BODY PDV-list/presentation-data-values/arbitrary
-
- packet_info * pinfo = actx->pinfo;
- tvbuff_t *tvb_usr = NULL;
- proto_tree *atn_ulcs_tree = NULL;
- atn_conversation_t *atn_cv = NULL;
- heur_dtbl_entry_t *hdtbl_entry;
-
- /* extract bitstring into new tvb buffer */
- offset = dissect_per_bit_string(
- tvb,
- offset,
- actx,
- tree,
- hf_index,
- NO_BOUND,
- NO_BOUND,
- FALSE,
- &tvb_usr,
- NULL);
-
- if (tvb_usr) {
- /* call appropiate dissector for bitstring data */
- switch(ulcs_context_value){
- case 1: /* ACSE PDU*/
- atn_ulcs_tree = proto_tree_add_subtree(
- root_tree, tvb, offset, 0,
- ett_atn_acse, NULL, ATN_ACSE_PROTO );
-
- dissect_ACSE_apdu_PDU(
- tvb_new_subset_remaining(tvb_usr, 0),
- pinfo,
- atn_ulcs_tree, NULL);
- break;
- case 3: /* USER data; call subdissector for CM, CPDLC ... */
-
- /* using dstref for PDV-list only occurrs in DT */
- atn_cv = find_atn_conversation(
- &pinfo->dst,
- pinfo->clnp_dstref,
- &pinfo->src);
-
- if(atn_cv) {
- switch(atn_cv->ae_qualifier){
- case cma: /* contact management */
- call_dissector_with_data(
- atn_cm_handle,
- tvb_new_subset_remaining(tvb_usr, 0),
- pinfo,
- root_tree,
- NULL);
- break;
- case cpdlc: /* plain old cpdlc */
- case pmcpdlc: /* protected mode cpdlc */
- call_dissector_with_data(
- atn_cpdlc_handle,
- tvb_new_subset_remaining(tvb_usr, 0),
- pinfo,
- root_tree,
- NULL);
- break;
- default: /* unknown or unhandled datalink application */
- dissector_try_heuristic(
- atn_ulcs_heur_subdissector_list,
- tvb_new_subset_remaining(tvb_usr,0),
- actx->pinfo,
- root_tree,
- &hdtbl_entry,
- NULL);
- break;
- }
- }
- else{
- dissector_try_heuristic(
- atn_ulcs_heur_subdissector_list,
- tvb_new_subset_remaining(tvb_usr,0),
- actx->pinfo,
- root_tree,
- &hdtbl_entry,
- NULL);
- }
- break;
- default:
- break;
- } /* switch(ulcs_context_value) */
- }
+#.FN_BODY PDV-list/presentation-data-values/arbitrary
+
+ packet_info * pinfo = actx->pinfo;
+ tvbuff_t *tvb_usr = NULL;
+ proto_tree *atn_ulcs_tree = NULL;
+ atn_conversation_t *atn_cv = NULL;
+ heur_dtbl_entry_t *hdtbl_entry;
+
+ /* extract bitstring into new tvb buffer */
+ offset = dissect_per_bit_string(
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index,
+ NO_BOUND,
+ NO_BOUND,
+ FALSE,
+ &tvb_usr,
+ NULL);
+
+ if (tvb_usr) {
+ /* call appropiate dissector for bitstring data */
+ switch(ulcs_context_value){
+ case 1: /* ACSE PDU*/
+ atn_ulcs_tree = proto_tree_add_subtree(
+ root_tree, tvb, offset, 0,
+ ett_atn_acse, NULL, ATN_ACSE_PROTO );
+
+ dissect_ACSE_apdu_PDU(
+ tvb_new_subset_remaining(tvb_usr, 0),
+ pinfo,
+ atn_ulcs_tree, NULL);
+ break;
+ case 3: /* USER data; call subdissector for CM, CPDLC ... */
+
+ /* using dstref for PDV-list only occurrs in DT */
+ atn_cv = find_atn_conversation(
+ &pinfo->dst,
+ pinfo->clnp_dstref,
+ &pinfo->src);
+
+ if(atn_cv) {
+ switch(atn_cv->ae_qualifier){
+ case cma: /* contact management */
+ call_dissector_with_data(
+ atn_cm_handle,
+ tvb_new_subset_remaining(tvb_usr, 0),
+ pinfo,
+ root_tree,
+ NULL);
+ break;
+ case cpdlc: /* plain old cpdlc */
+ case pmcpdlc: /* protected mode cpdlc */
+ call_dissector_with_data(
+ atn_cpdlc_handle,
+ tvb_new_subset_remaining(tvb_usr, 0),
+ pinfo,
+ root_tree,
+ NULL);
+ break;
+ default: /* unknown or unhandled datalink application */
+ dissector_try_heuristic(
+ atn_ulcs_heur_subdissector_list,
+ tvb_new_subset_remaining(tvb_usr,0),
+ actx->pinfo,
+ root_tree,
+ &hdtbl_entry,
+ NULL);
+ break;
+ }
+ }
+ else{
+ dissector_try_heuristic(
+ atn_ulcs_heur_subdissector_list,
+ tvb_new_subset_remaining(tvb_usr,0),
+ actx->pinfo,
+ root_tree,
+ &hdtbl_entry,
+ NULL);
+ }
+ break;
+ default:
+ break;
+ } /* switch(ulcs_context_value) */
+ }
#.END
#.FN_BODY Authentication-value/other/other-mechanism-value
- offset=call_ber_oid_callback(
- object_identifier_id,
- tvb,
- offset,
- actx->pinfo,
- tree, NULL);
+ offset=call_ber_oid_callback(
+ object_identifier_id,
+ tvb,
+ offset,
+ actx->pinfo,
+ tree, NULL);
#.END
#.FN_BODY Mechanism-name
- offset = dissect_per_object_identifier(
- tvb,
- offset,
- actx,
- tree,
- hf_index,
- NULL);
+ offset = dissect_per_object_identifier(
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index,
+ NULL);
#.END
#.FN_BODY Authentication-value/other/other-mechanism-value
- offset=call_ber_oid_callback(
- object_identifier_id,
- tvb,
- offset,
- actx->pinfo,
- tree, NULL);
+ offset=call_ber_oid_callback(
+ object_identifier_id,
+ tvb,
+ offset,
+ actx->pinfo,
+ tree, NULL);
#.END
-#.FN_BODY AE-qualifier-form2
- packet_info * pinfo = actx->pinfo;
- atn_conversation_t *atn_cv = NULL;
- guint32 ae_qualifier = 0;
-
- /* dissect ae-qualifier */
- offset = dissect_per_integer(
- tvb,
- offset,
- actx,
- tree,
- hf_index,
- &ae_qualifier);
-
-
- /*note: */
- /* the field "calling-AE-qualifier" is optional, */
- /* which means that we can exploit it only if it is present. */
- /* We still depend on heuristical decoding of CM, CPDLC PDU's otherwise. */
-
- /* AARQ/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 );
- }
-
- /* AARQ/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 );
- }
-
- if(atn_cv){
- atn_cv->ae_qualifier = ae_qualifier;
- }
+#.FN_BODY AE-qualifier-form2
+ packet_info * pinfo = actx->pinfo;
+ atn_conversation_t *atn_cv = NULL;
+ guint32 ae_qualifier = 0;
+
+ /* dissect ae-qualifier */
+ offset = dissect_per_integer(
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index,
+ &ae_qualifier);
+
+
+ /*note: */
+ /* the field "calling-AE-qualifier" is optional, */
+ /* which means that we can exploit it only if it is present. */
+ /* We still depend on heuristical decoding of CM, CPDLC PDU's otherwise. */
+
+ /* AARQ/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 );
+ }
+
+ /* AARQ/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 );
+ }
+
+ if(atn_cv){
+ atn_cv->ae_qualifier = ae_qualifier;
+ }
#.END
-#.FN_BODY AARQ-apdu
- packet_info * pinfo = actx->pinfo;
- aarq_data_t *aarq_data = NULL;
- atn_conversation_t *atn_cv = NULL;
- guint32 aircraft_24_bit_address = 0;
-
- /* AARQ/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 );
- if(!atn_cv){
- atn_cv = wmem_new(wmem_file_scope(), atn_conversation_t);
- atn_cv->ae_qualifier = unknown;
- create_atn_conversation(&pinfo->dst,
- pinfo->clnp_dstref,
- &pinfo->src ,
- atn_cv);
- }
- }
-
- /* AARQ/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 );
- if(!atn_cv){
- atn_cv = wmem_new(wmem_file_scope(), atn_conversation_t);
- atn_cv->ae_qualifier = unknown;
- create_atn_conversation(&pinfo->src,
- pinfo->clnp_srcref,
- &pinfo->dst ,
- atn_cv);
- }
- }
-
- /* conversation is to be created prior to decoding */
- /* of "AE-qualifier-form2" which takes place here: */
- %(DEFAULT_BODY)s
-
-
- /* save AARQ packet data to create a conversation */
- /* when decoding the following AARE PDU */
- /* ATN applications CM and CPDLC are air/ground applications */
- /* so there is always an aircraft (with its 24-bit address) */
- /* and a ground facility. */
- /* the assumption is that there is only one open AARQ/AARE */
- /* dialog per aircraft at a time. */
- /* the aircraft's 24-bit address is used as a key to each AARQ */
- /* data. AARQ data is used to create a conversation with */
- /* air and ground endpoints (based on NSAP's and transport references) */
- /* when decoding AARE.*/
- /* note: */
- /* it may be more robust to create the conversation */
- /* in the "ositp" dissector an to merely use the conversation here */
- aircraft_24_bit_address =
- get_aircraft_24_bit_address_from_nsap(pinfo);
-
- /* search for aarq entry */
- aarq_data = (aarq_data_t *) wmem_tree_lookup32(
- aarq_data_tree,
- aircraft_24_bit_address);
-
- if(!aarq_data){ /* aarq data not found, create new record */
-
- /* alloc aarq data */
- aarq_data = wmem_new(wmem_file_scope(), aarq_data_t);
- aarq_data-> aarq_pending = FALSE;
-
- /* insert aarq data */
- wmem_tree_insert32(aarq_data_tree ,aircraft_24_bit_address,(void*)aarq_data);
- }
-
- /* check for pending AARQ/AARE sequences */
- /* if "aarq_data-> aarq_pending" is set this means that there is already one */
- /* AARQ/AARE sequence pending (is unwise to overwrite AARE/AARQ) */
- if (aarq_data-> aarq_pending == FALSE ) {
-
- /* init aarq data */
- memset(aarq_data,0,sizeof(aarq_data_t));
-
- aarq_data->cv = atn_cv;
- aarq_data-> aarq_pending = TRUE;
- }
+#.FN_BODY AARQ-apdu
+ packet_info * pinfo = actx->pinfo;
+ aarq_data_t *aarq_data = NULL;
+ atn_conversation_t *atn_cv = NULL;
+ guint32 aircraft_24_bit_address = 0;
+
+ /* AARQ/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 );
+ if(!atn_cv){
+ atn_cv = wmem_new(wmem_file_scope(), atn_conversation_t);
+ atn_cv->ae_qualifier = unknown;
+ create_atn_conversation(&pinfo->dst,
+ pinfo->clnp_dstref,
+ &pinfo->src ,
+ atn_cv);
+ }
+ }
+
+ /* AARQ/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 );
+ if(!atn_cv){
+ atn_cv = wmem_new(wmem_file_scope(), atn_conversation_t);
+ atn_cv->ae_qualifier = unknown;
+ create_atn_conversation(&pinfo->src,
+ pinfo->clnp_srcref,
+ &pinfo->dst ,
+ atn_cv);
+ }
+ }
+
+ /* conversation is to be created prior to decoding */
+ /* of "AE-qualifier-form2" which takes place here: */
+ %(DEFAULT_BODY)s
+
+
+ /* save AARQ packet data to create a conversation */
+ /* when decoding the following AARE PDU */
+ /* ATN applications CM and CPDLC are air/ground applications */
+ /* so there is always an aircraft (with its 24-bit address) */
+ /* and a ground facility. */
+ /* the assumption is that there is only one open AARQ/AARE */
+ /* dialog per aircraft at a time. */
+ /* the aircraft's 24-bit address is used as a key to each AARQ */
+ /* data. AARQ data is used to create a conversation with */
+ /* air and ground endpoints (based on NSAP's and transport references) */
+ /* when decoding AARE.*/
+ /* note: */
+ /* it may be more robust to create the conversation */
+ /* in the "ositp" dissector an to merely use the conversation here */
+ aircraft_24_bit_address =
+ get_aircraft_24_bit_address_from_nsap(pinfo);
+
+ /* search for aarq entry */
+ aarq_data = (aarq_data_t *) wmem_tree_lookup32(
+ aarq_data_tree,
+ aircraft_24_bit_address);
+
+ if(!aarq_data){ /* aarq data not found, create new record */
+
+ /* alloc aarq data */
+ aarq_data = wmem_new(wmem_file_scope(), aarq_data_t);
+ aarq_data-> aarq_pending = FALSE;
+
+ /* insert aarq data */
+ wmem_tree_insert32(aarq_data_tree ,aircraft_24_bit_address,(void*)aarq_data);
+ }
+
+ /* check for pending AARQ/AARE sequences */
+ /* if "aarq_data-> aarq_pending" is set this means that there is already one */
+ /* AARQ/AARE sequence pending (is unwise to overwrite AARE/AARQ) */
+ if (aarq_data-> aarq_pending == FALSE ) {
+
+ /* init aarq data */
+ memset(aarq_data,0,sizeof(aarq_data_t));
+
+ aarq_data->cv = atn_cv;
+ aarq_data-> aarq_pending = TRUE;
+ }
#.END
-#.FN_BODY AARE-apdu
- packet_info * pinfo = actx->pinfo;
- guint32 aircraft_24_bit_address = 0 ;
- atn_conversation_t *atn_cv = NULL;
- aarq_data_t *aarq_data = NULL;
-
- /* get AARQ data and use it to create a new conversation, */
- /* the conversation is used along with */
- /* AARQ's "calling ae qualifier" to determine the */
- /* type of air/ground application of each subsequent frame.*/
- /* we use this information to invoke the correct application dissector. */
- /* note: */
- /* heuristical decoding of ASN1 will not work for all cases, */
- /* for there may be CM PDU's which will exactly look like CPDLC PDU'S */
-
- /* get 24-bit icao address */
- aircraft_24_bit_address = get_aircraft_24_bit_address_from_nsap(pinfo);
-
- /* search for aarq entry */
- aarq_data = (aarq_data_t *) wmem_tree_lookup32(
- aarq_data_tree,
- aircraft_24_bit_address);
-
- /* no aarq data present, do nothing */
- /* without both ends of the conversation and without */
- /* the "calling ae-qualifier there is no point in setting up "*/
- /* a conversation */
- if(!aarq_data) {
-
- return offset;
- }
-
- /* AARE/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 );
-
- if(!atn_cv){ /* conversation not fond */
-
- /* DT has only dstref - create new conversation */
- create_atn_conversation(&pinfo->dst,
- pinfo->clnp_dstref,
- &pinfo->src ,
- aarq_data->cv);
- }
- }
-
- /* AARE/CC: srcref and dstref present */
- if((pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
-
- atn_cv = find_atn_conversation(
- &pinfo->src,
- pinfo->clnp_srcref,
+#.FN_BODY AARE-apdu
+ packet_info * pinfo = actx->pinfo;
+ guint32 aircraft_24_bit_address = 0 ;
+ atn_conversation_t *atn_cv = NULL;
+ aarq_data_t *aarq_data = NULL;
+
+ /* get AARQ data and use it to create a new conversation, */
+ /* the conversation is used along with */
+ /* AARQ's "calling ae qualifier" to determine the */
+ /* type of air/ground application of each subsequent frame.*/
+ /* we use this information to invoke the correct application dissector. */
+ /* note: */
+ /* heuristical decoding of ASN1 will not work for all cases, */
+ /* for there may be CM PDU's which will exactly look like CPDLC PDU'S */
+
+ /* get 24-bit icao address */
+ aircraft_24_bit_address = get_aircraft_24_bit_address_from_nsap(pinfo);
+
+ /* search for aarq entry */
+ aarq_data = (aarq_data_t *) wmem_tree_lookup32(
+ aarq_data_tree,
+ aircraft_24_bit_address);
+
+ /* no aarq data present, do nothing */
+ /* without both ends of the conversation and without */
+ /* the "calling ae-qualifier there is no point in setting up "*/
+ /* a conversation */
+ if(!aarq_data) {
+
+ return offset;
+ }
+
+ /* AARE/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 );
+
+ if(!atn_cv){ /* conversation not fond */
+
+ /* DT has only dstref - create new conversation */
+ create_atn_conversation(&pinfo->dst,
+ pinfo->clnp_dstref,
+ &pinfo->src ,
+ aarq_data->cv);
+ }
+ }
+
+ /* AARE/CC: srcref and dstref present */
+ if((pinfo->clnp_dstref) && (pinfo->clnp_srcref)){
+
+ atn_cv = find_atn_conversation(
+ &pinfo->src,
+ pinfo->clnp_srcref,
&pinfo->dst);
- if(atn_cv){ /* conversation found. */
+ if(atn_cv){ /* conversation found. */
- /* create new conversation for dstref */
- create_atn_conversation(&pinfo->dst,
- pinfo->clnp_dstref,
- &pinfo->src ,
- aarq_data->cv);
+ /* create new conversation for dstref */
+ create_atn_conversation(&pinfo->dst,
+ pinfo->clnp_dstref,
+ &pinfo->src ,
+ aarq_data->cv);
- }else { /* no conversation found */
- /* as CC contains srcref *and* dstref we use both to create new records */
- create_atn_conversation(&pinfo->src,
- pinfo->clnp_srcref,
- &pinfo->dst ,
- aarq_data->cv);
- create_atn_conversation(&pinfo->dst,
- pinfo->clnp_dstref,
- &pinfo->src ,
- aarq_data->cv);
- }
- }
+ }else { /* no conversation found */
+ /* as CC contains srcref *and* dstref we use both to create new records */
+ create_atn_conversation(&pinfo->src,
+ pinfo->clnp_srcref,
+ &pinfo->dst ,
+ aarq_data->cv);
+ create_atn_conversation(&pinfo->dst,
+ pinfo->clnp_dstref,
+ &pinfo->src ,
+ aarq_data->cv);
+ }
+ }
- /* clear aarq data */
- memset(aarq_data,0,sizeof(aarq_data_t));
- aarq_data-> aarq_pending = FALSE;
+ /* clear aarq data */
+ memset(aarq_data,0,sizeof(aarq_data_t));
+ aarq_data-> aarq_pending = FALSE;
- %(DEFAULT_BODY)s
+ %(DEFAULT_BODY)s
#.END
@@ -390,157 +386,157 @@ PDV-list/presentation-data-values/arbitrary pdv-list_presentation-data-values_ar
0U, 2U, NULL, TRUE);
#.END
-#.FN_BODY Release-request-reason
+#.FN_BODY Release-request-reason
/* extension present: last param set to true. asn2wrs didn't take notice of that */
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
0U, 30U, NULL, TRUE);
#.END
-#.FN_BODY Release-response-reason
+#.FN_BODY Release-response-reason
/* extension present: last param set to true. asn2wrs didn't take notice of that */
offset = dissect_per_constrained_integer(
- tvb,
- offset,
- actx,
- tree,
- hf_index,
- 0U,
- 30U,
- NULL,
- TRUE);
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index,
+ 0U,
+ 30U,
+ NULL,
+ TRUE);
#.END
-#.FN_BODY Mechanism-name
+#.FN_BODY Mechanism-name
offset = dissect_per_object_identifier(
- tvb,
- offset,
- actx,
- tree,
- hf_index,
- NULL);
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index,
+ NULL);
#.END
-#.FN_BODY EXTERNALt/data-value-descriptor
-
- offset = dissect_per_octet_string(
- tvb,
- offset,
- actx,
- tree,
- hf_index,
- -1,
- -1,
- FALSE,
- &actx->external.data_value_descriptor);
+#.FN_BODY EXTERNALt/data-value-descriptor
+
+ offset = dissect_per_octet_string(
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index,
+ -1,
+ -1,
+ FALSE,
+ &actx->external.data_value_descriptor);
actx->external.data_value_descr_present = TRUE;
#.END
-#.FN_BODY EXTERNALt/encoding/single-ASN1-type
+#.FN_BODY EXTERNALt/encoding/single-ASN1-type
- %(DEFAULT_BODY)s
+ %(DEFAULT_BODY)s
#.END
-#.FN_BODY EXTERNALt/encoding/octet-aligned
+#.FN_BODY EXTERNALt/encoding/octet-aligned
- %(DEFAULT_BODY)s
+ %(DEFAULT_BODY)s
#.END
-#.FN_BODY EXTERNALt/encoding/arbitrary
- tvbuff_t *tvb_usr = NULL;
- packet_info * pinfo = actx->pinfo;
- atn_conversation_t *atn_cv = NULL;
- heur_dtbl_entry_t *hdtbl_entry;
-
- /* decode bit-string user data within ACSE */
- offset = dissect_per_bit_string(
- tvb,
- offset,
- actx,
- tree, hf_index,
- NO_BOUND,
- NO_BOUND,
- FALSE,
- &tvb_usr,
- NULL);
-
- if (tvb_usr) {
- /* 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 always zero */
- if((pinfo->clnp_srcref) && (!pinfo->clnp_dstref)){
-
- atn_cv = find_atn_conversation(
- &pinfo->src,
- pinfo->clnp_srcref,
- &pinfo->dst);
- }
- /* CC: srcref and dstref present */
- if((pinfo->clnp_srcref) && (pinfo->clnp_dstref)){
-
- atn_cv = find_atn_conversation(
- &pinfo->src,
- pinfo->clnp_srcref,
- &pinfo->dst);
- }
-
- if(atn_cv) {
- switch(atn_cv->ae_qualifier){
- case cma: /* contact management */
-
- call_dissector_with_data(
- atn_cm_handle,
- tvb_new_subset_remaining(tvb_usr, 0),
- pinfo,
- root_tree,
- NULL);
- break;
- case cpdlc: /* plain old cpdlc */
- case pmcpdlc: /* protected mode cpdlc */
-
- call_dissector_with_data(
- atn_cpdlc_handle,
- tvb_new_subset_remaining(tvb_usr, 0),
- pinfo,
- root_tree,
- NULL);
- break;
- default: /* unknown or unhandled datalink application */
-
- dissector_try_heuristic(
- atn_ulcs_heur_subdissector_list,
- tvb_new_subset_remaining(tvb_usr,0),
- actx->pinfo,
- root_tree,
- &hdtbl_entry,
- NULL);
- break;
- }
- }else {
-
- dissector_try_heuristic(
- atn_ulcs_heur_subdissector_list,
- tvb_new_subset_remaining(tvb_usr,0),
- actx->pinfo,
- root_tree,
- &hdtbl_entry,
- NULL);
- }
- }
-
- offset += tvb_reported_length_remaining(tvb, offset);
+#.FN_BODY EXTERNALt/encoding/arbitrary
+ tvbuff_t *tvb_usr = NULL;
+ packet_info * pinfo = actx->pinfo;
+ atn_conversation_t *atn_cv = NULL;
+ heur_dtbl_entry_t *hdtbl_entry;
+
+ /* decode bit-string user data within ACSE */
+ offset = dissect_per_bit_string(
+ tvb,
+ offset,
+ actx,
+ tree, hf_index,
+ NO_BOUND,
+ NO_BOUND,
+ FALSE,
+ &tvb_usr,
+ NULL);
+
+ if (tvb_usr) {
+ /* 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 always zero */
+ if((pinfo->clnp_srcref) && (!pinfo->clnp_dstref)){
+
+ atn_cv = find_atn_conversation(
+ &pinfo->src,
+ pinfo->clnp_srcref,
+ &pinfo->dst);
+ }
+ /* CC: srcref and dstref present */
+ if((pinfo->clnp_srcref) && (pinfo->clnp_dstref)){
+
+ atn_cv = find_atn_conversation(
+ &pinfo->src,
+ pinfo->clnp_srcref,
+ &pinfo->dst);
+ }
+
+ if(atn_cv) {
+ switch(atn_cv->ae_qualifier){
+ case cma: /* contact management */
+
+ call_dissector_with_data(
+ atn_cm_handle,
+ tvb_new_subset_remaining(tvb_usr, 0),
+ pinfo,
+ root_tree,
+ NULL);
+ break;
+ case cpdlc: /* plain old cpdlc */
+ case pmcpdlc: /* protected mode cpdlc */
+
+ call_dissector_with_data(
+ atn_cpdlc_handle,
+ tvb_new_subset_remaining(tvb_usr, 0),
+ pinfo,
+ root_tree,
+ NULL);
+ break;
+ default: /* unknown or unhandled datalink application */
+
+ dissector_try_heuristic(
+ atn_ulcs_heur_subdissector_list,
+ tvb_new_subset_remaining(tvb_usr,0),
+ actx->pinfo,
+ root_tree,
+ &hdtbl_entry,
+ NULL);
+ break;
+ }
+ }else {
+
+ dissector_try_heuristic(
+ atn_ulcs_heur_subdissector_list,
+ tvb_new_subset_remaining(tvb_usr,0),
+ actx->pinfo,
+ root_tree,
+ &hdtbl_entry,
+ NULL);
+ }
+ }
+
+ offset += tvb_reported_length_remaining(tvb, offset);
#.END
@@ -548,11 +544,11 @@ PDV-list/presentation-data-values/arbitrary pdv-list_presentation-data-values_ar
# Editor modelines - http://www.wireshark.org/tools/modelines.html
#
# Local variables:
-# c-basic-offset: 2
-# tab-width: 2
-# indent-tabs-mode: t
+# c-basic-offset: 4
+# tab-width: 8
+# indent-tabs-mode: nil
# End:
#
-# vi: set shiftwidth=2 tabstop=2 noexpandtab:
-# :indentSize=2:tabSize=2:noTabs=false:
+# vi: set shiftwidth=4 tabstop=8 expandtab:
+# :indentSize=4:tabSize=8:noTabs=true:
#
diff --git a/asn1/atn-ulcs/packet-atn-ulcs-template.c b/asn1/atn-ulcs/packet-atn-ulcs-template.c
index e5a9f3022d..6bf411ffab 100644
--- a/asn1/atn-ulcs/packet-atn-ulcs-template.c
+++ b/asn1/atn-ulcs/packet-atn-ulcs-template.c
@@ -1,8 +1,3 @@
-/* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
- * vi: set shiftwidth=2 tabstop=2 noexpandtab:
- * :indentSize=2:tabSize=2:noTabs=false:
- */
-
/* packet-atn-ulcs.c
* By Mathias Guettler <guettler@web.de>
* Copyright 2013
@@ -51,63 +46,63 @@
*/
/*
- developper comments:
+ developer comments:
why not using existing ses, pres and acse dissectors ?
- ATN upper layers are derived from OSI standards for session,
- presentation and application but the encoding differs
- (it's PER instead of BER encoding to save bandwith).
- Session and presentation use the "null" encoding option,
- meaning that they are only present at connection establishment
- and ommitted otherwise.
- Instead of adapting existing dissectors it seemed simpler and cleaner
- to implement everything the new atn-ulcs dissector.
+ ATN upper layers are derived from OSI standards for session,
+ presentation and application but the encoding differs
+ (it's PER instead of BER encoding to save bandwith).
+ Session and presentation use the "null" encoding option,
+ meaning that they are only present at connection establishment
+ and ommitted otherwise.
+ Instead of adapting existing dissectors it seemed simpler and cleaner
+ to implement everything the new atn-ulcs dissector.
why using conversations ?
- PER encoded user data is ambigous; the same encoding may apply to a CM or
- CPDLC PDU. The workaround is to decode on a transport connection basis.
- I use my own version of conversations to identify
- the transport connection the PDU belongs to for the standard functions
- from "conversation.h" didn't work out.
+ PER encoded user data is ambigous; the same encoding may apply to a CM or
+ CPDLC PDU. The workaround is to decode on a transport connection basis.
+ I use my own version of conversations to identify
+ the transport connection the PDU belongs to for the standard functions
+ from "conversation.h" didn't work out.
what is the use of AARQ/AARE data ?
- Converstions should be maintained on the COTP layer in a standard way
- for there are usually more packets available than in the layers above.
- In the worst case my dissector is called from a DT packet which
- has destination references but no source reference.
- I have to guess the reference used the other way round
- (curently I am using ACSE PDU'S used during OSI connection establishment for that).
- The idea is that each ACSE AARQ is answered by ACSE AARE and having this sequence
- I have all the source/destination references for this transport connection.
- I use AARQ/AARE data to store the source/destination reference of AARQ as well
- as the optional ae-qualifier which tells me the application and
- the dissector I have to use.
- This approach donesn't work well when there are interleaving AARQ/AARE sequences for
- the same aircraft.
+ Converstions should be maintained on the COTP layer in a standard way
+ for there are usually more packets available than in the layers above.
+ In the worst case my dissector is called from a DT packet which
+ has destination references but no source reference.
+ I have to guess the reference used the other way round
+ (curently I am using ACSE PDU'S used during OSI connection establishment for that).
+ The idea is that each ACSE AARQ is answered by ACSE AARE and having this sequence
+ I have all the source/destination references for this transport connection.
+ I use AARQ/AARE data to store the source/destination reference of AARQ as well
+ as the optional ae-qualifier which tells me the application and
+ the dissector I have to use.
+ This approach donesn't work well when there are interleaving AARQ/AARE sequences for
+ the same aircraft.
which ATN standard is supported ?
- The dissector has been tested with ICAO doc9705 Edition2 compliant traffic.
- No ATN Secutity is supported.
- note:
- The ATN upper layers are derived from OSI standards (ICAO DOC 9705)
- while ATN/IPS (ICAO DOC 9896) which is entirely based on IPV6.
+ The dissector has been tested with ICAO doc9705 Edition2 compliant traffic.
+ No ATN Secutity is supported.
+ note:
+ The ATN upper layers are derived from OSI standards (ICAO DOC 9705)
+ while ATN/IPS (ICAO DOC 9896) which is entirely based on IPV6.
*/
/*
known defects/deficiencies:
-- user-information within AARE is sometines not decoded due to an unset flag
- (the field is optional). As far as I can tell asn2wrs is right here,
- but on the other hand I know that in all of this cases user-information
- is present and is processed by the ATN end system.
- Maybe a true ATN expert may help me out here.
+- user-information within AARE is sometines not decoded due to an unset flag
+ (the field is optional). As far as I can tell asn2wrs is right here,
+ but on the other hand I know that in all of this cases user-information
+ is present and is processed by the ATN end system.
+ Maybe a true ATN expert may help me out here.
- - The conversation handling is based on src/dst addresses as well as
- source or destination references depending on the TP4 packet type.
- This means that after some time these references get reused for
- new conversations. This almost certain happens for traces longer
- than one day rendering this dissector unsuitable for captures exceeding
- this one day.
+ - The conversation handling is based on src/dst addresses as well as
+ source or destination references depending on the TP4 packet type.
+ This means that after some time these references get reused for
+ new conversations. This almost certain happens for traces longer
+ than one day rendering this dissector unsuitable for captures exceeding
+ this one day.
*/
@@ -150,46 +145,46 @@ static proto_tree *root_tree = NULL;
/* forward declarations for functions generated from asn1 */
static int dissect_atn_ulcs_T_externalt_encoding_single_asn1_type(
- tvbuff_t *tvb _U_,
- int offset _U_,
- asn1_ctx_t *actx _U_,
- proto_tree *tree _U_,
- int hf_index
- _U_);
+ tvbuff_t *tvb _U_,
+ int offset _U_,
+ asn1_ctx_t *actx _U_,
+ proto_tree *tree _U_,
+ int hf_index
+ _U_);
static int dissect_atn_ulcs_T_externalt_encoding_octet_aligned(
- tvbuff_t *tvb _U_,
- int offset _U_,
- asn1_ctx_t *actx _U_,
- proto_tree *tree _U_,
- int hf_index _U_);
+ tvbuff_t *tvb _U_,
+ int offset _U_,
+ asn1_ctx_t *actx _U_,
+ proto_tree *tree _U_,
+ int hf_index _U_);
static int dissect_atn_ulcs_T_externalt_encoding_arbitrary(
- tvbuff_t *tvb _U_,
- int offset _U_,
- asn1_ctx_t *actx _U_,
- proto_tree *tree _U_,
- int hf_index _U_);
+ tvbuff_t *tvb _U_,
+ int offset _U_,
+ asn1_ctx_t *actx _U_,
+ proto_tree *tree _U_,
+ int hf_index _U_);
static int dissect_ACSE_apdu_PDU(
- tvbuff_t *tvb _U_,
- packet_info *pinfo _U_,
- proto_tree *tree _U_,
- void *data _U_);
+ tvbuff_t *tvb _U_,
+ packet_info *pinfo _U_,
+ proto_tree *tree _U_,
+ void *data _U_);
guint32 dissect_per_object_descriptor_t(
- tvbuff_t *tvb,
- guint32 offset,
- asn1_ctx_t *actx,
- proto_tree *tree,
- int hf_index,
- tvbuff_t **value_tvb);
-
-static gint dissect_atn_ulcs(
- tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- void *data _U_);
+ tvbuff_t *tvb,
+ guint32 offset,
+ asn1_ctx_t *actx,
+ proto_tree *tree,
+ int hf_index,
+ tvbuff_t **value_tvb);
+
+static gint dissect_atn_ulcs(
+ tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ void *data _U_);
#include "packet-atn-ulcs-hf.c"
@@ -211,34 +206,34 @@ static const value_string per_External_encoding_vals[] = {
/* re-implementing external data: packet-per.c */
static const per_choice_t External_encoding_choice[] =
{
- { 0,
- &hf_atn_ulcs_externalt_encoding_single_asn1_type,
- ASN1_NO_EXTENSIONS,
- dissect_atn_ulcs_T_externalt_encoding_single_asn1_type
- },
- { 1,
- &hf_atn_ulcs_externalt_encoding_octet_aligned,
- ASN1_NO_EXTENSIONS,
- dissect_atn_ulcs_T_externalt_encoding_octet_aligned
- },
- { 2,
- &hf_atn_ulcs_externalt_encoding_arbitrary,
- ASN1_NO_EXTENSIONS,
- dissect_atn_ulcs_T_externalt_encoding_arbitrary
- },
- { 0,
- NULL,
- 0,
- NULL
- }
+ { 0,
+ &hf_atn_ulcs_externalt_encoding_single_asn1_type,
+ ASN1_NO_EXTENSIONS,
+ dissect_atn_ulcs_T_externalt_encoding_single_asn1_type
+ },
+ { 1,
+ &hf_atn_ulcs_externalt_encoding_octet_aligned,
+ ASN1_NO_EXTENSIONS,
+ dissect_atn_ulcs_T_externalt_encoding_octet_aligned
+ },
+ { 2,
+ &hf_atn_ulcs_externalt_encoding_arbitrary,
+ ASN1_NO_EXTENSIONS,
+ dissect_atn_ulcs_T_externalt_encoding_arbitrary
+ },
+ { 0,
+ NULL,
+ 0,
+ NULL
+ }
};
#endif
/* ATN Session layer */
-#define SES_PDU_TYPE_MASK 0xf8
-#define SES_PARAM_IND_MASK 0x04
-#define SES_PARAM_B2_MASK 0x02
-#define SES_PARAM_B1_MASK 0x01
+#define SES_PDU_TYPE_MASK 0xf8
+#define SES_PARAM_IND_MASK 0x04
+#define SES_PARAM_B2_MASK 0x02
+#define SES_PARAM_B1_MASK 0x01
static int hf_atn_ses_type = -1;
static int hf_atn_ses_param_ind = -1;
@@ -251,254 +246,254 @@ static gint ett_atn_ses = -1;
const value_string atn_ses_param_ind[] =
{
- {0, "No Parameter Indication "},
- {1, "Parameter Indication "},
- {0, NULL }
+ {0, "No Parameter Indication "},
+ {1, "Parameter Indication "},
+ {0, NULL }
};
const value_string srf_b2[] =
{
- {0, "Transport Connection is kept"},
- {1, "Transport Connection is released" },
- {0, NULL }
+ {0, "Transport Connection is kept"},
+ {1, "Transport Connection is released" },
+ {0, NULL }
};
const value_string srf_b1[] =
{
- {0, "Transport Connection is transient"},
- {1, "Transport Connection is persistent"},
- {0, NULL }
+ {0, "Transport Connection is transient"},
+ {1, "Transport Connection is persistent"},
+ {0, NULL }
};
-#define SES_ATN_SCN 0xe8
-#define SES_ATN_SCNC 0xf8
-#define SES_ATN_SAC 0xf0
-#define SES_ATN_SACC 0xd8
-#define SES_ATN_SRF 0xe0
-#define SES_ATN_SRFC 0xa0
+#define SES_ATN_SCN 0xe8
+#define SES_ATN_SCNC 0xf8
+#define SES_ATN_SAC 0xf0
+#define SES_ATN_SACC 0xd8
+#define SES_ATN_SRF 0xe0
+#define SES_ATN_SRFC 0xa0
const value_string atn_ses_type[] =
{
- { 0x1d, "Short Connect (SCN) SPDU" },
- { 0x1f, "Short Connect Accept (SAC) SPDU" },
- { 0x1e, "Short Connect Accept Continue (SACC) SPDU" },
- { 0x1c, "Short Refuse (SRF) SPDU" },
- { 0x14, "Short Refuse Continue (SRFC) SPDU" },
- {0, NULL }
+ { 0x1d, "Short Connect (SCN) SPDU" },
+ { 0x1f, "Short Connect Accept (SAC) SPDU" },
+ { 0x1e, "Short Connect Accept Continue (SACC) SPDU" },
+ { 0x1c, "Short Refuse (SRF) SPDU" },
+ { 0x14, "Short Refuse Continue (SRFC) SPDU" },
+ {0, NULL }
};
/* ATN Presentation layer */
#define ATN_PRES_PROTO "ICAO Doc9705 ULCS Presentation (ISO 8822/8823-1:1994)"
-static int hf_atn_pres_err = -1;
+static int hf_atn_pres_err = -1;
static int hf_atn_pres_pdu_type = -1;
-static gint ett_atn_pres = -1;
+static gint ett_atn_pres = -1;
#define ATN_SES_PRES_MASK 0xf803
-#define PRES_CPR_ER_MASK 0x70
+#define PRES_CPR_ER_MASK 0x70
/* type determined by SPDU and PPDU */
const value_string atn_pres_vals[] =
{
- { 0xe802, "Short Presentation Connect PPDU (CP) " },
- { 0xf802, "Short Presentation Connect PPDU (CP) " },
- { 0xf002, "Short Presentation Connect Accept PPDU (CPA)" },
- { 0xd802, "Short Presentation Connect Accept PPDU (CPA)" },
- { 0xe002, "Short Presentation Connect Reject PPDU (CPR)" },
- { 0xa002, "Short Presentation Connect Reject PPDU (CPR)" },
- {0, NULL }
+ { 0xe802, "Short Presentation Connect PPDU (CP) " },
+ { 0xf802, "Short Presentation Connect PPDU (CP) " },
+ { 0xf002, "Short Presentation Connect Accept PPDU (CPA)" },
+ { 0xd802, "Short Presentation Connect Accept PPDU (CPA)" },
+ { 0xe002, "Short Presentation Connect Reject PPDU (CPR)" },
+ { 0xa002, "Short Presentation Connect Reject PPDU (CPR)" },
+ {0, NULL }
};
/* Short Presentation Connect Reject PPDU's 0yyy 00zz */
const value_string atn_pres_err[] =
{
- { 0x00, "Presentation-user" },
- { 0x01, "Reason not specified (transient)"},
- { 0x02, "Temporary congestion (transient)"},
- { 0x03, "Local limit exceeded (transient)"},
- { 0x04, "Called presentation-address unknown (permanent)"},
- { 0x05, "Protocol version not supported (permanent)"},
- { 0x06, "Default context not supported (permanent)"},
- { 0x07, "User data not readable (permanent)"},
- { 0, NULL }
+ { 0x00, "Presentation-user" },
+ { 0x01, "Reason not specified (transient)"},
+ { 0x02, "Temporary congestion (transient)"},
+ { 0x03, "Local limit exceeded (transient)"},
+ { 0x04, "Called presentation-address unknown (permanent)"},
+ { 0x05, "Protocol version not supported (permanent)"},
+ { 0x06, "Default context not supported (permanent)"},
+ { 0x07, "User data not readable (permanent)"},
+ { 0, NULL }
};
#if 0
/* re-implementing external data: packet-per.c */
-static int atn_ulcs_Externalt_encoding(
- tvbuff_t *tvb _U_,
- int offset _U_,
- asn1_ctx_t *actx _U_,
- proto_tree *tree _U_,
- int hf_index _U_)
+static int atn_ulcs_Externalt_encoding(
+ 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_ulcs_EXTERNALt,
- External_encoding_choice,
- &actx->external.encoding);
-
- return offset;
+ offset = dissect_per_choice(
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index,
+ ett_atn_ulcs_EXTERNALt,
+ External_encoding_choice,
+ &actx->external.encoding);
+
+ return offset;
}
/* re-implementing external data: packet-per.c */
-static guint32 atn_per_external_type(
- tvbuff_t *tvb _U_,
- guint32 offset,
- asn1_ctx_t *actx,
- proto_tree *tree _U_,
- int hf_index _U_,
- per_type_fn type_cb)
+static guint32 atn_per_external_type(
+ tvbuff_t *tvb _U_,
+ guint32 offset,
+ asn1_ctx_t *actx,
+ proto_tree *tree _U_,
+ int hf_index _U_,
+ per_type_fn type_cb)
{
- memset(&actx->external, '\0', sizeof(actx->external));
- actx->external.hf_index = -1;
- actx->external.encoding = -1;
-
- actx->external.u.per.type_cb = type_cb;
- offset = atn_ulcs_Externalt_encoding(
- tvb,
- offset,
- actx,
- tree,
- hf_index);
-
- memset(
- &actx->external,
- '\0',
- sizeof(actx->external));
-
- actx->external.hf_index = -1;
- actx->external.encoding = -1;
-
- return offset;
+ memset(&actx->external, '\0', sizeof(actx->external));
+ actx->external.hf_index = -1;
+ actx->external.encoding = -1;
+
+ actx->external.u.per.type_cb = type_cb;
+ offset = atn_ulcs_Externalt_encoding(
+ tvb,
+ offset,
+ actx,
+ tree,
+ hf_index);
+
+ memset(
+ &actx->external,
+ '\0',
+ sizeof(actx->external));
+
+ actx->external.hf_index = -1;
+ actx->external.encoding = -1;
+
+ return offset;
}
#endif
/* determine 24-bit aircraft address(ARS) */
/* from 20-byte ATN NSAP. */
guint32 get_aircraft_24_bit_address_from_nsap(
- packet_info *pinfo)
+ packet_info *pinfo)
{
- const guint8* addr = NULL;
- guint32 ars =0;
- guint32 adr_prefix =0;
-
- /* check NSAP address type*/
- if( (pinfo->src.type != get_osi_address_type()) ||
- (pinfo->dst.type != get_osi_address_type())) {
- return ars; }
-
- /* 20 octets address length required */
- /* for ATN */
- if( (pinfo->src.len != 20) ||
- (pinfo->dst.len != 20)) {
- return ars; }
-
- /* first try source address */
- /* if the src address originates */
- /* from an aircraft it's downlink */
-
- /* convert addr into 32-bit integer */
- addr = (const guint8 *)pinfo->src.data;
- adr_prefix =
- ((addr[0]<<24) |
- (addr[1]<<16) |
- (addr[2]<<8) |
- addr[3] );
-
- /* according to ICAO doc9507 Ed2 SV5 */
- /* clause 5.4.3.8.1.5 and 5.4.3.8.1.3 */
- /* mobile addresses contain "c1" of "41" */
- /* in the VER subfield of the NSAP */
- if((adr_prefix == 0x470027c1) ||
- (adr_prefix == 0x47002741)) {
- /* ICAO doc9507 Ed2 SV5 5.4.3.8.4.4 */
- /* states that the ARS subfield containes */
- /* the 24-bitaddress of the aircraft */
- ars = ((addr[8])<<16) |
- ((addr[9])<<8) |
- (addr[10]);
- }
-
- /* try destination address */
- /* if the src address originates */
- /* from an aircraft it's downlink */
-
- /* convert addr into 32-bit integer */
- addr = (const guint8 *)pinfo->dst.data;
- adr_prefix = ((addr[0]<<24) |
- (addr[1]<<16) |
- (addr[2]<<8) |
- addr[3] );
-
- /* according to ICAO doc9507 Ed2 SV5 */
- /* clause 5.4.3.8.1.5 and 5.4.3.8.1.3 */
- /* mobile addresses contain "c1" of "41" */
- /* in the VER subfield of the NSAP */
- if((adr_prefix == 0x470027c1) ||
- (adr_prefix == 0x47002741)) {
- /* ICAO doc9507 Ed2 SV5 5.4.3.8.4.4 */
- /* states that the ARS subfield containes */
- /* the 24-bitaddress of the aircraft */
- ars = ((addr[8])<<16) |
- ((addr[9])<<8) |
- (addr[10]);
- }
- return ars;
+ const guint8* addr = NULL;
+ guint32 ars =0;
+ guint32 adr_prefix =0;
+
+ /* check NSAP address type*/
+ if( (pinfo->src.type != get_osi_address_type()) ||
+ (pinfo->dst.type != get_osi_address_type())) {
+ return ars; }
+
+ /* 20 octets address length required */
+ /* for ATN */
+ if( (pinfo->src.len != 20) ||
+ (pinfo->dst.len != 20)) {
+ return ars; }
+
+ /* first try source address */
+ /* if the src address originates */
+ /* from an aircraft it's downlink */
+
+ /* convert addr into 32-bit integer */
+ addr = (const guint8 *)pinfo->src.data;
+ adr_prefix =
+ ((addr[0]<<24) |
+ (addr[1]<<16) |
+ (addr[2]<<8) |
+ addr[3] );
+
+ /* according to ICAO doc9507 Ed2 SV5 */
+ /* clause 5.4.3.8.1.5 and 5.4.3.8.1.3 */
+ /* mobile addresses contain "c1" of "41" */
+ /* in the VER subfield of the NSAP */
+ if((adr_prefix == 0x470027c1) ||
+ (adr_prefix == 0x47002741)) {
+ /* ICAO doc9507 Ed2 SV5 5.4.3.8.4.4 */
+ /* states that the ARS subfield containes */
+ /* the 24-bitaddress of the aircraft */
+ ars = ((addr[8])<<16) |
+ ((addr[9])<<8) |
+ (addr[10]);
+ }
+
+ /* try destination address */
+ /* if the src address originates */
+ /* from an aircraft it's downlink */
+
+ /* convert addr into 32-bit integer */
+ addr = (const guint8 *)pinfo->dst.data;
+ adr_prefix = ((addr[0]<<24) |
+ (addr[1]<<16) |
+ (addr[2]<<8) |
+ addr[3] );
+
+ /* according to ICAO doc9507 Ed2 SV5 */
+ /* clause 5.4.3.8.1.5 and 5.4.3.8.1.3 */
+ /* mobile addresses contain "c1" of "41" */
+ /* in the VER subfield of the NSAP */
+ if((adr_prefix == 0x470027c1) ||
+ (adr_prefix == 0x47002741)) {
+ /* ICAO doc9507 Ed2 SV5 5.4.3.8.4.4 */
+ /* states that the ARS subfield containes */
+ /* the 24-bitaddress of the aircraft */
+ ars = ((addr[8])<<16) |
+ ((addr[9])<<8) |
+ (addr[10]);
+ }
+ return ars;
}
/* determine whether a PDU is uplink or downlink */
/* by checking for known aircraft address prefices*/
int check_heur_msg_type(packet_info *pinfo _U_)
{
- int t = no_msg;
- const guint8* addr = NULL;
- guint32 adr_prefix =0;
+ int t = no_msg;
+ const guint8* addr = NULL;
+ guint32 adr_prefix =0;
- /* check NSAP address type*/
- if( (pinfo->src.type != get_osi_address_type()) || (pinfo->dst.type != get_osi_address_type())) {
- return t; }
+ /* check NSAP address type*/
+ if( (pinfo->src.type != get_osi_address_type()) || (pinfo->dst.type != get_osi_address_type())) {
+ return t; }
- /* check NSAP address length; 20 octets address length required */
- if( (pinfo->src.len != 20) || (pinfo->dst.len != 20)) {
- return t; }
+ /* check NSAP address length; 20 octets address length required */
+ if( (pinfo->src.len != 20) || (pinfo->dst.len != 20)) {
+ return t; }
- addr = (const guint8 *)pinfo->src.data;
+ addr = (const guint8 *)pinfo->src.data;
- /* convert address to 32-bit integer */
- adr_prefix = ((addr[0]<<24) | (addr[1]<<16) | (addr[2]<<8) | addr[3] );
+ /* convert address to 32-bit integer */
+ adr_prefix = ((addr[0]<<24) | (addr[1]<<16) | (addr[2]<<8) | addr[3] );
- /* According to the published ATN NSAP adddressing scheme */
- /* in ICAO doc9705 Ed2 SV5 5.4.3.8.1.3 and 5.4.3.8.1.5 */
- /* the "VER" field shall be 0x41 ("all Mobile AINSC") or */
- /* 0xc1 ("all Mobile ATSC") for mobile stations (aka aircraft).*/
- if((adr_prefix == 0x470027c1) || (adr_prefix == 0x47002741)) {
- t = dm; /* source is an aircraft: it's a downlink PDU */
- }
+ /* According to the published ATN NSAP adddressing scheme */
+ /* in ICAO doc9705 Ed2 SV5 5.4.3.8.1.3 and 5.4.3.8.1.5 */
+ /* the "VER" field shall be 0x41 ("all Mobile AINSC") or */
+ /* 0xc1 ("all Mobile ATSC") for mobile stations (aka aircraft).*/
+ if((adr_prefix == 0x470027c1) || (adr_prefix == 0x47002741)) {
+ t = dm; /* source is an aircraft: it's a downlink PDU */
+ }
- addr = (const guint8 *)pinfo->dst.data;
+ addr = (const guint8 *)pinfo->dst.data;
- /* convert address to 32-bit integer */
- adr_prefix = ((addr[0]<<24) | (addr[1]<<16) | (addr[2]<<8) | addr[3] );
+ /* convert address to 32-bit integer */
+ adr_prefix = ((addr[0]<<24) | (addr[1]<<16) | (addr[2]<<8) | addr[3] );
- /* According to the published ATN NSAP adddressing scheme */
- /* in ICAO doc9705 Ed2 SV5 5.4.3.8.1.3 and 5.4.3.8.1.5 */
- /* the "VER" field shall be 0x41 ("all Mobile AINSC") or */
- /* 0xc1 ("all Mobile ATSC") for mobile stations (aka aircraft).*/
- if((adr_prefix == 0x470027c1) || (adr_prefix == 0x47002741)) {
- t = um; /* destination is aircraft: uplink PDU */
- }
+ /* According to the published ATN NSAP adddressing scheme */
+ /* in ICAO doc9705 Ed2 SV5 5.4.3.8.1.3 and 5.4.3.8.1.5 */
+ /* the "VER" field shall be 0x41 ("all Mobile AINSC") or */
+ /* 0xc1 ("all Mobile ATSC") for mobile stations (aka aircraft).*/
+ if((adr_prefix == 0x470027c1) || (adr_prefix == 0x47002741)) {
+ t = um; /* destination is aircraft: uplink PDU */
+ }
- return t;
+ return t;
}
/* conversation may be used by other dissectors */
wmem_tree_t *get_atn_conversation_tree(void){
- return atn_conversation_tree;
+ return atn_conversation_tree;
}
@@ -508,401 +503,401 @@ wmem_tree_t *get_atn_conversation_tree(void){
/* IMHO it's a hack - conversations should be maintained */
/* at transport layer (cotp) but this isn't working yet. */
atn_conversation_t * find_atn_conversation(
- address *address1,
- guint16 clnp_ref1,
- address *address2 )
+ address *address1,
+ guint16 clnp_ref1,
+ address *address2 )
{
- atn_conversation_t *cv = NULL;
- guint32 key = 0;
- guint32 tmp = 0;
+ atn_conversation_t *cv = NULL;
+ guint32 key = 0;
+ guint32 tmp = 0;
- ADD_ADDRESS_TO_HASH( tmp, address1);
- key = (tmp << 16) | clnp_ref1 ;
+ ADD_ADDRESS_TO_HASH( tmp, address1);
+ key = (tmp << 16) | clnp_ref1 ;
- ADD_ADDRESS_TO_HASH( tmp, address2);
- key = (tmp << 24) | key ;
+ ADD_ADDRESS_TO_HASH( tmp, address2);
+ key = (tmp << 24) | key ;
- /* search for atn conversation */
- cv = (atn_conversation_t *)
- wmem_tree_lookup32(get_atn_conversation_tree(),key);
+ /* search for atn conversation */
+ cv = (atn_conversation_t *)
+ wmem_tree_lookup32(get_atn_conversation_tree(),key);
- return cv;
+ return cv;
}
/* create a atn conversation tree node */
/* conversation data is to be allocated externally */
/* a conversation may be referenced from both endpoints */
atn_conversation_t * create_atn_conversation(
- address *address1,
- guint16 clnp_ref1,
- address *address2,
- atn_conversation_t *conversation)
+ address *address1,
+ guint16 clnp_ref1,
+ address *address2,
+ atn_conversation_t *conversation)
{
- atn_conversation_t *cv = NULL;
- guint32 key = 0;
- guint32 tmp = 0;
+ atn_conversation_t *cv = NULL;
+ guint32 key = 0;
+ guint32 tmp = 0;
- ADD_ADDRESS_TO_HASH( tmp, address1);
- key = (tmp << 16) | clnp_ref1 ;
+ ADD_ADDRESS_TO_HASH( tmp, address1);
+ key = (tmp << 16) | clnp_ref1 ;
- ADD_ADDRESS_TO_HASH( tmp, address2);
- key = (tmp << 24) | key ;
+ ADD_ADDRESS_TO_HASH( tmp, address2);
+ key = (tmp << 24) | key ;
- /* search for aircraft entry */
- cv = (atn_conversation_t *)
- wmem_tree_lookup32(
- get_atn_conversation_tree(),
- key);
+ /* search for aircraft entry */
+ cv = (atn_conversation_t *)
+ wmem_tree_lookup32(
+ get_atn_conversation_tree(),
+ key);
- /* tree node already present */
- if(cv) {
- return NULL; }
+ /* tree node already present */
+ if(cv) {
+ return NULL; }
- /* insert conversation data in tree*/
- wmem_tree_insert32(
- get_atn_conversation_tree(),
- key,
- (void*)conversation);
+ /* insert conversation data in tree*/
+ wmem_tree_insert32(
+ get_atn_conversation_tree(),
+ key,
+ (void*)conversation);
- return conversation;
+ return conversation;
}
static int
dissect_atn_ulcs(
- tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- void *data _U_)
+ tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ void *data _U_)
{
- int offset = 0;
- proto_item *ti = NULL;
- proto_tree *atn_ulcs_tree = NULL;
- guint8 value_pres = 0;
- guint8 value_ses = 0;
- guint16 value_ses_pres = 0;
-
- root_tree = tree;
-
- /* data pointer */
- /* decode as PDV-list */
- if ( (int)(intptr_t) data == FALSE )
- {
- ti = proto_tree_add_item(
- tree,
- proto_atn_ulcs,
- tvb,
- 0,
- 0 ,
- ENC_NA);
-
- atn_ulcs_tree = proto_item_add_subtree(
- ti,
- ett_atn_ulcs);
-
- dissect_Fully_encoded_data_PDU(
- tvb,
- pinfo,
- atn_ulcs_tree, NULL);
-
- return offset +
- tvb_reported_length_remaining(tvb, offset ) ;
- }
-
- /* decode as SPDU, PPDU and ACSE PDU */
- if ( (int)(intptr_t) data == TRUE )
- {
- /* get session and presentation PDU's */
- value_ses_pres = tvb_get_ntohs(tvb, offset);
-
- /* SPDU: dissect session layer */
- atn_ulcs_tree = proto_tree_add_subtree(
- tree, tvb, offset, 0,
- ett_atn_ses, NULL, ATN_SES_PROTO );
-
- /* get SPDU (1 octet) */
- value_ses = tvb_get_guint8(tvb, offset);
-
- /* SPDU type/identifier */
- proto_tree_add_item(atn_ulcs_tree,
- hf_atn_ses_type,
- tvb,
- offset,
- 1,
- ENC_BIG_ENDIAN );
-
- /* SPDU parameters may be present in Short Refuse */
- /* or Short Refuse Continue SPDU's */
- switch(value_ses & SES_PDU_TYPE_MASK){
- case SES_ATN_SRF:
- case SES_ATN_SRFC:
-
- /* SPDU parameter presence */
- proto_tree_add_item(atn_ulcs_tree,
- hf_atn_ses_param_ind,
- tvb,
- offset,
- 1,
- ENC_BIG_ENDIAN );
-
- /* parameter B2 */
- proto_tree_add_item(atn_ulcs_tree,
- hf_atn_ses_param_b2,
- tvb,
- offset,
- 1,
- ENC_BIG_ENDIAN );
-
- /* parameter B1 */
- proto_tree_add_item(atn_ulcs_tree,
- hf_atn_ses_param_b1,
- tvb,
- offset,
- 1,
- ENC_BIG_ENDIAN );
-
- break;
- default:
- break;
- }
- offset++;
-
- /* PPDU: dissect presentation layer */
- atn_ulcs_tree = proto_tree_add_subtree(
- tree, tvb, offset, 0,
- ett_atn_pres, NULL, ATN_PRES_PROTO );
-
- value_pres = tvb_get_guint8(tvb, offset);
-
- /* need session context to identify PPDU type */
- /* note: */
- proto_tree_add_uint_format(atn_ulcs_tree, hf_atn_pres_pdu_type,
- tvb,
- offset,
- 1,
- value_ses_pres,
- "%s (0x%02x)",
- val_to_str( value_ses_pres & ATN_SES_PRES_MASK , atn_pres_vals, "?"),
- value_pres);
-
- /* PPDU errorcode in case of SRF/CPR */
- switch(value_ses & SES_PDU_TYPE_MASK){
- case SES_ATN_SRF:
- case SES_ATN_SRFC:
- proto_tree_add_item(
- atn_ulcs_tree,
- hf_atn_pres_err,
- tvb,
- offset,
- 1,
- ENC_BIG_ENDIAN );
- break;
- default:
- break;
- }
-
- offset++;
-
- /* ACSE PDU: dissect application layer */
- atn_ulcs_tree = proto_tree_add_subtree(
- tree, tvb, offset, 0,
- ett_atn_acse, NULL, ATN_ACSE_PROTO );
-
- dissect_ACSE_apdu_PDU(
- tvb_new_subset_remaining(tvb, offset),
- pinfo,
- atn_ulcs_tree, NULL);
-
- return offset +
- tvb_reported_length_remaining(tvb, offset );
- }
- return offset;
+ int offset = 0;
+ proto_item *ti = NULL;
+ proto_tree *atn_ulcs_tree = NULL;
+ guint8 value_pres = 0;
+ guint8 value_ses = 0;
+ guint16 value_ses_pres = 0;
+
+ root_tree = tree;
+
+ /* data pointer */
+ /* decode as PDV-list */
+ if ( (int)(intptr_t) data == FALSE )
+ {
+ ti = proto_tree_add_item(
+ tree,
+ proto_atn_ulcs,
+ tvb,
+ 0,
+ 0 ,
+ ENC_NA);
+
+ atn_ulcs_tree = proto_item_add_subtree(
+ ti,
+ ett_atn_ulcs);
+
+ dissect_Fully_encoded_data_PDU(
+ tvb,
+ pinfo,
+ atn_ulcs_tree, NULL);
+
+ return offset +
+ tvb_reported_length_remaining(tvb, offset ) ;
+ }
+
+ /* decode as SPDU, PPDU and ACSE PDU */
+ if ( (int)(intptr_t) data == TRUE )
+ {
+ /* get session and presentation PDU's */
+ value_ses_pres = tvb_get_ntohs(tvb, offset);
+
+ /* SPDU: dissect session layer */
+ atn_ulcs_tree = proto_tree_add_subtree(
+ tree, tvb, offset, 0,
+ ett_atn_ses, NULL, ATN_SES_PROTO );
+
+ /* get SPDU (1 octet) */
+ value_ses = tvb_get_guint8(tvb, offset);
+
+ /* SPDU type/identifier */
+ proto_tree_add_item(atn_ulcs_tree,
+ hf_atn_ses_type,
+ tvb,
+ offset,
+ 1,
+ ENC_BIG_ENDIAN );
+
+ /* SPDU parameters may be present in Short Refuse */
+ /* or Short Refuse Continue SPDU's */
+ switch(value_ses & SES_PDU_TYPE_MASK){
+ case SES_ATN_SRF:
+ case SES_ATN_SRFC:
+
+ /* SPDU parameter presence */
+ proto_tree_add_item(atn_ulcs_tree,
+ hf_atn_ses_param_ind,
+ tvb,
+ offset,
+ 1,
+ ENC_BIG_ENDIAN );
+
+ /* parameter B2 */
+ proto_tree_add_item(atn_ulcs_tree,
+ hf_atn_ses_param_b2,
+ tvb,
+ offset,
+ 1,
+ ENC_BIG_ENDIAN );
+
+ /* parameter B1 */
+ proto_tree_add_item(atn_ulcs_tree,
+ hf_atn_ses_param_b1,
+ tvb,
+ offset,
+ 1,
+ ENC_BIG_ENDIAN );
+
+ break;
+ default:
+ break;
+ }
+ offset++;
+
+ /* PPDU: dissect presentation layer */
+ atn_ulcs_tree = proto_tree_add_subtree(
+ tree, tvb, offset, 0,
+ ett_atn_pres, NULL, ATN_PRES_PROTO );
+
+ value_pres = tvb_get_guint8(tvb, offset);
+
+ /* need session context to identify PPDU type */
+ /* note: */
+ proto_tree_add_uint_format(atn_ulcs_tree, hf_atn_pres_pdu_type,
+ tvb,
+ offset,
+ 1,
+ value_ses_pres,
+ "%s (0x%02x)",
+ val_to_str( value_ses_pres & ATN_SES_PRES_MASK , atn_pres_vals, "?"),
+ value_pres);
+
+ /* PPDU errorcode in case of SRF/CPR */
+ switch(value_ses & SES_PDU_TYPE_MASK){
+ case SES_ATN_SRF:
+ case SES_ATN_SRFC:
+ proto_tree_add_item(
+ atn_ulcs_tree,
+ hf_atn_pres_err,
+ tvb,
+ offset,
+ 1,
+ ENC_BIG_ENDIAN );
+ break;
+ default:
+ break;
+ }
+
+ offset++;
+
+ /* ACSE PDU: dissect application layer */
+ atn_ulcs_tree = proto_tree_add_subtree(
+ tree, tvb, offset, 0,
+ ett_atn_acse, NULL, ATN_ACSE_PROTO );
+
+ dissect_ACSE_apdu_PDU(
+ tvb_new_subset_remaining(tvb, offset),
+ pinfo,
+ atn_ulcs_tree, NULL);
+
+ return offset +
+ tvb_reported_length_remaining(tvb, offset );
+ }
+ return offset;
}
static gboolean dissect_atn_ulcs_heur(
- tvbuff_t *tvb,
- packet_info *pinfo,
- proto_tree *tree,
- void *data _U_)
+ tvbuff_t *tvb,
+ packet_info *pinfo,
+ proto_tree *tree,
+ void *data _U_)
{
- /* do we have enough data*/
- /* at least session + presentation data or pdv-list */
- if (tvb_captured_length(tvb) < 2){
- return FALSE; }
-
- /* check for session/presentation/ACSE PDU's */
- /* SPDU and PPDU are one octet each */
- switch( tvb_get_ntohs(tvb, 0) & 0xf8ff ){
- case 0xe802: /* SCN + CP*/
- case 0xf802: /* SCNC + CP */
- case 0xf002: /* SAC + CPA */
- case 0xd802: /* SACC + CPA */
- case 0xe002: /* SRF + CPR + R0 */
- case 0xe012: /* SRF + CPR + R1 */
- case 0xe022: /* SRF + CPR + R2 */
- case 0xe032: /* SRF + CPR + R3 */
- case 0xe042: /* SRF + CPR + R4 */
- case 0xe052: /* SRF + CPR + R5 */
- case 0xe062: /* SRF + CPR + R6 */
- case 0xe072: /* SRF + CPR + R7 */
- case 0xa002: /* SRFC + CPR + R0*/
- case 0xa012: /* SRFC + CPR + R1*/
- case 0xa022: /* SRFC + CPR + R2*/
- case 0xa032: /* SRFC + CPR + R3*/
- case 0xa042: /* SRFC + CPR + R4*/
- case 0xa052: /* SRFC + CPR + R5*/
- case 0xa062: /* SRFC + CPR + R6*/
- case 0xa072: /* SRFC + CPR + R7*/
- /* indicate to dissector routine */
- /* that a least SPDU, PPDU and */
- /* ACSE PDU is present */
- dissect_atn_ulcs(
- tvb,
- pinfo,
- tree,
- (void*) TRUE);
- return TRUE;
- default: /* no SPDU */
- break;
- }
-
- /* try to detect "Fully-encoded-data" heuristically */
- /* the constants listed match the ASN.1 PER encoding */
- /* of PDV-List */
- switch( tvb_get_ntohs(tvb, 0) & 0xfff0 ){
- case 0x0020: /* acse-apdu */
- case 0x00a0: /* user-ase-apdu */
- /* indicate to dissector routine */
- /* that a PDV-list PDU is present */
- /* */
- /* PDV-list PDU may contain */
- /* application protocol data (CM, CPDLC) */
- /* or an ACSE PDU */
- dissect_atn_ulcs(tvb, pinfo, tree, (void*) FALSE);
- return TRUE;
- break;
- default: /* no or unsupported PDU */
- break;
- }
- return FALSE;
+ /* do we have enough data*/
+ /* at least session + presentation data or pdv-list */
+ if (tvb_captured_length(tvb) < 2){
+ return FALSE; }
+
+ /* check for session/presentation/ACSE PDU's */
+ /* SPDU and PPDU are one octet each */
+ switch( tvb_get_ntohs(tvb, 0) & 0xf8ff ){
+ case 0xe802: /* SCN + CP*/
+ case 0xf802: /* SCNC + CP */
+ case 0xf002: /* SAC + CPA */
+ case 0xd802: /* SACC + CPA */
+ case 0xe002: /* SRF + CPR + R0 */
+ case 0xe012: /* SRF + CPR + R1 */
+ case 0xe022: /* SRF + CPR + R2 */
+ case 0xe032: /* SRF + CPR + R3 */
+ case 0xe042: /* SRF + CPR + R4 */
+ case 0xe052: /* SRF + CPR + R5 */
+ case 0xe062: /* SRF + CPR + R6 */
+ case 0xe072: /* SRF + CPR + R7 */
+ case 0xa002: /* SRFC + CPR + R0*/
+ case 0xa012: /* SRFC + CPR + R1*/
+ case 0xa022: /* SRFC + CPR + R2*/
+ case 0xa032: /* SRFC + CPR + R3*/
+ case 0xa042: /* SRFC + CPR + R4*/
+ case 0xa052: /* SRFC + CPR + R5*/
+ case 0xa062: /* SRFC + CPR + R6*/
+ case 0xa072: /* SRFC + CPR + R7*/
+ /* indicate to dissector routine */
+ /* that a least SPDU, PPDU and */
+ /* ACSE PDU is present */
+ dissect_atn_ulcs(
+ tvb,
+ pinfo,
+ tree,
+ (void*) TRUE);
+ return TRUE;
+ default: /* no SPDU */
+ break;
+ }
+
+ /* try to detect "Fully-encoded-data" heuristically */
+ /* the constants listed match the ASN.1 PER encoding */
+ /* of PDV-List */
+ switch( tvb_get_ntohs(tvb, 0) & 0xfff0 ){
+ case 0x0020: /* acse-apdu */
+ case 0x00a0: /* user-ase-apdu */
+ /* indicate to dissector routine */
+ /* that a PDV-list PDU is present */
+ /* */
+ /* PDV-list PDU may contain */
+ /* application protocol data (CM, CPDLC) */
+ /* or an ACSE PDU */
+ dissect_atn_ulcs(tvb, pinfo, tree, (void*) FALSE);
+ return TRUE;
+ break;
+ default: /* no or unsupported PDU */
+ break;
+ }
+ return FALSE;
}
void proto_register_atn_ulcs (void)
{
- static hf_register_info hf_atn_ulcs[] = {
- #include "packet-atn-ulcs-hfarr.c"
- {&hf_atn_ses_type,
- { "SPDU Type",
- "atn-ulcs.ses.type",
- FT_UINT8,
- BASE_HEX,
- VALS(atn_ses_type),
- 0xf8,
- "Indicates presence of session parameters",
- HFILL}},
- {&hf_atn_ses_param_ind,
- { "SPDU Parameter Indication",
- "atn-ulcs.ses.parameter-indication",
- FT_UINT8,
- BASE_HEX,
- VALS(atn_ses_param_ind),
- SES_PARAM_IND_MASK,
- "Indicates presence of session parameters",
- HFILL}},
- {&hf_atn_ses_param_b1,
- { "SRF Parameter B1",
- "atn-ulcs.ses.srf-b1",
- FT_UINT8,
- BASE_HEX,
- VALS(srf_b1),
- 0x01,
- "Determines if transport connection reject is transient or persistent",
- HFILL}},
- {&hf_atn_ses_param_b2,
- { "SRF Parameter B2",
- "atn-ulcs.ses.srf-b2",
- FT_UINT8,
- BASE_HEX,
- VALS(srf_b2),
- 0x02,
- "Determines if transport connection is retained or released",
- HFILL}},
- { &hf_atn_pres_err,
- { "Error Code", "atn-ulcs.pres.cpr-error",
- FT_UINT8,
- BASE_HEX,
- VALS(atn_pres_err),
- PRES_CPR_ER_MASK,
- NULL,
- HFILL}},
- { &hf_atn_pres_pdu_type,
- { "PDU type", "atn-ulcs.pres.pdu_type",
- FT_UINT8,
- BASE_HEX,
- NULL,
- ATN_SES_PRES_MASK,
- NULL,
- HFILL}},
- };
-
- static gint *ett[] = {
- #include "packet-atn-ulcs-ettarr.c"
- &ett_atn_ses,
- &ett_atn_pres,
- &ett_atn_acse,
- &ett_atn_ulcs
- };
-
- proto_atn_ulcs = proto_register_protocol (
- ATN_ULCS_PROTO ,
- "ATN-ULCS",
- "atn-ulcs");
-
- proto_register_field_array (
- proto_atn_ulcs,
- hf_atn_ulcs,
- array_length(hf_atn_ulcs));
-
- proto_register_subtree_array (
- ett,
- array_length (ett));
-
- new_register_dissector(
- "atn-ulcs",
- dissect_atn_ulcs,
- proto_atn_ulcs);
-
- atn_cm_handle = find_dissector("atn-cm");
- atn_cpdlc_handle = find_dissector("atn-cpdlc");
-
- /* initiate sub dissector list */
- atn_ulcs_heur_subdissector_list = register_heur_dissector_list("atn-ulcs");
-
- /* init aare/aare data */
- aarq_data_tree = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
-
- atn_conversation_tree = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+ static hf_register_info hf_atn_ulcs[] = {
+ #include "packet-atn-ulcs-hfarr.c"
+ {&hf_atn_ses_type,
+ { "SPDU Type",
+ "atn-ulcs.ses.type",
+ FT_UINT8,
+ BASE_HEX,
+ VALS(atn_ses_type),
+ 0xf8,
+ "Indicates presence of session parameters",
+ HFILL}},
+ {&hf_atn_ses_param_ind,
+ { "SPDU Parameter Indication",
+ "atn-ulcs.ses.parameter-indication",
+ FT_UINT8,
+ BASE_HEX,
+ VALS(atn_ses_param_ind),
+ SES_PARAM_IND_MASK,
+ "Indicates presence of session parameters",
+ HFILL}},
+ {&hf_atn_ses_param_b1,
+ { "SRF Parameter B1",
+ "atn-ulcs.ses.srf-b1",
+ FT_UINT8,
+ BASE_HEX,
+ VALS(srf_b1),
+ 0x01,
+ "Determines if transport connection reject is transient or persistent",
+ HFILL}},
+ {&hf_atn_ses_param_b2,
+ { "SRF Parameter B2",
+ "atn-ulcs.ses.srf-b2",
+ FT_UINT8,
+ BASE_HEX,
+ VALS(srf_b2),
+ 0x02,
+ "Determines if transport connection is retained or released",
+ HFILL}},
+ { &hf_atn_pres_err,
+ { "Error Code", "atn-ulcs.pres.cpr-error",
+ FT_UINT8,
+ BASE_HEX,
+ VALS(atn_pres_err),
+ PRES_CPR_ER_MASK,
+ NULL,
+ HFILL}},
+ { &hf_atn_pres_pdu_type,
+ { "PDU type", "atn-ulcs.pres.pdu_type",
+ FT_UINT8,
+ BASE_HEX,
+ NULL,
+ ATN_SES_PRES_MASK,
+ NULL,
+ HFILL}},
+ };
+
+ static gint *ett[] = {
+ #include "packet-atn-ulcs-ettarr.c"
+ &ett_atn_ses,
+ &ett_atn_pres,
+ &ett_atn_acse,
+ &ett_atn_ulcs
+ };
+
+ proto_atn_ulcs = proto_register_protocol (
+ ATN_ULCS_PROTO ,
+ "ATN-ULCS",
+ "atn-ulcs");
+
+ proto_register_field_array (
+ proto_atn_ulcs,
+ hf_atn_ulcs,
+ array_length(hf_atn_ulcs));
+
+ proto_register_subtree_array (
+ ett,
+ array_length (ett));
+
+ new_register_dissector(
+ "atn-ulcs",
+ dissect_atn_ulcs,
+ proto_atn_ulcs);
+
+ atn_cm_handle = find_dissector("atn-cm");
+ atn_cpdlc_handle = find_dissector("atn-cpdlc");
+
+ /* initiate sub dissector list */
+ atn_ulcs_heur_subdissector_list = register_heur_dissector_list("atn-ulcs");
+
+ /* init aare/aare data */
+ aarq_data_tree = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+
+ atn_conversation_tree = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
}
void proto_reg_handoff_atn_ulcs(void)
{
- /* add session dissector to cotp dissector list dissector list*/
- heur_dissector_add(
- "cotp",
- dissect_atn_ulcs_heur,
- "ATN-ULCS over COTP",
- "atn-ucls_cotp",
- proto_atn_ulcs, HEURISTIC_ENABLE);
+ /* add session dissector to cotp dissector list dissector list*/
+ heur_dissector_add(
+ "cotp",
+ dissect_atn_ulcs_heur,
+ "ATN-ULCS over COTP",
+ "atn-ucls_cotp",
+ proto_atn_ulcs, HEURISTIC_ENABLE);
}
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*
* Local variables:
- * c-basic-offset: 2
- * tab-width: 2
- * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=2 tabstop=2 noexpandtab:
- * :indentSize=2:tabSize=2:noTabs=false:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/
diff --git a/asn1/atn-ulcs/packet-atn-ulcs-template.h b/asn1/atn-ulcs/packet-atn-ulcs-template.h
index 0dc08d9e37..27ed768f0f 100644
--- a/asn1/atn-ulcs/packet-atn-ulcs-template.h
+++ b/asn1/atn-ulcs/packet-atn-ulcs-template.h
@@ -1,8 +1,3 @@
-/* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
- * vi: set shiftwidth=2 tabstop=2 noexpandtab:
- * :indentSize=2:tabSize=2:noTabs=false:
- */
-
/* packet-atn-ulcs.h
* Definitions for atn packet disassembly structures and routines
*
@@ -35,49 +30,49 @@
/* IA5 charset (7-bit) for PER IA5 decoding */
static const gchar 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'
+ 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'
};
enum msg_type {
- um,
- dm,
- no_msg
+ um,
+ dm,
+ no_msg
};
enum ae_qualifier {
- ads = 0,
- cma =1, /* contact management (CM) */
- cpdlc = 2, /* "plain old" CPDLC */
- ati = 3 ,
- arf =10 ,
- met =11,
- gac =12,
- pmcpdlc =22, /* "protected mode" CPDLC */
- unknown = -1
+ ads = 0,
+ cma =1, /* contact management (CM) */
+ cpdlc = 2, /* "plain old" CPDLC */
+ ati = 3 ,
+ arf =10 ,
+ met =11,
+ gac =12,
+ pmcpdlc =22, /* "protected mode" CPDLC */
+ unknown = -1
};
typedef struct atn_conversation_t {
- gint ae_qualifier; /* A/G application type */
+ gint ae_qualifier; /* A/G application type */
} atn_conversation_t;
atn_conversation_t * create_atn_conversation(
- address*,
- guint16,
- address*,
- atn_conversation_t*);
+ address*,
+ guint16,
+ address*,
+ atn_conversation_t*);
atn_conversation_t * find_atn_conversation(
- address*,
- guint16,
- address*);
+ address*,
+ guint16,
+ address*);
/* struct for conversation data reconstruction used in AARQ and AARE */
/* if transport data is larger than 32 octets AARQ/AARE is contained */
@@ -85,11 +80,11 @@ atn_conversation_t * find_atn_conversation(
/* if AARQ/AARQ is contained within CR/CC only src_ref is present in CR */
/* while CC provides src_ref and dstref */
typedef struct aarq_data_t {
- gboolean aarq_pending; /* flag tells whether AARQ/sequence is pending (true) */
- /* required not to mix up different AARQ/AARE sequences */
- /* during simoultanous establishment of transport connections */
- /* i.e. GND facility initialises cpcstart and cmcontact at the same time */
- atn_conversation_t* cv; /* pointer to AARQ conversation */
+ gboolean aarq_pending; /* flag tells whether AARQ/sequence is pending (true) */
+ /* required not to mix up different AARQ/AARE sequences */
+ /* during simoultanous establishment of transport connections */
+ /* i.e. GND facility initialises cpcstart and cmcontact at the same time */
+ atn_conversation_t* cv; /* pointer to AARQ conversation */
} aarq_data_t;
wmem_tree_t *get_atn_conversation_tree(void);
@@ -103,11 +98,11 @@ int check_heur_msg_type(packet_info *);
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*
* Local variables:
- * c-basic-offset: 2
- * tab-width: 2
- * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
* End:
*
- * vi: set shiftwidth=2 tabstop=2 noexpandtab:
- * :indentSize=2:tabSize=2:noTabs=false:
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
*/