/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "S1AP-IEs"
 * 	found in "./asn1c/S1AP-IEs.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -gen-PER -findirect-choice -pdu=S1AP-PDU`
 */

#ifndef	_UnlicensedSpectrumRestriction_H_
#define	_UnlicensedSpectrumRestriction_H_


#include <asn_application.h>

/* Including external dependencies */
#include <NativeEnumerated.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum UnlicensedSpectrumRestriction {
	UnlicensedSpectrumRestriction_unlicensed_restricted	= 0
	/*
	 * Enumeration is extensible
	 */
} e_UnlicensedSpectrumRestriction;

/* UnlicensedSpectrumRestriction */
typedef long	 UnlicensedSpectrumRestriction_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_UnlicensedSpectrumRestriction_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_UnlicensedSpectrumRestriction;
extern const asn_INTEGER_specifics_t asn_SPC_UnlicensedSpectrumRestriction_specs_1;
asn_struct_free_f UnlicensedSpectrumRestriction_free;
asn_struct_print_f UnlicensedSpectrumRestriction_print;
asn_constr_check_f UnlicensedSpectrumRestriction_constraint;
ber_type_decoder_f UnlicensedSpectrumRestriction_decode_ber;
der_type_encoder_f UnlicensedSpectrumRestriction_encode_der;
xer_type_decoder_f UnlicensedSpectrumRestriction_decode_xer;
xer_type_encoder_f UnlicensedSpectrumRestriction_encode_xer;
oer_type_decoder_f UnlicensedSpectrumRestriction_decode_oer;
oer_type_encoder_f UnlicensedSpectrumRestriction_encode_oer;
per_type_decoder_f UnlicensedSpectrumRestriction_decode_uper;
per_type_encoder_f UnlicensedSpectrumRestriction_encode_uper;
per_type_decoder_f UnlicensedSpectrumRestriction_decode_aper;
per_type_encoder_f UnlicensedSpectrumRestriction_encode_aper;

#ifdef __cplusplus
}
#endif

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