Add User-level metrics
Issue-ID: SIM-18
Signed-off-by: Ron Shacham <rshacham@research.att.com>
Change-Id: Ifcf571d8dfd23cafd2299464c0fadf65e7d25fe4
diff --git a/e2sim/e2apv1sim/ASN1c/C-RNTI.c b/e2sim/e2apv1sim/ASN1c/C-RNTI.c
new file mode 100644
index 0000000..e626083
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/C-RNTI.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "C-RNTI.h"
+
+int
+C_RNTI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+ size_t size;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ size = st->size;
+
+ if((size == 2)) {
+ /* 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 OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_C_RNTI_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ 2 /* (SIZE(2..2)) */};
+asn_per_constraints_t asn_PER_type_C_RNTI_constr_1 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */,
+ 0, 0 /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_C_RNTI_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_C_RNTI = {
+ "C-RNTI",
+ "C-RNTI",
+ &asn_OP_OCTET_STRING,
+ asn_DEF_C_RNTI_tags_1,
+ sizeof(asn_DEF_C_RNTI_tags_1)
+ /sizeof(asn_DEF_C_RNTI_tags_1[0]), /* 1 */
+ asn_DEF_C_RNTI_tags_1, /* Same as above */
+ sizeof(asn_DEF_C_RNTI_tags_1)
+ /sizeof(asn_DEF_C_RNTI_tags_1[0]), /* 1 */
+ { &asn_OER_type_C_RNTI_constr_1, &asn_PER_type_C_RNTI_constr_1, C_RNTI_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/C-RNTI.h b/e2sim/e2apv1sim/ASN1c/C-RNTI.h
new file mode 100644
index 0000000..7366109
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/C-RNTI.h
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _C_RNTI_H_
+#define _C_RNTI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* C-RNTI */
+typedef OCTET_STRING_t C_RNTI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_C_RNTI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_C_RNTI;
+asn_struct_free_f C_RNTI_free;
+asn_struct_print_f C_RNTI_print;
+asn_constr_check_f C_RNTI_constraint;
+ber_type_decoder_f C_RNTI_decode_ber;
+der_type_encoder_f C_RNTI_encode_der;
+xer_type_decoder_f C_RNTI_decode_xer;
+xer_type_encoder_f C_RNTI_encode_xer;
+oer_type_decoder_f C_RNTI_decode_oer;
+oer_type_encoder_f C_RNTI_encode_oer;
+per_type_decoder_f C_RNTI_decode_uper;
+per_type_encoder_f C_RNTI_encode_uper;
+per_type_decoder_f C_RNTI_decode_aper;
+per_type_encoder_f C_RNTI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _C_RNTI_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c
new file mode 100644
index 0000000..c0b6775
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.c
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "CU-CP-Usage-Report-CellResourceReportItem.h"
+
+static int
+memb_ueResourceReportList_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 <= 32)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_CU_CP_Usage_Report_UeResourceReportItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = {
+ sizeof(struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList),
+ offsetof(struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = {
+ "ueResourceReportList",
+ "ueResourceReportList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_ueResourceReportList_tags_3,
+ sizeof(asn_DEF_ueResourceReportList_tags_3)
+ /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */
+ asn_DEF_ueResourceReportList_tags_3, /* Same as above */
+ sizeof(asn_DEF_ueResourceReportList_tags_3)
+ /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */
+ { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint },
+ asn_MBR_ueResourceReportList_3,
+ 1, /* Single element */
+ &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, nRCGI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NRCGI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "nRCGI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, ueResourceReportList),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ 0,
+ &asn_DEF_ueResourceReportList_3,
+ 0,
+ { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 },
+ 0, 0, /* No default value */
+ "ueResourceReportList"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_CellResourceReportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1 = {
+ sizeof(struct CU_CP_Usage_Report_CellResourceReportItem),
+ offsetof(struct CU_CP_Usage_Report_CellResourceReportItem, _asn_ctx),
+ asn_MAP_CU_CP_Usage_Report_CellResourceReportItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem = {
+ "CU-CP-Usage-Report-CellResourceReportItem",
+ "CU-CP-Usage-Report-CellResourceReportItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1,
+ sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1)
+ /sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */
+ asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1)
+ /sizeof(asn_DEF_CU_CP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1,
+ 2, /* Elements count */
+ &asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h
new file mode 100644
index 0000000..9fb9dd9
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-CellResourceReportItem.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _CU_CP_Usage_Report_CellResourceReportItem_H_
+#define _CU_CP_Usage_Report_CellResourceReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NRCGI.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CU_CP_Usage_Report_UeResourceReportItem;
+
+/* CU-CP-Usage-Report-CellResourceReportItem */
+typedef struct CU_CP_Usage_Report_CellResourceReportItem {
+ NRCGI_t nRCGI;
+ struct CU_CP_Usage_Report_CellResourceReportItem__ueResourceReportList {
+ A_SEQUENCE_OF(struct CU_CP_Usage_Report_UeResourceReportItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueResourceReportList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CU_CP_Usage_Report_CellResourceReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_CellResourceReportItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_CellResourceReportItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_CellResourceReportItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include "CU-CP-Usage-Report-UeResourceReportItem.h"
+
+#endif /* _CU_CP_Usage_Report_CellResourceReportItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-Per-UE.c b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-Per-UE.c
new file mode 100644
index 0000000..22055b3
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-Per-UE.c
@@ -0,0 +1,129 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "CU-CP-Usage-Report-Per-UE.h"
+
+static int
+memb_cellResourceReportList_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 <= 16384)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..16384)) */};
+static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..16384)) */};
+static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_CU_CP_Usage_Report_CellResourceReportItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = {
+ sizeof(struct CU_CP_Usage_Report_Per_UE__cellResourceReportList),
+ offsetof(struct CU_CP_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = {
+ "cellResourceReportList",
+ "cellResourceReportList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_cellResourceReportList_tags_2,
+ sizeof(asn_DEF_cellResourceReportList_tags_2)
+ /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */
+ asn_DEF_cellResourceReportList_tags_2, /* Same as above */
+ sizeof(asn_DEF_cellResourceReportList_tags_2)
+ /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */
+ { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint },
+ asn_MBR_cellResourceReportList_2,
+ 1, /* Single element */
+ &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_Per_UE_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_Per_UE, cellResourceReportList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_cellResourceReportList_2,
+ 0,
+ { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 },
+ 0, 0, /* No default value */
+ "cellResourceReportList"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_Per_UE_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1 = {
+ sizeof(struct CU_CP_Usage_Report_Per_UE),
+ offsetof(struct CU_CP_Usage_Report_Per_UE, _asn_ctx),
+ asn_MAP_CU_CP_Usage_Report_Per_UE_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_Per_UE = {
+ "CU-CP-Usage-Report-Per-UE",
+ "CU-CP-Usage-Report-Per-UE",
+ &asn_OP_SEQUENCE,
+ asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1,
+ sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1)
+ /sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[0]), /* 1 */
+ asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1, /* Same as above */
+ sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1)
+ /sizeof(asn_DEF_CU_CP_Usage_Report_Per_UE_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_CU_CP_Usage_Report_Per_UE_1,
+ 1, /* Elements count */
+ &asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-Per-UE.h b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-Per-UE.h
new file mode 100644
index 0000000..dad74ca
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-Per-UE.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _CU_CP_Usage_Report_Per_UE_H_
+#define _CU_CP_Usage_Report_Per_UE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CU_CP_Usage_Report_CellResourceReportItem;
+
+/* CU-CP-Usage-Report-Per-UE */
+typedef struct CU_CP_Usage_Report_Per_UE {
+ struct CU_CP_Usage_Report_Per_UE__cellResourceReportList {
+ A_SEQUENCE_OF(struct CU_CP_Usage_Report_CellResourceReportItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } cellResourceReportList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CU_CP_Usage_Report_Per_UE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_Per_UE;
+extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_Per_UE_specs_1;
+extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_Per_UE_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include "CU-CP-Usage-Report-CellResourceReportItem.h"
+
+#endif /* _CU_CP_Usage_Report_Per_UE_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c
new file mode 100644
index 0000000..de4d8de
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "CU-CP-Usage-Report-UeResourceReportItem.h"
+
+asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, c_RNTI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_C_RNTI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "c-RNTI"
+ },
+ { ATF_POINTER, 2, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, serving_Cell_RF_Type),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_OCTET_STRING,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "serving-Cell-RF-Type"
+ },
+ { ATF_POINTER, 1, offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, neighbor_Cell_RF),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_OCTET_STRING,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "neighbor-Cell-RF"
+ },
+};
+static const int asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* serving-Cell-RF-Type */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* neighbor-Cell-RF */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1 = {
+ sizeof(struct CU_CP_Usage_Report_UeResourceReportItem),
+ offsetof(struct CU_CP_Usage_Report_UeResourceReportItem, _asn_ctx),
+ asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_CU_CP_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem = {
+ "CU-CP-Usage-Report-UeResourceReportItem",
+ "CU-CP-Usage-Report-UeResourceReportItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1,
+ sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1)
+ /sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */
+ asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1)
+ /sizeof(asn_DEF_CU_CP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1,
+ 3, /* Elements count */
+ &asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h
new file mode 100644
index 0000000..11edd99
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-CP-Usage-Report-UeResourceReportItem.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _CU_CP_Usage_Report_UeResourceReportItem_H_
+#define _CU_CP_Usage_Report_UeResourceReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "C-RNTI.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CU-CP-Usage-Report-UeResourceReportItem */
+typedef struct CU_CP_Usage_Report_UeResourceReportItem {
+ C_RNTI_t c_RNTI;
+ OCTET_STRING_t *serving_Cell_RF_Type; /* OPTIONAL */
+ OCTET_STRING_t *neighbor_Cell_RF; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CU_CP_Usage_Report_UeResourceReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CU_CP_Usage_Report_UeResourceReportItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_CU_CP_Usage_Report_UeResourceReportItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_CU_CP_Usage_Report_UeResourceReportItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CU_CP_Usage_Report_UeResourceReportItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c
new file mode 100644
index 0000000..4781c55
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.c
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "CU-UP-Usage-Report-CellResourceReportItem.h"
+
+static int
+memb_ueResourceReportList_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 <= 32)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_CU_UP_Usage_Report_UeResourceReportItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = {
+ sizeof(struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList),
+ offsetof(struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = {
+ "ueResourceReportList",
+ "ueResourceReportList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_ueResourceReportList_tags_3,
+ sizeof(asn_DEF_ueResourceReportList_tags_3)
+ /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */
+ asn_DEF_ueResourceReportList_tags_3, /* Same as above */
+ sizeof(asn_DEF_ueResourceReportList_tags_3)
+ /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */
+ { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint },
+ asn_MBR_ueResourceReportList_3,
+ 1, /* Single element */
+ &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, nRCGI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NRCGI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "nRCGI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, ueResourceReportList),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ 0,
+ &asn_DEF_ueResourceReportList_3,
+ 0,
+ { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 },
+ 0, 0, /* No default value */
+ "ueResourceReportList"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_CellResourceReportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1 = {
+ sizeof(struct CU_UP_Usage_Report_CellResourceReportItem),
+ offsetof(struct CU_UP_Usage_Report_CellResourceReportItem, _asn_ctx),
+ asn_MAP_CU_UP_Usage_Report_CellResourceReportItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem = {
+ "CU-UP-Usage-Report-CellResourceReportItem",
+ "CU-UP-Usage-Report-CellResourceReportItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1,
+ sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1)
+ /sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */
+ asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1)
+ /sizeof(asn_DEF_CU_UP_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1,
+ 2, /* Elements count */
+ &asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h
new file mode 100644
index 0000000..f313f40
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-CellResourceReportItem.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _CU_UP_Usage_Report_CellResourceReportItem_H_
+#define _CU_UP_Usage_Report_CellResourceReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NRCGI.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CU_UP_Usage_Report_UeResourceReportItem;
+
+/* CU-UP-Usage-Report-CellResourceReportItem */
+typedef struct CU_UP_Usage_Report_CellResourceReportItem {
+ NRCGI_t nRCGI;
+ struct CU_UP_Usage_Report_CellResourceReportItem__ueResourceReportList {
+ A_SEQUENCE_OF(struct CU_UP_Usage_Report_UeResourceReportItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueResourceReportList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CU_UP_Usage_Report_CellResourceReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_CellResourceReportItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_CellResourceReportItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_CellResourceReportItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include "CU-UP-Usage-Report-UeResourceReportItem.h"
+
+#endif /* _CU_UP_Usage_Report_CellResourceReportItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-Per-UE.c b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-Per-UE.c
new file mode 100644
index 0000000..5213281
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-Per-UE.c
@@ -0,0 +1,129 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "CU-UP-Usage-Report-Per-UE.h"
+
+static int
+memb_cellResourceReportList_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 <= 512)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..512)) */};
+static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..512)) */};
+static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_CU_UP_Usage_Report_CellResourceReportItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = {
+ sizeof(struct CU_UP_Usage_Report_Per_UE__cellResourceReportList),
+ offsetof(struct CU_UP_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = {
+ "cellResourceReportList",
+ "cellResourceReportList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_cellResourceReportList_tags_2,
+ sizeof(asn_DEF_cellResourceReportList_tags_2)
+ /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */
+ asn_DEF_cellResourceReportList_tags_2, /* Same as above */
+ sizeof(asn_DEF_cellResourceReportList_tags_2)
+ /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */
+ { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint },
+ asn_MBR_cellResourceReportList_2,
+ 1, /* Single element */
+ &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_Per_UE_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_Per_UE, cellResourceReportList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_cellResourceReportList_2,
+ 0,
+ { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 },
+ 0, 0, /* No default value */
+ "cellResourceReportList"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_Per_UE_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1 = {
+ sizeof(struct CU_UP_Usage_Report_Per_UE),
+ offsetof(struct CU_UP_Usage_Report_Per_UE, _asn_ctx),
+ asn_MAP_CU_UP_Usage_Report_Per_UE_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_Per_UE = {
+ "CU-UP-Usage-Report-Per-UE",
+ "CU-UP-Usage-Report-Per-UE",
+ &asn_OP_SEQUENCE,
+ asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1,
+ sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1)
+ /sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[0]), /* 1 */
+ asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1, /* Same as above */
+ sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1)
+ /sizeof(asn_DEF_CU_UP_Usage_Report_Per_UE_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_CU_UP_Usage_Report_Per_UE_1,
+ 1, /* Elements count */
+ &asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-Per-UE.h b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-Per-UE.h
new file mode 100644
index 0000000..71e6ed9
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-Per-UE.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _CU_UP_Usage_Report_Per_UE_H_
+#define _CU_UP_Usage_Report_Per_UE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CU_UP_Usage_Report_CellResourceReportItem;
+
+/* CU-UP-Usage-Report-Per-UE */
+typedef struct CU_UP_Usage_Report_Per_UE {
+ struct CU_UP_Usage_Report_Per_UE__cellResourceReportList {
+ A_SEQUENCE_OF(struct CU_UP_Usage_Report_CellResourceReportItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } cellResourceReportList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CU_UP_Usage_Report_Per_UE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_Per_UE;
+extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_Per_UE_specs_1;
+extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_Per_UE_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include "CU-UP-Usage-Report-CellResourceReportItem.h"
+
+#endif /* _CU_UP_Usage_Report_Per_UE_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c
new file mode 100644
index 0000000..1867379
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.c
@@ -0,0 +1,150 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "CU-UP-Usage-Report-UeResourceReportItem.h"
+
+static int
+memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const INTEGER_t *st = (const INTEGER_t *)sptr;
+ long value;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(asn_INTEGER2long(st, &value)) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value too large (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if((value >= 0 && value <= 10000000000)) {
+ /* 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_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+ asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+ const INTEGER_t *st = (const INTEGER_t *)sptr;
+ long value;
+
+ if(!sptr) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value not given (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if(asn_INTEGER2long(st, &value)) {
+ ASN__CTFAIL(app_key, td, sptr,
+ "%s: value too large (%s:%d)",
+ td->name, __FILE__, __LINE__);
+ return -1;
+ }
+
+ if((value >= 0 && value <= 10000000000)) {
+ /* 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_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 34, -1, 0, 10000000000 } /* (0..10000000000,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, c_RNTI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_C_RNTI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "c-RNTI"
+ },
+ { ATF_POINTER, 2, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, pDCPBytesDL),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_INTEGER,
+ 0,
+ { &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3, memb_pDCPBytesDL_constraint_1 },
+ 0, 0, /* No default value */
+ "pDCPBytesDL"
+ },
+ { ATF_POINTER, 1, offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, pDCPBytesUL),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_INTEGER,
+ 0,
+ { &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4, memb_pDCPBytesUL_constraint_1 },
+ 0, 0, /* No default value */
+ "pDCPBytesUL"
+ },
+};
+static const int asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1 = {
+ sizeof(struct CU_UP_Usage_Report_UeResourceReportItem),
+ offsetof(struct CU_UP_Usage_Report_UeResourceReportItem, _asn_ctx),
+ asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_CU_UP_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem = {
+ "CU-UP-Usage-Report-UeResourceReportItem",
+ "CU-UP-Usage-Report-UeResourceReportItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1,
+ sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1)
+ /sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */
+ asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1)
+ /sizeof(asn_DEF_CU_UP_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1,
+ 3, /* Elements count */
+ &asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h
new file mode 100644
index 0000000..3a3dec7
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/CU-UP-Usage-Report-UeResourceReportItem.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _CU_UP_Usage_Report_UeResourceReportItem_H_
+#define _CU_UP_Usage_Report_UeResourceReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "C-RNTI.h"
+#include <INTEGER.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CU-UP-Usage-Report-UeResourceReportItem */
+typedef struct CU_UP_Usage_Report_UeResourceReportItem {
+ C_RNTI_t c_RNTI;
+ INTEGER_t *pDCPBytesDL; /* OPTIONAL */
+ INTEGER_t *pDCPBytesUL; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} CU_UP_Usage_Report_UeResourceReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CU_UP_Usage_Report_UeResourceReportItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_CU_UP_Usage_Report_UeResourceReportItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_CU_UP_Usage_Report_UeResourceReportItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CU_UP_Usage_Report_UeResourceReportItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/CUUPMeasurement-Container.c b/e2sim/e2apv1sim/ASN1c/CUUPMeasurement-Container.c
index 56dd593..bd27283 100644
--- a/e2sim/e2apv1sim/ASN1c/CUUPMeasurement-Container.c
+++ b/e2sim/e2apv1sim/ASN1c/CUUPMeasurement-Container.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/CUUPMeasurement-Container.h b/e2sim/e2apv1sim/ASN1c/CUUPMeasurement-Container.h
index 8105467..14aafc3 100644
--- a/e2sim/e2apv1sim/ASN1c/CUUPMeasurement-Container.h
+++ b/e2sim/e2apv1sim/ASN1c/CUUPMeasurement-Container.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/CellResourceReportListItem.c b/e2sim/e2apv1sim/ASN1c/CellResourceReportListItem.c
index 03a9d30..670d42a 100644
--- a/e2sim/e2apv1sim/ASN1c/CellResourceReportListItem.c
+++ b/e2sim/e2apv1sim/ASN1c/CellResourceReportListItem.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/CellResourceReportListItem.h b/e2sim/e2apv1sim/ASN1c/CellResourceReportListItem.h
index d314460..91bbf71 100644
--- a/e2sim/e2apv1sim/ASN1c/CellResourceReportListItem.h
+++ b/e2sim/e2apv1sim/ASN1c/CellResourceReportListItem.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-CellResourceReportItem.c b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-CellResourceReportItem.c
new file mode 100644
index 0000000..eee9621
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-CellResourceReportItem.c
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "DU-Usage-Report-CellResourceReportItem.h"
+
+static int
+memb_ueResourceReportList_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 <= 32)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_ueResourceReportList_constr_3 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueResourceReportList_3[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_DU_Usage_Report_UeResourceReportItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_ueResourceReportList_tags_3[] = {
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueResourceReportList_specs_3 = {
+ sizeof(struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList),
+ offsetof(struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueResourceReportList_3 = {
+ "ueResourceReportList",
+ "ueResourceReportList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_ueResourceReportList_tags_3,
+ sizeof(asn_DEF_ueResourceReportList_tags_3)
+ /sizeof(asn_DEF_ueResourceReportList_tags_3[0]) - 1, /* 1 */
+ asn_DEF_ueResourceReportList_tags_3, /* Same as above */
+ sizeof(asn_DEF_ueResourceReportList_tags_3)
+ /sizeof(asn_DEF_ueResourceReportList_tags_3[0]), /* 2 */
+ { &asn_OER_type_ueResourceReportList_constr_3, &asn_PER_type_ueResourceReportList_constr_3, SEQUENCE_OF_constraint },
+ asn_MBR_ueResourceReportList_3,
+ 1, /* Single element */
+ &asn_SPC_ueResourceReportList_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DU_Usage_Report_CellResourceReportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_CellResourceReportItem, nRCGI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NRCGI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "nRCGI"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_CellResourceReportItem, ueResourceReportList),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ 0,
+ &asn_DEF_ueResourceReportList_3,
+ 0,
+ { &asn_OER_memb_ueResourceReportList_constr_3, &asn_PER_memb_ueResourceReportList_constr_3, memb_ueResourceReportList_constraint_1 },
+ 0, 0, /* No default value */
+ "ueResourceReportList"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_CellResourceReportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueResourceReportList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1 = {
+ sizeof(struct DU_Usage_Report_CellResourceReportItem),
+ offsetof(struct DU_Usage_Report_CellResourceReportItem, _asn_ctx),
+ asn_MAP_DU_Usage_Report_CellResourceReportItem_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_CellResourceReportItem = {
+ "DU-Usage-Report-CellResourceReportItem",
+ "DU-Usage-Report-CellResourceReportItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1,
+ sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1)
+ /sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */
+ asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1)
+ /sizeof(asn_DEF_DU_Usage_Report_CellResourceReportItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_DU_Usage_Report_CellResourceReportItem_1,
+ 2, /* Elements count */
+ &asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-CellResourceReportItem.h b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-CellResourceReportItem.h
new file mode 100644
index 0000000..4a72572
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-CellResourceReportItem.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _DU_Usage_Report_CellResourceReportItem_H_
+#define _DU_Usage_Report_CellResourceReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NRCGI.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct DU_Usage_Report_UeResourceReportItem;
+
+/* DU-Usage-Report-CellResourceReportItem */
+typedef struct DU_Usage_Report_CellResourceReportItem {
+ NRCGI_t nRCGI;
+ struct DU_Usage_Report_CellResourceReportItem__ueResourceReportList {
+ A_SEQUENCE_OF(struct DU_Usage_Report_UeResourceReportItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } ueResourceReportList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} DU_Usage_Report_CellResourceReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_CellResourceReportItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_CellResourceReportItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_CellResourceReportItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include "DU-Usage-Report-UeResourceReportItem.h"
+
+#endif /* _DU_Usage_Report_CellResourceReportItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-Per-UE.c b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-Per-UE.c
new file mode 100644
index 0000000..9ba13af
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-Per-UE.c
@@ -0,0 +1,129 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "DU-Usage-Report-Per-UE.h"
+
+static int
+memb_cellResourceReportList_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 <= 512)) {
+ /* 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 asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..512)) */};
+static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { 0, 0 },
+ -1 /* (SIZE(1..512)) */};
+static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = {
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */,
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = {
+ { ATF_POINTER, 0, 0,
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+ 0,
+ &asn_DEF_DU_Usage_Report_CellResourceReportItem,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ ""
+ },
+};
+static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = {
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = {
+ sizeof(struct DU_Usage_Report_Per_UE__cellResourceReportList),
+ offsetof(struct DU_Usage_Report_Per_UE__cellResourceReportList, _asn_ctx),
+ 0, /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = {
+ "cellResourceReportList",
+ "cellResourceReportList",
+ &asn_OP_SEQUENCE_OF,
+ asn_DEF_cellResourceReportList_tags_2,
+ sizeof(asn_DEF_cellResourceReportList_tags_2)
+ /sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */
+ asn_DEF_cellResourceReportList_tags_2, /* Same as above */
+ sizeof(asn_DEF_cellResourceReportList_tags_2)
+ /sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */
+ { &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint },
+ asn_MBR_cellResourceReportList_2,
+ 1, /* Single element */
+ &asn_SPC_cellResourceReportList_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DU_Usage_Report_Per_UE_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_Per_UE, cellResourceReportList),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ 0,
+ &asn_DEF_cellResourceReportList_2,
+ 0,
+ { &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2, memb_cellResourceReportList_constraint_1 },
+ 0, 0, /* No default value */
+ "cellResourceReportList"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_Per_UE_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_Per_UE_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_Per_UE_specs_1 = {
+ sizeof(struct DU_Usage_Report_Per_UE),
+ offsetof(struct DU_Usage_Report_Per_UE, _asn_ctx),
+ asn_MAP_DU_Usage_Report_Per_UE_tag2el_1,
+ 1, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 1, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_Per_UE = {
+ "DU-Usage-Report-Per-UE",
+ "DU-Usage-Report-Per-UE",
+ &asn_OP_SEQUENCE,
+ asn_DEF_DU_Usage_Report_Per_UE_tags_1,
+ sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1)
+ /sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1[0]), /* 1 */
+ asn_DEF_DU_Usage_Report_Per_UE_tags_1, /* Same as above */
+ sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1)
+ /sizeof(asn_DEF_DU_Usage_Report_Per_UE_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_DU_Usage_Report_Per_UE_1,
+ 1, /* Elements count */
+ &asn_SPC_DU_Usage_Report_Per_UE_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-Per-UE.h b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-Per-UE.h
new file mode 100644
index 0000000..2fc44d1
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-Per-UE.h
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _DU_Usage_Report_Per_UE_H_
+#define _DU_Usage_Report_Per_UE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct DU_Usage_Report_CellResourceReportItem;
+
+/* DU-Usage-Report-Per-UE */
+typedef struct DU_Usage_Report_Per_UE {
+ struct DU_Usage_Report_Per_UE__cellResourceReportList {
+ A_SEQUENCE_OF(struct DU_Usage_Report_CellResourceReportItem) list;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } cellResourceReportList;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} DU_Usage_Report_Per_UE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_Per_UE;
+extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_Per_UE_specs_1;
+extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_Per_UE_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Referred external types */
+#include "DU-Usage-Report-CellResourceReportItem.h"
+
+#endif /* _DU_Usage_Report_Per_UE_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-UeResourceReportItem.c b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-UeResourceReportItem.c
new file mode 100644
index 0000000..0bcafbe
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-UeResourceReportItem.c
@@ -0,0 +1,138 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "DU-Usage-Report-UeResourceReportItem.h"
+
+static int
+memb_dl_PRBUsage_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 <= 1000000000)) {
+ /* 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_ul_PRBUsage_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 <= 1000000000)) {
+ /* 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_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 30, -1, 0, 1000000000 } /* (0..1000000000,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 30, -1, 0, 1000000000 } /* (0..1000000000,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_DU_Usage_Report_UeResourceReportItem_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct DU_Usage_Report_UeResourceReportItem, c_RNTI),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_C_RNTI,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "c-RNTI"
+ },
+ { ATF_POINTER, 2, offsetof(struct DU_Usage_Report_UeResourceReportItem, dl_PRBUsage),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3, memb_dl_PRBUsage_constraint_1 },
+ 0, 0, /* No default value */
+ "dl-PRBUsage"
+ },
+ { ATF_POINTER, 1, offsetof(struct DU_Usage_Report_UeResourceReportItem, ul_PRBUsage),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_NativeInteger,
+ 0,
+ { &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4, memb_ul_PRBUsage_constraint_1 },
+ 0, 0, /* No default value */
+ "ul-PRBUsage"
+ },
+};
+static const int asn_MAP_DU_Usage_Report_UeResourceReportItem_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DU_Usage_Report_UeResourceReportItem_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1 = {
+ sizeof(struct DU_Usage_Report_UeResourceReportItem),
+ offsetof(struct DU_Usage_Report_UeResourceReportItem, _asn_ctx),
+ asn_MAP_DU_Usage_Report_UeResourceReportItem_tag2el_1,
+ 3, /* Count of tags in the map */
+ asn_MAP_DU_Usage_Report_UeResourceReportItem_oms_1, /* Optional members */
+ 2, 0, /* Root/Additions */
+ 3, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_UeResourceReportItem = {
+ "DU-Usage-Report-UeResourceReportItem",
+ "DU-Usage-Report-UeResourceReportItem",
+ &asn_OP_SEQUENCE,
+ asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1,
+ sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1)
+ /sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */
+ asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1, /* Same as above */
+ sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1)
+ /sizeof(asn_DEF_DU_Usage_Report_UeResourceReportItem_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_DU_Usage_Report_UeResourceReportItem_1,
+ 3, /* Elements count */
+ &asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-UeResourceReportItem.h b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-UeResourceReportItem.h
new file mode 100644
index 0000000..e860272
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/DU-Usage-Report-UeResourceReportItem.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _DU_Usage_Report_UeResourceReportItem_H_
+#define _DU_Usage_Report_UeResourceReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "C-RNTI.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DU-Usage-Report-UeResourceReportItem */
+typedef struct DU_Usage_Report_UeResourceReportItem {
+ C_RNTI_t c_RNTI;
+ long *dl_PRBUsage; /* OPTIONAL */
+ long *ul_PRBUsage; /* OPTIONAL */
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} DU_Usage_Report_UeResourceReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DU_Usage_Report_UeResourceReportItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_DU_Usage_Report_UeResourceReportItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_DU_Usage_Report_UeResourceReportItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DU_Usage_Report_UeResourceReportItem_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-ActionDefinition.c b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-ActionDefinition.c
index c538745..abdf25d 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-ActionDefinition.c
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-ActionDefinition.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-ActionDefinition.h b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-ActionDefinition.h
index 06715f0..70b81dd 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-ActionDefinition.h
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-ActionDefinition.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c
index ef0bccc..e0b48f2 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h
index 2044c67..44cbd92 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition-Format1.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition.c b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition.c
index 840d5ff..482e42c 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition.c
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition.h b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition.h
index 2770a69..e96e600 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition.h
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-EventTriggerDefinition.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader-Format1.c b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader-Format1.c
index 345bf8d..2cccf8b 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader-Format1.c
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader-Format1.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -74,7 +74,7 @@
0, 0 /* No PER value map */
};
asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[] = {
- { ATF_POINTER, 6, offsetof(struct E2SM_KPM_IndicationHeader_Format1, id_GlobalKPMnode_ID),
+ { ATF_POINTER, 10, offsetof(struct E2SM_KPM_IndicationHeader_Format1, id_GlobalKPMnode_ID),
(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+1, /* EXPLICIT tag at current level */
&asn_DEF_GlobalKPMnode_ID,
@@ -83,7 +83,7 @@
0, 0, /* No default value */
"id-GlobalKPMnode-ID"
},
- { ATF_POINTER, 5, offsetof(struct E2SM_KPM_IndicationHeader_Format1, nRCGI),
+ { ATF_POINTER, 9, offsetof(struct E2SM_KPM_IndicationHeader_Format1, nRCGI),
(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_NRCGI,
@@ -92,7 +92,7 @@
0, 0, /* No default value */
"nRCGI"
},
- { ATF_POINTER, 4, offsetof(struct E2SM_KPM_IndicationHeader_Format1, pLMN_Identity),
+ { ATF_POINTER, 8, offsetof(struct E2SM_KPM_IndicationHeader_Format1, pLMN_Identity),
(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_PLMN_Identity,
@@ -101,7 +101,7 @@
0, 0, /* No default value */
"pLMN-Identity"
},
- { ATF_POINTER, 3, offsetof(struct E2SM_KPM_IndicationHeader_Format1, sliceID),
+ { ATF_POINTER, 7, offsetof(struct E2SM_KPM_IndicationHeader_Format1, sliceID),
(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_SNSSAI,
@@ -110,7 +110,7 @@
0, 0, /* No default value */
"sliceID"
},
- { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationHeader_Format1, fiveQI),
+ { ATF_POINTER, 6, offsetof(struct E2SM_KPM_IndicationHeader_Format1, fiveQI),
(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_NativeInteger,
@@ -119,7 +119,7 @@
0, 0, /* No default value */
"fiveQI"
},
- { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationHeader_Format1, qci),
+ { ATF_POINTER, 5, offsetof(struct E2SM_KPM_IndicationHeader_Format1, qci),
(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_NativeInteger,
@@ -128,8 +128,44 @@
0, 0, /* No default value */
"qci"
},
+ { ATF_POINTER, 4, offsetof(struct E2SM_KPM_IndicationHeader_Format1, message_Type),
+ (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_UE_Report_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "message-Type"
+ },
+ { ATF_POINTER, 3, offsetof(struct E2SM_KPM_IndicationHeader_Format1, gNB_DU_ID),
+ (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_DU_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-DU-ID"
+ },
+ { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationHeader_Format1, gNB_Name),
+ (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_GNB_Name,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-Name"
+ },
+ { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationHeader_Format1, global_GNB_ID),
+ (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GlobalgNB_ID,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "global-GNB-ID"
+ },
};
-static const int asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const int asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
@@ -139,16 +175,20 @@
{ (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pLMN-Identity */
{ (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sliceID */
{ (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* fiveQI */
- { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* qci */
+ { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* qci */
+ { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* message-Type */
+ { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* gNB-DU-ID */
+ { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* gNB-Name */
+ { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* global-GNB-ID */
};
asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 = {
sizeof(struct E2SM_KPM_IndicationHeader_Format1),
offsetof(struct E2SM_KPM_IndicationHeader_Format1, _asn_ctx),
asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1,
- 6, /* Count of tags in the map */
+ 10, /* Count of tags in the map */
asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1, /* Optional members */
- 6, 0, /* Root/Additions */
- 6, /* First extension addition */
+ 10, 0, /* Root/Additions */
+ 10, /* First extension addition */
};
asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1 = {
"E2SM-KPM-IndicationHeader-Format1",
@@ -162,7 +202,7 @@
/sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */
{ 0, 0, SEQUENCE_constraint },
asn_MBR_E2SM_KPM_IndicationHeader_Format1_1,
- 6, /* Elements count */
+ 10, /* Elements count */
&asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 /* Additional specs */
};
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader-Format1.h b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader-Format1.h
index e7cb6cf..c46b715 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader-Format1.h
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader-Format1.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -14,6 +14,8 @@
/* Including external dependencies */
#include "PLMN-Identity.h"
#include <NativeInteger.h>
+#include "UE-Report-Type.h"
+#include "GNB-DU-ID.h"
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
@@ -24,6 +26,8 @@
struct GlobalKPMnode_ID;
struct NRCGI;
struct SNSSAI;
+struct GNB_Name;
+struct GlobalgNB_ID;
/* E2SM-KPM-IndicationHeader-Format1 */
typedef struct E2SM_KPM_IndicationHeader_Format1 {
@@ -33,6 +37,10 @@
struct SNSSAI *sliceID; /* OPTIONAL */
long *fiveQI; /* OPTIONAL */
long *qci; /* OPTIONAL */
+ UE_Report_Type_t *message_Type; /* OPTIONAL */
+ GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */
+ struct GNB_Name *gNB_Name; /* OPTIONAL */
+ struct GlobalgNB_ID *global_GNB_ID; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
@@ -45,7 +53,7 @@
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1;
extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1;
-extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[6];
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[10];
#ifdef __cplusplus
}
@@ -55,6 +63,8 @@
#include "GlobalKPMnode-ID.h"
#include "NRCGI.h"
#include "SNSSAI.h"
+#include "GNB-Name.h"
+#include "GlobalgNB-ID.h"
#endif /* _E2SM_KPM_IndicationHeader_Format1_H_ */
#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader.c b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader.c
index 4a51497..c4fe730 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader.c
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader.h b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader.h
index b6c74807..67dc86d 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader.h
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationHeader.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage-Format1.c b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage-Format1.c
index e75aec4..7bdebb0 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage-Format1.c
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage-Format1.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -22,7 +22,7 @@
/* Determine the number of elements */
size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
- if((size >= 1 && size <= 512)) {
+ if((size >= 1 && size <= 8)) {
/* Perform validation of the inner elements */
return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
} else {
@@ -35,18 +35,18 @@
static asn_oer_constraints_t asn_OER_type_pm_Containers_constr_2 CC_NOTUSED = {
{ 0, 0 },
- -1 /* (SIZE(1..512)) */};
+ -1 /* (SIZE(1..8)) */};
static asn_per_constraints_t asn_PER_type_pm_Containers_constr_2 CC_NOTUSED = {
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */,
+ { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */,
0, 0 /* No PER value map */
};
static asn_oer_constraints_t asn_OER_memb_pm_Containers_constr_2 CC_NOTUSED = {
{ 0, 0 },
- -1 /* (SIZE(1..512)) */};
+ -1 /* (SIZE(1..8)) */};
static asn_per_constraints_t asn_PER_memb_pm_Containers_constr_2 CC_NOTUSED = {
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
- { APC_CONSTRAINED, 9, 9, 1, 512 } /* (SIZE(1..512)) */,
+ { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */,
0, 0 /* No PER value map */
};
static asn_TYPE_member_t asn_MBR_pm_Containers_2[] = {
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage-Format1.h b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage-Format1.h
index cd75722..a05b652 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage-Format1.h
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage-Format1.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage.c b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage.c
index de1738f..2eb4018 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage.c
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage.c
@@ -1,33 +1,24 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
#include "E2SM-KPM-IndicationMessage.h"
-static asn_oer_constraints_t asn_OER_type_E2SM_KPM_IndicationMessage_constr_1 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_indicationMessage_constr_3 CC_NOTUSED = {
{ 0, 0 },
-1};
-static asn_per_constraints_t asn_PER_type_E2SM_KPM_IndicationMessage_constr_1 CC_NOTUSED = {
- { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */,
+static asn_per_constraints_t asn_PER_type_indicationMessage_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
-static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_1[] = {
- { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, choice.ric_Style_Type),
+static asn_TYPE_member_t asn_MBR_indicationMessage_3[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, choice.indicationMessage_Format1),
(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-1, /* IMPLICIT tag at current level */
- &asn_DEF_RIC_Style_Type,
- 0,
- { 0, 0, 0 },
- 0, 0, /* No default value */
- "ric-Style-Type"
- },
- { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, choice.indicationMessage_Format1),
- (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
- -1, /* IMPLICIT tag at current level */
&asn_DEF_E2SM_KPM_IndicationMessage_Format1,
0,
{ 0, 0, 0 },
@@ -35,29 +26,80 @@
"indicationMessage-Format1"
},
};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1[] = {
- { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-Style-Type */
- { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* indicationMessage-Format1 */
+static const asn_TYPE_tag2member_t asn_MAP_indicationMessage_tag2el_3[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-Format1 */
};
-static asn_CHOICE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_specs_1 = {
- sizeof(struct E2SM_KPM_IndicationMessage),
- offsetof(struct E2SM_KPM_IndicationMessage, _asn_ctx),
- offsetof(struct E2SM_KPM_IndicationMessage, present),
- sizeof(((struct E2SM_KPM_IndicationMessage *)0)->present),
- asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1,
- 2, /* Count of tags in the map */
+static asn_CHOICE_specifics_t asn_SPC_indicationMessage_specs_3 = {
+ sizeof(struct E2SM_KPM_IndicationMessage__indicationMessage),
+ offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, _asn_ctx),
+ offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage, present),
+ sizeof(((struct E2SM_KPM_IndicationMessage__indicationMessage *)0)->present),
+ asn_MAP_indicationMessage_tag2el_3,
+ 1, /* Count of tags in the map */
0, 0,
- 2 /* Extensions start */
+ 1 /* Extensions start */
};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage = {
- "E2SM-KPM-IndicationMessage",
- "E2SM-KPM-IndicationMessage",
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_indicationMessage_3 = {
+ "indicationMessage",
+ "indicationMessage",
&asn_OP_CHOICE,
0, /* No effective tags (pointer) */
0, /* No effective tags (count) */
0, /* No tags (pointer) */
0, /* No tags (count) */
- { &asn_OER_type_E2SM_KPM_IndicationMessage_constr_1, &asn_PER_type_E2SM_KPM_IndicationMessage_constr_1, CHOICE_constraint },
+ { &asn_OER_type_indicationMessage_constr_3, &asn_PER_type_indicationMessage_constr_3, CHOICE_constraint },
+ asn_MBR_indicationMessage_3,
+ 1, /* Elements count */
+ &asn_SPC_indicationMessage_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, ric_Style_Type),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_RIC_Style_Type,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "ric-Style-Type"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, indicationMessage),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_indicationMessage_3,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "indicationMessage"
+ },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-Style-Type */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* indicationMessage */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_specs_1 = {
+ sizeof(struct E2SM_KPM_IndicationMessage),
+ offsetof(struct E2SM_KPM_IndicationMessage, _asn_ctx),
+ asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage = {
+ "E2SM-KPM-IndicationMessage",
+ "E2SM-KPM-IndicationMessage",
+ &asn_OP_SEQUENCE,
+ asn_DEF_E2SM_KPM_IndicationMessage_tags_1,
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */
+ asn_DEF_E2SM_KPM_IndicationMessage_tags_1, /* Same as above */
+ sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1)
+ /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */
+ { 0, 0, SEQUENCE_constraint },
asn_MBR_E2SM_KPM_IndicationMessage_1,
2, /* Elements count */
&asn_SPC_E2SM_KPM_IndicationMessage_specs_1 /* Additional specs */
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage.h b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage.h
index b0bbd4e..77d4e3b 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage.h
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-IndicationMessage.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -15,31 +15,40 @@
#include "RIC-Style-Type.h"
#include "E2SM-KPM-IndicationMessage-Format1.h"
#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
-typedef enum E2SM_KPM_IndicationMessage_PR {
- E2SM_KPM_IndicationMessage_PR_NOTHING, /* No components present */
- E2SM_KPM_IndicationMessage_PR_ric_Style_Type,
- E2SM_KPM_IndicationMessage_PR_indicationMessage_Format1
+typedef enum E2SM_KPM_IndicationMessage__indicationMessage_PR {
+ E2SM_KPM_IndicationMessage__indicationMessage_PR_NOTHING, /* No components present */
+ E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1
/* Extensions may appear below */
-} E2SM_KPM_IndicationMessage_PR;
+} E2SM_KPM_IndicationMessage__indicationMessage_PR;
/* E2SM-KPM-IndicationMessage */
typedef struct E2SM_KPM_IndicationMessage {
- E2SM_KPM_IndicationMessage_PR present;
- union E2SM_KPM_IndicationMessage_u {
- RIC_Style_Type_t ric_Style_Type;
- E2SM_KPM_IndicationMessage_Format1_t indicationMessage_Format1;
- /*
- * This type is extensible,
- * possible extensions are below.
- */
- } choice;
+ RIC_Style_Type_t ric_Style_Type;
+ struct E2SM_KPM_IndicationMessage__indicationMessage {
+ E2SM_KPM_IndicationMessage__indicationMessage_PR present;
+ union E2SM_KPM_IndicationMessage__indicationMessage_u {
+ E2SM_KPM_IndicationMessage_Format1_t indicationMessage_Format1;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } indicationMessage;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-RANfunction-Description.c b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-RANfunction-Description.c
index 192d919..226d0fb 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-RANfunction-Description.c
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-RANfunction-Description.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-RANfunction-Description.h b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-RANfunction-Description.h
index 19b2075..79d2dcf 100644
--- a/e2sim/e2apv1sim/ASN1c/E2SM-KPM-RANfunction-Description.h
+++ b/e2sim/e2apv1sim/ASN1c/E2SM-KPM-RANfunction-Description.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ENB-ID-Choice.c b/e2sim/e2apv1sim/ASN1c/ENB-ID-Choice.c
index bff5c7c..824871d 100644
--- a/e2sim/e2apv1sim/ASN1c/ENB-ID-Choice.c
+++ b/e2sim/e2apv1sim/ASN1c/ENB-ID-Choice.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ENB-ID-Choice.h b/e2sim/e2apv1sim/ASN1c/ENB-ID-Choice.h
index 5c1c59f..7e142ae 100644
--- a/e2sim/e2apv1sim/ASN1c/ENB-ID-Choice.h
+++ b/e2sim/e2apv1sim/ASN1c/ENB-ID-Choice.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ENB-ID.c b/e2sim/e2apv1sim/ASN1c/ENB-ID.c
index 2175859..212c6fc 100644
--- a/e2sim/e2apv1sim/ASN1c/ENB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/ENB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ENB-ID.h b/e2sim/e2apv1sim/ASN1c/ENB-ID.h
index d51f786..8af6b41 100644
--- a/e2sim/e2apv1sim/ASN1c/ENB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/ENB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ENGNB-ID.c b/e2sim/e2apv1sim/ASN1c/ENGNB-ID.c
index eb2d0d4..e8fc32f 100644
--- a/e2sim/e2apv1sim/ASN1c/ENGNB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/ENGNB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ENGNB-ID.h b/e2sim/e2apv1sim/ASN1c/ENGNB-ID.h
index cd9037f..f97a53c 100644
--- a/e2sim/e2apv1sim/ASN1c/ENGNB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/ENGNB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/EPC-CUUP-PM-Format.c b/e2sim/e2apv1sim/ASN1c/EPC-CUUP-PM-Format.c
index 297633b..d8902f8 100644
--- a/e2sim/e2apv1sim/ASN1c/EPC-CUUP-PM-Format.c
+++ b/e2sim/e2apv1sim/ASN1c/EPC-CUUP-PM-Format.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/EPC-CUUP-PM-Format.h b/e2sim/e2apv1sim/ASN1c/EPC-CUUP-PM-Format.h
index 9a510e0..b07125d 100644
--- a/e2sim/e2apv1sim/ASN1c/EPC-CUUP-PM-Format.h
+++ b/e2sim/e2apv1sim/ASN1c/EPC-CUUP-PM-Format.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/EPC-DU-PM-Container.c b/e2sim/e2apv1sim/ASN1c/EPC-DU-PM-Container.c
index 0cca548..2ba5440 100644
--- a/e2sim/e2apv1sim/ASN1c/EPC-DU-PM-Container.c
+++ b/e2sim/e2apv1sim/ASN1c/EPC-DU-PM-Container.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/EPC-DU-PM-Container.h b/e2sim/e2apv1sim/ASN1c/EPC-DU-PM-Container.h
index 9607e7f..198982e 100644
--- a/e2sim/e2apv1sim/ASN1c/EPC-DU-PM-Container.h
+++ b/e2sim/e2apv1sim/ASN1c/EPC-DU-PM-Container.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/FGC-CUUP-PM-Format.c b/e2sim/e2apv1sim/ASN1c/FGC-CUUP-PM-Format.c
index b956c0d..d8f7e44 100644
--- a/e2sim/e2apv1sim/ASN1c/FGC-CUUP-PM-Format.c
+++ b/e2sim/e2apv1sim/ASN1c/FGC-CUUP-PM-Format.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/FGC-CUUP-PM-Format.h b/e2sim/e2apv1sim/ASN1c/FGC-CUUP-PM-Format.h
index b393fa4..a6e4aa8 100644
--- a/e2sim/e2apv1sim/ASN1c/FGC-CUUP-PM-Format.h
+++ b/e2sim/e2apv1sim/ASN1c/FGC-CUUP-PM-Format.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/FGC-DU-PM-Container.c b/e2sim/e2apv1sim/ASN1c/FGC-DU-PM-Container.c
index de02a38..c0429ab 100644
--- a/e2sim/e2apv1sim/ASN1c/FGC-DU-PM-Container.c
+++ b/e2sim/e2apv1sim/ASN1c/FGC-DU-PM-Container.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/FGC-DU-PM-Container.h b/e2sim/e2apv1sim/ASN1c/FGC-DU-PM-Container.h
index 8249373..96debbb 100644
--- a/e2sim/e2apv1sim/ASN1c/FGC-DU-PM-Container.h
+++ b/e2sim/e2apv1sim/ASN1c/FGC-DU-PM-Container.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnListItem.c b/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnListItem.c
index 108e85e..84d1741 100644
--- a/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnListItem.c
+++ b/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnListItem.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnListItem.h b/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnListItem.h
index a30f72b..a87a0d7 100644
--- a/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnListItem.h
+++ b/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnListItem.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c b/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c
index 71b255b..d73d0db 100644
--- a/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c
+++ b/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h b/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h
index 8c3829a..1b22e34 100644
--- a/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h
+++ b/e2sim/e2apv1sim/ASN1c/FQIPERSlicesPerPlmnPerCellListItem.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-CU-CP-Name.c b/e2sim/e2apv1sim/ASN1c/GNB-CU-CP-Name.c
index d1eca63..029ca92 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-CU-CP-Name.c
+++ b/e2sim/e2apv1sim/ASN1c/GNB-CU-CP-Name.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-CU-CP-Name.h b/e2sim/e2apv1sim/ASN1c/GNB-CU-CP-Name.h
index 8952afc..1eb3404 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-CU-CP-Name.h
+++ b/e2sim/e2apv1sim/ASN1c/GNB-CU-CP-Name.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-ID.c b/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-ID.c
index 4800691..737a4f3 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-ID.h b/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-ID.h
index 595c40b..e6b9c43 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-Name.c b/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-Name.c
index b32b198..b64d5b1 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-Name.c
+++ b/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-Name.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-Name.h b/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-Name.h
index 5706221..c1b9d7e 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-Name.h
+++ b/e2sim/e2apv1sim/ASN1c/GNB-CU-UP-Name.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-DU-ID.c b/e2sim/e2apv1sim/ASN1c/GNB-DU-ID.c
index 15b3227..b43653e 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-DU-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GNB-DU-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-DU-ID.h b/e2sim/e2apv1sim/ASN1c/GNB-DU-ID.h
index 6e6ab24..65e23da 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-DU-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GNB-DU-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-DU-Name.c b/e2sim/e2apv1sim/ASN1c/GNB-DU-Name.c
index de7e741..8ac789d 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-DU-Name.c
+++ b/e2sim/e2apv1sim/ASN1c/GNB-DU-Name.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -83,7 +83,7 @@
static asn_oer_constraints_t asn_OER_type_GNB_DU_Name_constr_1 CC_NOTUSED = {
{ 0, 0 },
-1 /* (SIZE(0..MAX)) */};
-static asn_per_constraints_t asn_PER_type_GNB_DU_Name_constr_1 CC_NOTUSED = {
+asn_per_constraints_t asn_PER_type_GNB_DU_Name_constr_1 CC_NOTUSED = {
{ APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */,
{ APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */,
asn_PER_MAP_GNB_DU_Name_1_v2c, /* Value to PER code map */
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-DU-Name.h b/e2sim/e2apv1sim/ASN1c/GNB-DU-Name.h
index 82d3bcb..e4994e6 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-DU-Name.h
+++ b/e2sim/e2apv1sim/ASN1c/GNB-DU-Name.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -22,6 +22,7 @@
typedef PrintableString_t GNB_DU_Name_t;
/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GNB_DU_Name_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_Name;
asn_struct_free_f GNB_DU_Name_free;
asn_struct_print_f GNB_DU_Name_print;
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-ID-Choice.c b/e2sim/e2apv1sim/ASN1c/GNB-ID-Choice.c
index 6c40d27..81bc2b0 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-ID-Choice.c
+++ b/e2sim/e2apv1sim/ASN1c/GNB-ID-Choice.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-ID-Choice.h b/e2sim/e2apv1sim/ASN1c/GNB-ID-Choice.h
index b280214..cf5438c 100644
--- a/e2sim/e2apv1sim/ASN1c/GNB-ID-Choice.h
+++ b/e2sim/e2apv1sim/ASN1c/GNB-ID-Choice.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-Name.c b/e2sim/e2apv1sim/ASN1c/GNB-Name.c
new file mode 100644
index 0000000..aeee9d8
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/GNB-Name.c
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "GNB-Name.h"
+
+static asn_oer_constraints_t asn_OER_type_GNB_Name_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_GNB_Name_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_GNB_Name_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_DU_Name),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_DU_Name,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-DU-Name"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_CU_CP_Name),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_CU_CP_Name,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-CP-Name"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct GNB_Name, choice.gNB_CU_UP_Name),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_GNB_CU_UP_Name,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "gNB-CU-UP-Name"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_GNB_Name_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-DU-Name */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-CP-Name */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-CU-UP-Name */
+};
+asn_CHOICE_specifics_t asn_SPC_GNB_Name_specs_1 = {
+ sizeof(struct GNB_Name),
+ offsetof(struct GNB_Name, _asn_ctx),
+ offsetof(struct GNB_Name, present),
+ sizeof(((struct GNB_Name *)0)->present),
+ asn_MAP_GNB_Name_tag2el_1,
+ 3, /* Count of tags in the map */
+ 0, 0,
+ 3 /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_Name = {
+ "GNB-Name",
+ "GNB-Name",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_GNB_Name_constr_1, &asn_PER_type_GNB_Name_constr_1, CHOICE_constraint },
+ asn_MBR_GNB_Name_1,
+ 3, /* Elements count */
+ &asn_SPC_GNB_Name_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/GNB-Name.h b/e2sim/e2apv1sim/ASN1c/GNB-Name.h
new file mode 100644
index 0000000..3c69172
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/GNB-Name.h
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _GNB_Name_H_
+#define _GNB_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-DU-Name.h"
+#include "GNB-CU-CP-Name.h"
+#include "GNB-CU-UP-Name.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GNB_Name_PR {
+ GNB_Name_PR_NOTHING, /* No components present */
+ GNB_Name_PR_gNB_DU_Name,
+ GNB_Name_PR_gNB_CU_CP_Name,
+ GNB_Name_PR_gNB_CU_UP_Name
+ /* Extensions may appear below */
+
+} GNB_Name_PR;
+
+/* GNB-Name */
+typedef struct GNB_Name {
+ GNB_Name_PR present;
+ union GNB_Name_u {
+ GNB_DU_Name_t gNB_DU_Name;
+ GNB_CU_CP_Name_t gNB_CU_CP_Name;
+ GNB_CU_UP_Name_t gNB_CU_UP_Name;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} GNB_Name_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GNB_Name;
+extern asn_CHOICE_specifics_t asn_SPC_GNB_Name_specs_1;
+extern asn_TYPE_member_t asn_MBR_GNB_Name_1[3];
+extern asn_per_constraints_t asn_PER_type_GNB_Name_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GNB_Name_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalENB-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalENB-ID.c
index 195eb3a..58f3724 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalENB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalENB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalENB-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalENB-ID.h
index c043608..bd653ae 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalENB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalENB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ID.c
index b877b69..5202400 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ID.h
index 78a6414..a93e881 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-eNB-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-eNB-ID.c
index 0f8e91d..e4039b9 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-eNB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-eNB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-eNB-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-eNB-ID.h
index b111f69..9941095 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-eNB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-eNB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-en-gNB-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-en-gNB-ID.c
index 591391b..68e34d7 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-en-gNB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-en-gNB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-en-gNB-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-en-gNB-ID.h
index 8f3fc2f..7994b62 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-en-gNB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-en-gNB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-gNB-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-gNB-ID.c
index 5ba6fde..49e21ba 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-gNB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-gNB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-gNB-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-gNB-ID.h
index ecef59f..facef92 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-gNB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-gNB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ng-eNB-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ng-eNB-ID.c
index 4d1888b..299fb25 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ng-eNB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ng-eNB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ng-eNB-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ng-eNB-ID.h
index 64f413a..9ad8057 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ng-eNB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalKPMnode-ng-eNB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalenGNB-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalenGNB-ID.c
index 15462ab..07f8116 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalenGNB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalenGNB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalenGNB-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalenGNB-ID.h
index e6816f2..1e254a7 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalenGNB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalenGNB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalgNB-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalgNB-ID.c
index 66c78af..bfcc098 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalgNB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalgNB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalgNB-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalgNB-ID.h
index 390c3ff..e31846d 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalgNB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalgNB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalngeNB-ID.c b/e2sim/e2apv1sim/ASN1c/GlobalngeNB-ID.c
index a5da7c5..d220e9a 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalngeNB-ID.c
+++ b/e2sim/e2apv1sim/ASN1c/GlobalngeNB-ID.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/GlobalngeNB-ID.h b/e2sim/e2apv1sim/ASN1c/GlobalngeNB-ID.h
index bc9e254..e8246ca 100644
--- a/e2sim/e2apv1sim/ASN1c/GlobalngeNB-ID.h
+++ b/e2sim/e2apv1sim/ASN1c/GlobalngeNB-ID.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/Makefile.am.asn1convert b/e2sim/e2apv1sim/ASN1c/Makefile.am.asn1convert
index d2fffdf..c1bec19 100644
--- a/e2sim/e2apv1sim/ASN1c/Makefile.am.asn1convert
+++ b/e2sim/e2apv1sim/ASN1c/Makefile.am.asn1convert
@@ -10,5 +10,5 @@
regen: regenerate-from-asn1-source
regenerate-from-asn1-source:
- asn1c -fcompound-names /home/rshacham/e2sm_kpm_approved.asn
+ asn1c -fcompound-names /home/rshacham/e2sm-kpm-v01.02.asn
diff --git a/e2sim/e2apv1sim/ASN1c/Makefile.am.libasncodec b/e2sim/e2apv1sim/ASN1c/Makefile.am.libasncodec
index 8d083ba..8abd4f1 100644
--- a/e2sim/e2apv1sim/ASN1c/Makefile.am.libasncodec
+++ b/e2sim/e2apv1sim/ASN1c/Makefile.am.libasncodec
@@ -18,6 +18,7 @@
PLMN-Identity.c \
NRCellIdentity.c \
SNSSAI.c \
+ C-RNTI.c \
RIC-Style-Type.c \
RIC-Style-Name.c \
RIC-Format-Type.c \
@@ -32,6 +33,7 @@
E2SM-KPM-RANfunction-Description.c \
NI-Type.c \
RAN-Container.c \
+ Timestamp.c \
Trigger-ConditionIE-Item.c \
RT-Period-IE.c \
RANcallProcess-ID-string.c \
@@ -39,9 +41,11 @@
RIC-EventTriggerStyle-List.c \
RIC-ReportStyle-List.c \
PF-Container.c \
+ GNB-Name.c \
GNB-CU-CP-Name.c \
GNB-DU-Name.c \
GNB-CU-UP-Name.c \
+ UE-Report-Type.c \
ODU-PF-Container.c \
CellResourceReportListItem.c \
ServedPlmnPerCellListItem.c \
@@ -50,7 +54,13 @@
FQIPERSlicesPerPlmnPerCellListItem.c \
EPC-DU-PM-Container.c \
PerQCIReportListItem.c \
+ DU-Usage-Report-Per-UE.c \
+ DU-Usage-Report-CellResourceReportItem.c \
+ DU-Usage-Report-UeResourceReportItem.c \
OCUCP-PF-Container.c \
+ CU-CP-Usage-Report-Per-UE.c \
+ CU-CP-Usage-Report-CellResourceReportItem.c \
+ CU-CP-Usage-Report-UeResourceReportItem.c \
OCUUP-PF-Container.c \
PF-ContainerListItem.c \
CUUPMeasurement-Container.c \
@@ -59,7 +69,10 @@
SliceToReportListItem.c \
FQIPERSlicesPerPlmnListItem.c \
EPC-CUUP-PM-Format.c \
- PerQCIReportListItemFormat.c
+ PerQCIReportListItemFormat.c \
+ CU-UP-Usage-Report-Per-UE.c \
+ CU-UP-Usage-Report-CellResourceReportItem.c \
+ CU-UP-Usage-Report-UeResourceReportItem.c
ASN_MODULE_HDRS= \
GlobalKPMnode-ID.h \
@@ -81,6 +94,7 @@
PLMN-Identity.h \
NRCellIdentity.h \
SNSSAI.h \
+ C-RNTI.h \
RIC-Style-Type.h \
RIC-Style-Name.h \
RIC-Format-Type.h \
@@ -95,6 +109,7 @@
E2SM-KPM-RANfunction-Description.h \
NI-Type.h \
RAN-Container.h \
+ Timestamp.h \
Trigger-ConditionIE-Item.h \
RT-Period-IE.h \
RANcallProcess-ID-string.h \
@@ -102,9 +117,11 @@
RIC-EventTriggerStyle-List.h \
RIC-ReportStyle-List.h \
PF-Container.h \
+ GNB-Name.h \
GNB-CU-CP-Name.h \
GNB-DU-Name.h \
GNB-CU-UP-Name.h \
+ UE-Report-Type.h \
ODU-PF-Container.h \
CellResourceReportListItem.h \
ServedPlmnPerCellListItem.h \
@@ -113,7 +130,13 @@
FQIPERSlicesPerPlmnPerCellListItem.h \
EPC-DU-PM-Container.h \
PerQCIReportListItem.h \
+ DU-Usage-Report-Per-UE.h \
+ DU-Usage-Report-CellResourceReportItem.h \
+ DU-Usage-Report-UeResourceReportItem.h \
OCUCP-PF-Container.h \
+ CU-CP-Usage-Report-Per-UE.h \
+ CU-CP-Usage-Report-CellResourceReportItem.h \
+ CU-CP-Usage-Report-UeResourceReportItem.h \
OCUUP-PF-Container.h \
PF-ContainerListItem.h \
CUUPMeasurement-Container.h \
@@ -122,7 +145,10 @@
SliceToReportListItem.h \
FQIPERSlicesPerPlmnListItem.h \
EPC-CUUP-PM-Format.h \
- PerQCIReportListItemFormat.h
+ PerQCIReportListItemFormat.h \
+ CU-UP-Usage-Report-Per-UE.h \
+ CU-UP-Usage-Report-CellResourceReportItem.h \
+ CU-UP-Usage-Report-UeResourceReportItem.h
ASN_MODULE_HDRS+=OPEN_TYPE.h
ASN_MODULE_SRCS+=OPEN_TYPE.c
diff --git a/e2sim/e2apv1sim/ASN1c/NI-Type.c b/e2sim/e2apv1sim/ASN1c/NI-Type.c
index 27955c8..1162fd8 100644
--- a/e2sim/e2apv1sim/ASN1c/NI-Type.c
+++ b/e2sim/e2apv1sim/ASN1c/NI-Type.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/NI-Type.h b/e2sim/e2apv1sim/ASN1c/NI-Type.h
index 79d25b9..c696a44 100644
--- a/e2sim/e2apv1sim/ASN1c/NI-Type.h
+++ b/e2sim/e2apv1sim/ASN1c/NI-Type.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/NRCGI.c b/e2sim/e2apv1sim/ASN1c/NRCGI.c
index 2febe27..94d8d4b 100644
--- a/e2sim/e2apv1sim/ASN1c/NRCGI.c
+++ b/e2sim/e2apv1sim/ASN1c/NRCGI.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/NRCGI.h b/e2sim/e2apv1sim/ASN1c/NRCGI.h
index a53d46d..b4938d0 100644
--- a/e2sim/e2apv1sim/ASN1c/NRCGI.h
+++ b/e2sim/e2apv1sim/ASN1c/NRCGI.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/NRCellIdentity.c b/e2sim/e2apv1sim/ASN1c/NRCellIdentity.c
index db73410..8e0310e 100644
--- a/e2sim/e2apv1sim/ASN1c/NRCellIdentity.c
+++ b/e2sim/e2apv1sim/ASN1c/NRCellIdentity.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/NRCellIdentity.h b/e2sim/e2apv1sim/ASN1c/NRCellIdentity.h
index b2c5f5b..701f381 100644
--- a/e2sim/e2apv1sim/ASN1c/NRCellIdentity.h
+++ b/e2sim/e2apv1sim/ASN1c/NRCellIdentity.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/OCUCP-PF-Container.c b/e2sim/e2apv1sim/ASN1c/OCUCP-PF-Container.c
index 446f231..121932b 100644
--- a/e2sim/e2apv1sim/ASN1c/OCUCP-PF-Container.c
+++ b/e2sim/e2apv1sim/ASN1c/OCUCP-PF-Container.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/OCUCP-PF-Container.h b/e2sim/e2apv1sim/ASN1c/OCUCP-PF-Container.h
index 5f7586e..aee0f21 100644
--- a/e2sim/e2apv1sim/ASN1c/OCUCP-PF-Container.h
+++ b/e2sim/e2apv1sim/ASN1c/OCUCP-PF-Container.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/OCUUP-PF-Container.c b/e2sim/e2apv1sim/ASN1c/OCUUP-PF-Container.c
index b64b227..e1f754e 100644
--- a/e2sim/e2apv1sim/ASN1c/OCUUP-PF-Container.c
+++ b/e2sim/e2apv1sim/ASN1c/OCUUP-PF-Container.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/OCUUP-PF-Container.h b/e2sim/e2apv1sim/ASN1c/OCUUP-PF-Container.h
index 549fb98..9f19985 100644
--- a/e2sim/e2apv1sim/ASN1c/OCUUP-PF-Container.h
+++ b/e2sim/e2apv1sim/ASN1c/OCUUP-PF-Container.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ODU-PF-Container.c b/e2sim/e2apv1sim/ASN1c/ODU-PF-Container.c
index 290e478..a28d59a 100644
--- a/e2sim/e2apv1sim/ASN1c/ODU-PF-Container.c
+++ b/e2sim/e2apv1sim/ASN1c/ODU-PF-Container.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ODU-PF-Container.h b/e2sim/e2apv1sim/ASN1c/ODU-PF-Container.h
index 8819e58..4da50a3 100644
--- a/e2sim/e2apv1sim/ASN1c/ODU-PF-Container.h
+++ b/e2sim/e2apv1sim/ASN1c/ODU-PF-Container.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PF-Container.c b/e2sim/e2apv1sim/ASN1c/PF-Container.c
index 4eb6dbc..ce46255 100644
--- a/e2sim/e2apv1sim/ASN1c/PF-Container.c
+++ b/e2sim/e2apv1sim/ASN1c/PF-Container.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -11,7 +11,7 @@
{ 0, 0 },
-1};
asn_per_constraints_t asn_PER_type_PF_Container_constr_1 CC_NOTUSED = {
- { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */,
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
@@ -57,7 +57,7 @@
asn_MAP_PF_Container_tag2el_1,
3, /* Count of tags in the map */
0, 0,
- -1 /* Extensions start */
+ 3 /* Extensions start */
};
asn_TYPE_descriptor_t asn_DEF_PF_Container = {
"PF-Container",
diff --git a/e2sim/e2apv1sim/ASN1c/PF-Container.h b/e2sim/e2apv1sim/ASN1c/PF-Container.h
index 076e29f..853642a 100644
--- a/e2sim/e2apv1sim/ASN1c/PF-Container.h
+++ b/e2sim/e2apv1sim/ASN1c/PF-Container.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -27,6 +27,8 @@
PF_Container_PR_oDU,
PF_Container_PR_oCU_CP,
PF_Container_PR_oCU_UP
+ /* Extensions may appear below */
+
} PF_Container_PR;
/* PF-Container */
@@ -36,6 +38,10 @@
ODU_PF_Container_t oDU;
OCUCP_PF_Container_t oCU_CP;
OCUUP_PF_Container_t oCU_UP;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
} choice;
/* Context for parsing across buffer boundaries */
diff --git a/e2sim/e2apv1sim/ASN1c/PF-ContainerListItem.c b/e2sim/e2apv1sim/ASN1c/PF-ContainerListItem.c
index 98a4dbd..e3aad2c 100644
--- a/e2sim/e2apv1sim/ASN1c/PF-ContainerListItem.c
+++ b/e2sim/e2apv1sim/ASN1c/PF-ContainerListItem.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PF-ContainerListItem.h b/e2sim/e2apv1sim/ASN1c/PF-ContainerListItem.h
index 3c33c36..bc4495e 100644
--- a/e2sim/e2apv1sim/ASN1c/PF-ContainerListItem.h
+++ b/e2sim/e2apv1sim/ASN1c/PF-ContainerListItem.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PLMN-Identity.c b/e2sim/e2apv1sim/ASN1c/PLMN-Identity.c
index 503b912..e3754f8 100644
--- a/e2sim/e2apv1sim/ASN1c/PLMN-Identity.c
+++ b/e2sim/e2apv1sim/ASN1c/PLMN-Identity.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PLMN-Identity.h b/e2sim/e2apv1sim/ASN1c/PLMN-Identity.h
index daed11a..6835400 100644
--- a/e2sim/e2apv1sim/ASN1c/PLMN-Identity.h
+++ b/e2sim/e2apv1sim/ASN1c/PLMN-Identity.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PM-Containers-List.c b/e2sim/e2apv1sim/ASN1c/PM-Containers-List.c
index 13c6352..326ec75 100644
--- a/e2sim/e2apv1sim/ASN1c/PM-Containers-List.c
+++ b/e2sim/e2apv1sim/ASN1c/PM-Containers-List.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PM-Containers-List.h b/e2sim/e2apv1sim/ASN1c/PM-Containers-List.h
index 2f5be5c..0a99c3b 100644
--- a/e2sim/e2apv1sim/ASN1c/PM-Containers-List.h
+++ b/e2sim/e2apv1sim/ASN1c/PM-Containers-List.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -12,7 +12,6 @@
#include <asn_application.h>
/* Including external dependencies */
-#include "RAN-Container.h"
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
@@ -21,11 +20,12 @@
/* Forward declarations */
struct PF_Container;
+struct RAN_Container;
/* PM-Containers-List */
typedef struct PM_Containers_List {
struct PF_Container *performanceContainer; /* OPTIONAL */
- RAN_Container_t *theRANContainer; /* OPTIONAL */
+ struct RAN_Container *theRANContainer; /* OPTIONAL */
/*
* This type is extensible,
* possible extensions are below.
@@ -46,6 +46,7 @@
/* Referred external types */
#include "PF-Container.h"
+#include "RAN-Container.h"
#endif /* _PM_Containers_List_H_ */
#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/PerQCIReportListItem.c b/e2sim/e2apv1sim/ASN1c/PerQCIReportListItem.c
index f92ed0b..1c57dfd 100644
--- a/e2sim/e2apv1sim/ASN1c/PerQCIReportListItem.c
+++ b/e2sim/e2apv1sim/ASN1c/PerQCIReportListItem.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PerQCIReportListItem.h b/e2sim/e2apv1sim/ASN1c/PerQCIReportListItem.h
index dd07574..32508ea 100644
--- a/e2sim/e2apv1sim/ASN1c/PerQCIReportListItem.h
+++ b/e2sim/e2apv1sim/ASN1c/PerQCIReportListItem.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PerQCIReportListItemFormat.c b/e2sim/e2apv1sim/ASN1c/PerQCIReportListItemFormat.c
index 20be1e2..239cbd8 100644
--- a/e2sim/e2apv1sim/ASN1c/PerQCIReportListItemFormat.c
+++ b/e2sim/e2apv1sim/ASN1c/PerQCIReportListItemFormat.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PerQCIReportListItemFormat.h b/e2sim/e2apv1sim/ASN1c/PerQCIReportListItemFormat.h
index 30fa1b9..7fb1ecf 100644
--- a/e2sim/e2apv1sim/ASN1c/PerQCIReportListItemFormat.h
+++ b/e2sim/e2apv1sim/ASN1c/PerQCIReportListItemFormat.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PlmnID-List.c b/e2sim/e2apv1sim/ASN1c/PlmnID-List.c
index 78ddddf..2126cf5 100644
--- a/e2sim/e2apv1sim/ASN1c/PlmnID-List.c
+++ b/e2sim/e2apv1sim/ASN1c/PlmnID-List.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/PlmnID-List.h b/e2sim/e2apv1sim/ASN1c/PlmnID-List.h
index a30b2e4..79d1dd5 100644
--- a/e2sim/e2apv1sim/ASN1c/PlmnID-List.h
+++ b/e2sim/e2apv1sim/ASN1c/PlmnID-List.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RAN-Container.c b/e2sim/e2apv1sim/ASN1c/RAN-Container.c
index df842e1..373508b 100644
--- a/e2sim/e2apv1sim/ASN1c/RAN-Container.c
+++ b/e2sim/e2apv1sim/ASN1c/RAN-Container.c
@@ -1,31 +1,127 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
#include "RAN-Container.h"
-/*
- * This type is implemented using OCTET_STRING,
- * so here we adjust the DEF accordingly.
- */
+static asn_oer_constraints_t asn_OER_type_reportContainer_constr_3 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+static asn_per_constraints_t asn_PER_type_reportContainer_constr_3 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_reportContainer_3[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oDU_UE),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_DU_Usage_Report_Per_UE,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "oDU-UE"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oCU_CP_UE),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CU_CP_Usage_Report_Per_UE,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "oCU-CP-UE"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RAN_Container__reportContainer, choice.oCU_UP_UE),
+ (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_CU_UP_Usage_Report_Per_UE,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "oCU-UP-UE"
+ },
+};
+static const asn_TYPE_tag2member_t asn_MAP_reportContainer_tag2el_3[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oDU-UE */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oCU-CP-UE */
+ { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* oCU-UP-UE */
+};
+static asn_CHOICE_specifics_t asn_SPC_reportContainer_specs_3 = {
+ sizeof(struct RAN_Container__reportContainer),
+ offsetof(struct RAN_Container__reportContainer, _asn_ctx),
+ offsetof(struct RAN_Container__reportContainer, present),
+ sizeof(((struct RAN_Container__reportContainer *)0)->present),
+ asn_MAP_reportContainer_tag2el_3,
+ 3, /* Count of tags in the map */
+ 0, 0,
+ 3 /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportContainer_3 = {
+ "reportContainer",
+ "reportContainer",
+ &asn_OP_CHOICE,
+ 0, /* No effective tags (pointer) */
+ 0, /* No effective tags (count) */
+ 0, /* No tags (pointer) */
+ 0, /* No tags (count) */
+ { &asn_OER_type_reportContainer_constr_3, &asn_PER_type_reportContainer_constr_3, CHOICE_constraint },
+ asn_MBR_reportContainer_3,
+ 3, /* Elements count */
+ &asn_SPC_reportContainer_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RAN_Container_1[] = {
+ { ATF_NOFLAGS, 0, offsetof(struct RAN_Container, timestamp),
+ (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+ -1, /* IMPLICIT tag at current level */
+ &asn_DEF_Timestamp,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "timestamp"
+ },
+ { ATF_NOFLAGS, 0, offsetof(struct RAN_Container, reportContainer),
+ (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+ +1, /* EXPLICIT tag at current level */
+ &asn_DEF_reportContainer_3,
+ 0,
+ { 0, 0, 0 },
+ 0, 0, /* No default value */
+ "reportContainer"
+ },
+};
static const ber_tlv_tag_t asn_DEF_RAN_Container_tags_1[] = {
- (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RAN_Container_tag2el_1[] = {
+ { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timestamp */
+ { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reportContainer */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RAN_Container_specs_1 = {
+ sizeof(struct RAN_Container),
+ offsetof(struct RAN_Container, _asn_ctx),
+ asn_MAP_RAN_Container_tag2el_1,
+ 2, /* Count of tags in the map */
+ 0, 0, 0, /* Optional elements (not needed) */
+ 2, /* First extension addition */
};
asn_TYPE_descriptor_t asn_DEF_RAN_Container = {
"RAN-Container",
"RAN-Container",
- &asn_OP_OCTET_STRING,
+ &asn_OP_SEQUENCE,
asn_DEF_RAN_Container_tags_1,
sizeof(asn_DEF_RAN_Container_tags_1)
/sizeof(asn_DEF_RAN_Container_tags_1[0]), /* 1 */
asn_DEF_RAN_Container_tags_1, /* Same as above */
sizeof(asn_DEF_RAN_Container_tags_1)
/sizeof(asn_DEF_RAN_Container_tags_1[0]), /* 1 */
- { 0, 0, OCTET_STRING_constraint },
- 0, 0, /* No members */
- &asn_SPC_OCTET_STRING_specs /* Additional specs */
+ { 0, 0, SEQUENCE_constraint },
+ asn_MBR_RAN_Container_1,
+ 2, /* Elements count */
+ &asn_SPC_RAN_Container_specs_1 /* Additional specs */
};
diff --git a/e2sim/e2apv1sim/ASN1c/RAN-Container.h b/e2sim/e2apv1sim/ASN1c/RAN-Container.h
index f2b97a5..8184460 100644
--- a/e2sim/e2apv1sim/ASN1c/RAN-Container.h
+++ b/e2sim/e2apv1sim/ASN1c/RAN-Container.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
@@ -12,30 +12,58 @@
#include <asn_application.h>
/* Including external dependencies */
-#include <OCTET_STRING.h>
+#include "Timestamp.h"
+#include "DU-Usage-Report-Per-UE.h"
+#include "CU-CP-Usage-Report-Per-UE.h"
+#include "CU-UP-Usage-Report-Per-UE.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
+/* Dependencies */
+typedef enum RAN_Container__reportContainer_PR {
+ RAN_Container__reportContainer_PR_NOTHING, /* No components present */
+ RAN_Container__reportContainer_PR_oDU_UE,
+ RAN_Container__reportContainer_PR_oCU_CP_UE,
+ RAN_Container__reportContainer_PR_oCU_UP_UE
+ /* Extensions may appear below */
+
+} RAN_Container__reportContainer_PR;
+
/* RAN-Container */
-typedef OCTET_STRING_t RAN_Container_t;
+typedef struct RAN_Container {
+ Timestamp_t timestamp;
+ struct RAN_Container__reportContainer {
+ RAN_Container__reportContainer_PR present;
+ union RAN_Container__reportContainer_u {
+ DU_Usage_Report_Per_UE_t oDU_UE;
+ CU_CP_Usage_Report_Per_UE_t oCU_CP_UE;
+ CU_UP_Usage_Report_Per_UE_t oCU_UP_UE;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+ } choice;
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+ } reportContainer;
+ /*
+ * This type is extensible,
+ * possible extensions are below.
+ */
+
+ /* Context for parsing across buffer boundaries */
+ asn_struct_ctx_t _asn_ctx;
+} RAN_Container_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RAN_Container;
-asn_struct_free_f RAN_Container_free;
-asn_struct_print_f RAN_Container_print;
-asn_constr_check_f RAN_Container_constraint;
-ber_type_decoder_f RAN_Container_decode_ber;
-der_type_encoder_f RAN_Container_encode_der;
-xer_type_decoder_f RAN_Container_decode_xer;
-xer_type_encoder_f RAN_Container_encode_xer;
-oer_type_decoder_f RAN_Container_decode_oer;
-oer_type_encoder_f RAN_Container_encode_oer;
-per_type_decoder_f RAN_Container_decode_uper;
-per_type_encoder_f RAN_Container_encode_uper;
-per_type_decoder_f RAN_Container_decode_aper;
-per_type_encoder_f RAN_Container_encode_aper;
+extern asn_SEQUENCE_specifics_t asn_SPC_RAN_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_RAN_Container_1[2];
#ifdef __cplusplus
}
diff --git a/e2sim/e2apv1sim/ASN1c/RANcallProcess-ID-string.c b/e2sim/e2apv1sim/ASN1c/RANcallProcess-ID-string.c
index 7d68640..4cd1b70 100644
--- a/e2sim/e2apv1sim/ASN1c/RANcallProcess-ID-string.c
+++ b/e2sim/e2apv1sim/ASN1c/RANcallProcess-ID-string.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RANcallProcess-ID-string.h b/e2sim/e2apv1sim/ASN1c/RANcallProcess-ID-string.h
index 004bdbf..087cdc0 100644
--- a/e2sim/e2apv1sim/ASN1c/RANcallProcess-ID-string.h
+++ b/e2sim/e2apv1sim/ASN1c/RANcallProcess-ID-string.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RANfunction-Name.c b/e2sim/e2apv1sim/ASN1c/RANfunction-Name.c
index 5fc3d93..72a90a9 100644
--- a/e2sim/e2apv1sim/ASN1c/RANfunction-Name.c
+++ b/e2sim/e2apv1sim/ASN1c/RANfunction-Name.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RANfunction-Name.h b/e2sim/e2apv1sim/ASN1c/RANfunction-Name.h
index 43b83c5..0fe182b 100644
--- a/e2sim/e2apv1sim/ASN1c/RANfunction-Name.h
+++ b/e2sim/e2apv1sim/ASN1c/RANfunction-Name.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-EventTriggerStyle-List.c b/e2sim/e2apv1sim/ASN1c/RIC-EventTriggerStyle-List.c
index 71b539d..246322a 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-EventTriggerStyle-List.c
+++ b/e2sim/e2apv1sim/ASN1c/RIC-EventTriggerStyle-List.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-EventTriggerStyle-List.h b/e2sim/e2apv1sim/ASN1c/RIC-EventTriggerStyle-List.h
index 3f41aae..18a6a8a 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-EventTriggerStyle-List.h
+++ b/e2sim/e2apv1sim/ASN1c/RIC-EventTriggerStyle-List.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-Format-Type.c b/e2sim/e2apv1sim/ASN1c/RIC-Format-Type.c
index 379ec0c..53f0624 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-Format-Type.c
+++ b/e2sim/e2apv1sim/ASN1c/RIC-Format-Type.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-Format-Type.h b/e2sim/e2apv1sim/ASN1c/RIC-Format-Type.h
index c7aa093..81cec85 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-Format-Type.h
+++ b/e2sim/e2apv1sim/ASN1c/RIC-Format-Type.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-ReportStyle-List.c b/e2sim/e2apv1sim/ASN1c/RIC-ReportStyle-List.c
index 90aac3d..93d4a15 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-ReportStyle-List.c
+++ b/e2sim/e2apv1sim/ASN1c/RIC-ReportStyle-List.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-ReportStyle-List.h b/e2sim/e2apv1sim/ASN1c/RIC-ReportStyle-List.h
index 0582a68..af886aa 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-ReportStyle-List.h
+++ b/e2sim/e2apv1sim/ASN1c/RIC-ReportStyle-List.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-Style-Name.c b/e2sim/e2apv1sim/ASN1c/RIC-Style-Name.c
index 98830e5..2c4a054 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-Style-Name.c
+++ b/e2sim/e2apv1sim/ASN1c/RIC-Style-Name.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-Style-Name.h b/e2sim/e2apv1sim/ASN1c/RIC-Style-Name.h
index 06bcfbe..bb02b2c 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-Style-Name.h
+++ b/e2sim/e2apv1sim/ASN1c/RIC-Style-Name.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-Style-Type.c b/e2sim/e2apv1sim/ASN1c/RIC-Style-Type.c
index ba86785..5324c4a 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-Style-Type.c
+++ b/e2sim/e2apv1sim/ASN1c/RIC-Style-Type.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RIC-Style-Type.h b/e2sim/e2apv1sim/ASN1c/RIC-Style-Type.h
index a310841..9948bb0 100644
--- a/e2sim/e2apv1sim/ASN1c/RIC-Style-Type.h
+++ b/e2sim/e2apv1sim/ASN1c/RIC-Style-Type.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RT-Period-IE.c b/e2sim/e2apv1sim/ASN1c/RT-Period-IE.c
index e9fc944..5f99297 100644
--- a/e2sim/e2apv1sim/ASN1c/RT-Period-IE.c
+++ b/e2sim/e2apv1sim/ASN1c/RT-Period-IE.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/RT-Period-IE.h b/e2sim/e2apv1sim/ASN1c/RT-Period-IE.h
index 7f614fc..30d2843 100644
--- a/e2sim/e2apv1sim/ASN1c/RT-Period-IE.h
+++ b/e2sim/e2apv1sim/ASN1c/RT-Period-IE.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/SNSSAI.c b/e2sim/e2apv1sim/ASN1c/SNSSAI.c
index 25b9a37..39afcad 100644
--- a/e2sim/e2apv1sim/ASN1c/SNSSAI.c
+++ b/e2sim/e2apv1sim/ASN1c/SNSSAI.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/SNSSAI.h b/e2sim/e2apv1sim/ASN1c/SNSSAI.h
index ad5d11f..b854e6f 100644
--- a/e2sim/e2apv1sim/ASN1c/SNSSAI.h
+++ b/e2sim/e2apv1sim/ASN1c/SNSSAI.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ServedPlmnPerCellListItem.c b/e2sim/e2apv1sim/ASN1c/ServedPlmnPerCellListItem.c
index 9364c6a..52fbaf5 100644
--- a/e2sim/e2apv1sim/ASN1c/ServedPlmnPerCellListItem.c
+++ b/e2sim/e2apv1sim/ASN1c/ServedPlmnPerCellListItem.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/ServedPlmnPerCellListItem.h b/e2sim/e2apv1sim/ASN1c/ServedPlmnPerCellListItem.h
index 191dba7..be5ecd6 100644
--- a/e2sim/e2apv1sim/ASN1c/ServedPlmnPerCellListItem.h
+++ b/e2sim/e2apv1sim/ASN1c/ServedPlmnPerCellListItem.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/SlicePerPlmnPerCellListItem.c b/e2sim/e2apv1sim/ASN1c/SlicePerPlmnPerCellListItem.c
index 8a8d9ed..a463803 100644
--- a/e2sim/e2apv1sim/ASN1c/SlicePerPlmnPerCellListItem.c
+++ b/e2sim/e2apv1sim/ASN1c/SlicePerPlmnPerCellListItem.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/SlicePerPlmnPerCellListItem.h b/e2sim/e2apv1sim/ASN1c/SlicePerPlmnPerCellListItem.h
index dd21f50..1d704d5 100644
--- a/e2sim/e2apv1sim/ASN1c/SlicePerPlmnPerCellListItem.h
+++ b/e2sim/e2apv1sim/ASN1c/SlicePerPlmnPerCellListItem.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/SliceToReportListItem.c b/e2sim/e2apv1sim/ASN1c/SliceToReportListItem.c
index ac73513..ae32ba9 100644
--- a/e2sim/e2apv1sim/ASN1c/SliceToReportListItem.c
+++ b/e2sim/e2apv1sim/ASN1c/SliceToReportListItem.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/SliceToReportListItem.h b/e2sim/e2apv1sim/ASN1c/SliceToReportListItem.h
index 9cc6f48..c25b20a 100644
--- a/e2sim/e2apv1sim/ASN1c/SliceToReportListItem.h
+++ b/e2sim/e2apv1sim/ASN1c/SliceToReportListItem.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/Timestamp.c b/e2sim/e2apv1sim/ASN1c/Timestamp.c
new file mode 100644
index 0000000..4087751
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/Timestamp.c
@@ -0,0 +1,31 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "Timestamp.h"
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_Timestamp_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Timestamp = {
+ "Timestamp",
+ "Timestamp",
+ &asn_OP_OCTET_STRING,
+ asn_DEF_Timestamp_tags_1,
+ sizeof(asn_DEF_Timestamp_tags_1)
+ /sizeof(asn_DEF_Timestamp_tags_1[0]), /* 1 */
+ asn_DEF_Timestamp_tags_1, /* Same as above */
+ sizeof(asn_DEF_Timestamp_tags_1)
+ /sizeof(asn_DEF_Timestamp_tags_1[0]), /* 1 */
+ { 0, 0, OCTET_STRING_constraint },
+ 0, 0, /* No members */
+ &asn_SPC_OCTET_STRING_specs /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/Timestamp.h b/e2sim/e2apv1sim/ASN1c/Timestamp.h
new file mode 100644
index 0000000..f77ac4a
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/Timestamp.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _Timestamp_H_
+#define _Timestamp_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Timestamp */
+typedef OCTET_STRING_t Timestamp_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Timestamp;
+asn_struct_free_f Timestamp_free;
+asn_struct_print_f Timestamp_print;
+asn_constr_check_f Timestamp_constraint;
+ber_type_decoder_f Timestamp_decode_ber;
+der_type_encoder_f Timestamp_encode_der;
+xer_type_decoder_f Timestamp_decode_xer;
+xer_type_encoder_f Timestamp_encode_xer;
+oer_type_decoder_f Timestamp_decode_oer;
+oer_type_encoder_f Timestamp_encode_oer;
+per_type_decoder_f Timestamp_decode_uper;
+per_type_encoder_f Timestamp_encode_uper;
+per_type_decoder_f Timestamp_decode_aper;
+per_type_encoder_f Timestamp_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Timestamp_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/Trigger-ConditionIE-Item.c b/e2sim/e2apv1sim/ASN1c/Trigger-ConditionIE-Item.c
index 2bf2421..069fd1d 100644
--- a/e2sim/e2apv1sim/ASN1c/Trigger-ConditionIE-Item.c
+++ b/e2sim/e2apv1sim/ASN1c/Trigger-ConditionIE-Item.c
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/Trigger-ConditionIE-Item.h b/e2sim/e2apv1sim/ASN1c/Trigger-ConditionIE-Item.h
index 15ef033..173b46a 100644
--- a/e2sim/e2apv1sim/ASN1c/Trigger-ConditionIE-Item.h
+++ b/e2sim/e2apv1sim/ASN1c/Trigger-ConditionIE-Item.h
@@ -1,7 +1,7 @@
/*
* Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
* From ASN.1 module "E2SM-KPM-IEs"
- * found in "/home/rshacham/e2sm_kpm_approved.asn"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
* `asn1c -fcompound-names`
*/
diff --git a/e2sim/e2apv1sim/ASN1c/UE-Report-Type.c b/e2sim/e2apv1sim/ASN1c/UE-Report-Type.c
new file mode 100644
index 0000000..1966c27
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/UE-Report-Type.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#include "UE-Report-Type.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_UE_Report_Type_constr_1 CC_NOTUSED = {
+ { 0, 0 },
+ -1};
+asn_per_constraints_t asn_PER_type_UE_Report_Type_constr_1 CC_NOTUSED = {
+ { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */,
+ { APC_UNCONSTRAINED, -1, -1, 0, 0 },
+ 0, 0 /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_UE_Report_Type_value2enum_1[] = {
+ { 0, 17, "oDU-Report-Per-UE" },
+ { 1, 20, "oCU-CP-Report-Per-UE" },
+ { 2, 20, "oCU-UP-Report-Per-UE" }
+ /* This list is extensible */
+};
+static const unsigned int asn_MAP_UE_Report_Type_enum2value_1[] = {
+ 1, /* oCU-CP-Report-Per-UE(1) */
+ 2, /* oCU-UP-Report-Per-UE(2) */
+ 0 /* oDU-Report-Per-UE(0) */
+ /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_UE_Report_Type_specs_1 = {
+ asn_MAP_UE_Report_Type_value2enum_1, /* "tag" => N; sorted by tag */
+ asn_MAP_UE_Report_Type_enum2value_1, /* N => "tag"; sorted by N */
+ 3, /* Number of elements in the maps */
+ 4, /* Extensions before this member */
+ 1, /* Strict enumeration */
+ 0, /* Native long size */
+ 0
+};
+static const ber_tlv_tag_t asn_DEF_UE_Report_Type_tags_1[] = {
+ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_UE_Report_Type = {
+ "UE-Report-Type",
+ "UE-Report-Type",
+ &asn_OP_NativeEnumerated,
+ asn_DEF_UE_Report_Type_tags_1,
+ sizeof(asn_DEF_UE_Report_Type_tags_1)
+ /sizeof(asn_DEF_UE_Report_Type_tags_1[0]), /* 1 */
+ asn_DEF_UE_Report_Type_tags_1, /* Same as above */
+ sizeof(asn_DEF_UE_Report_Type_tags_1)
+ /sizeof(asn_DEF_UE_Report_Type_tags_1[0]), /* 1 */
+ { &asn_OER_type_UE_Report_Type_constr_1, &asn_PER_type_UE_Report_Type_constr_1, NativeEnumerated_constraint },
+ 0, 0, /* Defined elsewhere */
+ &asn_SPC_UE_Report_Type_specs_1 /* Additional specs */
+};
+
diff --git a/e2sim/e2apv1sim/ASN1c/UE-Report-Type.h b/e2sim/e2apv1sim/ASN1c/UE-Report-Type.h
new file mode 100644
index 0000000..02e7cb5
--- /dev/null
+++ b/e2sim/e2apv1sim/ASN1c/UE-Report-Type.h
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ * found in "/home/rshacham/e2sm-kpm-v01.02.asn"
+ * `asn1c -fcompound-names`
+ */
+
+#ifndef _UE_Report_Type_H_
+#define _UE_Report_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UE_Report_Type {
+ UE_Report_Type_oDU_Report_Per_UE = 0,
+ UE_Report_Type_oCU_CP_Report_Per_UE = 1,
+ UE_Report_Type_oCU_UP_Report_Per_UE = 2
+ /*
+ * Enumeration is extensible
+ */
+} e_UE_Report_Type;
+
+/* UE-Report-Type */
+typedef long UE_Report_Type_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_UE_Report_Type_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_UE_Report_Type;
+extern const asn_INTEGER_specifics_t asn_SPC_UE_Report_Type_specs_1;
+asn_struct_free_f UE_Report_Type_free;
+asn_struct_print_f UE_Report_Type_print;
+asn_constr_check_f UE_Report_Type_constraint;
+ber_type_decoder_f UE_Report_Type_decode_ber;
+der_type_encoder_f UE_Report_Type_encode_der;
+xer_type_decoder_f UE_Report_Type_decode_xer;
+xer_type_encoder_f UE_Report_Type_encode_xer;
+oer_type_decoder_f UE_Report_Type_decode_oer;
+oer_type_encoder_f UE_Report_Type_encode_oer;
+per_type_decoder_f UE_Report_Type_decode_uper;
+per_type_encoder_f UE_Report_Type_encode_uper;
+per_type_decoder_f UE_Report_Type_decode_aper;
+per_type_encoder_f UE_Report_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_Report_Type_H_ */
+#include <asn_internal.h>
diff --git a/e2sim/e2apv1sim/ASN1c/asn_constant.h b/e2sim/e2apv1sim/ASN1c/asn_constant.h
index cc80b45..af5a0fd 100644
--- a/e2sim/e2apv1sim/ASN1c/asn_constant.h
+++ b/e2sim/e2apv1sim/ASN1c/asn_constant.h
@@ -18,6 +18,9 @@
#define maxCellingNBDU (512)
#define maxofContainers (8)
#define maxPLMN (12)
+#define maxofRANparamters (65536)
+#define maxUeReport (32)
+#define maxCellingNB (16384)
#ifdef __cplusplus
diff --git a/e2sim/e2apv1sim/ASN1c/converter-example.mk b/e2sim/e2apv1sim/ASN1c/converter-example.mk
index aac9161..0109476 100644
--- a/e2sim/e2apv1sim/ASN1c/converter-example.mk
+++ b/e2sim/e2apv1sim/ASN1c/converter-example.mk
@@ -29,5 +29,5 @@
regen: regenerate-from-asn1-source
regenerate-from-asn1-source:
- asn1c -fcompound-names /home/rshacham/e2sm_kpm_approved.asn
+ asn1c -fcompound-names /home/rshacham/e2sm-kpm-v01.02.asn
diff --git a/e2sim/e2apv1sim/ASN1c/pdu_collection.c b/e2sim/e2apv1sim/ASN1c/pdu_collection.c
index 1cc98ca..0d559a4 100644
--- a/e2sim/e2apv1sim/ASN1c/pdu_collection.c
+++ b/e2sim/e2apv1sim/ASN1c/pdu_collection.c
@@ -10,18 +10,16 @@
extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_IndicationMessage;
extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_RANfunction_Description;
extern struct asn_TYPE_descriptor_s asn_DEF_RANcallProcess_ID_string;
-extern struct asn_TYPE_descriptor_s asn_DEF_GNB_DU_Name;
struct asn_TYPE_descriptor_s *asn_pdu_collection[] = {
- /* From module E2SM-KPM-IEs in /home/rshacham/e2sm_kpm_approved.asn */
+ /* From module E2SM-KPM-IEs in /home/rshacham/e2sm-kpm-v01.02.asn */
&asn_DEF_E2SM_KPM_EventTriggerDefinition,
&asn_DEF_E2SM_KPM_ActionDefinition,
&asn_DEF_E2SM_KPM_IndicationHeader,
&asn_DEF_E2SM_KPM_IndicationMessage,
&asn_DEF_E2SM_KPM_RANfunction_Description,
&asn_DEF_RANcallProcess_ID_string,
- &asn_DEF_GNB_DU_Name,
0
};
diff --git a/e2sim/e2apv1sim/CMakeLists.txt b/e2sim/e2apv1sim/CMakeLists.txt
index 0e1db77..ab5778a 100644
--- a/e2sim/e2apv1sim/CMakeLists.txt
+++ b/e2sim/e2apv1sim/CMakeLists.txt
@@ -37,14 +37,18 @@
include_directories("${E2SIM_ROOT}/ASN1c")
+#set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
+set(THREADS_PREFER_PTHREAD_FLAG ON)
-find_library( SCTP_STD_LIB sctp ) #needed for sctp_sendmsg
+find_library( SCTP_STD_LIB sctp ) #needed for sctp_sendmsgf
+find_package( Threads REQUIRED )
#----------------------------------------------
file(GLOB E2SIM_SOURCES
"${E2SIM_ROOT}/e2sim.cpp"
"${E2SIM_ROOT}/encode_kpm.cpp"
- "${E2SIM_ROOT}/encode_e2apv1.cpp"
+ "${E2SIM_ROOT}/kpm_callbacks.cpp"
+ "${E2SIM_ROOT}/encode_e2apv1.cpp"
"${E2SIM_ROOT}/src/DEF/*.cpp"
"${E2SIM_ROOT}/src/SCTP/*.cpp"
"${E2SIM_ROOT}/src/E2AP/*.c"
@@ -52,21 +56,24 @@
"${E2SIM_ROOT}/ASN1c/*.c"
)
+
add_executable(e2sim ${E2SIM_SOURCES})
target_link_libraries( e2sim ${SCTP_STD_LIB} )
+target_link_libraries( e2sim Threads::Threads )
#----------------------------------------------
file(GLOB RICSIM_SOURCES
"${E2SIM_ROOT}/ricsim.cpp"
- "${E2SIM_ROOT}/encode_kpm.cpp"
- "${E2SIM_ROOT}/encode_e2apv1.cpp"
- "${E2SIM_ROOT}/src/DEF/*.cpp"
- "${E2SIM_ROOT}/src/SCTP/*.cpp"
- "${E2SIM_ROOT}/src/E2AP/*.c"
- "${E2SIM_ROOT}/src/E2AP/*.cpp"
- "${E2SIM_ROOT}/ASN1c/*.c"
-
- )
+ "${E2SIM_ROOT}/encode_kpm.cpp"
+ "${E2SIM_ROOT}/encode_e2apv1.cpp"
+ "${E2SIM_ROOT}/kpm_callbacks.cpp"
+ "${E2SIM_ROOT}/src/DEF/*.cpp"
+ "${E2SIM_ROOT}/src/SCTP/*.cpp"
+ "${E2SIM_ROOT}/src/E2AP/*.c"
+ "${E2SIM_ROOT}/src/E2AP/*.cpp"
+ "${E2SIM_ROOT}/ASN1c/*.c"
+ )
add_executable(ricsim ${RICSIM_SOURCES})
-target_link_libraries( ricsim ${SCTP_STD_LIB} )
+target_link_libraries( ricsim ${SCTP_STD_LIB} )
+target_link_libraries( e2sim Threads::Threads )
diff --git a/e2sim/e2apv1sim/Dockerfile b/e2sim/e2apv1sim/Dockerfile
new file mode 100644
index 0000000..348fe48
--- /dev/null
+++ b/e2sim/e2apv1sim/Dockerfile
@@ -0,0 +1,55 @@
+#/*****************************************************************************
+# *
+# Copyright 2019 AT&T Intellectual Property *
+# Copyright 2019 Nokia *
+# *
+# Licensed under the Apache License, Version 2.0 (the "License"); *
+# you may not use this file except in compliance with the License. *
+# You may obtain a copy of the License at *
+# *
+# http://www.apache.org/licenses/LICENSE-2.0 *
+# *
+# Unless required by applicable law or agreed to in writing, software *
+# distributed under the License is distributed on an "AS IS" BASIS, *
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
+# See the License for the specific language governing permissions and *
+# limitations under the License. *
+# *
+#******************************************************************************/
+
+FROM ubuntu:16.04
+
+# location in the container
+ENV E2SIM_DIR /home/e2sim
+
+# Install necessary packages
+RUN apt-get update \
+ && apt-get install -y \
+ build-essential \
+ git \
+ cmake \
+ libsctp-dev \
+ lksctp-tools \
+ autoconf \
+ automake \
+ libtool \
+ bison \
+ flex \
+ libboost-all-dev \
+ iputils-ping \
+ net-tools \
+ nano \
+ vim \
+ tcpdump \
+ net-tools \
+ nmap \
+ && apt-get clean
+
+# Copy E2Sim sources into the container
+COPY ./ ${E2SIM_DIR}
+WORKDIR ${E2SIM_DIR}
+
+#------------- Build E2SIM -----------------------
+RUN ./build_e2sim --clean
+RUN ./build_e2sim
+CMD ./build/e2sim 10.107.70.168 36422
\ No newline at end of file
diff --git a/e2sim/e2apv1sim/e2sim.cpp b/e2sim/e2apv1sim/e2sim.cpp
index 6f768b0..72785b7 100644
--- a/e2sim/e2apv1sim/e2sim.cpp
+++ b/e2sim/e2apv1sim/e2sim.cpp
@@ -21,6 +21,7 @@
#include <unistd.h>
#include <string>
#include <iostream>
+#include <fstream>
#include "e2sim_defs.h"
@@ -30,7 +31,9 @@
using namespace std;
-void encode_and_send_sctp_data(E2AP_PDU_t* pdu, int client_fd)
+int client_fd = 0;
+
+void encode_and_send_sctp_data(E2AP_PDU_t* pdu)
{
uint8_t *buf;
sctp_buffer_t data;
@@ -41,7 +44,27 @@
sctp_send_data(client_fd, data);
}
-void wait_for_sctp_data(int client_fd)
+void encode_and_send_sctp_data(E2AP_PDU_t* pdu, int client_fd)
+{
+ uint8_t *buf;
+ sctp_buffer_t data;
+
+ printf("Calling encode_and_send_sctp_data\n");
+
+ printf("client_fd is %d\n", client_fd);
+
+ data.len = e2ap_asn1c_encode_pdu(pdu, &buf);
+
+ printf("after encoding pdu\n");
+
+ memcpy(data.buffer, buf, min(data.len, MAX_SCTP_BUFFER));
+
+ printf("calling sctp_send_data\n");
+
+ sctp_send_data(client_fd, data);
+}
+
+void wait_for_sctp_data()
{
sctp_buffer_t recv_buf;
if(sctp_receive_data(client_fd, recv_buf) > 0)
@@ -53,29 +76,73 @@
int main(int argc, char* argv[]){
- LOG_I("Start E2 Agent (E2 Simulator)");
- bool xmlenc = true;
+ printf("Start E2 Agent (E2 Simulator\n");
+
+ ifstream simfile;
+ string line;
+
+ simfile.open("simulation.txt", ios::in);
+
+ if (simfile.is_open()) {
+
+ while (getline(simfile, line)) {
+ cout << line << "\n";
+ }
+
+ simfile.close();
+
+ }
+
+
+ printf("encoding now the user level - DU\n");
+
+ E2SM_KPM_IndicationMessage_t *indMsg =
+ (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t));
+
+ //encode_kpm_report_rancontainer_du(indMsg);
+ encode_kpm_report_style1(indMsg);
+
+
+
+ bool xmlenc = false;
options_t ops = read_input_options(argc, argv);
+ printf("After reading input options\n");
+
//E2 Agent will automatically restart upon sctp disconnection
// int server_fd = sctp_start_server(ops.server_ip, ops.server_port);
- int client_fd = sctp_start_client(ops.server_ip, ops.server_port);
+
+ client_fd = sctp_start_client(ops.server_ip, ops.server_port);
E2AP_PDU_t* pdu_setup = (E2AP_PDU_t*)calloc(1,sizeof(E2AP_PDU));
+ printf("After starting client\n");
+ printf("client_fd value is %d\n", client_fd);
+
// generate_e2apv1_subscription_request(pdu_setup);
generate_e2apv1_setup_request(pdu_setup);
+ printf("After generating e2setup req\n");
+
xer_fprint(stderr, &asn_DEF_E2AP_PDU, pdu_setup);
+ printf("After XER Encoding\n");
+
auto buffer_size = MAX_SCTP_BUFFER;
unsigned char buffer[MAX_SCTP_BUFFER];
sctp_buffer_t data;
- // auto er = asn_encode_to_buffer(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, pdu_setup, buffer, buffer_size);
- auto er = asn_encode_to_buffer(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, pdu_setup, buffer, buffer_size);
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2AP_PDU, pdu_setup, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ auto er = asn_encode_to_buffer(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, pdu_setup, buffer, buffer_size);
+ //auto er = asn_encode_to_buffer(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, pdu_setup, buffer, buffer_size);
data.len = er.encoded;
fprintf(stderr, "er encded is %d\n", er.encoded);
diff --git a/e2sim/e2apv1sim/e2sim.hpp b/e2sim/e2apv1sim/e2sim.hpp
new file mode 100644
index 0000000..9af2552
--- /dev/null
+++ b/e2sim/e2apv1sim/e2sim.hpp
@@ -0,0 +1,5 @@
+#include "E2AP-PDU.h"
+
+void encode_and_send_sctp_data(E2AP_PDU_t* pdu);
+
+void encode_and_send_sctp_data(E2AP_PDU_t* pdu, int socket_fd);
diff --git a/e2sim/e2apv1sim/encode_e2apv1.cpp b/e2sim/e2apv1sim/encode_e2apv1.cpp
index b782e1f..59c59d6 100644
--- a/e2sim/e2apv1sim/encode_e2apv1.cpp
+++ b/e2sim/e2apv1sim/encode_e2apv1.cpp
@@ -2,15 +2,18 @@
#include <string.h>
#include <iostream>
#include <unistd.h>
+
+#include <iterator>
#include <vector>
#include "encode_e2apv1.hpp"
+#include "E2SM-KPM-RANfunction-Description.h"
void generate_e2apv1_setup_request(E2AP_PDU_t *e2ap_pdu) {
- // uint8_t *buf = (uint8_t *)"gnb1";
+ // uint8_t *buf = (uint8_t *)"gnb1"
BIT_STRING_t *gnb_bstring = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t));;
gnb_bstring->buf = (uint8_t*)calloc(1,4);
@@ -20,13 +23,13 @@
gnb_bstring->buf[2] = 0x77;
gnb_bstring->buf[3] = 0x88;
- gnb_bstring->bits_unused = 0;
+ gnb_bstring->bits_unused = 3;
- uint8_t *buf2 = (uint8_t *)"plmn3";
+ uint8_t *buf2 = (uint8_t *)"747";
OCTET_STRING_t *plmn = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
- plmn->buf = (uint8_t*)calloc(1,5);
- memcpy(plmn->buf, buf2, 5);;
- plmn->size = 5;
+ plmn->buf = (uint8_t*)calloc(1,3);
+ memcpy(plmn->buf, buf2, 3);
+ plmn->size = 3;
GNB_ID_Choice_t *gnbchoice = (GNB_ID_Choice_t*)calloc(1,sizeof(GNB_ID_Choice_t));
GNB_ID_Choice_PR pres2 = GNB_ID_Choice_PR_gnb_ID;
@@ -46,15 +49,15 @@
globale2nodeid->present = pres;
globale2nodeid->choice.gNB = e2gnb;
- E2setupRequestIEs_t *e2setuprid = (E2setupRequestIEs_t*)calloc(1, sizeof(E2setupRequestIEs_t));;
+ E2setupRequestIEs_t *e2setuprid = (E2setupRequestIEs_t*)calloc(1, sizeof(E2setupRequestIEs_t));
E2setupRequestIEs__value_PR pres3;
pres3 = E2setupRequestIEs__value_PR_GlobalE2node_ID;
- e2setuprid->id = 4;
+ e2setuprid->id = 3;
e2setuprid->criticality = 0;
e2setuprid->value.choice.GlobalE2node_ID = *globale2nodeid;
e2setuprid->value.present = pres3;
- /*
+
auto *ranFlistIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t));
ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, ranFlistIEs);
ranFlistIEs->criticality = 0;
@@ -67,16 +70,43 @@
itemIes->value.present = RANfunction_ItemIEs__value_PR_RANfunction_Item;
itemIes->value.choice.RANfunction_Item.ranFunctionID = 1;
- ASN_SEQUENCE_ADD(&ranFlistIEs->value.choice.RANfunctions_List.list, itemIes);
- */
+ E2SM_KPM_RANfunction_Description_t *ranfunc_desc =
+ (E2SM_KPM_RANfunction_Description_t*)calloc(1,sizeof(E2SM_KPM_RANfunction_Description_t));
+ encode_kpm_function_description(ranfunc_desc);
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ asn_codec_ctx_t *opt_cod;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_RANfunction_Description,
+ ranfunc_desc, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+ OCTET_STRING_t *ranfuncdesc_str = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ ranfuncdesc_str->buf = (uint8_t*)calloc(1,er.encoded);
+ ranfuncdesc_str->size = er.encoded;
+ memcpy(ranfuncdesc_str->buf, e2smbuffer, er.encoded);
+
+
+ itemIes->value.choice.RANfunction_Item.ranFunctionDefinition = *ranfuncdesc_str;
+ itemIes->value.choice.RANfunction_Item.ranFunctionRevision = (long)2;
+
+ ASN_SEQUENCE_ADD(&ranFlistIEs->value.choice.RANfunctions_List.list, itemIes);
+
E2setupRequest_t *e2setupreq = (E2setupRequest_t*)calloc(1, sizeof(E2setupRequest_t));
ASN_SEQUENCE_ADD(&e2setupreq->protocolIEs.list, e2setuprid);
- // ASN_SEQUENCE_ADD(&e2setupreq->protocolIEs.list, ranFlistIEs);
+ ASN_SEQUENCE_ADD(&e2setupreq->protocolIEs.list, ranFlistIEs);
InitiatingMessage__value_PR pres4;
pres4 = InitiatingMessage__value_PR_E2setupRequest;
InitiatingMessage_t *initmsg = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t));
- // initmsg->procedureCode = 1;
+
initmsg->procedureCode = ProcedureCode_id_E2setup;
initmsg->criticality = Criticality_reject;
initmsg->value.present = pres4;
@@ -272,6 +302,109 @@
}
+void generate_e2apv1_subscription_response_success(E2AP_PDU *e2ap_pdu, long reqActionIdsAccepted[],
+ long reqActionIdsRejected[], int accept_size, int reject_size,
+ long reqRequestorId, long reqInstanceId) {
+
+ RICsubscriptionResponse_IEs_t *respricreqid =
+ (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t));
+
+ respricreqid->id = ProtocolIE_ID_id_RICrequestID;
+ respricreqid->criticality = 0;
+ respricreqid->value.present = RICsubscriptionResponse_IEs__value_PR_RICrequestID;
+ respricreqid->value.choice.RICrequestID.ricRequestorID = reqRequestorId;
+
+ respricreqid->value.choice.RICrequestID.ricInstanceID = reqInstanceId;
+
+
+ RICsubscriptionResponse_IEs_t *ricactionadmitted =
+ (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t));
+ ricactionadmitted->id = ProtocolIE_ID_id_RICactions_Admitted;
+ ricactionadmitted->criticality = 0;
+ ricactionadmitted->value.present = RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List;
+
+ RICaction_Admitted_List_t* admlist =
+ (RICaction_Admitted_List_t*)calloc(1,sizeof(RICaction_Admitted_List_t));
+ ricactionadmitted->value.choice.RICaction_Admitted_List = *admlist;
+
+ // int numAccept = sizeof(reqActionIdsAccepted);
+ int numAccept = accept_size;
+ int numReject = reject_size;
+ // int numReject = sizeof(reqActionIdsRejected);
+
+
+ for (int i=0; i < numAccept ; i++) {
+ fprintf(stderr, "in for loop i = %d\n", i);
+
+ long aid = reqActionIdsAccepted[i];
+
+ RICaction_Admitted_ItemIEs_t *admitie = (RICaction_Admitted_ItemIEs_t*)calloc(1,sizeof(RICaction_Admitted_ItemIEs_t));
+ admitie->id = ProtocolIE_ID_id_RICaction_Admitted_Item;
+ admitie->criticality = 0;
+ admitie->value.present = RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item;
+ admitie->value.choice.RICaction_Admitted_Item.ricActionID = aid;
+
+ ASN_SEQUENCE_ADD(&ricactionadmitted->value.choice.RICaction_Admitted_List.list, admitie);
+
+ }
+
+ RICsubscriptionResponse_t *ricsubresp = (RICsubscriptionResponse_t*)calloc(1,sizeof(RICsubscriptionResponse_t));
+ ASN_SEQUENCE_ADD(&ricsubresp->protocolIEs.list, respricreqid);
+ ASN_SEQUENCE_ADD(&ricsubresp->protocolIEs.list, ricactionadmitted);
+
+
+ if (numReject > 0) {
+
+ RICsubscriptionResponse_IEs_t *ricactionrejected =
+ (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t));
+ ricactionrejected->id = ProtocolIE_ID_id_RICactions_NotAdmitted;
+ ricactionrejected->criticality = 0;
+ ricactionrejected->value.present = RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List;
+
+ RICaction_NotAdmitted_List_t* rejectlist =
+ (RICaction_NotAdmitted_List_t*)calloc(1,sizeof(RICaction_NotAdmitted_List_t));
+ ricactionadmitted->value.choice.RICaction_NotAdmitted_List = *rejectlist;
+
+ for (int i=0; i < numReject; i++) {
+ fprintf(stderr, "in for loop i = %d\n", i);
+
+ long aid = reqActionIdsRejected[i];
+
+ RICaction_NotAdmitted_ItemIEs_t *noadmitie = (RICaction_NotAdmitted_ItemIEs_t*)calloc(1,sizeof(RICaction_NotAdmitted_ItemIEs_t));
+ noadmitie->id = ProtocolIE_ID_id_RICaction_NotAdmitted_Item;
+ noadmitie->criticality = 0;
+ noadmitie->value.present = RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item;
+ noadmitie->value.choice.RICaction_NotAdmitted_Item.ricActionID = aid;
+
+ ASN_SEQUENCE_ADD(&ricactionrejected->value.choice.RICaction_NotAdmitted_List.list, noadmitie);
+ ASN_SEQUENCE_ADD(&ricsubresp->protocolIEs.list, ricactionrejected);
+ }
+ }
+
+
+ SuccessfulOutcome__value_PR pres2;
+ pres2 = SuccessfulOutcome__value_PR_RICsubscriptionResponse;
+ SuccessfulOutcome_t *successoutcome = (SuccessfulOutcome_t*)calloc(1, sizeof(SuccessfulOutcome_t));
+ successoutcome->procedureCode = ProcedureCode_id_RICsubscription;
+ successoutcome->criticality = 0;
+ successoutcome->value.present = pres2;
+ successoutcome->value.choice.RICsubscriptionResponse = *ricsubresp;
+
+ E2AP_PDU_PR pres5 = E2AP_PDU_PR_successfulOutcome;
+
+ e2ap_pdu->present = pres5;
+ e2ap_pdu->choice.successfulOutcome = successoutcome;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+
+}
+
void generate_e2apv1_subscription_response(E2AP_PDU *e2ap_pdu, E2AP_PDU *sub_req_pdu) {
//Gather details of the request
@@ -422,7 +555,181 @@
}
+void generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_pdu,
+ long requestorId,
+ long instanceId,
+ long ranFunctionId,
+ long actionId,
+ long seqNum,
+ uint8_t *ind_header_buf,
+ int header_length,
+ uint8_t *ind_message_buf,
+ int message_length) {
+ fprintf(stderr, "ind1\n");
+ RICindication_IEs_t *ricind_ies = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
+ RICindication_IEs_t *ricind_ies2 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
+ RICindication_IEs_t *ricind_ies3 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
+ RICindication_IEs_t *ricind_ies4 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
+ RICindication_IEs_t *ricind_ies5 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
+ RICindication_IEs_t *ricind_ies6 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
+ RICindication_IEs_t *ricind_ies7 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
+ RICindication_IEs_t *ricind_ies8 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
+
+ RICindication_IEs__value_PR pres3;
+
+ pres3 = RICindication_IEs__value_PR_RICrequestID;
+ ricind_ies->id = ProtocolIE_ID_id_RICrequestID;
+ ricind_ies->criticality = 0;
+ ricind_ies->value.present = pres3;
+ ricind_ies->value.choice.RICrequestID.ricRequestorID = requestorId;
+ ricind_ies->value.choice.RICrequestID.ricInstanceID = instanceId;
+
+ fprintf(stderr, "ind2\n");
+
+ pres3 = RICindication_IEs__value_PR_RANfunctionID;
+ ricind_ies2->id = ProtocolIE_ID_id_RANfunctionID;
+ ricind_ies2->criticality = 0;
+ ricind_ies2->value.present = pres3;
+ ricind_ies2->value.choice.RANfunctionID = ranFunctionId;
+
+
+ ricind_ies3->id = ProtocolIE_ID_id_RICactionID;
+ ricind_ies3->criticality = 0;
+ pres3 = RICindication_IEs__value_PR_RICactionID;
+ ricind_ies3->value.present = pres3;
+ ricind_ies3->value.choice.RICactionID = actionId;
+
+
+ pres3 = RICindication_IEs__value_PR_RICindicationSN;
+ ricind_ies4->id = ProtocolIE_ID_id_RICindicationSN;
+ ricind_ies4->criticality = 0;
+ ricind_ies4->value.present = pres3;
+ ricind_ies4->value.choice.RICindicationSN = seqNum;
+
+ //Indication type is REPORT
+ pres3 = RICindication_IEs__value_PR_RICindicationType;
+ ricind_ies5->id = ProtocolIE_ID_id_RICindicationType;
+ ricind_ies5->criticality = 0;
+ ricind_ies5->value.present = pres3;
+ ricind_ies5->value.choice.RICindicationType = 0;
+
+
+ uint8_t *buf2 = (uint8_t *)"reportheader";
+ OCTET_STRING_t *hdr_str = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+
+ hdr_str->buf = (uint8_t*)calloc(1,header_length);
+ hdr_str->size = header_length;
+ memcpy(hdr_str->buf, ind_header_buf, header_length);
+
+ fprintf(stderr, "ind3\n");
+
+ ricind_ies6->value.choice.RICindicationHeader.buf = (uint8_t*)calloc(1,header_length);
+
+ pres3 = RICindication_IEs__value_PR_RICindicationHeader;
+ ricind_ies6->id = ProtocolIE_ID_id_RICindicationHeader;
+ ricind_ies6->criticality = 0;
+ ricind_ies6->value.present = pres3;
+ ricind_ies6->value.choice.RICindicationHeader.size = header_length;
+ memcpy(ricind_ies6->value.choice.RICindicationHeader.buf, ind_header_buf, header_length);
+
+ ricind_ies7->value.choice.RICindicationMessage.buf = (uint8_t*)calloc(1,8192);
+
+
+
+
+ pres3 = RICindication_IEs__value_PR_RICindicationMessage;
+ ricind_ies7->id = ProtocolIE_ID_id_RICindicationMessage;
+ fprintf(stderr, "after encoding message 1\n");
+
+ ricind_ies7->criticality = 0;
+ ricind_ies7->value.present = pres3;
+
+ fprintf(stderr, "after encoding message 2\n");
+
+ fprintf(stderr, "after encoding message 3\n");
+ ricind_ies7->value.choice.RICindicationMessage.size = message_length;
+
+ fprintf(stderr, "after encoding message 4\n");
+ memcpy(ricind_ies7->value.choice.RICindicationMessage.buf, ind_message_buf, message_length);
+
+ fprintf(stderr, "after encoding message 5\n");
+
+ uint8_t *cpid_buf = (uint8_t *)"cpid";
+ OCTET_STRING_t cpid_str;
+
+ printf("5.1\n");
+
+ int cpid_buf_len = strlen((char*)cpid_buf);
+ pres3 = RICindication_IEs__value_PR_RICcallProcessID;
+ ricind_ies8->id = ProtocolIE_ID_id_RICcallProcessID;
+
+ ricind_ies8->criticality = 0;
+ ricind_ies8->value.present = pres3;
+
+ ricind_ies8->value.choice.RICcallProcessID.buf = (uint8_t*)calloc(1,cpid_buf_len);
+ ricind_ies8->value.choice.RICcallProcessID.size = cpid_buf_len;
+
+ memcpy(ricind_ies8->value.choice.RICcallProcessID.buf, cpid_buf, cpid_buf_len);
+
+ printf("5.2\n");
+
+ RICindication_t *ricindication = (RICindication_t*)calloc(1, sizeof(RICindication_t));
+
+
+ int ret;
+
+ ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies);
+
+ ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies2);
+
+ printf("5.3\n");
+
+ ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies3);
+
+ printf("5.35\n");
+
+ ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies4);
+
+ printf("5.36\n");
+
+ ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies5);
+
+ printf("5.4\n");
+
+ ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies6);
+
+ printf("5.5\n");
+
+ ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies7);
+
+ // ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies8);
+
+
+ InitiatingMessage__value_PR pres4;
+ pres4 = InitiatingMessage__value_PR_RICindication;
+ InitiatingMessage_t *initmsg = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t));
+ initmsg->procedureCode = 5;
+ initmsg->criticality = 1;
+ initmsg->value.present = pres4;
+ initmsg->value.choice.RICindication = *ricindication;
+
+ E2AP_PDU_PR pres5;
+ pres5 = E2AP_PDU_PR_initiatingMessage;
+
+ e2ap_pdu->present = pres5;
+ e2ap_pdu->choice.initiatingMessage = initmsg;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu);
+
+}
void generate_e2apv1_indication_request(E2AP_PDU *e2ap_pdu) {
fprintf(stderr, "ind1\n");
@@ -493,23 +800,40 @@
ricind_ies7->value.choice.RICindicationMessage.buf = (uint8_t*)calloc(1,8192);
// uint8_t *buf9 = (uint8_t *)"reportmsg";
-
+ /*
E2SM_KPM_IndicationMessage_t *e2sm_ind_msg =
(E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t));
encode_kpm(e2sm_ind_msg);
+ */
+ E2SM_KPM_RANfunction_Description_t *e2sm_desc =
+ (E2SM_KPM_RANfunction_Description_t*)calloc(1,sizeof(E2SM_KPM_RANfunction_Description_t));
+
+ encode_kpm_function_description(e2sm_desc);
+
+
uint8_t e2smbuffer[8192];
size_t e2smbuffer_size = 8192;
asn_codec_ctx_t *opt_cod;
+
asn_enc_rval_t er =
asn_encode_to_buffer(opt_cod,
ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_RANfunction_Description,
+ e2sm_desc, e2smbuffer, e2smbuffer_size);
+
+ /*
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
&asn_DEF_E2SM_KPM_IndicationMessage,
- e2sm_ind_msg, e2smbuffer, e2smbuffer_size);
+ e2sm_ind_msg, e2smbuffer, e2smbuffer_size);
+ */
+
+
fprintf(stderr, "er encded is %d\n", er.encoded);
fprintf(stderr, "after encoding message\n");
diff --git a/e2sim/e2apv1sim/encode_e2apv1.hpp b/e2sim/e2apv1sim/encode_e2apv1.hpp
index 9f544a4..29f8d20 100644
--- a/e2sim/e2apv1sim/encode_e2apv1.hpp
+++ b/e2sim/e2apv1sim/encode_e2apv1.hpp
@@ -1,7 +1,10 @@
+
+
#include <stdio.h>
#include <unistd.h>
#include <assert.h>
+
#include "e2sim_sctp.hpp"
#include "e2ap_message_handler.hpp"
#include "encode_kpm.hpp"
@@ -29,7 +32,7 @@
#include "RICindication.h"
#include "RICsubsequentActionType.h"
#include "RICsubsequentAction.h"
-#include "RICtimeToWait.h"
+#include "RICtimeToWait.h"
}
@@ -44,3 +47,7 @@
void generate_e2apv1_subscription_response(E2AP_PDU_t *sub_resp_pdu, E2AP_PDU_t *sub_req_pdu);
void generate_e2apv1_indication_request(E2AP_PDU_t *ind_req_pdu);
+
+void generate_e2apv1_subscription_response_success(E2AP_PDU *e2ap_pdu, long reqActionIdsAccepted[], long reqActionIdsRejected[], int accept_size, int reject_size, long reqRequestorId, long reqInstanceId);
+
+void generate_e2apv1_indication_request_parameterized(E2AP_PDU *e2ap_pdu, long requestorId, long instanceId, long ranFunctionId, long actionId, long seqNum, uint8_t *ind_header_buf, int header_length, uint8_t *ind_message_buf, int message_length);
diff --git a/e2sim/e2apv1sim/encode_e2apv1_back.cpp b/e2sim/e2apv1sim/encode_e2apv1_back.cpp
deleted file mode 100644
index 61400f7..0000000
--- a/e2sim/e2apv1sim/encode_e2apv1_back.cpp
+++ /dev/null
@@ -1,370 +0,0 @@
-
-#include "encode_e2apv1.hpp"
-
-void generate_e2apv1_setup_request(E2AP_PDU_t *e2ap_pdu) {
-
- uint8_t *buf = (uint8_t *)"gnb1";
-
- BIT_STRING_t *gnb_bstring = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t));;
- gnb_bstring->buf = buf;
- gnb_bstring->size = 4;
- gnb_bstring->bits_unused = 0;
-
- uint8_t *buf2 = (uint8_t *)"plmn3";
- OCTET_STRING_t *plmn = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
- plmn->buf = buf2;
- plmn->size = 5;
-
- GNB_ID_Choice_t *gnbchoice = (GNB_ID_Choice_t*)calloc(1,sizeof(GNB_ID_Choice_t));
- GNB_ID_Choice_PR pres2 = GNB_ID_Choice_PR_gnb_ID;
- gnbchoice->present = pres2;
- gnbchoice->choice.gnb_ID = *gnb_bstring;
-
- GlobalgNB_ID_t *gnb = (GlobalgNB_ID_t*)calloc(1, sizeof(GlobalgNB_ID_t));
- gnb->plmn_id = *plmn;
- gnb->gnb_id = *gnbchoice;
-
- GlobalE2node_gNB_ID_t *e2gnb = (GlobalE2node_gNB_ID_t*)calloc(1, sizeof(GlobalE2node_gNB_ID_t));
- e2gnb->global_gNB_ID = *gnb;
-
- GlobalE2node_ID_t *globale2nodeid = (GlobalE2node_ID_t*)calloc(1, sizeof(GlobalE2node_ID_t));
- GlobalE2node_ID_PR pres;
- pres = GlobalE2node_ID_PR_gNB;
- globale2nodeid->present = pres;
- globale2nodeid->choice.gNB = e2gnb;
-
- E2setupRequestIEs_t *e2setuprid = (E2setupRequestIEs_t*)calloc(1, sizeof(E2setupRequestIEs_t));;
- E2setupRequestIEs__value_PR pres3;
- pres3 = E2setupRequestIEs__value_PR_GlobalE2node_ID;
- e2setuprid->id = 4;
- e2setuprid->criticality = 0;
- e2setuprid->value.choice.GlobalE2node_ID = *globale2nodeid;
- e2setuprid->value.present = pres3;
-
- auto *ranFlistIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t));
- ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, ranFlistIEs);
- ranFlistIEs->criticality = 0;
- ranFlistIEs->id = ProtocolIE_ID_id_RANfunctionsAdded;
- ranFlistIEs->value.present = E2setupRequestIEs__value_PR_RANfunctions_List;
-
- auto *itemIes = (RANfunction_ItemIEs_t *)calloc(1, sizeof(RANfunction_ItemIEs_t));
- itemIes->id = ProtocolIE_ID_id_RANfunction_Item;
- itemIes->criticality = Criticality_reject;
- itemIes->value.present = RANfunction_ItemIEs__value_PR_RANfunction_Item;
- itemIes->value.choice.RANfunction_Item.ranFunctionID = 1;
-
- ASN_SEQUENCE_ADD(&ranFlistIEs->value.choice.RANfunctions_List.list, itemIes);
-
- E2setupRequest_t *e2setupreq = (E2setupRequest_t*)calloc(1, sizeof(E2setupRequest_t));
- e2setupreq->protocolIEs.list.size = sizeof(E2setupRequestIEs);
- e2setupreq->protocolIEs.list.count = 1;
- e2setupreq->protocolIEs.list.array = &e2setuprid;
-
- InitiatingMessage__value_PR pres4;
- pres4 = InitiatingMessage__value_PR_E2setupRequest;
- InitiatingMessage_t *initmsg = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t));
- initmsg->procedureCode = 1;
- initmsg->criticality = 0;
- initmsg->value.present = pres4;
- initmsg->value.choice.E2setupRequest = *e2setupreq;
-
- E2AP_PDU_PR pres5;
- pres5 = E2AP_PDU_PR_initiatingMessage;
-
-
- e2ap_pdu->present = pres5;
- e2ap_pdu->choice.initiatingMessage = initmsg;
-
-}
-
-
-void generate_e2apv1_setup_response(E2AP_PDU_t *e2ap_pdu) {
-
- E2setupResponseIEs *resp_ies1 = (E2setupResponseIEs_t*)calloc(1, sizeof(E2setupResponseIEs_t));
- E2setupResponseIEs *resp_ies2 = (E2setupResponseIEs_t*)calloc(1, sizeof(E2setupResponseIEs_t));
- E2setupResponseIEs *resp_ies3 = (E2setupResponseIEs_t*)calloc(1, sizeof(E2setupResponseIEs_t));
-
- uint8_t *buf = (uint8_t *)"gnb1";
-
- BIT_STRING_t *ricid_bstring = (BIT_STRING_t*)calloc(1,sizeof(BIT_STRING_t));
- ricid_bstring->buf = buf;
- ricid_bstring->size = 4;
- ricid_bstring->bits_unused = 0;
-
- uint8_t *buf2 = (uint8_t *)"plmn3";
- OCTET_STRING_t *plmn = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
- plmn->buf = buf2;
- plmn->size = 5;
-
- GlobalRIC_ID_t *globalricid = (GlobalRIC_ID_t*)calloc(1,sizeof(GlobalRIC_ID_t));
- globalricid->pLMN_Identity = *plmn;
- globalricid->ric_ID = *ricid_bstring;
-
- E2setupResponseIEs__value_PR pres1;
- pres1 = E2setupResponseIEs__value_PR_GlobalRIC_ID;
-
- resp_ies1->id = ProtocolIE_ID_id_GlobalRIC_ID;
- resp_ies1->criticality = 0;
- resp_ies1->value.present = pres1;
- resp_ies1->value.choice.GlobalRIC_ID = *globalricid;
-
- E2setupResponse_t *e2setupresp = (E2setupResponse_t*)calloc(1,sizeof(E2setupResponse_t));
- int ret = ASN_SEQUENCE_ADD(&e2setupresp->protocolIEs.list, resp_ies1);
-
-
- SuccessfulOutcome__value_PR pres;
- pres = SuccessfulOutcome__value_PR_E2setupResponse;
- SuccessfulOutcome_t *successoutcome = (SuccessfulOutcome_t*)calloc(1, sizeof(SuccessfulOutcome_t));
- successoutcome->procedureCode = 1;
- successoutcome->criticality = 0;
- successoutcome->value.present = pres;
- successoutcome->value.choice.E2setupResponse = *e2setupresp;
-
- E2AP_PDU_PR pres5 = E2AP_PDU_PR_successfulOutcome;
-
- e2ap_pdu->present = pres5;
- e2ap_pdu->choice.successfulOutcome = successoutcome;
-
-}
-
-
-void generate_e2apv1_subscription_request(E2AP_PDU *e2ap_pdu) {
-
- fprintf(stderr, "in generate sub\n");
- uint8_t *buf2 = (uint8_t *)"SubscriptionTriggers";
- fprintf(stderr, "in gen sub 1\n");
- OCTET_STRING_t *triggerdef = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
- triggerdef->buf = buf2;
- triggerdef->size = 20;
-
- /*
- ProtocolIE_SingleContainer_1547P0_t *action_item =
- (ProtocolIE_SingleContainer_1547P0_t *)calloc(1, sizeof(ProtocolIE_SingleContainer_1547P0_t));
- action_item->ricActionID = 19;
- action_item->ricActionType = 1;
-
- // RICactions_ToBeSetup_List_t actionslist = asn_DEF_RICactions_ToBeSetup_List;
-
-
- // actionslist.list.size = sizeof(RICaction_ToBeSetup_Item_t);
-
- actionslist.list.size = sizeof(ProtocolIE_SingleContainer);
- actionslist.list.count = 1;
- actionslist.list.array = &action_item;
- */
-
- fprintf(stderr, "sub1\n");
- ProtocolIE_ID_t proto_id= ProtocolIE_ID_id_RICaction_ToBeSetup_Item;
-
- RICaction_ToBeSetup_ItemIEs__value_PR pres6;
- pres6 = RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item;
-
- printf("sub2\n");
-
- RICaction_ToBeSetup_Item_t action_item;
- action_item.ricActionID = 5;
- action_item.ricActionType = 9;
-
- printf("sub3\n");
-
- RICaction_ToBeSetup_ItemIEs_t *action_item_ies = (RICaction_ToBeSetup_ItemIEs_t *)calloc(1, sizeof(RICaction_ToBeSetup_Item_t));
- action_item_ies->id = proto_id;
- action_item_ies->criticality = 0;
- action_item_ies->value.choice.RICaction_ToBeSetup_Item = action_item;
- action_item_ies->value.present = pres6;
-
- printf("sub4\n");
-
- RICactions_ToBeSetup_List_t actionslist;
-
- // actionslist.list.size = sizeof(ProtocolIE_SingleContainer);
- actionslist.list.size = sizeof(RICaction_ToBeSetup_ItemIEs_t);
- actionslist.list.count = 1;
- actionslist.list.array = (ProtocolIE_SingleContainer**)&action_item_ies;
-
- printf("sub5\n");
-
- RICsubscriptionDetails_t ricsubdetails;
-
- ricsubdetails.ricAction_ToBeSetup_List = actionslist;
- ricsubdetails.ricEventTriggerDefinition = *trigger;
-
- printf("sub5.5\n");
-
- RANfunctions_List_t *rflist = (RANfunctions_List_t*)calloc(1,sizeof(RANfunctions_List_t));
-
- printf("sub6\n");
-
- RICsubscriptionRequest_IEs_t *ricsubrid = (RICsubscriptionRequest_IEs_t*)calloc(1, sizeof(RICsubscriptionRequest_IEs_t));;
- RICsubscriptionRequest_IEs__value_PR pres3;
- printf("sub6.1\n");
- pres3 = RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails;
- ricsubrid->id = ProtocolIE_ID_id_RICsubscriptionDetails;
- printf("sub6.2\n");
-
- ricsubrid->criticality = 0;
- ricsubrid->value.present = pres3;
- printf("sub6.3\n");
- // ricsubrid->value.choice.RICrequestID.ricRequestorID = 25;
- // ricsubrid->value.choice.RICrequestID.ricInstanceID = 3;
- printf("sub6.4\n");
- // ricsubrid->value.choice.RANfunctionID = 17;
- ricsubrid->value.choice.RICsubscriptionDetails = ricsubdetails;
-
- printf("sub7\n");
-
- RICsubscriptionRequest_t *ricsubreq;
- ricsubreq->protocolIEs.list.size = sizeof(RICsubscriptionRequest_IEs_t);
- ricsubreq->protocolIEs.list.count = 1;
- ricsubreq->protocolIEs.list.array = &ricsubrid;
-
- InitiatingMessage__value_PR pres4;
- pres4 = InitiatingMessage__value_PR_RICsubscriptionRequest;
- InitiatingMessage_t *initmsg = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t));
- initmsg->procedureCode = 8;
- initmsg->criticality = 0;
- initmsg->value.present = pres4;
- initmsg->value.choice.RICsubscriptionRequest = *ricsubreq;
-
- E2AP_PDU_PR pres5;
- pres5 = E2AP_PDU_PR_initiatingMessage;
-
-
- e2ap_pdu->present = pres5;
- e2ap_pdu->choice.initiatingMessage = initmsg;
-
- char *error_buf = (char*)calloc(300, sizeof(char));;
- size_t errlen;
-
- asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen);
- printf("error length %d\n", errlen);
- printf("error buf %s\n", error_buf);
-
- xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu);
-
-}
-
-
-
-void generate_e2apv1_indication_request(E2AP_PDU *e2ap_pdu) {
-
- RICindication_IEs_t *ricind_ies = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
- RICindication_IEs_t *ricind_ies2 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
- RICindication_IEs_t *ricind_ies3 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
- RICindication_IEs_t *ricind_ies4 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
- RICindication_IEs_t *ricind_ies5 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
- RICindication_IEs_t *ricind_ies6 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
- RICindication_IEs_t *ricind_ies7 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
- RICindication_IEs_t *ricind_ies8 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
-
- RICindication_IEs__value_PR pres3;
-
- pres3 = RICindication_IEs__value_PR_RICrequestID;
- ricind_ies->id = ProtocolIE_ID_id_RICrequestID;
- ricind_ies->criticality = 0;
- ricind_ies->value.present = pres3;
- ricind_ies->value.choice.RICrequestID.ricRequestorID = 25;
- ricind_ies->value.choice.RICrequestID.ricInstanceID = 3;
-
- pres3 = RICindication_IEs__value_PR_RANfunctionID;
- ricind_ies2->id = ProtocolIE_ID_id_RANfunctionID;
- ricind_ies2->criticality = 0;
- ricind_ies2->value.present = pres3;
- ricind_ies2->value.choice.RANfunctionID = 70;
-
-
- ricind_ies3->id = ProtocolIE_ID_id_RICactionID;
- ricind_ies3->criticality = 0;
- pres3 = RICindication_IEs__value_PR_RICactionID;
- ricind_ies3->value.present = pres3;
- ricind_ies3->value.choice.RICactionID = 80;
-
-
- pres3 = RICindication_IEs__value_PR_RICindicationSN;
- ricind_ies4->id = ProtocolIE_ID_id_RICindicationSN;
- ricind_ies4->criticality = 0;
- ricind_ies4->value.present = pres3;
- ricind_ies4->value.choice.RICindicationSN = 45;
-
- pres3 = RICindication_IEs__value_PR_RICindicationType;
- ricind_ies5->id = ProtocolIE_ID_id_RICindicationType;
- ricind_ies5->criticality = 0;
- ricind_ies5->value.present = pres3;
- ricind_ies5->value.choice.RICindicationType = 0;
-
- uint8_t *buf2 = (uint8_t *)"reportheader";
- OCTET_STRING_t hdr_str;
- hdr_str.buf = buf2;
- hdr_str.size = 12;
-
- pres3 = RICindication_IEs__value_PR_RICindicationHeader;
- ricind_ies6->id = ProtocolIE_ID_id_RICindicationHeader;
- ricind_ies6->criticality = 0;
- ricind_ies6->value.present = pres3;
- ricind_ies6->value.choice.RICindicationHeader = hdr_str;
-
- uint8_t *buf3 = (uint8_t *)"reportmessage";
- OCTET_STRING_t msg_str;
- msg_str.buf = buf3;
- msg_str.size = 13;
-
- pres3 = RICindication_IEs__value_PR_RICindicationMessage;
- ricind_ies7->id = ProtocolIE_ID_id_RICindicationMessage;
-
- ricind_ies7->criticality = 0;
- ricind_ies7->value.present = pres3;
-
- ricind_ies7->value.choice.RICindicationMessage = msg_str;
-
- uint8_t *buf4 = (uint8_t *)"cpid";
- OCTET_STRING_t cpid_str;
- cpid_str.buf = buf4;
- cpid_str.size = 4;
-
- pres3 = RICindication_IEs__value_PR_RICcallProcessID;
- ricind_ies8->id = ProtocolIE_ID_id_RICrequestID;
-
- ricind_ies8->criticality = 0;
- ricind_ies8->value.present = pres3;
-
- ricind_ies8->value.choice.RICcallProcessID = cpid_str;
-
-
- RICindication_t *ricindication = (RICindication_t*)calloc(1, sizeof(RICindication_t));
-
- int ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies);
-
- ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies2);
-
- ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies3);
- ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies4);
- ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies5);
- ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies6);
- ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies7);
- ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies8);
-
-
- InitiatingMessage__value_PR pres4;
- pres4 = InitiatingMessage__value_PR_RICindication;
- InitiatingMessage_t *initmsg = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t));
- initmsg->procedureCode = 5;
- initmsg->criticality = 1;
- initmsg->value.present = pres4;
- initmsg->value.choice.RICindication = *ricindication;
-
- E2AP_PDU_PR pres5;
- pres5 = E2AP_PDU_PR_initiatingMessage;
-
- e2ap_pdu = (E2AP_PDU_t*)calloc(1, sizeof(E2AP_PDU_t));
- e2ap_pdu->present = pres5;
- e2ap_pdu->choice.initiatingMessage = initmsg;
-
- char *error_buf = (char*)calloc(300, sizeof(char));;
- size_t errlen;
-
- asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen);
- printf("error length %d\n", errlen);
- printf("error buf %s\n", error_buf);
-
-
-}
diff --git a/e2sim/e2apv1sim/encode_kpm.cpp b/e2sim/e2apv1sim/encode_kpm.cpp
index 9a3e389..371f455 100644
--- a/e2sim/e2apv1sim/encode_kpm.cpp
+++ b/e2sim/e2apv1sim/encode_kpm.cpp
@@ -4,12 +4,1432 @@
#include <unistd.h>
#include <vector>
-#include "encode_kpm.hpp";
+#include "encode_kpm.hpp"
using namespace std;
+void encode_kpm_function_description(E2SM_KPM_RANfunction_Description_t* ranfunc_desc) {
+
+ printf("kpm0\n");
+
+ uint8_t *buf = (uint8_t*)"ORAN-E2SM-KPM";
+ uint8_t *buf2 = (uint8_t*)"KPM monitor";
+ uint8_t *buf3 = (uint8_t*)"OID123";
+
+ OCTET_STRING_t *sname = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sname->buf = (uint8_t*)calloc(1,13);
+
+ memcpy(sname->buf, buf, 13);
+ sname->size = strlen((char*)buf);
+ ranfunc_desc->ranFunction_Name.ranFunction_ShortName = *sname;
+
+ long inst = 1;
+
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_RANfunction_Description, ranfunc_desc);
+
+ // ranfunc_desc->ranFunction_Name.ranFunction_Description = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ ranfunc_desc->ranFunction_Name.ranFunction_Description.buf = (uint8_t*)calloc(1,strlen((char*)buf2));
+ memcpy(ranfunc_desc->ranFunction_Name.ranFunction_Description.buf, buf2, strlen((char*)buf2));
+ ranfunc_desc->ranFunction_Name.ranFunction_Description.size = strlen((char*)buf2);
+ ranfunc_desc->ranFunction_Name.ranFunction_Instance = &inst;
+
+ printf("kpm0.9\n");
+
+ // ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.buf = (uint8_t*)calloc(1,strlen((char*)buf3));
+ memcpy(ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.buf, buf3, strlen((char*)buf3));
+ ranfunc_desc->ranFunction_Name.ranFunction_E2SM_OID.size = strlen((char*)buf3);
+
+ printf("kpm2\n");
+
+
+ RIC_EventTriggerStyle_List_t *trigger_style =
+ (RIC_EventTriggerStyle_List_t*)calloc(1, sizeof(RIC_EventTriggerStyle_List_t));
+ trigger_style->ric_EventTriggerStyle_Type = 1;
+ uint8_t *buf4 = (uint8_t*)"Periodic report";
+ // trigger_style->ric_EventTriggerStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ trigger_style->ric_EventTriggerStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf4));
+ memcpy(trigger_style->ric_EventTriggerStyle_Name.buf, buf4, strlen((char*)buf4));
+ trigger_style->ric_EventTriggerStyle_Name.size = strlen((char*)buf4);
+ trigger_style->ric_EventTriggerFormat_Type = 5;
+
+ printf("kpm3\n");
+
+ ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_EventTriggerStyle_List =
+ (E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List*)calloc(1,sizeof(E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_EventTriggerStyle_List));
+
+ int ret = ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_EventTriggerStyle_List->list , trigger_style);
+ printf("ret is %d\n", ret);
+
+ RIC_ReportStyle_List_t *report_style1 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t));
+ report_style1->ric_ReportStyle_Type = 1;
+
+ uint8_t *buf5 = (uint8_t*)"O-DU Measurement Container for the 5GC connected deployment";
+
+ printf("kpm4\n");
+
+ // report_style1->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ report_style1->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf5));
+ memcpy(report_style1->ric_ReportStyle_Name.buf, buf5, strlen((char*)buf5));
+ report_style1->ric_ReportStyle_Name.size = strlen((char*)buf5);
+ report_style1->ric_IndicationHeaderFormat_Type = 1;
+ report_style1->ric_IndicationMessageFormat_Type = 1;
+
+ printf("kpm5\n");
+
+ RIC_ReportStyle_List_t *report_style2 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t));
+ report_style2->ric_ReportStyle_Type = 2;
+
+ uint8_t *buf6 = (uint8_t*)"O-DU Measurement Container for the EPC connected deployment";
+
+ // report_style2->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+
+
+ report_style2->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf6));
+ memcpy(report_style2->ric_ReportStyle_Name.buf, buf6, strlen((char*)buf6));
+ report_style2->ric_ReportStyle_Name.size = strlen((char*)buf6);
+ report_style2->ric_IndicationHeaderFormat_Type = 1;
+ report_style2->ric_IndicationMessageFormat_Type = 1;
+
+ printf("kpm6\n");
+
+ RIC_ReportStyle_List_t *report_style3 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t));
+ report_style3->ric_ReportStyle_Type = 3;
+
+ uint8_t *buf7 = (uint8_t*)"O-CU-CP Measurement Container for the 5GC connected deployment";
+
+ // report_style3->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ report_style3->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf7));
+ memcpy(report_style3->ric_ReportStyle_Name.buf, buf7, strlen((char*)buf7));
+ report_style3->ric_ReportStyle_Name.size = strlen((char*)buf7);
+ report_style3->ric_IndicationHeaderFormat_Type = 1;
+ report_style3->ric_IndicationMessageFormat_Type = 1;
+
+ RIC_ReportStyle_List_t *report_style4 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t));
+ report_style4->ric_ReportStyle_Type = 4;
+
+ uint8_t *buf8 = (uint8_t*)"O-CU-CP Measurement Container for the EPC connected deployment";
+
+ // report_style3->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ report_style4->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf8));
+ memcpy(report_style4->ric_ReportStyle_Name.buf, buf8, strlen((char*)buf8));
+ report_style4->ric_ReportStyle_Name.size = strlen((char*)buf8);
+ report_style4->ric_IndicationHeaderFormat_Type = 1;
+ report_style4->ric_IndicationMessageFormat_Type = 1;
+
+ RIC_ReportStyle_List_t *report_style5 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t));
+ report_style5->ric_ReportStyle_Type = 5;
+
+ uint8_t *buf9 = (uint8_t*)"O-CU-UP Measurement Container for the 5GC connected deployment";
+
+ // report_style3->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ report_style5->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf9));
+ memcpy(report_style5->ric_ReportStyle_Name.buf, buf9, strlen((char*)buf9));
+ report_style5->ric_ReportStyle_Name.size = strlen((char*)buf9);
+ report_style5->ric_IndicationHeaderFormat_Type = 1;
+ report_style5->ric_IndicationMessageFormat_Type = 1;
+
+
+ RIC_ReportStyle_List_t *report_style6 = (RIC_ReportStyle_List_t*)calloc(1, sizeof(RIC_ReportStyle_List_t));
+ report_style6->ric_ReportStyle_Type = 6;
+
+ uint8_t *buf10 = (uint8_t*)"O-CU-UP Measurement Container for the EPC connected deployment";
+
+ // report_style3->ric_ReportStyle_Name = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ report_style6->ric_ReportStyle_Name.buf = (uint8_t*)calloc(1,strlen((char*)buf10));
+ memcpy(report_style6->ric_ReportStyle_Name.buf, buf10, strlen((char*)buf10));
+ report_style6->ric_ReportStyle_Name.size = strlen((char*)buf10);
+ report_style6->ric_IndicationHeaderFormat_Type = 1;
+ report_style6->ric_IndicationMessageFormat_Type = 1;
+
+
+ ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List =
+ (E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List*)calloc(1,sizeof(E2SM_KPM_RANfunction_Description::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item::E2SM_KPM_RANfunction_Description__e2SM_KPM_RANfunction_Item__ric_ReportStyle_List));
+
+ ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style1);
+ ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style2);
+ ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style3);
+ ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style4);
+ ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style5);
+ ASN_SEQUENCE_ADD(&ranfunc_desc->e2SM_KPM_RANfunction_Item.ric_ReportStyle_List->list, report_style6);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_RANfunction_Description, ranfunc_desc);
+}
+
+void encode_kpm_ocuup_user_level(RAN_Container_t *ranco) {
+
+ uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222";
+ Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t));
+ ts->buf = (uint8_t*)calloc(strlen((char*)buf),1);
+ ts->size = strlen((char*)buf);
+ memcpy(ts->buf,buf,ts->size);
+
+ printf("enc1\n");
+
+ CU_UP_Usage_Report_CellResourceReportItem_t *report_item =
+ (CU_UP_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(CU_UP_Usage_Report_CellResourceReportItem_t));
+
+ uint8_t *buf2 = (uint8_t*)"747";
+
+ OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnidstr->buf = (uint8_t*)calloc(3,1);
+ plmnidstr->size = 3;
+ memcpy(plmnidstr->buf, buf2, plmnidstr->size);
+
+ printf("enc2\n");
+
+ NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t));
+ uint8_t* buf3 = (uint8_t*)"12340";
+ nrcellid->buf = (uint8_t*)calloc(1,5);
+ memcpy(nrcellid->buf, buf3, 5);
+ nrcellid->size = 5;
+ nrcellid->bits_unused = 4;
+
+ NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI));
+ nrcgi->pLMN_Identity = *plmnidstr;
+ nrcgi->nRCellIdentity = *nrcellid;
+
+ printf("enc3\n");
+
+ report_item->nRCGI = *nrcgi;
+
+ CU_UP_Usage_Report_UeResourceReportItem *ue_report_item =
+ (CU_UP_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(CU_UP_Usage_Report_UeResourceReportItem));
+
+ printf("enc3.2\n");
+
+ uint8_t* crnti_str = (uint8_t*)"1111";
+ OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING));
+ crnti->buf = (uint8_t*)calloc(1,4);
+
+ printf("enc3.3\n");
+
+ crnti->size = strlen((char*)crnti_str);
+
+ printf("enc3.4\n");
+ memcpy(crnti->buf, crnti_str, crnti->size);
+
+ printf("enc4\n");
+
+ INTEGER_t *bytesdl = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
+ uint8_t buffer[1];
+ buffer[0]= 40000;
+ bytesdl->buf = (uint8_t*)calloc(1,1);
+ memcpy(bytesdl->buf, buffer,1);
+ bytesdl->size = 1;
+
+ INTEGER_t *bytesul = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
+ uint8_t buffer1[1];
+ buffer1[0] = 50000;
+ bytesul->buf = (uint8_t*)calloc(1,1);
+ memcpy(bytesul->buf, buffer1, 1);
+ bytesul->size = 1;
+
+
+ ue_report_item->c_RNTI = *crnti;
+ ue_report_item->pDCPBytesDL = bytesdl;
+ ue_report_item->pDCPBytesUL = bytesul;
+
+
+ ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item);
+
+ ranco->timestamp = *ts;
+ ranco->reportContainer.present = RAN_Container__reportContainer_PR_oCU_UP_UE;
+ ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oCU_UP_UE.cellResourceReportList.list, report_item);
+
+ xer_fprint(stderr, &asn_DEF_RAN_Container, ranco);
+
+}
+
+void encode_kpm_ocucp_user_level(RAN_Container_t *ranco,
+ uint8_t *plmnid_buf,
+ uint8_t *nrcellid_buf,
+ uint8_t *crnti_buf,
+ const uint8_t *serving_buf,
+ const uint8_t *neighbor_buf) {
+ uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222";
+ Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t));
+ ts->buf = (uint8_t*)calloc(strlen((char*)buf),1);
+ ts->size = strlen((char*)buf);
+ memcpy(ts->buf,buf,ts->size);
+
+ printf("enc1\n");
+
+ CU_CP_Usage_Report_CellResourceReportItem_t *report_item =
+ (CU_CP_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(CU_CP_Usage_Report_CellResourceReportItem_t));
+
+ int plmnid_size = strlen((char*)plmnid_buf);
+ OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnidstr->buf = (uint8_t*)calloc(plmnid_size,1);
+ plmnidstr->size = plmnid_size;
+ memcpy(plmnidstr->buf, plmnid_buf, plmnidstr->size);
+
+ printf("enc2\n");
+
+ NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t));
+
+ int nrcellid_size = strlen((char*)nrcellid_buf);
+ nrcellid->buf = (uint8_t*)calloc(1, nrcellid_size);
+ memcpy(nrcellid->buf, nrcellid_buf, nrcellid_size);
+ nrcellid->size = 5;
+ nrcellid->bits_unused = 4;
+
+ NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI));
+ nrcgi->pLMN_Identity = *plmnidstr;
+ nrcgi->nRCellIdentity = *nrcellid;
+
+ printf("enc3\n");
+
+ report_item->nRCGI = *nrcgi;
+
+ CU_CP_Usage_Report_UeResourceReportItem *ue_report_item =
+ (CU_CP_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(CU_CP_Usage_Report_UeResourceReportItem));
+
+ printf("enc3.2\n");
+
+
+ int crnti_size = strlen((char*)crnti_buf);
+ OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING));
+ crnti->buf = (uint8_t*)calloc(1, crnti_size);
+
+ printf("enc3.3\n");
+
+ crnti->size = strlen((char*)crnti_buf);
+
+ printf("enc3.4\n");
+ memcpy(crnti->buf, crnti_buf, crnti->size);
+
+ // uint8_t *buf_serving = (uint8_t*)"RSRP10";
+
+ int serving_buf_len = strlen((char*)serving_buf);
+ OCTET_STRING_t *servingstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ servingstr->buf = (uint8_t*)calloc(serving_buf_len,1);
+ servingstr->size = serving_buf_len;
+ memcpy(servingstr->buf, serving_buf, servingstr->size);
+
+
+ int neighbor_buf_len = strlen((char*)neighbor_buf);
+ // uint8_t *buf_neighbor = (uint8_t*)"-10,-15";
+ OCTET_STRING_t *neighborstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ ts->buf = (uint8_t*)calloc(neighbor_buf_len,1);
+ neighborstr->buf = (uint8_t*)calloc(neighbor_buf_len,1);
+ neighborstr->size = neighbor_buf_len;
+ memcpy(neighborstr->buf, neighbor_buf, neighborstr->size);
+
+ ue_report_item->c_RNTI = *crnti;
+ ue_report_item->serving_Cell_RF_Type = servingstr;
+ ue_report_item->neighbor_Cell_RF = neighborstr;
+
+
+ ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item);
+
+ ranco->timestamp = *ts;
+ ranco->reportContainer.present = RAN_Container__reportContainer_PR_oCU_CP_UE;
+ ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oCU_CP_UE.cellResourceReportList.list, report_item);
+
+ xer_fprint(stderr, &asn_DEF_RAN_Container, ranco);
+
+
+}
+
+void encode_kpm_ocucp_user_level(RAN_Container_t *ranco) {
+
+ uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222";
+ Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t));
+ ts->buf = (uint8_t*)calloc(strlen((char*)buf),1);
+ ts->size = strlen((char*)buf);
+ memcpy(ts->buf,buf,ts->size);
+
+ printf("enc1\n");
+
+ CU_CP_Usage_Report_CellResourceReportItem_t *report_item =
+ (CU_CP_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(CU_CP_Usage_Report_CellResourceReportItem_t));
+
+ uint8_t *buf2 = (uint8_t*)"747";
+
+ OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnidstr->buf = (uint8_t*)calloc(3,1);
+ plmnidstr->size = 3;
+ memcpy(plmnidstr->buf, buf2, plmnidstr->size);
+
+ printf("enc2\n");
+
+ NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t));
+ uint8_t* buf3 = (uint8_t*)"12340";
+ nrcellid->buf = (uint8_t*)calloc(1,5);
+ memcpy(nrcellid->buf, buf3, 5);
+ nrcellid->size = 5;
+ nrcellid->bits_unused = 4;
+
+ NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI));
+ nrcgi->pLMN_Identity = *plmnidstr;
+ nrcgi->nRCellIdentity = *nrcellid;
+
+ printf("enc3\n");
+
+ report_item->nRCGI = *nrcgi;
+
+ CU_CP_Usage_Report_UeResourceReportItem *ue_report_item =
+ (CU_CP_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(CU_CP_Usage_Report_UeResourceReportItem));
+
+ printf("enc3.2\n");
+
+ uint8_t* crnti_str = (uint8_t*)"1111";
+ OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING));
+ crnti->buf = (uint8_t*)calloc(1,4);
+
+ printf("enc3.3\n");
+
+ crnti->size = strlen((char*)crnti_str);
+
+ printf("enc3.4\n");
+ memcpy(crnti->buf, crnti_str, crnti->size);
+
+ uint8_t *buf_serving = (uint8_t*)"RSRP10";
+ OCTET_STRING_t *servingstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ servingstr->buf = (uint8_t*)calloc(6,1);
+ servingstr->size = 6;
+ memcpy(servingstr->buf, buf_serving, servingstr->size);
+
+ uint8_t *buf_neighbor = (uint8_t*)"-10,-15";
+ OCTET_STRING_t *neighborstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ neighborstr->buf = (uint8_t*)calloc(7,1);
+ neighborstr->size = 7;
+ memcpy(neighborstr->buf, buf_neighbor, neighborstr->size);
+
+ ue_report_item->c_RNTI = *crnti;
+ ue_report_item->serving_Cell_RF_Type = servingstr;
+ ue_report_item->neighbor_Cell_RF = neighborstr;
+
+
+ ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item);
+
+ ranco->timestamp = *ts;
+ ranco->reportContainer.present = RAN_Container__reportContainer_PR_oCU_CP_UE;
+ ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oCU_CP_UE.cellResourceReportList.list, report_item);
+
+ xer_fprint(stderr, &asn_DEF_RAN_Container, ranco);
+
+}
+
+
+void encode_kpm_odu_user_level(RAN_Container_t *ranco) {
+
+ uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222";
+ Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t));
+ ts->buf = (uint8_t*)calloc(strlen((char*)buf),1);
+ ts->size = strlen((char*)buf);
+ memcpy(ts->buf,buf,ts->size);
+
+ printf("enc1\n");
+
+ DU_Usage_Report_CellResourceReportItem_t *report_item =
+ (DU_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(DU_Usage_Report_CellResourceReportItem_t));
+
+ uint8_t *buf2 = (uint8_t*)"747";
+
+ OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnidstr->buf = (uint8_t*)calloc(3,1);
+ plmnidstr->size = 3;
+ memcpy(plmnidstr->buf, buf2, plmnidstr->size);
+
+ printf("enc2\n");
+
+ NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t));
+ uint8_t* buf3 = (uint8_t*)"12340";
+ nrcellid->buf = (uint8_t*)calloc(1,5);
+ memcpy(nrcellid->buf, buf3, 5);
+ nrcellid->size = 5;
+ nrcellid->bits_unused = 4;
+
+ NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI));
+ nrcgi->pLMN_Identity = *plmnidstr;
+ nrcgi->nRCellIdentity = *nrcellid;
+
+ printf("enc3\n");
+
+ report_item->nRCGI = *nrcgi;
+
+ printf("enc3.1\n");
+
+ DU_Usage_Report_UeResourceReportItem *ue_report_item =
+ (DU_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(DU_Usage_Report_UeResourceReportItem));
+
+ printf("enc3.2\n");
+
+ uint8_t* crnti_str = (uint8_t*)"1111";
+ OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING));
+ crnti->buf = (uint8_t*)calloc(1,4);
+
+ printf("enc3.3\n");
+
+ crnti->size = strlen((char*)crnti_str);
+
+ printf("enc3.4\n");
+ memcpy(crnti->buf, crnti_str, crnti->size);
+
+ printf("enc4\n");
+
+ long lval1 = 2;
+ long lval2 = 1;
+
+ ue_report_item->c_RNTI = *crnti;
+ ue_report_item->dl_PRBUsage = &lval1;
+
+ printf("enc5\n");
+
+ ue_report_item->ul_PRBUsage = &lval2;
+
+ printf("enc6\n");
+
+ ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item);
+
+
+ ranco->timestamp = *ts;
+ ranco->reportContainer.present = RAN_Container__reportContainer_PR_oDU_UE;
+ ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oDU_UE.cellResourceReportList.list, report_item);
+
+ xer_fprint(stderr, &asn_DEF_RAN_Container, ranco);
+
+
+}
+
+void encode_kpm_report_rancontainer_du(E2SM_KPM_IndicationMessage_t* indicationmessage) {
+
+ RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t));
+ encode_kpm_odu_user_level(ranco);
+
+ PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
+ containers_list->theRANContainer = ranco;
+
+ E2SM_KPM_IndicationMessage_Format1_t *format =
+ (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
+
+ int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
+
+ E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1;
+
+ indicationmessage->indicationMessage.present = pres;
+
+ indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+ asn_codec_ctx_t *opt_cod;
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ indicationmessage, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+
+}
+
+void encode_kpm_report_rancontainer_cucp_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage,
+ uint8_t *plmnid_buf,
+ uint8_t *nrcellid_buf,
+ uint8_t *crnti_buf,
+ const uint8_t *serving_buf,
+ const uint8_t *neighbor_buf) {
+
+ RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t));
+ encode_kpm_ocucp_user_level(ranco, plmnid_buf,
+ nrcellid_buf, crnti_buf,
+ serving_buf, neighbor_buf);
+
+ PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
+ containers_list->theRANContainer = ranco;
+
+ E2SM_KPM_IndicationMessage_Format1_t *format =
+ (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
+
+ int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
+
+ E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1;
+
+ indicationmessage->indicationMessage.present = pres;
+
+ indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+ asn_codec_ctx_t *opt_cod;
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ indicationmessage, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+}
+
+
+void encode_kpm_report_rancontainer_cucp(E2SM_KPM_IndicationMessage_t* indicationmessage) {
+
+ RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t));
+ encode_kpm_ocucp_user_level(ranco);
+
+ PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
+ containers_list->theRANContainer = ranco;
+
+ E2SM_KPM_IndicationMessage_Format1_t *format =
+ (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
+
+ int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
+
+ E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1;
+
+ indicationmessage->indicationMessage.present = pres;
+
+ indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+ asn_codec_ctx_t *opt_cod;
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ indicationmessage, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+
+}
+
+void encode_kpm_report_rancontainer_cuup_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage,
+ uint8_t *plmnid_buf,
+ uint8_t *nrcellid_buf,
+ uint8_t *crnti_buf,
+ int pdcp_bytesdl,
+ int pdcp_bytesul) {
+
+
+}
+
+void encode_kpm_report_rancontainer_cuup(E2SM_KPM_IndicationMessage_t* indicationmessage) {
+
+ RAN_Container_t *ranco = (RAN_Container_t*)calloc(1,sizeof(RAN_Container_t));
+ //encode_kpm_ocuup_user_level(ranco);
+
+
+ uint8_t *buf = (uint8_t*)"2020.06.13 13:01:05.222";
+ Timestamp_t *ts = (Timestamp_t*)calloc(1,sizeof(Timestamp_t));
+ ts->buf = (uint8_t*)calloc(strlen((char*)buf),1);
+ ts->size = strlen((char*)buf);
+ memcpy(ts->buf,buf,ts->size);
+
+ printf("enc1\n");
+
+ CU_CP_Usage_Report_CellResourceReportItem_t *report_item =
+ (CU_CP_Usage_Report_CellResourceReportItem_t*)calloc(1,sizeof(CU_CP_Usage_Report_CellResourceReportItem_t));
+
+ uint8_t *buf2 = (uint8_t*)"747";
+
+ OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnidstr->buf = (uint8_t*)calloc(3,1);
+ plmnidstr->size = 3;
+ memcpy(plmnidstr->buf, buf2, plmnidstr->size);
+
+ printf("enc2\n");
+
+ NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t));
+ uint8_t* buf3 = (uint8_t*)"12340";
+ nrcellid->buf = (uint8_t*)calloc(1,5);
+ memcpy(nrcellid->buf, buf3, 5);
+ nrcellid->size = 5;
+ nrcellid->bits_unused = 4;
+
+ NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI));
+ nrcgi->pLMN_Identity = *plmnidstr;
+ nrcgi->nRCellIdentity = *nrcellid;
+
+ printf("enc3\n");
+
+ report_item->nRCGI = *nrcgi;
+
+ CU_CP_Usage_Report_UeResourceReportItem *ue_report_item =
+ (CU_CP_Usage_Report_UeResourceReportItem*)calloc(1,sizeof(CU_CP_Usage_Report_UeResourceReportItem));
+
+ printf("enc3.2\n");
+
+ uint8_t* crnti_str = (uint8_t*)"1111";
+ OCTET_STRING *crnti = (OCTET_STRING*)calloc(1,sizeof(OCTET_STRING));
+ crnti->buf = (uint8_t*)calloc(1,4);
+
+ printf("enc3.3\n");
+
+ crnti->size = strlen((char*)crnti_str);
+
+ printf("enc3.4\n");
+ memcpy(crnti->buf, crnti_str, crnti->size);
+
+ uint8_t *buf_serving = (uint8_t*)"RSRP10";
+ OCTET_STRING_t *servingstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ servingstr->buf = (uint8_t*)calloc(6,1);
+ servingstr->size = 6;
+ memcpy(servingstr->buf, buf_serving, servingstr->size);
+
+ uint8_t *buf_neighbor = (uint8_t*)"-10,-15";
+ OCTET_STRING_t *neighborstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ neighborstr->buf = (uint8_t*)calloc(7,1);
+ neighborstr->size = 7;
+ memcpy(neighborstr->buf, buf_neighbor, neighborstr->size);
+
+ ue_report_item->c_RNTI = *crnti;
+ ue_report_item->serving_Cell_RF_Type = servingstr;
+ ue_report_item->neighbor_Cell_RF = neighborstr;
+
+
+ ASN_SEQUENCE_ADD(&report_item->ueResourceReportList.list, ue_report_item);
+
+ ranco->timestamp = *ts;
+ ranco->reportContainer.present = RAN_Container__reportContainer_PR_oCU_CP_UE;
+ ASN_SEQUENCE_ADD(&ranco->reportContainer.choice.oCU_CP_UE.cellResourceReportList.list, report_item);
+
+ // xer_fprint(stderr, &asn_DEF_RAN_Container, ranco);
+
+
+ PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
+ containers_list->theRANContainer = ranco;
+
+ E2SM_KPM_IndicationMessage_Format1_t *format =
+ (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
+
+ int ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
+
+ E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1;
+
+ indicationmessage->indicationMessage.present = pres;
+
+ indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+ asn_codec_ctx_t *opt_cod;
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ indicationmessage, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+
+}
+
+void encode_kpm_report_style1_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage,
+ long fiveqi,
+ long dl_prb_usage,
+ long ul_prb_usage,
+ uint8_t* sd_buf,
+ uint8_t* sst_buf,
+ uint8_t* plmnid_buf,
+ uint8_t* nrcellid_buf,
+ long *dl_prbs,
+ long *ul_prbs) {
+
+
+ asn_codec_ctx_t *opt_cod;
+
+ FQIPERSlicesPerPlmnPerCellListItem_t *fqi_item =
+ (FQIPERSlicesPerPlmnPerCellListItem_t*)calloc(1,sizeof(FQIPERSlicesPerPlmnPerCellListItem_t));
+ fqi_item->fiveQI = fiveqi;
+ fqi_item->dl_PRBUsage = &dl_prb_usage;
+ fqi_item->ul_PRBUsage = &ul_prb_usage;
+
+ uint8_t *buf1 = (uint8_t*)"4";
+ OCTET_STRING_t *sst = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sst->size = 6;
+ sst->buf = (uint8_t*)calloc(1,6);
+ memcpy(sst->buf,buf1,sst->size);
+
+ // std::string sd = "SD1";
+ // std::vector<uint8_t> sdvec(sd.begin(), sd.end());
+ // uint8_t *bufz = &sdvec[0];
+ uint8_t *bufz = (uint8_t*)"SD1";
+ OCTET_STRING_t *sds = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sds->size = 3;
+ sds->buf = (uint8_t*)calloc(1,3);
+ memcpy(sds->buf, bufz, sds->size);
+
+
+ SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t));
+ ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai);
+ snssai->sST.buf = (uint8_t*)calloc(1,1);
+ snssai->sST.size = 1;
+ memcpy(snssai->sST.buf, sst_buf, 1);
+ snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ snssai->sD->buf = (uint8_t*)calloc(1,3);
+ snssai->sD->size = 3;
+ memcpy(snssai->sD->buf, sd_buf, 3);
+
+
+ SlicePerPlmnPerCellListItem_t *sliceitem =
+ (SlicePerPlmnPerCellListItem_t*)calloc(1,sizeof(SlicePerPlmnPerCellListItem_t));
+ sliceitem->sliceID = *snssai;
+ ASN_SEQUENCE_ADD(&sliceitem->fQIPERSlicesPerPlmnPerCellList.list, fqi_item);
+
+ uint8_t *buf2 = (uint8_t*)"747";
+
+ OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnid->buf = (uint8_t*)calloc(3,1);
+ plmnid->size = 3;
+ memcpy(plmnid->buf, plmnid_buf, plmnid->size);
+
+ ServedPlmnPerCellListItem_t *percellitem1 =
+ (ServedPlmnPerCellListItem_t*)calloc(1,sizeof(ServedPlmnPerCellListItem_t));
+ percellitem1->pLMN_Identity = *plmnid;
+ percellitem1->du_PM_5GC = (FGC_DU_PM_Container*)calloc(1,sizeof(FGC_DU_PM_Container));
+ ASN_SEQUENCE_ADD(&percellitem1->du_PM_5GC->slicePerPlmnPerCellList.list, sliceitem);
+
+ OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnidstr->buf = (uint8_t*)calloc(3,1);
+ plmnidstr->size = 3;
+ memcpy(plmnidstr->buf, plmnid_buf, plmnidstr->size);
+
+ printf("enc2\n");
+
+ NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t));
+ uint8_t* buf3 = (uint8_t*)"12340";
+ nrcellid->buf = (uint8_t*)calloc(1,5);
+ memcpy(nrcellid->buf, nrcellid_buf, 5);
+ nrcellid->size = 5;
+ nrcellid->bits_unused = 4;
+
+ NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI));
+ nrcgi->pLMN_Identity = *plmnidstr;
+ nrcgi->nRCellIdentity = *nrcellid;
+
+
+ CellResourceReportListItem_t *listitem1 = (CellResourceReportListItem_t*)calloc(1,sizeof(CellResourceReportListItem_t));
+ listitem1->nRCGI = *nrcgi;
+ listitem1->dl_TotalofAvailablePRBs = dl_prbs;
+ listitem1->ul_TotalofAvailablePRBs = ul_prbs;
+ ASN_SEQUENCE_ADD(&listitem1->servedPlmnPerCellList.list, percellitem1);
+
+
+ ODU_PF_Container_t *ducont = (ODU_PF_Container_t*)calloc(1,sizeof(ODU_PF_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_ODU_PF_Container, ducont);
+ int ret = ASN_SEQUENCE_ADD(&ducont->cellResourceReportList.list, listitem1);
+
+ PF_Container_PR pres1 = PF_Container_PR_oDU;
+
+ PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer);
+ pfcontainer->present = pres1;
+ pfcontainer->choice.oDU = *ducont;
+
+ PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
+ containers_list->performanceContainer = pfcontainer;
+
+ E2SM_KPM_IndicationMessage_Format1_t *format =
+ (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
+
+ ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
+
+ E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1;
+
+ indicationmessage->indicationMessage.present = pres;
+
+ indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ indicationmessage, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+
+}
+
+
+void encode_kpm_report_style1(E2SM_KPM_IndicationMessage_t* indicationmessage) {
+
+ long fiveqi = 8;
+ long dl_prb_usage = 50;
+ long ul_prb_usage = 70;
+
+ asn_codec_ctx_t *opt_cod;
+
+ FQIPERSlicesPerPlmnPerCellListItem_t *fqi_item =
+ (FQIPERSlicesPerPlmnPerCellListItem_t*)calloc(1,sizeof(FQIPERSlicesPerPlmnPerCellListItem_t));
+ fqi_item->fiveQI = fiveqi;
+ fqi_item->dl_PRBUsage = &dl_prb_usage;
+ fqi_item->ul_PRBUsage = &ul_prb_usage;
+
+ uint8_t *buf1 = (uint8_t*)"4";
+ OCTET_STRING_t *sst = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sst->size = 6;
+ sst->buf = (uint8_t*)calloc(1,6);
+ memcpy(sst->buf,buf1,sst->size);
+
+ // std::string sd = "SD1";
+ // std::vector<uint8_t> sdvec(sd.begin(), sd.end());
+ // uint8_t *bufz = &sdvec[0];
+ uint8_t *bufz = (uint8_t*)"SD1";
+ OCTET_STRING_t *sds = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sds->size = 3;
+ sds->buf = (uint8_t*)calloc(1,3);
+ memcpy(sds->buf, bufz, sds->size);
+
+
+ SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t));
+ ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai);
+ snssai->sST.buf = (uint8_t*)calloc(1,1);
+ snssai->sST.size = 1;
+ memcpy(snssai->sST.buf, buf1, 1);
+ snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ snssai->sD->buf = (uint8_t*)calloc(1,3);
+ snssai->sD->size = 3;
+ memcpy(snssai->sD->buf, bufz, 3);
+
+
+ SlicePerPlmnPerCellListItem_t *sliceitem =
+ (SlicePerPlmnPerCellListItem_t*)calloc(1,sizeof(SlicePerPlmnPerCellListItem_t));
+ sliceitem->sliceID = *snssai;
+ ASN_SEQUENCE_ADD(&sliceitem->fQIPERSlicesPerPlmnPerCellList.list, fqi_item);
+
+ uint8_t *buf2 = (uint8_t*)"747";
+
+ OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnid->buf = (uint8_t*)calloc(3,1);
+ plmnid->size = 3;
+ memcpy(plmnid->buf, buf2, plmnid->size);
+
+ ServedPlmnPerCellListItem_t *percellitem1 =
+ (ServedPlmnPerCellListItem_t*)calloc(1,sizeof(ServedPlmnPerCellListItem_t));
+ percellitem1->pLMN_Identity = *plmnid;
+ percellitem1->du_PM_5GC = (FGC_DU_PM_Container*)calloc(1,sizeof(FGC_DU_PM_Container));
+ ASN_SEQUENCE_ADD(&percellitem1->du_PM_5GC->slicePerPlmnPerCellList.list, sliceitem);
+
+ OCTET_STRING_t *plmnidstr = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnidstr->buf = (uint8_t*)calloc(3,1);
+ plmnidstr->size = 3;
+ memcpy(plmnidstr->buf, buf2, plmnidstr->size);
+
+ printf("enc2\n");
+
+ NRCellIdentity_t *nrcellid = (NRCellIdentity_t*)calloc(1,sizeof(NRCellIdentity_t));
+ uint8_t* buf3 = (uint8_t*)"12340";
+ nrcellid->buf = (uint8_t*)calloc(1,5);
+ memcpy(nrcellid->buf, buf3, 5);
+ nrcellid->size = 5;
+ nrcellid->bits_unused = 4;
+
+ NRCGI *nrcgi = (NRCGI*)calloc(1,sizeof(NRCGI));
+ nrcgi->pLMN_Identity = *plmnidstr;
+ nrcgi->nRCellIdentity = *nrcellid;
+
+ long dl_prbs = (long)100;
+ long ul_prbs = (long)120;
+
+ CellResourceReportListItem_t *listitem1 = (CellResourceReportListItem_t*)calloc(1,sizeof(CellResourceReportListItem_t));
+ listitem1->nRCGI = *nrcgi;
+ listitem1->dl_TotalofAvailablePRBs = &dl_prbs;
+ listitem1->ul_TotalofAvailablePRBs = &ul_prbs;
+ ASN_SEQUENCE_ADD(&listitem1->servedPlmnPerCellList.list, percellitem1);
+
+
+ ODU_PF_Container_t *ducont = (ODU_PF_Container_t*)calloc(1,sizeof(ODU_PF_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_ODU_PF_Container, ducont);
+ int ret = ASN_SEQUENCE_ADD(&ducont->cellResourceReportList.list, listitem1);
+
+ PF_Container_PR pres1 = PF_Container_PR_oDU;
+
+ PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer);
+ pfcontainer->present = pres1;
+ pfcontainer->choice.oDU = *ducont;
+
+ PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
+ containers_list->performanceContainer = pfcontainer;
+
+ E2SM_KPM_IndicationMessage_Format1_t *format =
+ (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
+
+ ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
+
+ E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1;
+
+ indicationmessage->indicationMessage.present = pres;
+
+ indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ indicationmessage, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+
+}
+
+void encode_kpm_report_style5_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage,
+ uint8_t *gnbcuupname_buf,
+ int bytes_dl,
+ int bytes_ul,
+ uint8_t *sst_buf,
+ uint8_t *sd_buf,
+ uint8_t *plmnid_buf) {
+
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+
+ // uint8_t *buf = (uint8_t*)"GNBCUUP5";
+ OCTET_STRING_t *gnbcuupname = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ gnbcuupname->size = 8;
+ gnbcuupname->buf = (uint8_t*)calloc(1,8);
+ memcpy(gnbcuupname->buf, gnbcuupname_buf, gnbcuupname->size);
+
+
+ //We need to convert bytes_dl into array of uint8_t
+ INTEGER_t *bytesdl = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
+ uint8_t buffer[1];
+ buffer[0]= 40000;
+ bytesdl->buf = (uint8_t*)calloc(1,1);
+ memcpy(bytesdl->buf, buffer,1);
+ bytesdl->size = 1;
+
+
+ //We need to convert bytes_ul into array of uint8_t
+ INTEGER_t *bytesul = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
+ uint8_t buffer1[1];
+ buffer1[0] = 50000;
+ bytesul->buf = (uint8_t*)calloc(1,1);
+ memcpy(bytesul->buf, buffer1, 1);
+ bytesul->size = 1;
+
+ FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, sizeof(FQIPERSlicesPerPlmnListItem_t));
+ ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, fqilistitem);
+ fqilistitem->fiveQI = 9;
+ fqilistitem->pDCPBytesDL = bytesdl;
+ fqilistitem->pDCPBytesUL = bytesul;
+
+
+ uint8_t *buf1 = (uint8_t*)"4";
+ OCTET_STRING_t *sst = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sst->size = 6;
+ sst->buf = (uint8_t*)calloc(1,6);
+ memcpy(sst->buf,sst_buf,sst->size);
+
+
+ uint8_t *bufz = (uint8_t*)"SD1";
+ OCTET_STRING_t *sds = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sds->size = 3;
+ sds->buf = (uint8_t*)calloc(1,3);
+ memcpy(sds->buf, sd_buf, sds->size);
+
+
+ SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t));
+ ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai);
+ snssai->sST.buf = (uint8_t*)calloc(1,1);
+ snssai->sST.size = 1;
+ memcpy(snssai->sST.buf, sst_buf, 1);
+ snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ snssai->sD->buf = (uint8_t*)calloc(1,3);
+ snssai->sD->size = 3;
+ memcpy(snssai->sD->buf, sd_buf, 3);
+
+
+
+ SliceToReportListItem_t *slicelistitem = (SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t));
+ ASN_STRUCT_RESET(asn_DEF_SliceToReportListItem, slicelistitem);
+ slicelistitem->sliceID = *snssai;
+ int ret = ASN_SEQUENCE_ADD(&slicelistitem->fQIPERSlicesPerPlmnList.list, fqilistitem);
+
+ asn_codec_ctx_t *opt_cod;
+
+
+ uint8_t e2smbuffera[8192];
+ size_t e2smbuffer_sizea = 8192;
+
+
+
+ asn_enc_rval_t era =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_SliceToReportListItem,
+ slicelistitem, e2smbuffera, e2smbuffer_sizea);
+ fprintf(stderr, "inner er encded is %d\n", era.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+
+
+ FGC_CUUP_PM_Format_t *pm_format = (FGC_CUUP_PM_Format_t*)calloc(1,sizeof(FGC_CUUP_PM_Format_t));
+ ASN_STRUCT_RESET(asn_DEF_FGC_CUUP_PM_Format, pm_format);
+ ret = ASN_SEQUENCE_ADD(&pm_format->sliceToReportList.list, slicelistitem);
+
+ uint8_t *buf2 = (uint8_t*)"747";
+ // std::string pl = "PLMNID7";
+ // std::vector<uint8_t> plvec(pl.begin(), pl.end());
+ // uint8_t *buf2 = &plvec[0];
+
+ OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnid->buf = (uint8_t*)calloc(3,1);
+ plmnid->size = 3;
+ memcpy(plmnid->buf, plmnid_buf, plmnid->size);
+
+
+ PlmnID_List_t *plmnidlist = (PlmnID_List_t*)calloc(1,sizeof(PlmnID_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PlmnID_List, plmnidlist);
+ plmnidlist->pLMN_Identity = *plmnid;
+ plmnidlist->cu_UP_PM_5GC = pm_format;
+
+ CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, sizeof(CUUPMeasurement_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, meas_cont);
+ ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist);
+
+
+
+
+ PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, sizeof(PF_ContainerListItem_t));
+ ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1);
+ listitem1->interface_type = 2;
+ listitem1->o_CU_UP_PM_Container = *meas_cont;
+
+ OCUUP_PF_Container_t *cuupcont = (OCUUP_PF_Container_t*)calloc(1,sizeof(OCUUP_PF_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_OCUUP_PF_Container, cuupcont);
+ cuupcont->gNB_CU_UP_Name = gnbcuupname;
+ ret = ASN_SEQUENCE_ADD(&cuupcont->pf_ContainerList.list, listitem1);
+
+ PF_Container_PR pres1 = PF_Container_PR_oCU_UP;
+
+ PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer);
+ pfcontainer->present = pres1;
+ pfcontainer->choice.oCU_UP = *cuupcont;
+
+ PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
+ containers_list->performanceContainer = pfcontainer;
+
+ E2SM_KPM_IndicationMessage_Format1_t *format =
+ (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
+
+ ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
+
+ E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1;
+
+ indicationmessage->indicationMessage.present = pres;
+
+ indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ indicationmessage, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+
+}
+
+void encode_kpm_report_style5(E2SM_KPM_IndicationMessage_t* indicationmessage) {
+
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+
+ uint8_t *buf = (uint8_t*)"GNBCUUP5";
+ OCTET_STRING_t *gnbcuupname = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ gnbcuupname->size = 8;
+ gnbcuupname->buf = (uint8_t*)calloc(1,8);
+ memcpy(gnbcuupname->buf, buf, gnbcuupname->size);
+
+
+ INTEGER_t *bytesdl = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
+ uint8_t buffer[1];
+ buffer[0]= 40000;
+ bytesdl->buf = (uint8_t*)calloc(1,1);
+ memcpy(bytesdl->buf, buffer,1);
+ bytesdl->size = 1;
+
+ INTEGER_t *bytesul = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
+ uint8_t buffer1[1];
+ buffer1[0] = 50000;
+ bytesul->buf = (uint8_t*)calloc(1,1);
+ memcpy(bytesul->buf, buffer1, 1);
+ bytesul->size = 1;
+
+ FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, sizeof(FQIPERSlicesPerPlmnListItem_t));
+ ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, fqilistitem);
+ fqilistitem->fiveQI = 9;
+ fqilistitem->pDCPBytesDL = bytesdl;
+ fqilistitem->pDCPBytesUL = bytesul;
+
+
+ uint8_t *buf1 = (uint8_t*)"4";
+ OCTET_STRING_t *sst = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sst->size = 6;
+ sst->buf = (uint8_t*)calloc(1,6);
+ memcpy(sst->buf,buf1,sst->size);
+
+
+ uint8_t *bufz = (uint8_t*)"SD1";
+ OCTET_STRING_t *sds = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ sds->size = 3;
+ sds->buf = (uint8_t*)calloc(1,3);
+ memcpy(sds->buf, bufz, sds->size);
+
+
+ SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t));
+ ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai);
+ snssai->sST.buf = (uint8_t*)calloc(1,1);
+ snssai->sST.size = 1;
+ memcpy(snssai->sST.buf, buf1, 1);
+ snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ snssai->sD->buf = (uint8_t*)calloc(1,3);
+ snssai->sD->size = 3;
+ memcpy(snssai->sD->buf, bufz, 3);
+
+
+
+ SliceToReportListItem_t *slicelistitem = (SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t));
+ ASN_STRUCT_RESET(asn_DEF_SliceToReportListItem, slicelistitem);
+ slicelistitem->sliceID = *snssai;
+ int ret = ASN_SEQUENCE_ADD(&slicelistitem->fQIPERSlicesPerPlmnList.list, fqilistitem);
+
+ asn_codec_ctx_t *opt_cod;
+
+
+ uint8_t e2smbuffera[8192];
+ size_t e2smbuffer_sizea = 8192;
+
+
+
+ asn_enc_rval_t era =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_SliceToReportListItem,
+ slicelistitem, e2smbuffera, e2smbuffer_sizea);
+ fprintf(stderr, "inner er encded is %d\n", era.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+
+
+ FGC_CUUP_PM_Format_t *pm_format = (FGC_CUUP_PM_Format_t*)calloc(1,sizeof(FGC_CUUP_PM_Format_t));
+ ASN_STRUCT_RESET(asn_DEF_FGC_CUUP_PM_Format, pm_format);
+ ret = ASN_SEQUENCE_ADD(&pm_format->sliceToReportList.list, slicelistitem);
+
+ uint8_t *buf2 = (uint8_t*)"747";
+ // std::string pl = "PLMNID7";
+ // std::vector<uint8_t> plvec(pl.begin(), pl.end());
+ // uint8_t *buf2 = &plvec[0];
+
+ OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
+ plmnid->buf = (uint8_t*)calloc(3,1);
+ plmnid->size = 3;
+ memcpy(plmnid->buf, buf2, plmnid->size);
+
+
+ PlmnID_List_t *plmnidlist = (PlmnID_List_t*)calloc(1,sizeof(PlmnID_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PlmnID_List, plmnidlist);
+ plmnidlist->pLMN_Identity = *plmnid;
+ plmnidlist->cu_UP_PM_5GC = pm_format;
+
+ CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, sizeof(CUUPMeasurement_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, meas_cont);
+ ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist);
+
+
+
+
+ PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, sizeof(PF_ContainerListItem_t));
+ ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1);
+ listitem1->interface_type = 2;
+ listitem1->o_CU_UP_PM_Container = *meas_cont;
+
+ OCUUP_PF_Container_t *cuupcont = (OCUUP_PF_Container_t*)calloc(1,sizeof(OCUUP_PF_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_OCUUP_PF_Container, cuupcont);
+ cuupcont->gNB_CU_UP_Name = gnbcuupname;
+ ret = ASN_SEQUENCE_ADD(&cuupcont->pf_ContainerList.list, listitem1);
+
+ PF_Container_PR pres1 = PF_Container_PR_oCU_UP;
+
+ PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t));
+ ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer);
+ pfcontainer->present = pres1;
+ pfcontainer->choice.oCU_UP = *cuupcont;
+
+ PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
+ ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
+ containers_list->performanceContainer = pfcontainer;
+
+ E2SM_KPM_IndicationMessage_Format1_t *format =
+ (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
+ ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
+
+ ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
+
+ E2SM_KPM_IndicationMessage__indicationMessage_PR pres = E2SM_KPM_IndicationMessage__indicationMessage_PR_indicationMessage_Format1;
+
+ indicationmessage->indicationMessage.present = pres;
+
+ indicationmessage->indicationMessage.choice.indicationMessage_Format1 = *format;
+
+ char *error_buf = (char*)calloc(300, sizeof(char));
+ size_t errlen;
+
+ asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
+ printf("error length %d\n", errlen);
+ printf("error buf %s\n", error_buf);
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
+
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+ asn_enc_rval_t er =
+ asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ indicationmessage, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+
+}
+
void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) {
+
+ /*
ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
//std::string gn = "GNBCUUP5";
//std::vector<uint8_t> gnvec(gn.begin(), gn.end());
@@ -81,7 +1501,7 @@
asn_codec_ctx_t *opt_cod;
- /*
+
uint8_t e2smbuffera[8192];
size_t e2smbuffer_sizea = 8192;
@@ -94,7 +1514,8 @@
slicelistitem, e2smbuffera, e2smbuffer_sizea);
fprintf(stderr, "inner er encded is %d\n", era.encoded);
fprintf(stderr, "after encoding message\n");
- */
+
+
FGC_CUUP_PM_Format_t *pm_format = (FGC_CUUP_PM_Format_t*)calloc(1,sizeof(FGC_CUUP_PM_Format_t));
ASN_STRUCT_RESET(asn_DEF_FGC_CUUP_PM_Format, pm_format);
@@ -181,10 +1602,10 @@
fprintf(stderr, "er encded is %d\n", er.encoded);
fprintf(stderr, "after encoding message\n");
-
+ */
}
-
+/*
void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage) {
ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
std::string gn = "GNBCUUP5";
@@ -349,3 +1770,4 @@
}
+*/
diff --git a/e2sim/e2apv1sim/encode_kpm.hpp b/e2sim/e2apv1sim/encode_kpm.hpp
index 1385b7e..60b09e9 100644
--- a/e2sim/e2apv1sim/encode_kpm.hpp
+++ b/e2sim/e2apv1sim/encode_kpm.hpp
@@ -3,7 +3,35 @@
#include "asn_application.h"
#include "E2SM-KPM-IndicationMessage.h"
#include "FQIPERSlicesPerPlmnListItem.h"
+#include "E2SM-KPM-RANfunction-Description.h"
+#include "Timestamp.h"
void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage);
void encode_kpm_bak(E2SM_KPM_IndicationMessage_t* indicationmessage);
+
+void encode_kpm_function_description(E2SM_KPM_RANfunction_Description_t* ranfunc_desc);
+
+void encode_kpm_report_style5(E2SM_KPM_IndicationMessage_t* indicationmessage);
+
+void encode_kpm_odu_user_level(RAN_Container_t *ranco);
+
+void encode_kpm_ocucp_user_level(RAN_Container_t *ranco);
+
+void encode_kpm_ocuup_user_level(RAN_Container_t *ranco);
+
+void encode_kpm_report_rancontainer_du(E2SM_KPM_IndicationMessage_t *indMsg);
+
+void encode_kpm_report_rancontainer_cucp(E2SM_KPM_IndicationMessage_t *indMsg);
+
+void encode_kpm_report_rancontainer_cuup(E2SM_KPM_IndicationMessage_t *indMsg);
+
+void encode_kpm_report_style1(E2SM_KPM_IndicationMessage_t* indicationmessage);
+
+void encode_kpm_report_rancontainer_cucp_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage,uint8_t *plmnid_buf,uint8_t *nrcellid_buf,uint8_t *crnti_buf,const uint8_t *serving_buf, const uint8_t *neighbor_buf);
+
+void encode_kpm_report_rancontainer_cuup_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, uint8_t *plmnid_buf, uint8_t *nrcellid_buf, uint8_t *crnti_buf,int pdcp_bytesdl, int pdcp_bytesul);
+
+void encode_kpm_report_style1_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, long fiveqi, long dl_prb_usage, long ul_prb_usage, uint8_t* sd_buf, uint8_t* sst_buf,uint8_t* plmnid_buf, uint8_t* nrcellid_buf, long *dl_prbs, long *ul_prbs);
+
+void encode_kpm_report_style5_parameterized(E2SM_KPM_IndicationMessage_t* indicationmessage, uint8_t *gnbcuupname_buf, int bytes_dl,int bytes_ul, uint8_t *sst_buf, uint8_t *sd_buf, uint8_t *plmnid_buf);
diff --git a/e2sim/e2apv1sim/kpm_callbacks.cpp b/e2sim/e2apv1sim/kpm_callbacks.cpp
new file mode 100644
index 0000000..4fa4c8d
--- /dev/null
+++ b/e2sim/e2apv1sim/kpm_callbacks.cpp
@@ -0,0 +1,326 @@
+
+
+#include <iostream>
+#include <fstream>
+#include <vector>
+
+
+#include "OCUCP-PF-Container.h"
+#include "OCTET_STRING.h"
+#include "asn_application.h"
+#include "E2SM-KPM-IndicationMessage.h"
+#include "FQIPERSlicesPerPlmnListItem.h"
+#include "E2SM-KPM-RANfunction-Description.h"
+#include "Timestamp.h"
+#include "E2AP-PDU.h"
+#include "encode_kpm.hpp"
+#include "encode_e2apv1.hpp"
+#include "e2sim.hpp"
+
+using namespace std;
+
+struct neighbor_cell_entry {
+ char *cellid;
+ int rsrp;
+ int rsrq;
+ int rssinr;
+
+};
+
+void run_report_loop(long requestorId, long instanceId, long ranFunctionId, long actionId, int socket_fd) {
+
+ //Process simulation file
+
+ ifstream simfile;
+ string line;
+
+ long seqNum = 1;
+
+ simfile.open("simulation.txt", ios::in);
+
+ if (simfile.is_open()) {
+
+ while (getline(simfile, line)) {
+ cout << line << "\n";
+
+ //REPORT Message 1 -- Encode and send ODU cell-level report
+
+ E2SM_KPM_IndicationMessage_t *ind_msg1 =
+ (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t));
+ E2AP_PDU *pdu = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU));
+
+ long fiveqi = 7;
+ uint8_t *sst_buf = (uint8_t*)"1";
+ uint8_t *sd_buf = (uint8_t*)"100";
+ uint8_t *plmnid_buf = (uint8_t*)"747";
+ uint8_t *nrcellid_buf = (uint8_t*)"12340";
+ long dl_prbs = 100;
+ long ul_prbs = 50;
+
+ encode_kpm_report_style1_parameterized(ind_msg1, fiveqi, dl_prbs, ul_prbs, sst_buf, sd_buf, plmnid_buf, nrcellid_buf, &dl_prbs, &ul_prbs);
+
+ uint8_t e2smbuffer[8192];
+ size_t e2smbuffer_size = 8192;
+ asn_codec_ctx_t *opt_cod;
+
+ asn_enc_rval_t er = asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ ind_msg1, e2smbuffer, e2smbuffer_size);
+
+ fprintf(stderr, "er encded is %d\n", er.encoded);
+ fprintf(stderr, "after encoding message\n");
+ uint8_t *e2smheader_buf = (uint8_t*)"header";
+
+ uint8_t *cpid_buf = (uint8_t*)"CPID";
+
+ fprintf(stderr, "About to encode Indication\n");
+ generate_e2apv1_indication_request_parameterized(pdu, requestorId,
+ instanceId, ranFunctionId,
+ actionId, seqNum, e2smheader_buf, 6, e2smbuffer, er.encoded);
+
+ encode_and_send_sctp_data(pdu, socket_fd);
+
+ seqNum++;
+
+ //REPORT Message 2 -- Encode and send OCUUP cell-level report
+
+ uint8_t *buf = (uint8_t*)"GNBCUUP5";
+
+ int bytes_dl = 40000;
+ int bytes_ul = 50000;
+
+ E2SM_KPM_IndicationMessage_t *ind_msg2 =
+ (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t));
+ E2AP_PDU *pdu2 = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU));
+
+ encode_kpm_report_style5_parameterized(ind_msg2 , buf, bytes_dl, bytes_ul, sst_buf, sd_buf, plmnid_buf);
+
+ uint8_t e2smbuffer2[8192];
+ size_t e2smbuffer_size2 = 8192;
+
+
+ asn_enc_rval_t er2 = asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ ind_msg2, e2smbuffer2, e2smbuffer_size2);
+
+ fprintf(stderr, "er encded is %d\n", er2.encoded);
+ fprintf(stderr, "after encoding message\n");
+ uint8_t *e2smheader_buf2 = (uint8_t*)"header";
+
+ generate_e2apv1_indication_request_parameterized(pdu2, requestorId,
+ instanceId, ranFunctionId,
+ actionId, seqNum, e2smheader_buf2, 6, e2smbuffer2, er2.encoded);
+
+ encode_and_send_sctp_data(pdu2, socket_fd);
+
+ seqNum++;
+
+ //REPORT Message 3 -- Encode and send OCUCP user-level report
+
+ E2SM_KPM_IndicationMessage_t *ind_msg3 =
+ (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t));
+ E2AP_PDU *pdu3 = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU));
+
+ uint8_t *crnti_buf = (uint8_t*)"12";
+ // uint8_t *serving_buf = (uint8_t*)"RSRP10";
+ //uint8_t *neighbor_buf = (uint8_t*)"-10,-15";
+ int rsrpServ = 10;
+ int rsrqServ = 0;
+ int rssinrServ = 0;
+
+ std::string serving_str = "{\"rsrp\": " + std::to_string(rsrpServ) + ", \"rsrq\": " +
+ std::to_string(rsrqServ) + ", \"rssinr\": " + std::to_string(rssinrServ) + "}";
+ const uint8_t *serving_buf = reinterpret_cast<const uint8_t*>(serving_str.c_str());
+
+
+ neighbor_cell_entry n_entries[3];
+ n_entries[0] = {"123", 10, 0, 0};
+ n_entries[1] = {"456", 10, 0, 0};
+ n_entries[2] = {"789", 10, 0, 0};
+
+ std::string neighbor_str = "[";
+
+ for (int i=0; i < sizeof(n_entries)/sizeof(n_entries[0]); i++) {
+
+ if (i != 0) {
+ neighbor_str += ",";
+ }
+ neighbor_str += "{\"CID\" : \"" + std::string(n_entries[i].cellid) + "\", \"Cell-RF\" : \"{\"rsrp\": " + std::to_string(n_entries[i].rsrp) +
+ ", \"rsrq\": " + std::to_string(n_entries[i].rsrq) + ", \"rssinr\": " + std::to_string(n_entries[i].rsrp) + "}}";
+ }
+
+ neighbor_str += "]";
+
+ const uint8_t *neighbor_buf = reinterpret_cast<const uint8_t*>(neighbor_str.c_str());
+
+ printf("Neighbor string\n%s", neighbor_buf);
+
+ encode_kpm_report_rancontainer_cucp_parameterized(ind_msg3, plmnid_buf, nrcellid_buf, crnti_buf, serving_buf, neighbor_buf);
+
+ uint8_t e2smbuffer3[8192];
+ size_t e2smbuffer_size3 = 8192;
+
+ asn_enc_rval_t er3 = asn_encode_to_buffer(opt_cod,
+ ATS_ALIGNED_BASIC_PER,
+ &asn_DEF_E2SM_KPM_IndicationMessage,
+ ind_msg3, e2smbuffer3, e2smbuffer_size3);
+
+ fprintf(stderr, "er encded is %d\n", er3.encoded);
+ fprintf(stderr, "after encoding message\n");
+ uint8_t *e2smheader_buf3 = (uint8_t*)"header";
+
+ generate_e2apv1_indication_request_parameterized(pdu3, requestorId,
+ instanceId, ranFunctionId,
+ actionId, seqNum, e2smheader_buf3, 6, e2smbuffer3, er3.encoded);
+
+ encode_and_send_sctp_data(pdu3, socket_fd);
+
+ seqNum++;
+
+ //Encode and send OCUUP user-level report
+
+
+
+ //Encode and send ODU user-level report
+
+
+
+
+ }
+
+ simfile.close();
+
+ }
+
+}
+
+void callback_kpm_subscription_request(E2AP_PDU_t *sub_req_pdu, int socket_fd) {
+
+
+ //Record RIC Request ID
+ //Go through RIC action to be Setup List
+ //Find first entry with REPORT action Type
+ //Record ricActionID
+ //Encode subscription response
+
+ RICsubscriptionRequest_t orig_req =
+ sub_req_pdu->choice.initiatingMessage->value.choice.RICsubscriptionRequest;
+
+ RICsubscriptionResponse_IEs_t *ricreqid =
+ (RICsubscriptionResponse_IEs_t*)calloc(1, sizeof(RICsubscriptionResponse_IEs_t));
+
+ int count = orig_req.protocolIEs.list.count;
+ int size = orig_req.protocolIEs.list.size;
+
+ RICsubscriptionRequest_IEs_t **ies = (RICsubscriptionRequest_IEs_t**)orig_req.protocolIEs.list.array;
+
+ fprintf(stderr, "count%d\n", count);
+ fprintf(stderr, "size%d\n", size);
+
+ RICsubscriptionRequest_IEs__value_PR pres;
+
+ long reqRequestorId;
+ long reqInstanceId;
+ long reqActionId;
+
+ std::vector<long> actionIdsAccept;
+ std::vector<long> actionIdsReject;
+
+ for (int i=0; i < count; i++) {
+ RICsubscriptionRequest_IEs_t *next_ie = ies[i];
+ pres = next_ie->value.present;
+
+ fprintf(stderr, "next present value %d\n", pres);
+
+ switch(pres) {
+ case RICsubscriptionRequest_IEs__value_PR_RICrequestID:
+ {
+ RICrequestID_t reqId = next_ie->value.choice.RICrequestID;
+ long requestorId = reqId.ricRequestorID;
+ long instanceId = reqId.ricInstanceID;
+ fprintf(stderr, "requestorId %d\n", requestorId);
+ fprintf(stderr, "instanceId %d\n", instanceId);
+ reqRequestorId = requestorId;
+ reqInstanceId = instanceId;
+
+ break;
+ }
+ case RICsubscriptionRequest_IEs__value_PR_RANfunctionID:
+ break;
+ case RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails:
+ {
+ RICsubscriptionDetails_t subDetails = next_ie->value.choice.RICsubscriptionDetails;
+ RICeventTriggerDefinition_t triggerDef = subDetails.ricEventTriggerDefinition;
+ RICactions_ToBeSetup_List_t actionList = subDetails.ricAction_ToBeSetup_List;
+
+ //We are ignoring the trigger definition
+
+ //We identify the first action whose type is REPORT
+ //That is the only one accepted; all others are rejected
+
+ int actionCount = actionList.list.count;
+ fprintf(stderr, "action count%d\n", actionCount);
+
+ auto **item_array = actionList.list.array;
+
+ bool foundAction = false;
+
+ for (int i=0; i < actionCount; i++) {
+
+ auto *next_item = item_array[i];
+ RICactionID_t actionId = ((RICaction_ToBeSetup_ItemIEs*)next_item)->value.choice.RICaction_ToBeSetup_Item.ricActionID;
+ RICactionType_t actionType = ((RICaction_ToBeSetup_ItemIEs*)next_item)->value.choice.RICaction_ToBeSetup_Item.ricActionType;
+
+ if (!foundAction && actionType == RICactionType_report) {
+ reqActionId = actionId;
+ actionIdsAccept.push_back(reqActionId);
+ printf("adding accept\n");
+ foundAction = true;
+ } else {
+ reqActionId = actionId;
+ printf("adding reject\n");
+ actionIdsReject.push_back(reqActionId);
+ }
+ }
+
+ break;
+ }
+ }
+
+ }
+
+ fprintf(stderr, "After Processing Subscription Request\n");
+
+ fprintf(stderr, "requestorId %d\n", reqRequestorId);
+ fprintf(stderr, "instanceId %d\n", reqInstanceId);
+
+
+ for (int i=0; i < actionIdsAccept.size(); i++) {
+ fprintf(stderr, "Action ID %d %ld\n", i, actionIdsAccept.at(i));
+
+ }
+
+ E2AP_PDU *e2ap_pdu = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU));
+
+ long *accept_array = &actionIdsAccept[0];
+ long *reject_array = &actionIdsReject[0];
+ int accept_size = actionIdsAccept.size();
+ int reject_size = actionIdsReject.size();
+
+ generate_e2apv1_subscription_response_success(e2ap_pdu, accept_array, reject_array, accept_size, reject_size, reqRequestorId, reqInstanceId);
+
+ encode_and_send_sctp_data(e2ap_pdu,socket_fd);
+
+ //Start thread for sending REPORT messages
+
+ // std::thread loop_thread;
+
+ long funcId = 1;
+
+ run_report_loop(reqRequestorId, reqInstanceId, funcId, reqActionId, socket_fd);
+
+ // loop_thread = std::thread(&run_report_loop);
+
+}
diff --git a/e2sim/e2apv1sim/kpm_callbacks.hpp b/e2sim/e2apv1sim/kpm_callbacks.hpp
new file mode 100644
index 0000000..ef590a2
--- /dev/null
+++ b/e2sim/e2apv1sim/kpm_callbacks.hpp
@@ -0,0 +1,4 @@
+
+void callback_kpm_subscription_request(E2AP_PDU_t *pdu, int socket_fd);
+
+void run_report_loop(long requestorId, long instanceId, long ranFunctionId, long actionId);
diff --git a/e2sim/e2apv1sim/ricsim.cpp b/e2sim/e2apv1sim/ricsim.cpp
index 28f87d4..d91c9e5 100644
--- a/e2sim/e2apv1sim/ricsim.cpp
+++ b/e2sim/e2apv1sim/ricsim.cpp
@@ -62,6 +62,8 @@
}
*/
+int client_fd = 0;
+
void encode_and_send_sctp_data(E2AP_PDU_t* pdu, int client_fd)
{
uint8_t *buf;
@@ -73,6 +75,18 @@
sctp_send_data(client_fd, data);
}
+
+void encode_and_send_sctp_data(E2AP_PDU_t* pdu)
+{
+ uint8_t *buf;
+ sctp_buffer_t data;
+
+ data.len = e2ap_asn1c_encode_pdu(pdu, &buf);
+ memcpy(data.buffer, buf, min(data.len, MAX_SCTP_BUFFER));
+
+ sctp_send_data(client_fd, data);
+}
+
void wait_for_sctp_data(int client_fd)
{
sctp_buffer_t recv_buf;
@@ -93,7 +107,7 @@
options_t ops = read_input_options(argc, argv);
int server_fd = sctp_start_server(ops.server_ip, ops.server_port);
- int client_fd = sctp_accept_connection(ops.server_ip, server_fd);
+ client_fd = sctp_accept_connection(ops.server_ip, server_fd);
sctp_buffer_t recv_buf;
diff --git a/e2sim/e2apv1sim/ricsim.hpp b/e2sim/e2apv1sim/ricsim.hpp
new file mode 100644
index 0000000..9af2552
--- /dev/null
+++ b/e2sim/e2apv1sim/ricsim.hpp
@@ -0,0 +1,5 @@
+#include "E2AP-PDU.h"
+
+void encode_and_send_sctp_data(E2AP_PDU_t* pdu);
+
+void encode_and_send_sctp_data(E2AP_PDU_t* pdu, int socket_fd);
diff --git a/e2sim/e2apv1sim/simulation.txt b/e2sim/e2apv1sim/simulation.txt
new file mode 100644
index 0000000..c1eedb7
--- /dev/null
+++ b/e2sim/e2apv1sim/simulation.txt
@@ -0,0 +1,3 @@
+This is a silulation file
+This is a simulation
+This is a a a a a simulation file!
diff --git a/e2sim/e2apv1sim/src/E2AP/e2ap_message_handler.cpp b/e2sim/e2apv1sim/src/E2AP/e2ap_message_handler.cpp
index efdf175..44f028d 100644
--- a/e2sim/e2apv1sim/src/E2AP/e2ap_message_handler.cpp
+++ b/e2sim/e2apv1sim/src/E2AP/e2ap_message_handler.cpp
@@ -19,12 +19,13 @@
# *
******************************************************************************/
#include "e2ap_message_handler.hpp"
-#include <unistd.h>
+
//#include <iostream>
//#include <vector>
#include "encode_e2apv1.hpp"
+#include "kpm_callbacks.hpp"
-
+#include <unistd.h>
void e2ap_handle_sctp_data(int &socket_fd, sctp_buffer_t &data, bool xmlenc)
{
@@ -37,11 +38,11 @@
asn_transfer_syntax syntax;
- if (!xmlenc)
- syntax = ATS_ALIGNED_BASIC_PER;
- else
- syntax = ATS_BASIC_XER;
+ syntax = ATS_ALIGNED_BASIC_PER;
+
+
+ fprintf(stderr, "full buffer\n%s\n", data.buffer);
// e2ap_asn1c_decode_pdu(pdu, data.buffer, data.len);
auto rval = asn_decode(nullptr, syntax, &asn_DEF_E2AP_PDU, (void **) &pdu,
@@ -70,7 +71,7 @@
switch(index)
{
case E2AP_PDU_PR_initiatingMessage:
- e2ap_handle_E2SetupRequest(pdu, socket_fd);
+ e2ap_handle_E2SetupRequest(pdu, socket_fd);
LOG_I("[E2AP] Received SETUP-REQUEST");
break;
@@ -112,7 +113,8 @@
{
case E2AP_PDU_PR_initiatingMessage: //initiatingMessage
LOG_I("[E2AP] Received RIC-SUBSCRIPTION-REQUEST");
- e2ap_handle_RICSubscriptionRequest(pdu, socket_fd);
+ // e2ap_handle_RICSubscriptionRequest(pdu, socket_fd);
+ callback_kpm_subscription_request(pdu, socket_fd);
// e2ap_handle_RICSubscriptionRequest_securityDemo(pdu, socket_fd);
break;
diff --git a/e2sim/e2apv1sim/src/E2AP/e2ap_message_handler.hpp b/e2sim/e2apv1sim/src/E2AP/e2ap_message_handler.hpp
index 9dca085..9c23165 100644
--- a/e2sim/e2apv1sim/src/E2AP/e2ap_message_handler.hpp
+++ b/e2sim/e2apv1sim/src/E2AP/e2ap_message_handler.hpp
@@ -19,8 +19,10 @@
#ifndef E2AP_MESSAGE_HANDLER_HPP
#define E2AP_MESSAGE_HANDLER_HPP
+
#include "e2sim_sctp.hpp"
+
extern "C" {
#include "e2sim_defs.h"
#include "e2ap_asn1c_codec.h"