- int numMeasReports = (all_ues_json["/ueMeasReport/ueMeasReportList"_json_pointer]).size();
-
-
- for (int i = 0; i < numMeasReports; i++) {
- int nextCellId;
- int nextRsrp;
- int nextRsrq;
- int nextRssinr;
- float tput;
- int prb_usage;
- fprintf(stderr,"UE number %d\n", i);
-
- json::json_pointer p0(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/throughput");
- tput = all_ues_json[p0].get<float>();
- fprintf(stderr, "Throughput %f\n", tput);
-
- json::json_pointer p00(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/prb_usage");
- prb_usage = all_ues_json[p00].get<int>();
- fprintf(stderr, "Throughput %d\n", prb_usage);
-
- json::json_pointer p1(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/nrCellIdentity");
- nextCellId = all_ues_json[p1].get<int>();
- fprintf(stderr, "Serving Cell %d\n",nextCellId);
-
- json::json_pointer p2(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rsrp");
- nextRsrp = all_ues_json[p2].get<int>();
- fprintf(stderr," RSRP %d\n", nextRsrp);
-
- json::json_pointer p3(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rsrq");
- nextRsrq = all_ues_json[p3].get<int>();
- fprintf(stderr," RSRQ %d\n",nextRsrq);
-
- json::json_pointer p4(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/servingCellRfReport/rssinr");
- nextRssinr = all_ues_json[p4].get<int>();
- fprintf(stderr," RSSINR %d\n", nextRssinr);
-
- json::json_pointer p5(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/neighbourCellList");
-
- uint8_t *crnti_buf = (uint8_t*)calloc(1,2);
-
- uint8_t *buf2 = (uint8_t*)"12";
- memcpy(crnti_buf, buf2, 2);
-
-
- std::string serving_str = "{\"rsrp\": " + std::to_string(nextRsrp) + ", \"rsrq\": " +
- std::to_string(nextRsrq) + ", \"rssinr\": " + std::to_string(nextRssinr) + "}";
- const uint8_t *serving_buf = reinterpret_cast<const uint8_t*>(serving_str.c_str());
-
- int numNeighborCells = (all_ues_json[p5]).size();
-
- std::string neighbor_str = "[";
-
- int nextNbCell;
- int nextNbRsrp;
- int nextNbRsrq;
- int nextNbRssinr;
-
- for (int j = 0; j < numNeighborCells; j++) {
- json::json_pointer p8(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i) +"/neighbourCellList/" + std::to_string(j) + "/nbCellIdentity");
- nextNbCell = all_ues_json[p8].get<int>();
- //cout << "Neighbor Cell " << all_ues_json[p8] << endl;
- json::json_pointer p9(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i)
- +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rsrp");
- nextNbRsrp = all_ues_json[p9].get<int>();
- //cout << " RSRP " << nextNbRsrp << endl;
-
- json::json_pointer p10(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i)
- +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rsrq");
- nextNbRsrq = all_ues_json[p10].get<int>();
- //cout << " RSRQ " << nextNbRsrq << endl;
-
- json::json_pointer p11(std::string("/ueMeasReport/ueMeasReportList/") + std::to_string(i)
- +"/neighbourCellList/" + std::to_string(j) + "/nbCellRfReport/rssinr");
- nextNbRssinr = all_ues_json[p11].get<int>();
- //cout << " RSSINR " << nextNbRssinr << endl;
-
- if (j != 0) {
- neighbor_str += ",";
-
- }
-
- neighbor_str += "{\"CID\" : \"" + std::to_string(nextNbCell) + "\", \"Cell-RF\" : \"{\"rsrp\": " + std::to_string(nextNbRsrp) +
- ", \"rsrq\": " + std::to_string(nextNbRsrq) + ", \"rssinr\": " + std::to_string(nextNbRssinr) + "}}";
-
- }
-
- neighbor_str += "]";
-
- fprintf(stderr,"This is neighbor str %s\n", neighbor_str.c_str());
-
- //Creating UE-level RAN-Container CUCP message
-
- fprintf(stderr,"Creating UE-level RAN-Container CUCP message\n");
-
- const uint8_t *neighbor_buf = reinterpret_cast<const uint8_t*>(neighbor_str.c_str());
- uint8_t *plmnid_buf = (uint8_t*)"747";
- uint8_t *nrcellid_buf = (uint8_t*)"12340";
-
- E2SM_KPM_IndicationMessage_t *ind_msg_cucp_ue =
- (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t));
-
- encode_kpm_report_rancontainer_cucp_parameterized(ind_msg_cucp_ue, plmnid_buf, nrcellid_buf, crnti_buf, serving_buf, neighbor_buf);
-
- uint8_t e2sm_message_buf_cucp_ue[8192];
- size_t e2sm_message_buf_size_cucp_ue = 8192;
-
- asn_codec_ctx_t *opt_cod;
-
-
- asn_enc_rval_t er_message_cucp_ue = asn_encode_to_buffer(opt_cod,
- ATS_ALIGNED_BASIC_PER,
- &asn_DEF_E2SM_KPM_IndicationMessage,
- ind_msg_cucp_ue, e2sm_message_buf_cucp_ue, e2sm_message_buf_size_cucp_ue);
-
- fprintf(stderr, "er encded is %d\n", er_message_cucp_ue.encoded);
- fprintf(stderr, "after encoding message\n");
-
- E2SM_KPM_IndicationHeader_t* ind_header_cucp_ue =
- (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t));
- encode_e2sm_kpm_indication_header(ind_header_cucp_ue);
- fprintf(stderr, "Now printing xer outside of function call\n");
- xer_fprint(stderr, &asn_DEF_E2SM_KPM_IndicationHeader, ind_header_cucp_ue);
-
- uint8_t e2sm_header_buf_cucp_ue[8192];
- size_t e2sm_header_buf_size_cucp_ue = 8192;
-
- asn_enc_rval_t er_header_cucp_ue = asn_encode_to_buffer(opt_cod,
- ATS_ALIGNED_BASIC_PER,
- &asn_DEF_E2SM_KPM_IndicationHeader,
- ind_header_cucp_ue, e2sm_header_buf_cucp_ue, e2sm_header_buf_size_cucp_ue);
-
- fprintf(stderr, "er encded is %d\n", er_header_cucp_ue.encoded);
- fprintf(stderr, "error buf is %s\n", (char*)e2sm_header_buf_cucp_ue);
- fprintf(stderr, "after encoding header\n");
-
- E2AP_PDU *pdu_cucp_ue = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU));
-
- encoding::generate_e2apv1_indication_request_parameterized(pdu_cucp_ue, requestorId,
- instanceId, ranFunctionId,
- actionId, seqNum, e2sm_header_buf_cucp_ue,
- er_header_cucp_ue.encoded, e2sm_message_buf_cucp_ue,
- er_message_cucp_ue.encoded);
-
-
- e2sim.encode_and_send_sctp_data(pdu_cucp_ue);
-
- seqNum++;
-
- std::this_thread::sleep_for (std::chrono::seconds(2));
-
- //Creating UE-level RAN-Container CUUP message
-
- fprintf(stderr,"Creating UE-level RAN-Container CUUP message\n");
-
- E2SM_KPM_IndicationMessage_t *ind_msg_cuup_ue =
- (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t));
-
- long bytes = (long)(tput * 100);
-
- encode_kpm_report_rancontainer_cuup_parameterized(ind_msg_cuup_ue, plmnid_buf, nrcellid_buf, crnti_buf, bytes, 0);
-
- uint8_t e2sm_message_buf_cuup_ue[8192];
- size_t e2sm_message_buf_size_cuup_ue = 8192;
-
- asn_codec_ctx_t *opt_cod2;
-
-
- asn_enc_rval_t er_message_cuup_ue = asn_encode_to_buffer(opt_cod2,
- ATS_ALIGNED_BASIC_PER,
- &asn_DEF_E2SM_KPM_IndicationMessage,
- ind_msg_cuup_ue, e2sm_message_buf_cuup_ue, e2sm_message_buf_size_cuup_ue);
-
- fprintf(stderr, "er encded is %d\n", er_message_cuup_ue.encoded);
- fprintf(stderr, "after encoding message\n");
-
- E2SM_KPM_IndicationHeader_t* ind_header_cuup_ue =
- (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t));
- encode_e2sm_kpm_indication_header(ind_header_cuup_ue);
-
- uint8_t e2sm_header_buf_cuup_ue[8192];
- size_t e2sm_header_buf_size_cuup_ue = 8192;
-
- asn_enc_rval_t er_header_cuup_ue = asn_encode_to_buffer(opt_cod,
- ATS_ALIGNED_BASIC_PER,
- &asn_DEF_E2SM_KPM_IndicationHeader,
- ind_header_cuup_ue, e2sm_header_buf_cuup_ue, e2sm_header_buf_size_cuup_ue);
-
-
- E2AP_PDU *pdu_cuup_ue = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU));
-
- encoding::generate_e2apv1_indication_request_parameterized(pdu_cuup_ue, requestorId,
- instanceId, ranFunctionId,
- actionId, seqNum, e2sm_header_buf_cuup_ue,
- er_header_cuup_ue.encoded,
- e2sm_message_buf_cuup_ue, er_message_cuup_ue.encoded);
-
- e2sim.encode_and_send_sctp_data(pdu_cuup_ue);
-
- seqNum++;
-
- std::this_thread::sleep_for (std::chrono::seconds(2));
-
- //Creating UE-level RAN-Container DU message
-
- fprintf(stderr,"Creating UE-level RAN-Container DU message\n");
-
- E2SM_KPM_IndicationMessage_t *ind_message_du_ue =
- (E2SM_KPM_IndicationMessage_t*)calloc(1,sizeof(E2SM_KPM_IndicationMessage_t));
-
- encode_kpm_report_rancontainer_du_parameterized(ind_message_du_ue,
- plmnid_buf, nrcellid_buf, crnti_buf, prb_usage, 0);
-
- uint8_t e2sm_message_buf_du_ue[8192];
- size_t e2sm_message_buf_size_du_ue = 8192;
-
- asn_codec_ctx_t *opt_cod3;
-
-
- asn_enc_rval_t er_message_du_ue = asn_encode_to_buffer(opt_cod3,
- ATS_ALIGNED_BASIC_PER,
- &asn_DEF_E2SM_KPM_IndicationMessage,
- ind_message_du_ue,
- e2sm_message_buf_du_ue,
- e2sm_message_buf_size_du_ue);
-
- fprintf(stderr, "er encded is %d\n", er_message_du_ue.encoded);
- fprintf(stderr, "after encoding message\n");
-
- E2SM_KPM_IndicationHeader_t* ind_header_du_ue =
- (E2SM_KPM_IndicationHeader_t*)calloc(1,sizeof(E2SM_KPM_IndicationHeader_t));
- encode_e2sm_kpm_indication_header(ind_header_du_ue);
-
- uint8_t e2sm_header_buf_du_ue[8192];
- size_t e2sm_header_buf_size_du_ue = 8192;
-
- asn_enc_rval_t er_header_du_ue = asn_encode_to_buffer(opt_cod,
- ATS_ALIGNED_BASIC_PER,
- &asn_DEF_E2SM_KPM_IndicationHeader,
- ind_header_du_ue, e2sm_header_buf_du_ue,
- e2sm_header_buf_size_du_ue);
-
-
- E2AP_PDU *pdu_du_ue = (E2AP_PDU*)calloc(1,sizeof(E2AP_PDU));
-
- encoding::generate_e2apv1_indication_request_parameterized(pdu_du_ue, requestorId,
- instanceId, ranFunctionId,
- actionId, seqNum,
- e2sm_header_buf_du_ue, er_header_du_ue.encoded,
- e2sm_message_buf_du_ue, er_message_du_ue.encoded);
-
- e2sim.encode_and_send_sctp_data(pdu_du_ue);
-
- seqNum++;
-
- std::this_thread::sleep_for (std::chrono::seconds(2));
-
- fprintf(stderr, "done with ue meas report\n");
- }