+
+void encode_e2sm_kpm_indication_header(E2SM_KPM_IndicationHeader_t *ihead) {
+
+ uint8_t *plmnid_buf = (uint8_t*)"747";
+ uint8_t *sst_buf = (uint8_t*)"1";
+ uint8_t *sd_buf = (uint8_t*)"100";
+
+ E2SM_KPM_IndicationHeader_Format1_t* ind_header =
+ (E2SM_KPM_IndicationHeader_Format1_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_Format1_t));
+
+ 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);
+
+ long fqival = 9;
+ long qcival = 9;
+
+ 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);
+
+
+ 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);
+
+
+ ind_header->pLMN_Identity = plmnid;
+ ind_header->fiveQI = &fqival;
+
+ BIT_STRING_t *nrcellid = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t));;
+ nrcellid->buf = (uint8_t*)calloc(1,5);
+ nrcellid->size = 5;
+ nrcellid->buf[0] = 0x22;
+ nrcellid->buf[1] = 0x5B;
+ nrcellid->buf[2] = 0xD6;
+ nrcellid->buf[3] = 0x00;
+ nrcellid->buf[4] = 0x70;
+
+ nrcellid->bits_unused = 4;
+
+ BIT_STRING_t *gnb_bstring = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t));;
+ gnb_bstring->buf = (uint8_t*)calloc(1,4);
+ gnb_bstring->size = 4;
+ gnb_bstring->buf[0] = 0xB5;
+ gnb_bstring->buf[1] = 0xC6;
+ gnb_bstring->buf[2] = 0x77;
+ gnb_bstring->buf[3] = 0x88;
+
+ gnb_bstring->bits_unused = 3;
+
+ INTEGER_t *cuup_id = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
+ uint8_t buffer[1];
+ buffer[0] = 20000;
+ cuup_id->buf = (uint8_t*)calloc(1,1);
+ memcpy(cuup_id->buf, buffer, 1);
+ cuup_id->size = 1;
+
+ ind_header->id_GlobalKPMnode_ID = (GlobalKPMnode_ID*)calloc(1,sizeof(GlobalKPMnode_ID));
+ ind_header->id_GlobalKPMnode_ID->present = GlobalKPMnode_ID_PR_gNB;
+ ind_header->id_GlobalKPMnode_ID->choice.gNB.global_gNB_ID.gnb_id.present = GNB_ID_Choice_PR_gnb_ID;
+ ind_header->id_GlobalKPMnode_ID->choice.gNB.global_gNB_ID.gnb_id.choice.gnb_ID = *gnb_bstring;
+ ind_header->id_GlobalKPMnode_ID->choice.gNB.global_gNB_ID.plmn_id = *plmnid;
+ ind_header->id_GlobalKPMnode_ID->choice.gNB.gNB_CU_UP_ID = cuup_id;
+
+ ind_header->nRCGI = (NRCGI*)calloc(1,sizeof(NRCGI));
+ ind_header->nRCGI->pLMN_Identity = *plmnid;
+ ind_header->nRCGI->nRCellIdentity = *nrcellid;
+
+ ind_header->sliceID = snssai;
+ ind_header->qci = &qcival;
+ // ind_header->message_Type = ;
+ // ind_header->gNB_DU_ID = ;
+
+
+ uint8_t *buf5 = (uint8_t*)"GNBCUUP5";
+ OCTET_STRING_t *cuupname = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
+ cuupname->size = 8;
+ cuupname->buf = (uint8_t*)calloc(1,8);
+ memcpy(cuupname->buf, buf5, cuupname->size);
+
+
+ ind_header->gNB_Name = (GNB_Name*)calloc(1,sizeof(GNB_Name));
+ ind_header->gNB_Name->present = GNB_Name_PR_gNB_CU_UP_Name;
+ ind_header->gNB_Name->choice.gNB_CU_UP_Name = *cuupname;
+
+
+ // ind_header->global_GNB_ID = (GlobalgNB_ID*)calloc(1,sizeof(GlobalgNB_ID));
+ // ind_header->global_GNB_ID->plmn_id = *plmnid;
+ // ind_header->global_GNB_ID->gnb_id.present = GNB_ID_Choice_PR_gnb_ID;
+ // ind_header->global_GNB_ID->gnb_id.choice.gnb_ID = *gnb_bstring;
+
+
+ ihead->present = E2SM_KPM_IndicationHeader_PR_indicationHeader_Format1;
+ ihead->choice.indicationHeader_Format1 = *ind_header;
+
+ xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationHeader, ihead);
+
+}
+
+
+
+void encode_kpm_ocuup_user_level(RAN_Container_t *ranco,
+ uint8_t *plmnid_buf,
+ uint8_t *nrcellid_buf,
+ uint8_t *crnti_buf,
+ int bytes_dl,
+ int bytes_ul) {