diff --git a/3rdparty/libe2ap/ServedCells.c b/3rdparty/libe2ap/ServedCells.c
new file mode 100644
index 0000000..462cf2a
--- /dev/null
+++ b/3rdparty/libe2ap/ServedCells.c
@@ -0,0 +1,115 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "X2AP-IEs"
+ * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
+ * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
+ */
+
+#include "ServedCells.h"
+
+#include "Neighbour-Information.h"
+#include "ProtocolExtensionContainer.h"
+static asn_per_constraints_t asn_PER_type_ServedCells_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 8,  8,  1,  256 }	/* (SIZE(1..256)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Member_2[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct ServedCells__Member, servedCellInfo),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ServedCell_Information,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"servedCellInfo"
+		},
+	{ ATF_POINTER, 2, offsetof(struct ServedCells__Member, neighbour_Info),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_Neighbour_Information,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"neighbour-Info"
+		},
+	{ ATF_POINTER, 1, offsetof(struct ServedCells__Member, iE_Extensions),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ProtocolExtensionContainer_8858P64,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"iE-Extensions"
+		},
+};
+static const int asn_MAP_Member_oms_2[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedCellInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* neighbour-Info */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = {
+	sizeof(struct ServedCells__Member),
+	offsetof(struct ServedCells__Member, _asn_ctx),
+	asn_MAP_Member_tag2el_2,
+	3,	/* Count of tags in the map */
+	asn_MAP_Member_oms_2,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_Member_2 = {
+	"SEQUENCE",
+	"SEQUENCE",
+	&asn_OP_SEQUENCE,
+	asn_DEF_Member_tags_2,
+	sizeof(asn_DEF_Member_tags_2)
+		/sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+	asn_DEF_Member_tags_2,	/* Same as above */
+	sizeof(asn_DEF_Member_tags_2)
+		/sizeof(asn_DEF_Member_tags_2[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_Member_2,
+	3,	/* Elements count */
+	&asn_SPC_Member_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ServedCells_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_Member_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ServedCells_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ServedCells_specs_1 = {
+	sizeof(struct ServedCells),
+	offsetof(struct ServedCells, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ServedCells = {
+	"ServedCells",
+	"ServedCells",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ServedCells_tags_1,
+	sizeof(asn_DEF_ServedCells_tags_1)
+		/sizeof(asn_DEF_ServedCells_tags_1[0]), /* 1 */
+	asn_DEF_ServedCells_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ServedCells_tags_1)
+		/sizeof(asn_DEF_ServedCells_tags_1[0]), /* 1 */
+	{ 0, &asn_PER_type_ServedCells_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_ServedCells_1,
+	1,	/* Single element */
+	&asn_SPC_ServedCells_specs_1	/* Additional specs */
+};
+
