/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "RANAP-IEs"
 * 	found in "../../asn1/ranap/RANAP-IEs.asn"
 */

#include <osmocom/ranap/RANAP_PositioningDataSet.h>

static asn_per_constraints_t asn_PER_type_RANAP_PositioningDataSet_constr_1 GCC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 4,  4,  1l,  9l }	/* (SIZE(1..9)) */,
	0, 0	/* No PER value map */
};
static asn_TYPE_member_t asn_MBR_RANAP_PositioningDataSet_1[] = {
	{ ATF_POINTER, 0, 0,
		-1 /* Ambiguous tag (CHOICE?) */,
		0,
		&asn_DEF_RANAP_PositioningMethodAndUsage,
		0,	/* Defer constraints checking to the member type */
		0,	/* No PER visible constraints */
		0,
		""
		},
};
static const ber_tlv_tag_t asn_DEF_RANAP_PositioningDataSet_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn_SET_OF_specifics_t asn_SPC_RANAP_PositioningDataSet_specs_1 = {
	sizeof(struct RANAP_PositioningDataSet),
	offsetof(struct RANAP_PositioningDataSet, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_RANAP_PositioningDataSet = {
	"RANAP_PositioningDataSet",
	"RANAP_PositioningDataSet",
	SEQUENCE_OF_free,
	SEQUENCE_OF_print,
	SEQUENCE_OF_constraint,
	SEQUENCE_OF_decode_ber,
	SEQUENCE_OF_encode_der,
	SEQUENCE_OF_decode_xer,
	SEQUENCE_OF_encode_xer,
	SEQUENCE_OF_decode_uper,
	SEQUENCE_OF_encode_uper,
	SEQUENCE_OF_decode_aper,
	SEQUENCE_OF_encode_aper,
	0,	/* Use generic outmost tag fetcher */
	asn_DEF_RANAP_PositioningDataSet_tags_1,
	sizeof(asn_DEF_RANAP_PositioningDataSet_tags_1)
		/sizeof(asn_DEF_RANAP_PositioningDataSet_tags_1[0]), /* 1 */
	asn_DEF_RANAP_PositioningDataSet_tags_1,	/* Same as above */
	sizeof(asn_DEF_RANAP_PositioningDataSet_tags_1)
		/sizeof(asn_DEF_RANAP_PositioningDataSet_tags_1[0]), /* 1 */
	&asn_PER_type_RANAP_PositioningDataSet_constr_1,
	asn_MBR_RANAP_PositioningDataSet_1,
	1,	/* Single element */
	&asn_SPC_RANAP_PositioningDataSet_specs_1	/* Additional specs */
};

