diff --git a/src/ranap/RANAP_SRB-TrCH-MappingItem.c b/src/ranap/RANAP_SRB-TrCH-MappingItem.c
new file mode 100644
index 0000000..80d6994
--- /dev/null
+++ b/src/ranap/RANAP_SRB-TrCH-MappingItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * 	found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include "RANAP_SRB-TrCH-MappingItem.h"
+
+static asn_TYPE_member_t asn_MBR_RANAP_SRB_TrCH_MappingItem_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_SRB_TrCH_MappingItem, sRB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_SRB_ID,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"sRB-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_SRB_TrCH_MappingItem, trCH_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_TrCH_ID,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"trCH-ID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANAP_SRB_TrCH_MappingItem, iE_Extensions),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_IE_Extensions,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iE-Extensions"
+		},
+};
+static const int asn_MAP_RANAP_SRB_TrCH_MappingItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRB_TrCH_MappingItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sRB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trCH-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRB_TrCH_MappingItem_specs_1 = {
+	sizeof(struct RANAP_SRB_TrCH_MappingItem),
+	offsetof(struct RANAP_SRB_TrCH_MappingItem, _asn_ctx),
+	asn_MAP_RANAP_SRB_TrCH_MappingItem_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_RANAP_SRB_TrCH_MappingItem_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	2,	/* Start extensions */
+	4	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SRB_TrCH_MappingItem = {
+	"RANAP_SRB-TrCH-MappingItem",
+	"RANAP_SRB-TrCH-MappingItem",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	SEQUENCE_decode_uper,
+	SEQUENCE_encode_uper,
+	SEQUENCE_decode_aper,
+	SEQUENCE_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1,
+	sizeof(asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1)
+		/sizeof(asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1)
+		/sizeof(asn_DEF_RANAP_SRB_TrCH_MappingItem_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RANAP_SRB_TrCH_MappingItem_1,
+	3,	/* Elements count */
+	&asn_SPC_RANAP_SRB_TrCH_MappingItem_specs_1	/* Additional specs */
+};
+
