/*
 * 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	_ConfigurationInformation_H_
#define	_ConfigurationInformation_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/hnbap/HNBConfigurationInformationProvided.h>
#include <osmocom/hnbap/HNBConfigurationInformationMissing.h>
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum ConfigurationInformation_PR {
	ConfigurationInformation_PR_NOTHING,	/* No components present */
	ConfigurationInformation_PR_provided,
	ConfigurationInformation_PR_missing,
	/* Extensions may appear below */
	
} ConfigurationInformation_PR;

/* ConfigurationInformation */
typedef struct ConfigurationInformation {
	ConfigurationInformation_PR present;
	union ConfigurationInformation_u {
		HNBConfigurationInformationProvided_t	 provided;
		HNBConfigurationInformationMissing_t	 missing;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ConfigurationInformation_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ConfigurationInformation;

#ifdef __cplusplus
}
#endif

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