fixes: segmentation faults issues in RRC CM for RRC Measurement report, clean-up and re-implementation of functions in RAN API
This commit is contained in:
committed by
Robert Schmidt
parent
9ec157d9e1
commit
7024f289a6
@@ -412,7 +412,6 @@ int flexran_agent_rrc_stats_reply(mid_t mod_id,
|
|||||||
Protocol__FlexEutraMeasurements **eutra_meas = NULL;
|
Protocol__FlexEutraMeasurements **eutra_meas = NULL;
|
||||||
|
|
||||||
if (neigh_meas->n_eutra_meas > 0) {
|
if (neigh_meas->n_eutra_meas > 0) {
|
||||||
|
|
||||||
eutra_meas = malloc(sizeof(Protocol__FlexEutraMeasurements) * neigh_meas->n_eutra_meas);
|
eutra_meas = malloc(sizeof(Protocol__FlexEutraMeasurements) * neigh_meas->n_eutra_meas);
|
||||||
if (eutra_meas == NULL) {
|
if (eutra_meas == NULL) {
|
||||||
free(neigh_meas);
|
free(neigh_meas);
|
||||||
@@ -438,38 +437,48 @@ int flexran_agent_rrc_stats_reply(mid_t mod_id,
|
|||||||
eutra_meas[j]->phys_cell_id = flexran_get_rrc_neigh_phy_cell_id(mod_id, rnti, j);
|
eutra_meas[j]->phys_cell_id = flexran_get_rrc_neigh_phy_cell_id(mod_id, rnti, j);
|
||||||
eutra_meas[j]->has_phys_cell_id = 1;
|
eutra_meas[j]->has_phys_cell_id = 1;
|
||||||
|
|
||||||
/* Initialize CGI measurements. */
|
if (flexran_get_rrc_neigh_cgi(mod_id, rnti, j)) {
|
||||||
Protocol__FlexEutraCgiMeasurements *cgi_meas;
|
/* Initialize CGI measurements. */
|
||||||
cgi_meas = malloc(sizeof(Protocol__FlexEutraCgiMeasurements));
|
Protocol__FlexEutraCgiMeasurements *cgi_meas;
|
||||||
|
cgi_meas = malloc(sizeof(Protocol__FlexEutraCgiMeasurements));
|
||||||
|
|
||||||
protocol__flex_eutra_cgi_measurements__init(cgi_meas);
|
protocol__flex_eutra_cgi_measurements__init(cgi_meas);
|
||||||
|
|
||||||
/* EUTRA Cell Global Identity (CGI) */
|
/* EUTRA Cell Global Identity (CGI) */
|
||||||
Protocol__FlexCellGlobalEutraId *cgi;
|
Protocol__FlexCellGlobalEutraId *cgi;
|
||||||
cgi = malloc(sizeof(Protocol__FlexCellGlobalEutraId));
|
cgi = malloc(sizeof(Protocol__FlexCellGlobalEutraId));
|
||||||
|
|
||||||
protocol__flex_cell_global_eutra_id__init(cgi);
|
protocol__flex_cell_global_eutra_id__init(cgi);
|
||||||
|
|
||||||
cgi->cell_id = flexran_get_rrc_neigh_cgi_cell_id(mod_id, rnti, eutra_meas[j]->phys_cell_id);
|
cgi->cell_id = flexran_get_rrc_neigh_cgi_cell_id(mod_id, rnti, j);
|
||||||
cgi->has_cell_id = 1;
|
cgi->has_cell_id = 1;
|
||||||
|
|
||||||
cgi_meas->tracking_area_code = flexran_get_rrc_neigh_cgi_tac(mod_id, rnti, eutra_meas[j]->phys_cell_id);
|
cgi_meas->tracking_area_code = flexran_get_rrc_neigh_cgi_tac(mod_id, rnti, j);
|
||||||
cgi_meas->has_tracking_area_code = 1;
|
cgi_meas->has_tracking_area_code = 1;
|
||||||
|
|
||||||
/* PLMN for neighbouring cell */
|
/* PLMN for neighbouring cell */
|
||||||
Protocol__FlexPlmnIdentity *plmn_id;
|
Protocol__FlexPlmnIdentity *plmn_id;
|
||||||
plmn_id = malloc(sizeof(Protocol__FlexPlmnIdentity));
|
plmn_id = malloc(sizeof(Protocol__FlexPlmnIdentity));
|
||||||
|
|
||||||
protocol__flex_plmn_identity__init(plmn_id);
|
protocol__flex_plmn_identity__init(plmn_id);
|
||||||
|
|
||||||
plmn_id->mcc = 0;
|
plmn_id->mcc = 0;
|
||||||
for (int m = 0; m < flexran_get_rrc_neigh_cgi_num_mcc(mod_id, rnti, eutra_meas[j]->phys_cell_id); m++) {
|
plmn_id->n_mcc = flexran_get_rrc_neigh_cgi_num_mcc(mod_id, rnti, j);
|
||||||
plmn_id->mcc += flexran_get_rrc_neigh_cgi_mcc(mod_id, rnti, eutra_meas[j]->phys_cell_id, m);
|
|
||||||
}
|
|
||||||
|
|
||||||
plmn_id->mnc = 0;
|
for (int m = 0; m < plmn_id->n_mcc; m++) {
|
||||||
for (int m = 0; m < flexran_get_rrc_neigh_cgi_num_mnc(mod_id, rnti, eutra_meas[j]->phys_cell_id); m++) {
|
plmn_id->mcc += flexran_get_rrc_neigh_cgi_mcc(mod_id, rnti, j, m);
|
||||||
plmn_id->mnc += flexran_get_rrc_neigh_cgi_mnc(mod_id, rnti, eutra_meas[j]->phys_cell_id, m);
|
}
|
||||||
|
|
||||||
|
plmn_id->mnc = 0;
|
||||||
|
plmn_id->n_mnc = flexran_get_rrc_neigh_cgi_num_mnc(mod_id, rnti, j);
|
||||||
|
|
||||||
|
for (int m = 0; m < plmn_id->n_mnc; m++) {
|
||||||
|
plmn_id->mnc += flexran_get_rrc_neigh_cgi_mnc(mod_id, rnti, j, m);
|
||||||
|
}
|
||||||
|
|
||||||
|
cgi->plmn_id = plmn_id;
|
||||||
|
cgi_meas->cgi = cgi;
|
||||||
|
eutra_meas[j]->cgi_meas = cgi_meas;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*RSRP/RSRQ of the neighbouring cell */
|
/*RSRP/RSRQ of the neighbouring cell */
|
||||||
@@ -478,13 +487,12 @@ int flexran_agent_rrc_stats_reply(mid_t mod_id,
|
|||||||
|
|
||||||
protocol__flex_eutra_ref_signal_meas__init(meas_result);
|
protocol__flex_eutra_ref_signal_meas__init(meas_result);
|
||||||
|
|
||||||
meas_result->rsrp = flexran_get_rrc_neigh_rsrp(mod_id, rnti, eutra_meas[j]->phys_cell_id);
|
meas_result->rsrp = flexran_get_rrc_neigh_rsrp(mod_id, rnti, j);
|
||||||
meas_result->has_rsrp = 1;
|
meas_result->has_rsrp = 1;
|
||||||
|
|
||||||
meas_result->rsrq = flexran_get_rrc_neigh_rsrq(mod_id, rnti, eutra_meas[j]->phys_cell_id);
|
meas_result->rsrq = flexran_get_rrc_neigh_rsrq(mod_id, rnti, j);
|
||||||
meas_result->has_rsrq = 1;
|
meas_result->has_rsrq = 1;
|
||||||
|
|
||||||
eutra_meas[j]->cgi_meas = cgi_meas;
|
|
||||||
eutra_meas[j]->meas_result = meas_result;
|
eutra_meas[j]->meas_result = meas_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -500,11 +508,8 @@ int flexran_agent_rrc_stats_reply(mid_t mod_id,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
|
||||||
for (int i = 0; i < report_config->nr_ue; i++) {
|
for (int i = 0; i < report_config->nr_ue; i++) {
|
||||||
if (ue_report[i]->rrc_measurements && ue_report[i]->rrc_measurements->neigh_meas != NULL) {
|
if (ue_report[i]->rrc_measurements && ue_report[i]->rrc_measurements->neigh_meas != NULL) {
|
||||||
for (int j = 0; j < ue_report[i]->rrc_measurements->neigh_meas->n_eutra_meas; j++) {
|
for (int j = 0; j < ue_report[i]->rrc_measurements->neigh_meas->n_eutra_meas; j++) {
|
||||||
@@ -518,7 +523,6 @@ int flexran_agent_rrc_stats_reply(mid_t mod_id,
|
|||||||
free(cell_report);
|
free(cell_report);
|
||||||
if (ue_report != NULL)
|
if (ue_report != NULL)
|
||||||
free(ue_report);
|
free(ue_report);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1474,7 +1474,7 @@ int flexran_get_rrc_num_ncell(mid_t mod_id, rnti_t rnti) {
|
|||||||
if (!ue_context_p) return 0;
|
if (!ue_context_p) return 0;
|
||||||
if (!ue_context_p->ue_context.measResults) return 0;
|
if (!ue_context_p->ue_context.measResults) return 0;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return 0;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return 0;
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return 0;
|
//if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return 0;
|
||||||
return ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.count;
|
return ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1484,79 +1484,59 @@ long flexran_get_rrc_neigh_phy_cell_id(mid_t mod_id, rnti_t rnti, long cell_id)
|
|||||||
if (!ue_context_p) return -1;
|
if (!ue_context_p) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
if (!ue_context_p->ue_context.measResults) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
//if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
||||||
return ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->physCellId;
|
return ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->physCellId;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_cell_id(mid_t mod_id, rnti_t rnti, long cell_id) {
|
int flexran_get_rrc_neigh_cgi(mid_t mod_id, rnti_t rnti, long cell_id) {
|
||||||
if (!rrc_is_present(mod_id)) return -1;
|
if (!rrc_is_present(mod_id)) return 0;
|
||||||
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
||||||
if (!ue_context_p) return -1;
|
if (!ue_context_p) return 0;
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
if (!ue_context_p->ue_context.measResults) return 0;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return 0;
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
//if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return 0;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return 0;
|
||||||
|
return (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info)?0:1;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t flexran_get_rrc_neigh_cgi_cell_id(mid_t mod_id, rnti_t rnti, long cell_id) {
|
||||||
|
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
||||||
|
|
||||||
uint8_t *cId = ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.cellIdentity.buf;
|
uint8_t *cId = ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.cellIdentity.buf;
|
||||||
return ((cId[0] << 20) + (cId[1] << 12) + (cId[2] << 4) + (cId[3] >> 4));
|
return ((cId[0] << 20) + (cId[1] << 12) + (cId[2] << 4) + (cId[3] >> 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_tac(mid_t mod_id, rnti_t rnti, long cell_id) {
|
uint32_t flexran_get_rrc_neigh_cgi_tac(mid_t mod_id, rnti_t rnti, long cell_id) {
|
||||||
if (!rrc_is_present(mod_id)) return -1;
|
|
||||||
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
||||||
if (!ue_context_p) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
|
||||||
uint8_t *tac = ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->trackingAreaCode.buf;
|
uint8_t *tac = ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->trackingAreaCode.buf;
|
||||||
return (tac[0] << 8) + (tac[1]);
|
return (tac[0] << 8) + (tac[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_num_mnc(mid_t mod_id, rnti_t rnti, long cell_id) {
|
int flexran_get_rrc_neigh_cgi_num_mnc(mid_t mod_id, rnti_t rnti, long cell_id) {
|
||||||
if (!rrc_is_present(mod_id)) return -1;
|
|
||||||
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
||||||
if (!ue_context_p) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
|
||||||
return ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mnc.list.count;
|
return ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mnc.list.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_num_mcc(mid_t mod_id, rnti_t rnti, long cell_id) {
|
int flexran_get_rrc_neigh_cgi_num_mcc(mid_t mod_id, rnti_t rnti, long cell_id) {
|
||||||
if (!rrc_is_present(mod_id)) return -1;
|
|
||||||
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
||||||
if (!ue_context_p) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
|
||||||
return ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mcc->list.count;
|
return ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mcc->list.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_mnc(mid_t mod_id, rnti_t rnti, long cell_id, int mnc_id) {
|
uint32_t flexran_get_rrc_neigh_cgi_mnc(mid_t mod_id, rnti_t rnti, long cell_id, int mnc_id) {
|
||||||
if (!rrc_is_present(mod_id)) return -1;
|
|
||||||
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
||||||
if (!ue_context_p) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
|
||||||
int num_mnc = ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mnc.list.count;
|
int num_mnc = ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mnc.list.count;
|
||||||
return *(ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mnc.list.array[mnc_id]) *
|
return *(ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mnc.list.array[mnc_id]) *
|
||||||
((uint32_t) pow(10, num_mnc - mnc_id - 1));
|
((uint32_t) pow(10, num_mnc - mnc_id - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_mcc(mid_t mod_id, rnti_t rnti, long cell_id, int mcc_id) {
|
uint32_t flexran_get_rrc_neigh_cgi_mcc(mid_t mod_id, rnti_t rnti, long cell_id, int mcc_id) {
|
||||||
if (!rrc_is_present(mod_id)) return -1;
|
|
||||||
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
struct rrc_eNB_ue_context_s* ue_context_p = rrc_eNB_get_ue_context(RC.rrc[mod_id], rnti);
|
||||||
if (!ue_context_p) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
|
||||||
int num_mcc = ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mcc->list.count;
|
int num_mcc = ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mcc->list.count;
|
||||||
return *(ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mcc->list.array[mcc_id]) *
|
return *(ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->cgi_Info->cellGlobalId.plmn_Identity.mcc->list.array[mcc_id]) *
|
||||||
((uint32_t) pow(10, num_mcc - mcc_id - 1));
|
((uint32_t) pow(10, num_mcc - mcc_id - 1));
|
||||||
@@ -1568,9 +1548,9 @@ float flexran_get_rrc_neigh_rsrp(mid_t mod_id, rnti_t rnti, long cell_id) {
|
|||||||
if (!ue_context_p) return -1;
|
if (!ue_context_p) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
if (!ue_context_p->ue_context.measResults) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
//if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->measResult.rsrpResult) return 0;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->measResult.rsrpResult) return -1;
|
||||||
return RSRP_meas_mapping[*(ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->measResult.rsrpResult)];
|
return RSRP_meas_mapping[*(ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->measResult.rsrpResult)];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1580,8 +1560,8 @@ float flexran_get_rrc_neigh_rsrq(mid_t mod_id, rnti_t rnti, long cell_id) {
|
|||||||
if (!ue_context_p) return -1;
|
if (!ue_context_p) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults) return -1;
|
if (!ue_context_p->ue_context.measResults) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells) return -1;
|
||||||
if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
//if (ue_context_p->ue_context.measResults->measResultNeighCells->present != LTE_MeasResults__measResultNeighCells_PR_measResultListEUTRA) return -1;
|
||||||
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->measResult.rsrqResult) return 0;
|
if (!ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->measResult.rsrqResult) return -1;
|
||||||
return RSRQ_meas_mapping[*(ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->measResult.rsrqResult)];
|
return RSRQ_meas_mapping[*(ue_context_p->ue_context.measResults->measResultNeighCells->choice.measResultListEUTRA.list.array[cell_id]->measResult.rsrqResult)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -513,6 +513,9 @@ int flexran_get_rrc_num_ncell(mid_t mod_id, rnti_t rnti);
|
|||||||
/* Get neighbouring physical cell id */
|
/* Get neighbouring physical cell id */
|
||||||
long flexran_get_rrc_neigh_phy_cell_id(mid_t mod_id, rnti_t rnti, long cell_id);
|
long flexran_get_rrc_neigh_phy_cell_id(mid_t mod_id, rnti_t rnti, long cell_id);
|
||||||
|
|
||||||
|
/* Get neighbouring cgi */
|
||||||
|
int flexran_get_rrc_neigh_cgi(mid_t mod_id, rnti_t rnti, long cell_id);
|
||||||
|
|
||||||
/* Get neighbouring cgi info cell id */
|
/* Get neighbouring cgi info cell id */
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_cell_id(mid_t mod_id, rnti_t rnti, long cell_id);
|
uint32_t flexran_get_rrc_neigh_cgi_cell_id(mid_t mod_id, rnti_t rnti, long cell_id);
|
||||||
|
|
||||||
@@ -520,10 +523,10 @@ uint32_t flexran_get_rrc_neigh_cgi_cell_id(mid_t mod_id, rnti_t rnti, long cell_
|
|||||||
uint32_t flexran_get_rrc_neigh_cgi_tac(mid_t mod_id, rnti_t rnti, long cell_id);
|
uint32_t flexran_get_rrc_neigh_cgi_tac(mid_t mod_id, rnti_t rnti, long cell_id);
|
||||||
|
|
||||||
/* Get the number of neighbouring cgi mnc */
|
/* Get the number of neighbouring cgi mnc */
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_num_mnc(mid_t mod_id, rnti_t rnti, long cell_id);
|
int flexran_get_rrc_neigh_cgi_num_mnc(mid_t mod_id, rnti_t rnti, long cell_id);
|
||||||
|
|
||||||
/* Get the number of neighbouring cgi mcc */
|
/* Get the number of neighbouring cgi mcc */
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_num_mcc(mid_t mod_id, rnti_t rnti, long cell_id);
|
int flexran_get_rrc_neigh_cgi_num_mcc(mid_t mod_id, rnti_t rnti, long cell_id);
|
||||||
|
|
||||||
/* Get neighbouring cgi mnc */
|
/* Get neighbouring cgi mnc */
|
||||||
uint32_t flexran_get_rrc_neigh_cgi_mnc(mid_t mod_id, rnti_t rnti, long cell_id, int mnc_id);
|
uint32_t flexran_get_rrc_neigh_cgi_mnc(mid_t mod_id, rnti_t rnti, long cell_id, int mnc_id);
|
||||||
|
|||||||
Reference in New Issue
Block a user