/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "FANSACTwoWayDataLinkCommunications"
 * 	found in "../../../libacars.asn1/fans-cpdlc.asn1"
 * 	`asn1c -fcompound-names -fincludes-quoted -gen-PER`
 */

#ifndef	_FANSATCDownlinkMsgElementId_H_
#define	_FANSATCDownlinkMsgElementId_H_


#include "asn_application.h"

/* Including external dependencies */
#include "NULL.h"
#include "FANSAltitude.h"
#include "FANSAltitudeAltitude.h"
#include "FANSPositionAltitude.h"
#include "FANSTimeAltitude.h"
#include "FANSDistanceOffsetDirection.h"
#include "FANSPositionDistanceOffsetDirection.h"
#include "FANSTimeDistanceOffsetDirection.h"
#include "FANSSpeed.h"
#include "FANSSpeedSpeed.h"
#include "FANSFrequency.h"
#include "FANSPosition.h"
#include "FANSProcedureName.h"
#include "FANSRouteClearance.h"
#include "FANSPositionRouteClearance.h"
#include "FANSDegrees.h"
#include "FANSTime.h"
#include "FANSBeaconCode.h"
#include "FANSPositionReport.h"
#include "FANSRemainingFuelRemainingSouls.h"
#include "FANSErrorInformation.h"
#include "FANSICAOfacilityDesignation.h"
#include "FANSFreeText.h"
#include "FANSVersionNumber.h"
#include "FANSTimeDistanceToFromPosition.h"
#include "FANSATISCode.h"
#include "constr_CHOICE.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum FANSATCDownlinkMsgElementId_PR {
	FANSATCDownlinkMsgElementId_PR_NOTHING,	/* No components present */
	FANSATCDownlinkMsgElementId_PR_dM0NULL,
	FANSATCDownlinkMsgElementId_PR_dM1NULL,
	FANSATCDownlinkMsgElementId_PR_dM2NULL,
	FANSATCDownlinkMsgElementId_PR_dM3NULL,
	FANSATCDownlinkMsgElementId_PR_dM4NULL,
	FANSATCDownlinkMsgElementId_PR_dM5NULL,
	FANSATCDownlinkMsgElementId_PR_dM6Altitude,
	FANSATCDownlinkMsgElementId_PR_dM7AltitudeAltitude,
	FANSATCDownlinkMsgElementId_PR_dM8Altitude,
	FANSATCDownlinkMsgElementId_PR_dM9Altitude,
	FANSATCDownlinkMsgElementId_PR_dM10Altitude,
	FANSATCDownlinkMsgElementId_PR_dM11PositionAltitude,
	FANSATCDownlinkMsgElementId_PR_dM12PositionAltitude,
	FANSATCDownlinkMsgElementId_PR_dM13TimeAltitude,
	FANSATCDownlinkMsgElementId_PR_dM14TimeAltitude,
	FANSATCDownlinkMsgElementId_PR_dM15DistanceOffsetDirection,
	FANSATCDownlinkMsgElementId_PR_dM16PositionDistanceOffsetDirection,
	FANSATCDownlinkMsgElementId_PR_dM17TimeDistanceOffsetDirection,
	FANSATCDownlinkMsgElementId_PR_dM18Speed,
	FANSATCDownlinkMsgElementId_PR_dM19SpeedSpeed,
	FANSATCDownlinkMsgElementId_PR_dM20NULL,
	FANSATCDownlinkMsgElementId_PR_dM21Frequency,
	FANSATCDownlinkMsgElementId_PR_dM22Position,
	FANSATCDownlinkMsgElementId_PR_dM23ProcedureName,
	FANSATCDownlinkMsgElementId_PR_dM24RouteClearance,
	FANSATCDownlinkMsgElementId_PR_dM25NULL,
	FANSATCDownlinkMsgElementId_PR_dM26PositionRouteClearance,
	FANSATCDownlinkMsgElementId_PR_dM27DistanceOffsetDirection,
	FANSATCDownlinkMsgElementId_PR_dM28Altitude,
	FANSATCDownlinkMsgElementId_PR_dM29Altitude,
	FANSATCDownlinkMsgElementId_PR_dM30Altitude,
	FANSATCDownlinkMsgElementId_PR_dM31Position,
	FANSATCDownlinkMsgElementId_PR_dM32Altitude,
	FANSATCDownlinkMsgElementId_PR_dM33Position,
	FANSATCDownlinkMsgElementId_PR_dM34Speed,
	FANSATCDownlinkMsgElementId_PR_dM35Degrees,
	FANSATCDownlinkMsgElementId_PR_dM36Degrees,
	FANSATCDownlinkMsgElementId_PR_dM37Altitude,
	FANSATCDownlinkMsgElementId_PR_dM38Altitude,
	FANSATCDownlinkMsgElementId_PR_dM39Speed,
	FANSATCDownlinkMsgElementId_PR_dM40RouteClearance,
	FANSATCDownlinkMsgElementId_PR_dM41NULL,
	FANSATCDownlinkMsgElementId_PR_dM42Position,
	FANSATCDownlinkMsgElementId_PR_dM43Time,
	FANSATCDownlinkMsgElementId_PR_dM44Position,
	FANSATCDownlinkMsgElementId_PR_dM45Position,
	FANSATCDownlinkMsgElementId_PR_dM46Time,
	FANSATCDownlinkMsgElementId_PR_dM47BeaconCode,
	FANSATCDownlinkMsgElementId_PR_dM48PositionReport,
	FANSATCDownlinkMsgElementId_PR_dM49Speed,
	FANSATCDownlinkMsgElementId_PR_dM50SpeedSpeed,
	FANSATCDownlinkMsgElementId_PR_dM51NULL,
	FANSATCDownlinkMsgElementId_PR_dM52NULL,
	FANSATCDownlinkMsgElementId_PR_dM53NULL,
	FANSATCDownlinkMsgElementId_PR_dM54Altitude,
	FANSATCDownlinkMsgElementId_PR_dM55NULL,
	FANSATCDownlinkMsgElementId_PR_dM56NULL,
	FANSATCDownlinkMsgElementId_PR_dM57RemainingFuelRemainingSouls,
	FANSATCDownlinkMsgElementId_PR_dM58NULL,
	FANSATCDownlinkMsgElementId_PR_dM59PositionRouteClearance,
	FANSATCDownlinkMsgElementId_PR_dM60DistanceOffsetDirection,
	FANSATCDownlinkMsgElementId_PR_dM61Altitude,
	FANSATCDownlinkMsgElementId_PR_dM62ErrorInformation,
	FANSATCDownlinkMsgElementId_PR_dM63NULL,
	FANSATCDownlinkMsgElementId_PR_dM64ICAOfacilitydesignation,
	FANSATCDownlinkMsgElementId_PR_dM65NULL,
	FANSATCDownlinkMsgElementId_PR_dM66NULL,
	FANSATCDownlinkMsgElementId_PR_dM67FreeText,
	FANSATCDownlinkMsgElementId_PR_dM68FreeText,
	FANSATCDownlinkMsgElementId_PR_dM69NULL,
	FANSATCDownlinkMsgElementId_PR_dM70Degrees,
	FANSATCDownlinkMsgElementId_PR_dM71Degrees,
	FANSATCDownlinkMsgElementId_PR_dM72Altitude,
	FANSATCDownlinkMsgElementId_PR_dM73VersionNumber,
	FANSATCDownlinkMsgElementId_PR_dM74NULL,
	FANSATCDownlinkMsgElementId_PR_dM75NULL,
	FANSATCDownlinkMsgElementId_PR_dM76AltitudeAltitude,
	FANSATCDownlinkMsgElementId_PR_dM77AltitudeAltitude,
	FANSATCDownlinkMsgElementId_PR_dM78TimeDistanceToFromPosition,
	FANSATCDownlinkMsgElementId_PR_dM79ATISCode,
	FANSATCDownlinkMsgElementId_PR_dM80DistanceOffsetDirection,
	FANSATCDownlinkMsgElementId_PR_dM81NULL,
	FANSATCDownlinkMsgElementId_PR_dM82NULL,
	FANSATCDownlinkMsgElementId_PR_dM83NULL,
	FANSATCDownlinkMsgElementId_PR_dM84NULL,
	FANSATCDownlinkMsgElementId_PR_dM85NULL,
	FANSATCDownlinkMsgElementId_PR_dM86NULL,
	FANSATCDownlinkMsgElementId_PR_dM87NULL,
	FANSATCDownlinkMsgElementId_PR_dM88NULL,
	FANSATCDownlinkMsgElementId_PR_dM89NULL,
	FANSATCDownlinkMsgElementId_PR_dM90NULL,
	FANSATCDownlinkMsgElementId_PR_dM91NULL,
	FANSATCDownlinkMsgElementId_PR_dM92NULL,
	FANSATCDownlinkMsgElementId_PR_dM93NULL,
	FANSATCDownlinkMsgElementId_PR_dM94NULL,
	FANSATCDownlinkMsgElementId_PR_dM95NULL,
	FANSATCDownlinkMsgElementId_PR_dM96NULL,
	FANSATCDownlinkMsgElementId_PR_dM97NULL,
	FANSATCDownlinkMsgElementId_PR_dM98NULL,
	FANSATCDownlinkMsgElementId_PR_dM99NULL,
	FANSATCDownlinkMsgElementId_PR_dM100NULL,
	FANSATCDownlinkMsgElementId_PR_dM101NULL,
	FANSATCDownlinkMsgElementId_PR_dM102NULL,
	FANSATCDownlinkMsgElementId_PR_dM103NULL,
	FANSATCDownlinkMsgElementId_PR_dM104NULL,
	FANSATCDownlinkMsgElementId_PR_dM105NULL,
	FANSATCDownlinkMsgElementId_PR_dM106NULL,
	FANSATCDownlinkMsgElementId_PR_dM107NULL,
	FANSATCDownlinkMsgElementId_PR_dM108NULL,
	FANSATCDownlinkMsgElementId_PR_dM109NULL,
	FANSATCDownlinkMsgElementId_PR_dM110NULL,
	FANSATCDownlinkMsgElementId_PR_dM111NULL,
	FANSATCDownlinkMsgElementId_PR_dM112NULL,
	FANSATCDownlinkMsgElementId_PR_dM113NULL,
	FANSATCDownlinkMsgElementId_PR_dM114NULL,
	FANSATCDownlinkMsgElementId_PR_dM115NULL,
	FANSATCDownlinkMsgElementId_PR_dM116NULL,
	FANSATCDownlinkMsgElementId_PR_dM117NULL,
	FANSATCDownlinkMsgElementId_PR_dM118NULL,
	FANSATCDownlinkMsgElementId_PR_dM119NULL,
	FANSATCDownlinkMsgElementId_PR_dM120NULL,
	FANSATCDownlinkMsgElementId_PR_dM121NULL,
	FANSATCDownlinkMsgElementId_PR_dM122NULL,
	FANSATCDownlinkMsgElementId_PR_dM123NULL,
	FANSATCDownlinkMsgElementId_PR_dM124NULL,
	FANSATCDownlinkMsgElementId_PR_dM125NULL,
	FANSATCDownlinkMsgElementId_PR_dM126NULL,
	FANSATCDownlinkMsgElementId_PR_dM127NULL,
	FANSATCDownlinkMsgElementId_PR_dM128NULL
} FANSATCDownlinkMsgElementId_PR;

/* FANSATCDownlinkMsgElementId */
typedef struct FANSATCDownlinkMsgElementId {
	FANSATCDownlinkMsgElementId_PR present;
	union FANSATCDownlinkMsgElementId_u {
		NULL_t	 dM0NULL;
		NULL_t	 dM1NULL;
		NULL_t	 dM2NULL;
		NULL_t	 dM3NULL;
		NULL_t	 dM4NULL;
		NULL_t	 dM5NULL;
		FANSAltitude_t	 dM6Altitude;
		FANSAltitudeAltitude_t	 dM7AltitudeAltitude;
		FANSAltitude_t	 dM8Altitude;
		FANSAltitude_t	 dM9Altitude;
		FANSAltitude_t	 dM10Altitude;
		FANSPositionAltitude_t	 dM11PositionAltitude;
		FANSPositionAltitude_t	 dM12PositionAltitude;
		FANSTimeAltitude_t	 dM13TimeAltitude;
		FANSTimeAltitude_t	 dM14TimeAltitude;
		FANSDistanceOffsetDirection_t	 dM15DistanceOffsetDirection;
		FANSPositionDistanceOffsetDirection_t	 dM16PositionDistanceOffsetDirection;
		FANSTimeDistanceOffsetDirection_t	 dM17TimeDistanceOffsetDirection;
		FANSSpeed_t	 dM18Speed;
		FANSSpeedSpeed_t	 dM19SpeedSpeed;
		NULL_t	 dM20NULL;
		FANSFrequency_t	 dM21Frequency;
		FANSPosition_t	 dM22Position;
		FANSProcedureName_t	 dM23ProcedureName;
		FANSRouteClearance_t	 dM24RouteClearance;
		NULL_t	 dM25NULL;
		FANSPositionRouteClearance_t	 dM26PositionRouteClearance;
		FANSDistanceOffsetDirection_t	 dM27DistanceOffsetDirection;
		FANSAltitude_t	 dM28Altitude;
		FANSAltitude_t	 dM29Altitude;
		FANSAltitude_t	 dM30Altitude;
		FANSPosition_t	 dM31Position;
		FANSAltitude_t	 dM32Altitude;
		FANSPosition_t	 dM33Position;
		FANSSpeed_t	 dM34Speed;
		FANSDegrees_t	 dM35Degrees;
		FANSDegrees_t	 dM36Degrees;
		FANSAltitude_t	 dM37Altitude;
		FANSAltitude_t	 dM38Altitude;
		FANSSpeed_t	 dM39Speed;
		FANSRouteClearance_t	 dM40RouteClearance;
		NULL_t	 dM41NULL;
		FANSPosition_t	 dM42Position;
		FANSTime_t	 dM43Time;
		FANSPosition_t	 dM44Position;
		FANSPosition_t	 dM45Position;
		FANSTime_t	 dM46Time;
		FANSBeaconCode_t	 dM47BeaconCode;
		FANSPositionReport_t	 dM48PositionReport;
		FANSSpeed_t	 dM49Speed;
		FANSSpeedSpeed_t	 dM50SpeedSpeed;
		NULL_t	 dM51NULL;
		NULL_t	 dM52NULL;
		NULL_t	 dM53NULL;
		FANSAltitude_t	 dM54Altitude;
		NULL_t	 dM55NULL;
		NULL_t	 dM56NULL;
		FANSRemainingFuelRemainingSouls_t	 dM57RemainingFuelRemainingSouls;
		NULL_t	 dM58NULL;
		FANSPositionRouteClearance_t	 dM59PositionRouteClearance;
		FANSDistanceOffsetDirection_t	 dM60DistanceOffsetDirection;
		FANSAltitude_t	 dM61Altitude;
		FANSErrorInformation_t	 dM62ErrorInformation;
		NULL_t	 dM63NULL;
		FANSICAOfacilityDesignation_t	 dM64ICAOfacilitydesignation;
		NULL_t	 dM65NULL;
		NULL_t	 dM66NULL;
		FANSFreeText_t	 dM67FreeText;
		FANSFreeText_t	 dM68FreeText;
		NULL_t	 dM69NULL;
		FANSDegrees_t	 dM70Degrees;
		FANSDegrees_t	 dM71Degrees;
		FANSAltitude_t	 dM72Altitude;
		FANSVersionNumber_t	 dM73VersionNumber;
		NULL_t	 dM74NULL;
		NULL_t	 dM75NULL;
		FANSAltitudeAltitude_t	 dM76AltitudeAltitude;
		FANSAltitudeAltitude_t	 dM77AltitudeAltitude;
		FANSTimeDistanceToFromPosition_t	 dM78TimeDistanceToFromPosition;
		FANSATISCode_t	 dM79ATISCode;
		FANSDistanceOffsetDirection_t	 dM80DistanceOffsetDirection;
		NULL_t	 dM81NULL;
		NULL_t	 dM82NULL;
		NULL_t	 dM83NULL;
		NULL_t	 dM84NULL;
		NULL_t	 dM85NULL;
		NULL_t	 dM86NULL;
		NULL_t	 dM87NULL;
		NULL_t	 dM88NULL;
		NULL_t	 dM89NULL;
		NULL_t	 dM90NULL;
		NULL_t	 dM91NULL;
		NULL_t	 dM92NULL;
		NULL_t	 dM93NULL;
		NULL_t	 dM94NULL;
		NULL_t	 dM95NULL;
		NULL_t	 dM96NULL;
		NULL_t	 dM97NULL;
		NULL_t	 dM98NULL;
		NULL_t	 dM99NULL;
		NULL_t	 dM100NULL;
		NULL_t	 dM101NULL;
		NULL_t	 dM102NULL;
		NULL_t	 dM103NULL;
		NULL_t	 dM104NULL;
		NULL_t	 dM105NULL;
		NULL_t	 dM106NULL;
		NULL_t	 dM107NULL;
		NULL_t	 dM108NULL;
		NULL_t	 dM109NULL;
		NULL_t	 dM110NULL;
		NULL_t	 dM111NULL;
		NULL_t	 dM112NULL;
		NULL_t	 dM113NULL;
		NULL_t	 dM114NULL;
		NULL_t	 dM115NULL;
		NULL_t	 dM116NULL;
		NULL_t	 dM117NULL;
		NULL_t	 dM118NULL;
		NULL_t	 dM119NULL;
		NULL_t	 dM120NULL;
		NULL_t	 dM121NULL;
		NULL_t	 dM122NULL;
		NULL_t	 dM123NULL;
		NULL_t	 dM124NULL;
		NULL_t	 dM125NULL;
		NULL_t	 dM126NULL;
		NULL_t	 dM127NULL;
		NULL_t	 dM128NULL;
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} FANSATCDownlinkMsgElementId_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_FANSATCDownlinkMsgElementId;

#ifdef __cplusplus
}
#endif

#endif	/* _FANSATCDownlinkMsgElementId_H_ */
#include "asn_internal.h"
