/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "NR-RRC-Definitions"
 * 	found in "asn/nr-rrc-15.6.0.asn1"
 * 	`asn1c -fcompound-names -pdu=all -findirect-choice -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D rrc`
 */

#include "ASN_RRC_PUSCH-Config.h"

#include "ASN_RRC_SetupRelease.h"
#include "ASN_RRC_PUSCH-PowerControl.h"
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
static int
memb_NativeInteger_constraint_12(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	long value;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	value = *(const long *)sptr;
	
	if((value >= 1 && value <= 274)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
/*
 * This type is implemented using NativeEnumerated,
 * so here we adjust the DEF accordingly.
 */
static int
memb_ASN_RRC_dataScramblingIdentityPUSCH_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	long value;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	value = *(const long *)sptr;
	
	if((value >= 0 && value <= 1023)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_frequencyHoppingOffsetLists_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	size_t size;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	/* Determine the number of elements */
	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
	
	if((size >= 1 && size <= 4)) {
		/* Perform validation of the inner elements */
		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static int
memb_ASN_RRC_maxRank_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
	long value;
	
	if(!sptr) {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: value not given (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
	
	value = *(const long *)sptr;
	
	if((value >= 1 && value <= 4)) {
		/* Constraint check succeeded */
		return 0;
	} else {
		ASN__CTFAIL(app_key, td, sptr,
			"%s: constraint failed (%s:%d)",
			td->name, __FILE__, __LINE__);
		return -1;
	}
}

static asn_per_constraints_t asn_PER_type_ASN_RRC_txConfig_constr_3 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_frequencyHopping_constr_9 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_Member_constr_13 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 9,  9,  1,  274 }	/* (1..274) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_frequencyHoppingOffsetLists_constr_12 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 2,  2,  1,  4 }	/* (SIZE(1..4)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_resourceAllocation_constr_14 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 2,  2,  0,  2 }	/* (0..2) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_pusch_AggregationFactor_constr_19 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 2,  2,  0,  2 }	/* (0..2) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_mcs_Table_constr_23 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_mcs_TableTransformPrecoder_constr_26 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_transformPrecoder_constr_29 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 1,  1,  0,  1 }	/* (0..1) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_codebookSubset_constr_32 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 2,  2,  0,  2 }	/* (0..2) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_rbg_Size_constr_37 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 0,  0,  0,  0 }	/* (0..0) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_type_ASN_RRC_tp_pi2BPSK_constr_40 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 0,  0,  0,  0 }	/* (0..0) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_dataScramblingIdentityPUSCH_constr_2 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 10,  10,  0,  1023 }	/* (0..1023) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_frequencyHoppingOffsetLists_constr_12 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 2,  2,  1,  4 }	/* (SIZE(1..4)) */,
	0, 0	/* No PER value map */
};
static asn_per_constraints_t asn_PER_memb_ASN_RRC_maxRank_constr_36 CC_NOTUSED = {
	{ APC_CONSTRAINED,	 2,  2,  1,  4 }	/* (1..4) */,
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	0, 0	/* No PER value map */
};
static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_txConfig_value2enum_3[] = {
	{ 0,	8,	"codebook" },
	{ 1,	11,	"nonCodebook" }
};
static const unsigned int asn_MAP_ASN_RRC_txConfig_enum2value_3[] = {
	0,	/* codebook(0) */
	1	/* nonCodebook(1) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_txConfig_specs_3 = {
	asn_MAP_ASN_RRC_txConfig_value2enum_3,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_txConfig_enum2value_3,	/* N => "tag"; sorted by N */
	2,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_txConfig_tags_3[] = {
	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_txConfig_3 = {
	"txConfig",
	"txConfig",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_txConfig_tags_3,
	sizeof(asn_DEF_ASN_RRC_txConfig_tags_3)
		/sizeof(asn_DEF_ASN_RRC_txConfig_tags_3[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_txConfig_tags_3,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_txConfig_tags_3)
		/sizeof(asn_DEF_ASN_RRC_txConfig_tags_3[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_txConfig_constr_3, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_txConfig_specs_3	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_frequencyHopping_value2enum_9[] = {
	{ 0,	9,	"intraSlot" },
	{ 1,	9,	"interSlot" }
};
static const unsigned int asn_MAP_ASN_RRC_frequencyHopping_enum2value_9[] = {
	1,	/* interSlot(1) */
	0	/* intraSlot(0) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_frequencyHopping_specs_9 = {
	asn_MAP_ASN_RRC_frequencyHopping_value2enum_9,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_frequencyHopping_enum2value_9,	/* N => "tag"; sorted by N */
	2,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_frequencyHopping_tags_9[] = {
	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_frequencyHopping_9 = {
	"frequencyHopping",
	"frequencyHopping",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_frequencyHopping_tags_9,
	sizeof(asn_DEF_ASN_RRC_frequencyHopping_tags_9)
		/sizeof(asn_DEF_ASN_RRC_frequencyHopping_tags_9[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_frequencyHopping_tags_9,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_frequencyHopping_tags_9)
		/sizeof(asn_DEF_ASN_RRC_frequencyHopping_tags_9[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_frequencyHopping_constr_9, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_frequencyHopping_specs_9	/* Additional specs */
};

static asn_TYPE_member_t asn_MBR_ASN_RRC_frequencyHoppingOffsetLists_12[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
		0,
		&asn_DEF_NativeInteger,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_Member_constr_13,  memb_NativeInteger_constraint_12 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_tags_12[] = {
	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn_SET_OF_specifics_t asn_SPC_ASN_RRC_frequencyHoppingOffsetLists_specs_12 = {
	sizeof(struct ASN_RRC_PUSCH_Config__frequencyHoppingOffsetLists),
	offsetof(struct ASN_RRC_PUSCH_Config__frequencyHoppingOffsetLists, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_12 = {
	"frequencyHoppingOffsetLists",
	"frequencyHoppingOffsetLists",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_tags_12,
	sizeof(asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_tags_12)
		/sizeof(asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_tags_12[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_tags_12,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_tags_12)
		/sizeof(asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_tags_12[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_frequencyHoppingOffsetLists_constr_12, SEQUENCE_OF_constraint },
	asn_MBR_ASN_RRC_frequencyHoppingOffsetLists_12,
	1,	/* Single element */
	&asn_SPC_ASN_RRC_frequencyHoppingOffsetLists_specs_12	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_resourceAllocation_value2enum_14[] = {
	{ 0,	23,	"resourceAllocationType0" },
	{ 1,	23,	"resourceAllocationType1" },
	{ 2,	13,	"dynamicSwitch" }
};
static const unsigned int asn_MAP_ASN_RRC_resourceAllocation_enum2value_14[] = {
	2,	/* dynamicSwitch(2) */
	0,	/* resourceAllocationType0(0) */
	1	/* resourceAllocationType1(1) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_resourceAllocation_specs_14 = {
	asn_MAP_ASN_RRC_resourceAllocation_value2enum_14,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_resourceAllocation_enum2value_14,	/* N => "tag"; sorted by N */
	3,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_resourceAllocation_tags_14[] = {
	(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_resourceAllocation_14 = {
	"resourceAllocation",
	"resourceAllocation",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_resourceAllocation_tags_14,
	sizeof(asn_DEF_ASN_RRC_resourceAllocation_tags_14)
		/sizeof(asn_DEF_ASN_RRC_resourceAllocation_tags_14[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_resourceAllocation_tags_14,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_resourceAllocation_tags_14)
		/sizeof(asn_DEF_ASN_RRC_resourceAllocation_tags_14[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_resourceAllocation_constr_14, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_resourceAllocation_specs_14	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_pusch_AggregationFactor_value2enum_19[] = {
	{ 0,	2,	"n2" },
	{ 1,	2,	"n4" },
	{ 2,	2,	"n8" }
};
static const unsigned int asn_MAP_ASN_RRC_pusch_AggregationFactor_enum2value_19[] = {
	0,	/* n2(0) */
	1,	/* n4(1) */
	2	/* n8(2) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_pusch_AggregationFactor_specs_19 = {
	asn_MAP_ASN_RRC_pusch_AggregationFactor_value2enum_19,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_pusch_AggregationFactor_enum2value_19,	/* N => "tag"; sorted by N */
	3,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_pusch_AggregationFactor_tags_19[] = {
	(ASN_TAG_CLASS_CONTEXT | (9 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_pusch_AggregationFactor_19 = {
	"pusch-AggregationFactor",
	"pusch-AggregationFactor",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_pusch_AggregationFactor_tags_19,
	sizeof(asn_DEF_ASN_RRC_pusch_AggregationFactor_tags_19)
		/sizeof(asn_DEF_ASN_RRC_pusch_AggregationFactor_tags_19[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_pusch_AggregationFactor_tags_19,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_pusch_AggregationFactor_tags_19)
		/sizeof(asn_DEF_ASN_RRC_pusch_AggregationFactor_tags_19[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_pusch_AggregationFactor_constr_19, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_pusch_AggregationFactor_specs_19	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_mcs_Table_value2enum_23[] = {
	{ 0,	6,	"qam256" },
	{ 1,	10,	"qam64LowSE" }
};
static const unsigned int asn_MAP_ASN_RRC_mcs_Table_enum2value_23[] = {
	0,	/* qam256(0) */
	1	/* qam64LowSE(1) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_mcs_Table_specs_23 = {
	asn_MAP_ASN_RRC_mcs_Table_value2enum_23,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_mcs_Table_enum2value_23,	/* N => "tag"; sorted by N */
	2,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_mcs_Table_tags_23[] = {
	(ASN_TAG_CLASS_CONTEXT | (10 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_mcs_Table_23 = {
	"mcs-Table",
	"mcs-Table",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_mcs_Table_tags_23,
	sizeof(asn_DEF_ASN_RRC_mcs_Table_tags_23)
		/sizeof(asn_DEF_ASN_RRC_mcs_Table_tags_23[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_mcs_Table_tags_23,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_mcs_Table_tags_23)
		/sizeof(asn_DEF_ASN_RRC_mcs_Table_tags_23[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_mcs_Table_constr_23, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_mcs_Table_specs_23	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_mcs_TableTransformPrecoder_value2enum_26[] = {
	{ 0,	6,	"qam256" },
	{ 1,	10,	"qam64LowSE" }
};
static const unsigned int asn_MAP_ASN_RRC_mcs_TableTransformPrecoder_enum2value_26[] = {
	0,	/* qam256(0) */
	1	/* qam64LowSE(1) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_mcs_TableTransformPrecoder_specs_26 = {
	asn_MAP_ASN_RRC_mcs_TableTransformPrecoder_value2enum_26,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_mcs_TableTransformPrecoder_enum2value_26,	/* N => "tag"; sorted by N */
	2,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_tags_26[] = {
	(ASN_TAG_CLASS_CONTEXT | (11 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_26 = {
	"mcs-TableTransformPrecoder",
	"mcs-TableTransformPrecoder",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_tags_26,
	sizeof(asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_tags_26)
		/sizeof(asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_tags_26[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_tags_26,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_tags_26)
		/sizeof(asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_tags_26[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_mcs_TableTransformPrecoder_constr_26, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_mcs_TableTransformPrecoder_specs_26	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_transformPrecoder_value2enum_29[] = {
	{ 0,	7,	"enabled" },
	{ 1,	8,	"disabled" }
};
static const unsigned int asn_MAP_ASN_RRC_transformPrecoder_enum2value_29[] = {
	1,	/* disabled(1) */
	0	/* enabled(0) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_transformPrecoder_specs_29 = {
	asn_MAP_ASN_RRC_transformPrecoder_value2enum_29,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_transformPrecoder_enum2value_29,	/* N => "tag"; sorted by N */
	2,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_transformPrecoder_tags_29[] = {
	(ASN_TAG_CLASS_CONTEXT | (12 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_transformPrecoder_29 = {
	"transformPrecoder",
	"transformPrecoder",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_transformPrecoder_tags_29,
	sizeof(asn_DEF_ASN_RRC_transformPrecoder_tags_29)
		/sizeof(asn_DEF_ASN_RRC_transformPrecoder_tags_29[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_transformPrecoder_tags_29,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_transformPrecoder_tags_29)
		/sizeof(asn_DEF_ASN_RRC_transformPrecoder_tags_29[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_transformPrecoder_constr_29, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_transformPrecoder_specs_29	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_codebookSubset_value2enum_32[] = {
	{ 0,	29,	"fullyAndPartialAndNonCoherent" },
	{ 1,	21,	"partialAndNonCoherent" },
	{ 2,	11,	"nonCoherent" }
};
static const unsigned int asn_MAP_ASN_RRC_codebookSubset_enum2value_32[] = {
	0,	/* fullyAndPartialAndNonCoherent(0) */
	2,	/* nonCoherent(2) */
	1	/* partialAndNonCoherent(1) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_codebookSubset_specs_32 = {
	asn_MAP_ASN_RRC_codebookSubset_value2enum_32,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_codebookSubset_enum2value_32,	/* N => "tag"; sorted by N */
	3,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_codebookSubset_tags_32[] = {
	(ASN_TAG_CLASS_CONTEXT | (13 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_codebookSubset_32 = {
	"codebookSubset",
	"codebookSubset",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_codebookSubset_tags_32,
	sizeof(asn_DEF_ASN_RRC_codebookSubset_tags_32)
		/sizeof(asn_DEF_ASN_RRC_codebookSubset_tags_32[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_codebookSubset_tags_32,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_codebookSubset_tags_32)
		/sizeof(asn_DEF_ASN_RRC_codebookSubset_tags_32[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_codebookSubset_constr_32, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_codebookSubset_specs_32	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_rbg_Size_value2enum_37[] = {
	{ 0,	7,	"config2" }
};
static const unsigned int asn_MAP_ASN_RRC_rbg_Size_enum2value_37[] = {
	0	/* config2(0) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_rbg_Size_specs_37 = {
	asn_MAP_ASN_RRC_rbg_Size_value2enum_37,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_rbg_Size_enum2value_37,	/* N => "tag"; sorted by N */
	1,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_rbg_Size_tags_37[] = {
	(ASN_TAG_CLASS_CONTEXT | (15 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_rbg_Size_37 = {
	"rbg-Size",
	"rbg-Size",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_rbg_Size_tags_37,
	sizeof(asn_DEF_ASN_RRC_rbg_Size_tags_37)
		/sizeof(asn_DEF_ASN_RRC_rbg_Size_tags_37[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_rbg_Size_tags_37,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_rbg_Size_tags_37)
		/sizeof(asn_DEF_ASN_RRC_rbg_Size_tags_37[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_rbg_Size_constr_37, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_rbg_Size_specs_37	/* Additional specs */
};

static const asn_INTEGER_enum_map_t asn_MAP_ASN_RRC_tp_pi2BPSK_value2enum_40[] = {
	{ 0,	7,	"enabled" }
};
static const unsigned int asn_MAP_ASN_RRC_tp_pi2BPSK_enum2value_40[] = {
	0	/* enabled(0) */
};
static const asn_INTEGER_specifics_t asn_SPC_ASN_RRC_tp_pi2BPSK_specs_40 = {
	asn_MAP_ASN_RRC_tp_pi2BPSK_value2enum_40,	/* "tag" => N; sorted by tag */
	asn_MAP_ASN_RRC_tp_pi2BPSK_enum2value_40,	/* N => "tag"; sorted by N */
	1,	/* Number of elements in the maps */
	0,	/* Enumeration is not extensible */
	1,	/* Strict enumeration */
	0,	/* Native long size */
	0
};
static const ber_tlv_tag_t asn_DEF_ASN_RRC_tp_pi2BPSK_tags_40[] = {
	(ASN_TAG_CLASS_CONTEXT | (17 << 2)),
	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_tp_pi2BPSK_40 = {
	"tp-pi2BPSK",
	"tp-pi2BPSK",
	&asn_OP_NativeEnumerated,
	asn_DEF_ASN_RRC_tp_pi2BPSK_tags_40,
	sizeof(asn_DEF_ASN_RRC_tp_pi2BPSK_tags_40)
		/sizeof(asn_DEF_ASN_RRC_tp_pi2BPSK_tags_40[0]) - 1, /* 1 */
	asn_DEF_ASN_RRC_tp_pi2BPSK_tags_40,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_tp_pi2BPSK_tags_40)
		/sizeof(asn_DEF_ASN_RRC_tp_pi2BPSK_tags_40[0]), /* 2 */
	{ 0, &asn_PER_type_ASN_RRC_tp_pi2BPSK_constr_40, NativeEnumerated_constraint },
	0, 0,	/* Defined elsewhere */
	&asn_SPC_ASN_RRC_tp_pi2BPSK_specs_40	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ASN_RRC_PUSCH_Config_1[] = {
	{ ATF_POINTER, 7, offsetof(struct ASN_RRC_PUSCH_Config, dataScramblingIdentityPUSCH),
		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_NativeInteger,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_dataScramblingIdentityPUSCH_constr_2,  memb_ASN_RRC_dataScramblingIdentityPUSCH_constraint_1 },
		0, 0, /* No default value */
		"dataScramblingIdentityPUSCH"
		},
	{ ATF_POINTER, 6, offsetof(struct ASN_RRC_PUSCH_Config, txConfig),
		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_txConfig_3,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"txConfig"
		},
	{ ATF_POINTER, 5, offsetof(struct ASN_RRC_PUSCH_Config, dmrs_UplinkForPUSCH_MappingTypeA),
		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_SetupRelease_DMRS_UplinkConfig,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"dmrs-UplinkForPUSCH-MappingTypeA"
		},
	{ ATF_POINTER, 4, offsetof(struct ASN_RRC_PUSCH_Config, dmrs_UplinkForPUSCH_MappingTypeB),
		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_SetupRelease_DMRS_UplinkConfig,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"dmrs-UplinkForPUSCH-MappingTypeB"
		},
	{ ATF_POINTER, 3, offsetof(struct ASN_RRC_PUSCH_Config, pusch_PowerControl),
		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_PUSCH_PowerControl,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"pusch-PowerControl"
		},
	{ ATF_POINTER, 2, offsetof(struct ASN_RRC_PUSCH_Config, frequencyHopping),
		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_frequencyHopping_9,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"frequencyHopping"
		},
	{ ATF_POINTER, 1, offsetof(struct ASN_RRC_PUSCH_Config, frequencyHoppingOffsetLists),
		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
		0,
		&asn_DEF_ASN_RRC_frequencyHoppingOffsetLists_12,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_frequencyHoppingOffsetLists_constr_12,  memb_ASN_RRC_frequencyHoppingOffsetLists_constraint_1 },
		0, 0, /* No default value */
		"frequencyHoppingOffsetLists"
		},
	{ ATF_NOFLAGS, 0, offsetof(struct ASN_RRC_PUSCH_Config, resourceAllocation),
		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_resourceAllocation_14,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"resourceAllocation"
		},
	{ ATF_POINTER, 10, offsetof(struct ASN_RRC_PUSCH_Config, pusch_TimeDomainAllocationList),
		(ASN_TAG_CLASS_CONTEXT | (8 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_SetupRelease_PUSCH_TimeDomainResourceAllocationList,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"pusch-TimeDomainAllocationList"
		},
	{ ATF_POINTER, 9, offsetof(struct ASN_RRC_PUSCH_Config, pusch_AggregationFactor),
		(ASN_TAG_CLASS_CONTEXT | (9 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_pusch_AggregationFactor_19,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"pusch-AggregationFactor"
		},
	{ ATF_POINTER, 8, offsetof(struct ASN_RRC_PUSCH_Config, mcs_Table),
		(ASN_TAG_CLASS_CONTEXT | (10 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_mcs_Table_23,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"mcs-Table"
		},
	{ ATF_POINTER, 7, offsetof(struct ASN_RRC_PUSCH_Config, mcs_TableTransformPrecoder),
		(ASN_TAG_CLASS_CONTEXT | (11 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_26,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"mcs-TableTransformPrecoder"
		},
	{ ATF_POINTER, 6, offsetof(struct ASN_RRC_PUSCH_Config, transformPrecoder),
		(ASN_TAG_CLASS_CONTEXT | (12 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_transformPrecoder_29,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"transformPrecoder"
		},
	{ ATF_POINTER, 5, offsetof(struct ASN_RRC_PUSCH_Config, codebookSubset),
		(ASN_TAG_CLASS_CONTEXT | (13 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_codebookSubset_32,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"codebookSubset"
		},
	{ ATF_POINTER, 4, offsetof(struct ASN_RRC_PUSCH_Config, maxRank),
		(ASN_TAG_CLASS_CONTEXT | (14 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_NativeInteger,
		0,
		{ 0, &asn_PER_memb_ASN_RRC_maxRank_constr_36,  memb_ASN_RRC_maxRank_constraint_1 },
		0, 0, /* No default value */
		"maxRank"
		},
	{ ATF_POINTER, 3, offsetof(struct ASN_RRC_PUSCH_Config, rbg_Size),
		(ASN_TAG_CLASS_CONTEXT | (15 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_rbg_Size_37,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"rbg-Size"
		},
	{ ATF_POINTER, 2, offsetof(struct ASN_RRC_PUSCH_Config, uci_OnPUSCH),
		(ASN_TAG_CLASS_CONTEXT | (16 << 2)),
		+1,	/* EXPLICIT tag at current level */
		&asn_DEF_ASN_RRC_SetupRelease_UCI_OnPUSCH,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"uci-OnPUSCH"
		},
	{ ATF_POINTER, 1, offsetof(struct ASN_RRC_PUSCH_Config, tp_pi2BPSK),
		(ASN_TAG_CLASS_CONTEXT | (17 << 2)),
		-1,	/* IMPLICIT tag at current level */
		&asn_DEF_ASN_RRC_tp_pi2BPSK_40,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		"tp-pi2BPSK"
		},
};
static const int asn_MAP_ASN_RRC_PUSCH_Config_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 };
static const ber_tlv_tag_t asn_DEF_ASN_RRC_PUSCH_Config_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ASN_RRC_PUSCH_Config_tag2el_1[] = {
    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dataScramblingIdentityPUSCH */
    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* txConfig */
    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dmrs-UplinkForPUSCH-MappingTypeA */
    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dmrs-UplinkForPUSCH-MappingTypeB */
    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pusch-PowerControl */
    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* frequencyHopping */
    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* frequencyHoppingOffsetLists */
    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* resourceAllocation */
    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* pusch-TimeDomainAllocationList */
    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* pusch-AggregationFactor */
    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* mcs-Table */
    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* mcs-TableTransformPrecoder */
    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* transformPrecoder */
    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* codebookSubset */
    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* maxRank */
    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* rbg-Size */
    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* uci-OnPUSCH */
    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 } /* tp-pi2BPSK */
};
asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_PUSCH_Config_specs_1 = {
	sizeof(struct ASN_RRC_PUSCH_Config),
	offsetof(struct ASN_RRC_PUSCH_Config, _asn_ctx),
	asn_MAP_ASN_RRC_PUSCH_Config_tag2el_1,
	18,	/* Count of tags in the map */
	asn_MAP_ASN_RRC_PUSCH_Config_oms_1,	/* Optional members */
	17, 0,	/* Root/Additions */
	18,	/* First extension addition */
};
asn_TYPE_descriptor_t asn_DEF_ASN_RRC_PUSCH_Config = {
	"PUSCH-Config",
	"PUSCH-Config",
	&asn_OP_SEQUENCE,
	asn_DEF_ASN_RRC_PUSCH_Config_tags_1,
	sizeof(asn_DEF_ASN_RRC_PUSCH_Config_tags_1)
		/sizeof(asn_DEF_ASN_RRC_PUSCH_Config_tags_1[0]), /* 1 */
	asn_DEF_ASN_RRC_PUSCH_Config_tags_1,	/* Same as above */
	sizeof(asn_DEF_ASN_RRC_PUSCH_Config_tags_1)
		/sizeof(asn_DEF_ASN_RRC_PUSCH_Config_tags_1[0]), /* 1 */
	{ 0, 0, SEQUENCE_constraint },
	asn_MBR_ASN_RRC_PUSCH_Config_1,
	18,	/* Elements count */
	&asn_SPC_ASN_RRC_PUSCH_Config_specs_1	/* Additional specs */
};

