Commit 1fc631e2 authored by Robert Schmidt's avatar Robert Schmidt

RAN API RRC part: Change interface to RNTI, change flexran_get_aperiodic_cqi_rep_mode()

* the RAN API RRC part now takes rnti and does not look it up in the MAC every
  time again
* the function flexran_get_aperiodic_cqi_rep_mode() has been changed to return
  a proper protobuf variable, not OAI typedef
parent fdd47e57
......@@ -911,7 +911,7 @@ int flexran_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Fle
if(dl_info[i] == NULL)
goto error;
protocol__flex_dl_info__init(dl_info[i]);
dl_info[i]->rnti = flexran_get_ue_crnti(mod_id, UE_id);
dl_info[i]->rnti = flexran_get_mac_ue_crnti(mod_id, UE_id);
dl_info[i]->has_rnti = 1;
/*Fill in the right id of this round's HARQ process for this UE*/
// uint8_t harq_id;
......@@ -959,7 +959,7 @@ int flexran_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Fle
if(ul_info[i] == NULL)
goto error;
protocol__flex_ul_info__init(ul_info[i]);
ul_info[i]->rnti = flexran_get_ue_crnti(mod_id, i);
ul_info[i]->rnti = flexran_get_mac_ue_crnti(mod_id, i);
ul_info[i]->has_rnti = 1;
/* Fill in the Tx power control command for this UE (if available),
* primary carrier */
......@@ -1375,7 +1375,7 @@ void flexran_agent_fill_mac_cell_config(mid_t mod_id, uint8_t cc_id,
void flexran_agent_fill_mac_lc_ue_config(mid_t mod_id, mid_t ue_id,
Protocol__FlexLcUeConfig *lc_ue_conf)
{
lc_ue_conf->rnti = flexran_get_ue_crnti(mod_id, ue_id);
lc_ue_conf->rnti = flexran_get_mac_ue_crnti(mod_id, ue_id);
lc_ue_conf->has_rnti = 1;
lc_ue_conf->n_lc_config = flexran_get_num_ue_lcs(mod_id, ue_id);
......
......@@ -137,6 +137,9 @@ enum flex_aperiodic_cqi_report_mode {
FLACRM_RM30 = 3;
FLACRM_RM31 = 4;
FLACRM_NONE = 5;
FLACRM_RM32_v1250 = 6;
FLACRM_RM10_v1310 = 7;
FLACRM_RM11_v1310 = 8;
}
enum flex_tdd_ack_nack_feedback_mode {
......
......@@ -527,7 +527,7 @@ int flexran_agent_ue_config_reply(mid_t mod_id, const void *params, Protocol__Fl
ue_config_reply_msg->header = header;
ue_config_reply_msg->n_ue_config = flexran_get_mac_num_ues(mod_id);
ue_config_reply_msg->n_ue_config = flexran_get_rrc_num_ues(mod_id);
Protocol__FlexUeConfig **ue_config;
if (ue_config_reply_msg->n_ue_config > 0) {
......@@ -535,30 +535,34 @@ int flexran_agent_ue_config_reply(mid_t mod_id, const void *params, Protocol__Fl
if (ue_config == NULL) {
goto error;
}
rnti_t rntis[ue_config_reply_msg->n_ue_config];
flexran_get_rrc_rnti_list(mod_id, rntis, ue_config_reply_msg->n_ue_config);
for (i = 0; i < ue_config_reply_msg->n_ue_config; i++) {
const rnti_t rnti = rntis[i];
ue_config[i] = malloc(sizeof(Protocol__FlexUeConfig));
protocol__flex_ue_config__init(ue_config[i]);
ue_config[i]->rnti = flexran_get_ue_crnti(mod_id,i);
/* correct RNTI */
ue_config[i]->rnti = rnti;
ue_config[i]->has_rnti = 1;
ue_config[i]->imsi = flexran_get_ue_imsi(mod_id, i);
ue_config[i]->imsi = flexran_get_ue_imsi(mod_id, rnti);
ue_config[i]->has_imsi = 1;
//TODO: Set the DRX configuration (optional)
//Not supported for now, so we do not set it
if (flexran_get_time_alignment_timer(mod_id,i) != -1) {
ue_config[i]->time_alignment_timer = flexran_get_time_alignment_timer(mod_id,i);
if (flexran_get_time_alignment_timer(mod_id, rnti) != -1) {
ue_config[i]->time_alignment_timer = flexran_get_time_alignment_timer(mod_id, rnti);
ue_config[i]->has_time_alignment_timer = 1;
}
if (flexran_get_meas_gap_config(mod_id,i) != -1) {
ue_config[i]->meas_gap_config_pattern = flexran_get_meas_gap_config(mod_id,i);
if (flexran_get_meas_gap_config(mod_id, rnti) != -1) {
ue_config[i]->meas_gap_config_pattern = flexran_get_meas_gap_config(mod_id, rnti);
ue_config[i]->has_meas_gap_config_pattern = 1;
}
if (ue_config[i]->has_meas_gap_config_pattern == 1 &&
ue_config[i]->meas_gap_config_pattern != PROTOCOL__FLEX_MEAS_GAP_CONFIG_PATTERN__FLMGCP_OFF) {
ue_config[i]->meas_gap_config_sf_offset = flexran_get_meas_gap_config_offset(mod_id,i);
ue_config[i]->meas_gap_config_sf_offset = flexran_get_meas_gap_config_offset(mod_id, rnti);
ue_config[i]->has_meas_gap_config_sf_offset = 1;
}
//TODO: Set the SPS configuration (Optional)
......@@ -570,104 +574,101 @@ int flexran_agent_ue_config_reply(mid_t mod_id, const void *params, Protocol__Fl
//TODO: Set the CQI configuration (Optional)
//We do not set it for now
if (flexran_get_ue_transmission_mode(mod_id,i) != -1) {
ue_config[i]->transmission_mode = flexran_get_ue_transmission_mode(mod_id,i);
if (flexran_get_ue_transmission_mode(mod_id, rnti) != -1) {
ue_config[i]->transmission_mode = flexran_get_ue_transmission_mode(mod_id, rnti);
ue_config[i]->has_transmission_mode = 1;
}
ue_config[i]->ue_aggregated_max_bitrate_ul = flexran_get_ue_aggregated_max_bitrate_ul(mod_id,i);
ue_config[i]->has_ue_aggregated_max_bitrate_ul = 1;
/* into MAC CM */
//ue_config[i]->ue_aggregated_max_bitrate_ul = flexran_get_ue_aggregated_max_bitrate_ul(mod_id,i);
//ue_config[i]->has_ue_aggregated_max_bitrate_ul = 1;
ue_config[i]->ue_aggregated_max_bitrate_dl = flexran_get_ue_aggregated_max_bitrate_dl(mod_id,i);
ue_config[i]->has_ue_aggregated_max_bitrate_dl = 1;
//ue_config[i]->ue_aggregated_max_bitrate_dl = flexran_get_ue_aggregated_max_bitrate_dl(mod_id,i);
//ue_config[i]->has_ue_aggregated_max_bitrate_dl = 1;
Protocol__FlexUeCapabilities *capabilities;
capabilities = malloc(sizeof(Protocol__FlexUeCapabilities));
protocol__flex_ue_capabilities__init(capabilities);
capabilities->has_half_duplex = 1;
capabilities->half_duplex = flexran_get_half_duplex(mod_id, i);
capabilities->half_duplex = flexran_get_half_duplex(mod_id, rnti);
capabilities->has_intra_sf_hopping = 1;
capabilities->intra_sf_hopping = flexran_get_intra_sf_hopping(mod_id, i);
capabilities->intra_sf_hopping = flexran_get_intra_sf_hopping(mod_id, rnti);
capabilities->has_type2_sb_1 = 1;
capabilities->type2_sb_1 = flexran_get_type2_sb_1(mod_id, i);
capabilities->type2_sb_1 = flexran_get_type2_sb_1(mod_id, rnti);
capabilities->has_ue_category = 1;
capabilities->ue_category = flexran_get_ue_category(mod_id, i);
capabilities->ue_category = flexran_get_ue_category(mod_id, rnti);
capabilities->has_res_alloc_type1 = 1;
capabilities->res_alloc_type1 = flexran_get_res_alloc_type1(mod_id, i);
capabilities->res_alloc_type1 = flexran_get_res_alloc_type1(mod_id, rnti);
//Set the capabilites to the message
ue_config[i]->capabilities = capabilities;
if (flexran_get_ue_transmission_antenna(mod_id,i) != -1) {
if (flexran_get_ue_transmission_antenna(mod_id, rnti) != -1) {
ue_config[i]->has_ue_transmission_antenna = 1;
ue_config[i]->ue_transmission_antenna = flexran_get_ue_transmission_antenna(mod_id,i);
ue_config[i]->ue_transmission_antenna = flexran_get_ue_transmission_antenna(mod_id, rnti);
}
if (flexran_get_tti_bundling(mod_id,i) != -1) {
if (flexran_get_tti_bundling(mod_id, rnti) != -1) {
ue_config[i]->has_tti_bundling = 1;
ue_config[i]->tti_bundling = flexran_get_tti_bundling(mod_id,i);
ue_config[i]->tti_bundling = flexran_get_tti_bundling(mod_id, rnti);
}
if (flexran_get_maxHARQ_TX(mod_id,i) != -1) {
if (flexran_get_maxHARQ_TX(mod_id, rnti) != -1) {
ue_config[i]->has_max_harq_tx = 1;
ue_config[i]->max_harq_tx = flexran_get_maxHARQ_TX(mod_id,i);
ue_config[i]->max_harq_tx = flexran_get_maxHARQ_TX(mod_id, rnti);
}
if (flexran_get_beta_offset_ack_index(mod_id,i) != -1) {
if (flexran_get_beta_offset_ack_index(mod_id, rnti) != -1) {
ue_config[i]->has_beta_offset_ack_index = 1;
ue_config[i]->beta_offset_ack_index = flexran_get_beta_offset_ack_index(mod_id,i);
ue_config[i]->beta_offset_ack_index = flexran_get_beta_offset_ack_index(mod_id, rnti);
}
if (flexran_get_beta_offset_ri_index(mod_id,i) != -1) {
if (flexran_get_beta_offset_ri_index(mod_id, rnti) != -1) {
ue_config[i]->has_beta_offset_ri_index = 1;
ue_config[i]->beta_offset_ri_index = flexran_get_beta_offset_ri_index(mod_id,i);
ue_config[i]->beta_offset_ri_index = flexran_get_beta_offset_ri_index(mod_id, rnti);
}
if (flexran_get_beta_offset_cqi_index(mod_id,i) != -1) {
if (flexran_get_beta_offset_cqi_index(mod_id, rnti) != -1) {
ue_config[i]->has_beta_offset_cqi_index = 1;
ue_config[i]->beta_offset_cqi_index = flexran_get_beta_offset_cqi_index(mod_id,i);
ue_config[i]->beta_offset_cqi_index = flexran_get_beta_offset_cqi_index(mod_id, rnti);
}
/* assume primary carrier */
if (flexran_get_ack_nack_simultaneous_trans(mod_id, i, 0) != -1) {
if (flexran_get_ack_nack_simultaneous_trans(mod_id, 0) != -1) {
ue_config[i]->has_ack_nack_simultaneous_trans = 1;
ue_config[i]->ack_nack_simultaneous_trans = flexran_get_ack_nack_simultaneous_trans(mod_id, i, 0);
ue_config[i]->ack_nack_simultaneous_trans = flexran_get_ack_nack_simultaneous_trans(mod_id, 0);
}
if (flexran_get_simultaneous_ack_nack_cqi(mod_id,i) != -1) {
if (flexran_get_simultaneous_ack_nack_cqi(mod_id, rnti) != -1) {
ue_config[i]->has_simultaneous_ack_nack_cqi = 1;
ue_config[i]->simultaneous_ack_nack_cqi = flexran_get_simultaneous_ack_nack_cqi(mod_id,i);
ue_config[i]->simultaneous_ack_nack_cqi = flexran_get_simultaneous_ack_nack_cqi(mod_id, rnti);
}
if (flexran_get_aperiodic_cqi_rep_mode(mod_id,i) != -1) {
if (flexran_get_aperiodic_cqi_rep_mode(mod_id, rnti) != -1) {
ue_config[i]->has_aperiodic_cqi_rep_mode = 1;
int mode = flexran_get_aperiodic_cqi_rep_mode(mod_id,i);
if (mode > 4) {
ue_config[i]->aperiodic_cqi_rep_mode = PROTOCOL__FLEX_APERIODIC_CQI_REPORT_MODE__FLACRM_NONE;
} else {
ue_config[i]->aperiodic_cqi_rep_mode = mode;
}
ue_config[i]->aperiodic_cqi_rep_mode = flexran_get_aperiodic_cqi_rep_mode(mod_id, rnti);
}
if (flexran_get_tdd_ack_nack_feedback_mode(mod_id, i) != -1) {
if (flexran_get_tdd_ack_nack_feedback_mode(mod_id, rnti) != -1) {
ue_config[i]->has_tdd_ack_nack_feedback = 1;
ue_config[i]->tdd_ack_nack_feedback = flexran_get_tdd_ack_nack_feedback_mode(mod_id,i);
ue_config[i]->tdd_ack_nack_feedback = flexran_get_tdd_ack_nack_feedback_mode(mod_id, rnti);
}
if(flexran_get_ack_nack_repetition_factor(mod_id, i) != -1) {
if(flexran_get_ack_nack_repetition_factor(mod_id, rnti) != -1) {
ue_config[i]->has_ack_nack_repetition_factor = 1;
ue_config[i]->ack_nack_repetition_factor = flexran_get_ack_nack_repetition_factor(mod_id,i);
ue_config[i]->ack_nack_repetition_factor = flexran_get_ack_nack_repetition_factor(mod_id, rnti);
}
if (flexran_get_extended_bsr_size(mod_id, i) != -1) {
if (flexran_get_extended_bsr_size(mod_id, rnti) != -1) {
ue_config[i]->has_extended_bsr_size = 1;
ue_config[i]->extended_bsr_size = flexran_get_extended_bsr_size(mod_id,i);
ue_config[i]->extended_bsr_size = flexran_get_extended_bsr_size(mod_id, rnti);
}
//TODO: Set carrier aggregation support (boolean)
ue_config[i]->has_ca_support = 0;
ue_config[i]->ca_support = 0;
ue_config[i]->has_pcell_carrier_index = 1;
ue_config[i]->pcell_carrier_index = UE_PCCID(mod_id, i);
/* into MAC CM */
//ue_config[i]->has_pcell_carrier_index = 1;
//ue_config[i]->pcell_carrier_index = UE_PCCID(mod_id, i);
if(ue_config[i]->has_ca_support){
//TODO: Set cross carrier scheduling support (boolean)
ue_config[i]->has_cross_carrier_sched_support = 0;
......
......@@ -249,7 +249,7 @@ int flexran_agent_handle_stats(mid_t mod_id, const void *params, Protocol__Flexr
goto error;
}
for (i = 0; i < report_config.nr_ue; i++) {
report_config.ue_report_type[i].ue_rnti = flexran_get_ue_crnti(enb_id, i); //eNB_UE_list->eNB_UE_stats[UE_PCCID(enb_id,i)][i].crnti;
report_config.ue_report_type[i].ue_rnti = flexran_get_mac_ue_crnti(enb_id, i);
report_config.ue_report_type[i].ue_report_flags = ue_flags;
}
//Set the number of CCs and create a list with the cell stats configs
......
This diff is collapsed.
......@@ -77,8 +77,8 @@ int flexran_get_mac_num_ues(mid_t mod_id);
* dedicated bearers yet */
int flexran_get_num_ue_lcs(mid_t mod_id, mid_t ue_id);
/* Get the rnti of a UE with id ue_id */
rnti_t flexran_get_ue_crnti(mid_t mod_id, mid_t ue_id);
/* Get the rnti of a UE with id ue_id from MAC */
rnti_t flexran_get_mac_ue_crnti(mid_t mod_id, mid_t ue_id);
/* Get the RLC buffer status report in bytes of a ue for a designated
* logical channel id */
......@@ -318,13 +318,13 @@ int flexran_get_rrc_rnti_list(mid_t mod_id, rnti_t *list, int max_list);
/* Get timer in subframes. Controls the synchronization
status of the UE, not the actual timing
advance procedure. See TS 36.321 */
TimeAlignmentTimer_t flexran_get_time_alignment_timer(mid_t mod_id, mid_t ue_id);
TimeAlignmentTimer_t flexran_get_time_alignment_timer(mid_t mod_id, rnti_t rnti);
/* Get measurement gap configuration. See TS 36.133 */
Protocol__FlexMeasGapConfigPattern flexran_get_meas_gap_config(mid_t mod_id, mid_t ue_id);
Protocol__FlexMeasGapConfigPattern flexran_get_meas_gap_config(mid_t mod_id, rnti_t rnti);
/* Get measurement gap configuration offset if applicable */
long flexran_get_meas_gap_config_offset(mid_t mod_id, mid_t ue_id);
long flexran_get_meas_gap_config_offset(mid_t mod_id, rnti_t rnti);
/* DL aggregated bit-rate of non-gbr bearer
per UE. See TS 36.413 */
......@@ -335,62 +335,62 @@ uint64_t flexran_get_ue_aggregated_max_bitrate_dl(mid_t mod_id, mid_t ue_id);
uint64_t flexran_get_ue_aggregated_max_bitrate_ul(mid_t mod_id, mid_t ue_id);
/* Only half-duplex support. FDD operation. Boolean value */
int flexran_get_half_duplex(mid_t mod_id, mid_t ue_id);
int flexran_get_half_duplex(mid_t mod_id, rnti_t rnti);
/* Support of intra-subframe hopping. Boolean value */
int flexran_get_intra_sf_hopping(mid_t mod_id, mid_t ue_id);
int flexran_get_intra_sf_hopping(mid_t mod_id, rnti_t rnti);
/* UE support for type 2 hopping with n_sb>1 */
int flexran_get_type2_sb_1(mid_t mod_id, mid_t ue_id);
int flexran_get_type2_sb_1(mid_t mod_id, rnti_t rnti);
/* Get the UE category */
long flexran_get_ue_category(mid_t mod_id, mid_t ue_id);
long flexran_get_ue_category(mid_t mod_id, rnti_t rnti);
/* UE support for resource allocation type 1 */
int flexran_get_res_alloc_type1(mid_t mod_id, mid_t ue_id);
int flexran_get_res_alloc_type1(mid_t mod_id, rnti_t rnti);
/* Get UE transmission mode */
long flexran_get_ue_transmission_mode(mid_t mod_id, mid_t ue_id);
long flexran_get_ue_transmission_mode(mid_t mod_id, rnti_t rnti);
/* Boolean value. See TS 36.321 */
BOOLEAN_t flexran_get_tti_bundling(mid_t mod_id, mid_t ue_id);
BOOLEAN_t flexran_get_tti_bundling(mid_t mod_id, rnti_t rnti);
/* The max HARQ retransmission for UL.
See TS 36.321 */
long flexran_get_maxHARQ_TX(mid_t mod_id, mid_t ue_id);
long flexran_get_maxHARQ_TX(mid_t mod_id, rnti_t rnti);
/* See TS 36.213 */
long flexran_get_beta_offset_ack_index(mid_t mod_id, mid_t ue_id);
long flexran_get_beta_offset_ack_index(mid_t mod_id, rnti_t rnti);
/* See TS 36.213 */
long flexran_get_beta_offset_ri_index(mid_t mod_id, mid_t ue_id);
long flexran_get_beta_offset_ri_index(mid_t mod_id, rnti_t rnti);
/* See TS 36.213 */
long flexran_get_beta_offset_cqi_index(mid_t mod_id, mid_t ue_id);
long flexran_get_beta_offset_cqi_index(mid_t mod_id, rnti_t rnti);
/* Boolean. See TS36.213, Section 10.1 */
BOOLEAN_t flexran_get_simultaneous_ack_nack_cqi(mid_t mod_id, mid_t ue_id);
BOOLEAN_t flexran_get_simultaneous_ack_nack_cqi(mid_t mod_id, rnti_t rnti);
/* Boolean. See TS 36.213, Section 8.2 */
BOOLEAN_t flexran_get_ack_nack_simultaneous_trans(mid_t mod_id, mid_t ue_id, uint8_t cc_id);
BOOLEAN_t flexran_get_ack_nack_simultaneous_trans(mid_t mod_id, uint8_t cc_id);
/* Get aperiodic CQI report mode */
CQI_ReportModeAperiodic_t flexran_get_aperiodic_cqi_rep_mode(mid_t mod_id,mid_t ue_id);
Protocol__FlexAperiodicCqiReportMode flexran_get_aperiodic_cqi_rep_mode(mid_t mod_id, rnti_t rnti);
/* Get ACK/NACK feedback mode. TDD only */
long flexran_get_tdd_ack_nack_feedback_mode(mid_t mod_id, mid_t ue_id);
long flexran_get_tdd_ack_nack_feedback_mode(mid_t mod_id, rnti_t rnti);
/* See TS36.213, section 10.1 */
long flexran_get_ack_nack_repetition_factor(mid_t mod_id, mid_t ue_id);
long flexran_get_ack_nack_repetition_factor(mid_t mod_id, rnti_t rnti);
/* Boolean. Extended buffer status report size */
long flexran_get_extended_bsr_size(mid_t mod_id, mid_t ue_id);
long flexran_get_extended_bsr_size(mid_t mod_id, rnti_t rnti);
/* Get number of UE transmission antennas */
int flexran_get_ue_transmission_antenna(mid_t mod_id, mid_t ue_id);
int flexran_get_ue_transmission_antenna(mid_t mod_id, rnti_t rnti);
/* Get the IMSI of UE */
uint64_t flexran_get_ue_imsi(mid_t mod_id, mid_t ue_id);
uint64_t flexran_get_ue_imsi(mid_t mod_id, rnti_t rnti);
/* Get logical channel group of a channel with id lc_id */
long flexran_get_lcg(mid_t mod_id, mid_t ue_id, mid_t lc_id);
......@@ -429,7 +429,7 @@ void flexran_agent_set_operating_bandwidth(mid_t mod_id, uint8_t cc_id, uint8_t
void flexran_agent_set_operating_frame_type(mid_t mod_id, uint8_t cc_id, lte_frame_type_t frame_type);
/*RRC status flexRAN*/
uint8_t flexran_get_rrc_status(mid_t mod_id, mid_t ue_id);
uint8_t flexran_get_rrc_status(mid_t mod_id, rnti_t rnti);
/***************************** PDCP ***********************/
......@@ -491,33 +491,33 @@ uint32_t flexran_get_pdcp_rx_oo(const mid_t mod_id, const mid_t ue_id, const lc
/*********************RRC**********************/
/*Get primary cell measuremeant id flexRAN*/
MeasId_t flexran_get_rrc_pcell_measid(mid_t mod_id, mid_t ue_id);
MeasId_t flexran_get_rrc_pcell_measid(mid_t mod_id, rnti_t rnti);
/*Get primary cell RSRP measurement flexRAN*/
float flexran_get_rrc_pcell_rsrp(mid_t mod_id, mid_t ue_id);
float flexran_get_rrc_pcell_rsrp(mid_t mod_id, rnti_t rnti);
/*Get primary cell RSRQ measurement flexRAN*/
float flexran_get_rrc_pcell_rsrq(mid_t mod_id, mid_t ue_id);
float flexran_get_rrc_pcell_rsrq(mid_t mod_id, rnti_t rnti);
/* Get RRC neighbouring measurement */
int flexran_get_rrc_num_ncell(mid_t mod_id, mid_t ue_id);
int flexran_get_rrc_num_ncell(mid_t mod_id, rnti_t rnti);
/*Get physical cell id*/
PhysCellId_t flexran_get_rrc_neigh_phy_cell_id(mid_t mod_id, mid_t ue_id, int cell_id);
/* Get physical cell id */
long flexran_get_rrc_neigh_phy_cell_id(mid_t mod_id, rnti_t rnti, long cell_id);
/*Get RSRP of neighbouring Cell*/
float flexran_get_rrc_neigh_rsrp(mid_t mod_id, mid_t ue_id, int cell_id);
/* Get RSRP of neighbouring Cell */
float flexran_get_rrc_neigh_rsrp(mid_t mod_id, rnti_t rnti, long cell_id);
/*Get RSRQ of neighbouring Cell*/
float flexran_get_rrc_neigh_rsrq(mid_t mod_id, mid_t ue_id, int cell_id);
/* Get RSRQ of neighbouring Cell */
float flexran_get_rrc_neigh_rsrq(mid_t mod_id, rnti_t rnti, long cell_id);
/*Get MCC PLMN identity neighbouring Cell*/
/* currently not implemented
int flexran_get_rrc_neigh_plmn_mcc(mid_t mod_id, mid_t ue_id, int cell_id); */
int flexran_get_rrc_neigh_plmn_mcc(mid_t mod_id, rnti_t rnti, int cell_id); */
/*Get MNC PLMN identity neighbouring Cell*/
/* currently not implemented
int flexran_get_rrc_neigh_plmn_mnc(mid_t mod_id, mid_t ue_id, int cell_id); */
int flexran_get_rrc_neigh_plmn_mnc(mid_t mod_id, rnti_t rnti, int cell_id); */
/********************* general information *****************/
/* get an ID for this BS (or part of a BS) */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment