/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "HNBAP-IEs"
 * 	found in "../../asn1/hnbap/HNBAP-IEs.asn"
 * 	`asn1c -gen-PER`
 */

#ifndef	_UE_Identity_H_
#define	_UE_Identity_H_


#include <asn_application.h>

/* Including external dependencies */
#include "IMSI.h"
#include "TMSILAI.h"
#include "PTMSIRAI.h"
#include "IMEI.h"
#include "ESN.h"
#include "IMSIDS41.h"
#include "IMSIESN.h"
#include "TMSIDS41.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum UE_Identity_PR {
	UE_Identity_PR_NOTHING,	/* No components present */
	UE_Identity_PR_iMSI,
	UE_Identity_PR_tMSILAI,
	UE_Identity_PR_pTMSIRAI,
	UE_Identity_PR_iMEI,
	UE_Identity_PR_eSN,
	UE_Identity_PR_iMSIDS41,
	UE_Identity_PR_iMSIESN,
	UE_Identity_PR_tMSIDS41,
	/* Extensions may appear below */
	
} UE_Identity_PR;

/* UE-Identity */
typedef struct UE_Identity {
	UE_Identity_PR present;
	union UE_Identity_u {
		IMSI_t	 iMSI;
		TMSILAI_t	 tMSILAI;
		PTMSIRAI_t	 pTMSIRAI;
		IMEI_t	 iMEI;
		ESN_t	 eSN;
		IMSIDS41_t	 iMSIDS41;
		IMSIESN_t	 iMSIESN;
		TMSIDS41_t	 tMSIDS41;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UE_Identity_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_UE_Identity;

#ifdef __cplusplus
}
#endif

#endif	/* _UE_Identity_H_ */
#include <asn_internal.h>
