diff --git a/src/ranap/RANAP_SDU-FormatInformationParameterItem.c b/src/ranap/RANAP_SDU-FormatInformationParameterItem.c
new file mode 100644
index 0000000..49a0e6b
--- /dev/null
+++ b/src/ranap/RANAP_SDU-FormatInformationParameterItem.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_SDU-FormatInformationParameterItem.h"
+
+static asn_TYPE_member_t asn_MBR_RANAP_SDU_FormatInformationParameterItem_1[] = {
+	{ ATF_POINTER, 3, offsetof(struct RANAP_SDU_FormatInformationParameterItem, subflowSDU_Size),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_SubflowSDU_Size,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"subflowSDU-Size"
+		},
+	{ ATF_POINTER, 2, offsetof(struct RANAP_SDU_FormatInformationParameterItem, rAB_SubflowCombinationBitRate),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_RAB_SubflowCombinationBitRate,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"rAB-SubflowCombinationBitRate"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANAP_SDU_FormatInformationParameterItem, 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_SDU_FormatInformationParameterItem_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_SDU_FormatInformationParameterItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subflowSDU-Size */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAB-SubflowCombinationBitRate */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SDU_FormatInformationParameterItem_specs_1 = {
+	sizeof(struct RANAP_SDU_FormatInformationParameterItem),
+	offsetof(struct RANAP_SDU_FormatInformationParameterItem, _asn_ctx),
+	asn_MAP_RANAP_SDU_FormatInformationParameterItem_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_RANAP_SDU_FormatInformationParameterItem_oms_1,	/* Optional members */
+	3, 0,	/* Root/Additions */
+	2,	/* Start extensions */
+	4	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_SDU_FormatInformationParameterItem = {
+	"RANAP_SDU-FormatInformationParameterItem",
+	"RANAP_SDU-FormatInformationParameterItem",
+	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_SDU_FormatInformationParameterItem_tags_1,
+	sizeof(asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1)
+		/sizeof(asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1)
+		/sizeof(asn_DEF_RANAP_SDU_FormatInformationParameterItem_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RANAP_SDU_FormatInformationParameterItem_1,
+	3,	/* Elements count */
+	&asn_SPC_RANAP_SDU_FormatInformationParameterItem_specs_1	/* Additional specs */
+};
+
