Commit b702b415 authored by Robert Schmidt's avatar Robert Schmidt

Split enb_config_reply->cell_conf message to PHY, MAC, RRC

parent 2623e3f2
...@@ -1358,6 +1358,20 @@ int flexran_agent_register_mac_xface(mid_t mod_id) ...@@ -1358,6 +1358,20 @@ int flexran_agent_register_mac_xface(mid_t mod_id)
return 0; return 0;
} }
void flexran_agent_fill_mac_cell_config(mid_t mod_id, uint8_t cc_id,
Protocol__FlexCellConfig *conf) {
if (!conf->si_config) {
conf->si_config = malloc(sizeof(Protocol__FlexSiConfig));
if (conf->si_config)
protocol__flex_si_config__init(conf->si_config);
}
if (conf->si_config) {
conf->si_config->sfn = flexran_get_current_system_frame_num(mod_id);
conf->si_config->has_sfn = 1;
}
}
int flexran_agent_unregister_mac_xface(mid_t mod_id) int flexran_agent_unregister_mac_xface(mid_t mod_id)
{ {
if (!agent_mac_xface[mod_id]) { if (!agent_mac_xface[mod_id]) {
......
...@@ -83,6 +83,10 @@ void flexran_agent_send_update_mac_stats(mid_t mod_id); ...@@ -83,6 +83,10 @@ void flexran_agent_send_update_mac_stats(mid_t mod_id);
/// Provide to the scheduler a pending dl_mac_config message /// Provide to the scheduler a pending dl_mac_config message
void flexran_agent_get_pending_dl_mac_config(mid_t mod_id, Protocol__FlexranMessage **msg); void flexran_agent_get_pending_dl_mac_config(mid_t mod_id, Protocol__FlexranMessage **msg);
/* Fill the MAC part of an cell_config message */
void flexran_agent_fill_mac_cell_config(mid_t mod_id, uint8_t cc_id,
Protocol__FlexCellConfig *conf);
/*Register technology specific interface callbacks*/ /*Register technology specific interface callbacks*/
int flexran_agent_register_mac_xface(mid_t mod_id); int flexran_agent_register_mac_xface(mid_t mod_id);
......
...@@ -26,17 +26,133 @@ ...@@ -26,17 +26,133 @@
*/ */
#include "flexran_agent_phy.h" #include "flexran_agent_phy.h"
#include "flexran_agent_ran_api.h"
/* Array containing the Agent-PHY interfaces */ /* Array containing the Agent-PHY interfaces */
AGENT_PHY_xface *agent_phy_xface[NUM_MAX_ENB]; AGENT_PHY_xface *agent_phy_xface[NUM_MAX_ENB];
int flexran_agent_register_phy_xface(mid_t mod_id) void flexran_agent_fill_phy_cell_config(mid_t mod_id, uint8_t cc_id,
{ Protocol__FlexCellConfig *conf) {
conf->phy_cell_id = flexran_get_cell_id(mod_id, cc_id);
conf->has_phy_cell_id = 1;
conf->pusch_hopping_offset = flexran_get_hopping_offset(mod_id, cc_id);
conf->has_pusch_hopping_offset = 1;
conf->hopping_mode = flexran_get_hopping_mode(mod_id, cc_id);
conf->has_hopping_mode = 1;
conf->n_sb = flexran_get_n_SB(mod_id, cc_id);
conf->has_n_sb = 1;
conf->phich_resource = flexran_get_phich_resource(mod_id, cc_id);
conf->has_phich_resource = 1;
conf->phich_duration = flexran_get_phich_duration(mod_id, cc_id);
conf->has_phich_duration = 1;
conf->init_nr_pdcch_ofdm_sym = flexran_get_num_pdcch_symb(mod_id, cc_id);
conf->has_init_nr_pdcch_ofdm_sym = 1;
conf->dl_bandwidth = flexran_get_N_RB_DL(mod_id, cc_id);
conf->has_dl_bandwidth = 1;
conf->ul_bandwidth = flexran_get_N_RB_UL(mod_id, cc_id);
conf->has_ul_bandwidth = 1;
conf->ul_cyclic_prefix_length = flexran_get_ul_cyclic_prefix_length(mod_id, cc_id);
conf->has_ul_cyclic_prefix_length = 1;
conf->dl_cyclic_prefix_length = flexran_get_dl_cyclic_prefix_length(mod_id, cc_id);
conf->has_dl_cyclic_prefix_length = 1;
conf->antenna_ports_count = flexran_get_antenna_ports(mod_id, cc_id);
conf->has_antenna_ports_count = 1;
conf->duplex_mode = flexran_get_duplex_mode(mod_id, cc_id);
conf->has_duplex_mode = 1;
conf->subframe_assignment = flexran_get_subframe_assignment(mod_id, cc_id);
conf->has_subframe_assignment = 1;
conf->special_subframe_patterns = flexran_get_special_subframe_assignment(mod_id, cc_id);
conf->has_special_subframe_patterns = 1;
//TODO: Fill in with actual value, The MBSFN radio frame period
conf->n_mbsfn_subframe_config_rfperiod = 0;
uint32_t *elem_rfperiod = malloc(sizeof(uint32_t) * conf->n_mbsfn_subframe_config_rfperiod);
if (elem_rfperiod)
for(int j = 0; j < conf->n_mbsfn_subframe_config_rfperiod; j++)
elem_rfperiod[j] = 1;
conf->mbsfn_subframe_config_rfperiod = elem_rfperiod;
//TODO: Fill in with actual value, The MBSFN radio frame offset
conf->n_mbsfn_subframe_config_rfoffset = 0;
uint32_t *elem_rfoffset = malloc(sizeof(uint32_t) * conf->n_mbsfn_subframe_config_rfoffset);
if (elem_rfoffset)
for(int j = 0; j < conf->n_mbsfn_subframe_config_rfoffset; j++)
elem_rfoffset[j] = 1;
conf->mbsfn_subframe_config_rfoffset = elem_rfoffset;
//TODO: Fill in with actual value, Bitmap indicating the MBSFN subframes
conf->n_mbsfn_subframe_config_sfalloc = 0;
uint32_t *elem_sfalloc = malloc(sizeof(uint32_t) * conf->n_mbsfn_subframe_config_sfalloc);
if (elem_sfalloc)
for(int j = 0; j < conf->n_mbsfn_subframe_config_sfalloc; j++)
elem_sfalloc[j] = 1;
conf->mbsfn_subframe_config_sfalloc = elem_sfalloc;
conf->prach_config_index = flexran_get_prach_ConfigIndex(mod_id, cc_id);
conf->has_prach_config_index = 1;
conf->prach_freq_offset = flexran_get_prach_FreqOffset(mod_id, cc_id);
conf->has_prach_freq_offset = 1;
conf->max_harq_msg3tx = flexran_get_maxHARQ_Msg3Tx(mod_id, cc_id);
conf->has_max_harq_msg3tx = 1;
conf->n1pucch_an = flexran_get_n1pucch_an(mod_id, cc_id);
conf->has_n1pucch_an = 1;
conf->deltapucch_shift = flexran_get_deltaPUCCH_Shift(mod_id, cc_id);
conf->has_deltapucch_shift = 1;
conf->nrb_cqi = flexran_get_nRB_CQI(mod_id, cc_id);
conf->has_nrb_cqi = 1;
conf->srs_subframe_config = flexran_get_srs_SubframeConfig(mod_id, cc_id);
conf->has_srs_subframe_config = 1;
conf->srs_bw_config = flexran_get_srs_BandwidthConfig(mod_id, cc_id);
conf->has_srs_bw_config = 1;
conf->srs_mac_up_pts = flexran_get_srs_MaxUpPts(mod_id, cc_id);
conf->has_srs_mac_up_pts = 1;
conf->dl_freq = flexran_agent_get_operating_dl_freq (mod_id, cc_id);
conf->has_dl_freq = 1;
conf->ul_freq = flexran_agent_get_operating_ul_freq (mod_id, cc_id);
conf->has_ul_freq = 1;
conf->eutra_band = flexran_agent_get_operating_eutra_band (mod_id, cc_id);
conf->has_eutra_band = 1;
conf->dl_pdsch_power = flexran_agent_get_operating_pdsch_refpower(mod_id, cc_id);
conf->has_dl_pdsch_power = 1;
conf->enable_64qam = flexran_get_enable64QAM(mod_id, cc_id);
conf->has_enable_64qam = 1;
}
int flexran_agent_register_phy_xface(mid_t mod_id) {
if (agent_phy_xface[mod_id]) { if (agent_phy_xface[mod_id]) {
LOG_E(PHY, "PHY agent for eNB %d is already registered\n", mod_id); LOG_E(PHY, "PHY agent for eNB %d is already registered\n", mod_id);
return -1; return -1;
} }
AGENT_PHY_xface *xface = malloc(sizeof(AGENT_PHY_xface)); AGENT_PHY_xface *xface = malloc(sizeof(AGENT_PHY_xface));
if (!xface) { if (!xface) {
LOG_E(FLEXRAN_AGENT, "could not allocate memory for PHY agent xface %d\n", mod_id); LOG_E(FLEXRAN_AGENT, "could not allocate memory for PHY agent xface %d\n", mod_id);
return -1; return -1;
......
...@@ -45,6 +45,10 @@ ...@@ -45,6 +45,10 @@
* FlexRAN agent - technology PHY API * FlexRAN agent - technology PHY API
**********************************/ **********************************/
/* Fill the PHY part of an cell_config message */
void flexran_agent_fill_phy_cell_config(mid_t mod_id, uint8_t cc_id,
Protocol__FlexCellConfig *conf);
/* Register technology specific interface callbacks */ /* Register technology specific interface callbacks */
int flexran_agent_register_phy_xface(mid_t mod_id); int flexran_agent_register_phy_xface(mid_t mod_id);
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
*/ */
#include "flexran_agent_rrc.h" #include "flexran_agent_rrc.h"
#include "flexran_agent_ran_api.h"
#include "liblfds700.h" #include "liblfds700.h"
...@@ -662,6 +662,59 @@ int flexran_agent_register_rrc_xface(mid_t mod_id) ...@@ -662,6 +662,59 @@ int flexran_agent_register_rrc_xface(mid_t mod_id)
return 0; return 0;
} }
void flexran_agent_fill_rrc_cell_config(mid_t mod_id, uint8_t cc_id,
Protocol__FlexCellConfig *conf) {
conf->cell_id = cc_id;
conf->has_cell_id = 1;
if (!conf->si_config) {
conf->si_config = malloc(sizeof(Protocol__FlexSiConfig));
if (conf->si_config)
protocol__flex_si_config__init(conf->si_config);
}
if (conf->si_config) {
// TODO THIS IS DU RRC
conf->si_config->sib1_length = flexran_get_sib1_length(mod_id, cc_id);
conf->si_config->has_sib1_length = 1;
conf->si_config->si_window_length = (uint32_t) flexran_get_si_window_length(mod_id, cc_id);
conf->si_config->has_si_window_length = 1;
conf->si_config->n_si_message = 0;
/* Protocol__FlexSiMessage **si_message; */
/* si_message = malloc(sizeof(Protocol__FlexSiMessage *) * si_config->n_si_message); */
/* if(si_message == NULL) */
/* goto error; */
/* for(j = 0; j < si_config->n_si_message; j++){ */
/* si_message[j] = malloc(sizeof(Protocol__FlexSiMessage)); */
/* if(si_message[j] == NULL) */
/* goto error; */
/* protocol__flex_si_message__init(si_message[j]); */
/* //TODO: Fill in with actual value, Periodicity of SI msg in radio frames */
/* si_message[j]->periodicity = 1; //SIPeriod */
/* si_message[j]->has_periodicity = 1; */
/* //TODO: Fill in with actual value, rhe length of the SI message in bytes */
/* si_message[j]->length = 10; */
/* si_message[j]->has_length = 1; */
/* } */
/* if(si_config->n_si_message > 0){ */
/* si_config->si_message = si_message; */
/* } */
}
conf->ra_response_window_size = flexran_get_ra_ResponseWindowSize(mod_id, cc_id);
conf->has_ra_response_window_size = 1;
// belongs to MAC but is read in RRC
conf->mac_contention_resolution_timer = flexran_get_mac_ContentionResolutionTimer(mod_id, cc_id);
conf->has_mac_contention_resolution_timer = 1;
conf->ul_pusch_power = flexran_agent_get_operating_pusch_p0 (mod_id, cc_id);
conf->has_ul_pusch_power = 1;
}
int flexran_agent_unregister_rrc_xface(mid_t mod_id) int flexran_agent_unregister_rrc_xface(mid_t mod_id)
{ {
if (!agent_rrc_xface[mod_id]) { if (!agent_rrc_xface[mod_id]) {
......
...@@ -60,6 +60,10 @@ void flexran_trigger_rrc_measurements (mid_t mod_id, MeasResults_t *); ...@@ -60,6 +60,10 @@ void flexran_trigger_rrc_measurements (mid_t mod_id, MeasResults_t *);
int flexran_agent_rrc_stats_reply(mid_t mod_id, const report_config_t *report_config, Protocol__FlexUeStatsReport **ue_report, Protocol__FlexCellStatsReport **cell_report); int flexran_agent_rrc_stats_reply(mid_t mod_id, const report_config_t *report_config, Protocol__FlexUeStatsReport **ue_report, Protocol__FlexCellStatsReport **cell_report);
int flexran_agent_rrc_destroy_stats_reply(Protocol__FlexranMessage *msg); int flexran_agent_rrc_destroy_stats_reply(Protocol__FlexranMessage *msg);
/* Fill the RRC part of an cell_config message */
void flexran_agent_fill_rrc_cell_config(mid_t mod_id, uint8_t cc_id,
Protocol__FlexCellConfig *conf);
/*Register technology specific interface callbacks*/ /*Register technology specific interface callbacks*/
int flexran_agent_register_rrc_xface(mid_t mod_id); int flexran_agent_register_rrc_xface(mid_t mod_id);
......
...@@ -35,6 +35,9 @@ ...@@ -35,6 +35,9 @@
#include "flexran_agent_extern.h" #include "flexran_agent_extern.h"
#include "flexran_agent_net_comm.h" #include "flexran_agent_net_comm.h"
#include "flexran_agent_ran_api.h" #include "flexran_agent_ran_api.h"
#include "flexran_agent_phy.h"
#include "flexran_agent_mac.h"
#include "flexran_agent_rrc.h"
//#include "PHY/extern.h" //#include "PHY/extern.h"
#include "common/utils/LOG/log.h" #include "common/utils/LOG/log.h"
...@@ -807,8 +810,6 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F ...@@ -807,8 +810,6 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
Protocol__FlexEnbConfigRequest *enb_config_req_msg = input->enb_config_request_msg; Protocol__FlexEnbConfigRequest *enb_config_req_msg = input->enb_config_request_msg;
xid = (enb_config_req_msg->header)->xid; xid = (enb_config_req_msg->header)->xid;
int i, j;
Protocol__FlexEnbConfigReply *enb_config_reply_msg; Protocol__FlexEnbConfigReply *enb_config_reply_msg;
enb_config_reply_msg = malloc(sizeof(Protocol__FlexEnbConfigReply)); enb_config_reply_msg = malloc(sizeof(Protocol__FlexEnbConfigReply));
if(enb_config_reply_msg == NULL) if(enb_config_reply_msg == NULL)
...@@ -827,178 +828,16 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F ...@@ -827,178 +828,16 @@ int flexran_agent_enb_config_reply(mid_t mod_id, const void *params, Protocol__F
cell_conf = malloc(sizeof(Protocol__FlexCellConfig *) * enb_config_reply_msg->n_cell_config); cell_conf = malloc(sizeof(Protocol__FlexCellConfig *) * enb_config_reply_msg->n_cell_config);
if(cell_conf == NULL) if(cell_conf == NULL)
goto error; goto error;
for(i = 0; i < enb_config_reply_msg->n_cell_config; i++){ for(int i = 0; i < enb_config_reply_msg->n_cell_config; i++){
cell_conf[i] = malloc(sizeof(Protocol__FlexCellConfig)); cell_conf[i] = malloc(sizeof(Protocol__FlexCellConfig));
if (!cell_conf[i]) goto error;
protocol__flex_cell_config__init(cell_conf[i]); protocol__flex_cell_config__init(cell_conf[i]);
if (flexran_agent_get_phy_xface(mod_id))
cell_conf[i]->phy_cell_id = 1; flexran_agent_fill_phy_cell_config(mod_id, i, cell_conf[i]);
cell_conf[i]->has_phy_cell_id = flexran_get_cell_id(mod_id,i); if (flexran_agent_get_rrc_xface(mod_id))
flexran_agent_fill_rrc_cell_config(mod_id, i, cell_conf[i]);
cell_conf[i]->cell_id = i; if (flexran_agent_get_mac_xface(mod_id))
cell_conf[i]->has_cell_id = 1; flexran_agent_fill_mac_cell_config(mod_id, i, cell_conf[i]);
cell_conf[i]->pusch_hopping_offset = flexran_get_hopping_offset(mod_id,i);
cell_conf[i]->has_pusch_hopping_offset = 1;
cell_conf[i]->hopping_mode = flexran_get_hopping_mode(mod_id,i);
cell_conf[i]->has_hopping_mode = 1;
cell_conf[i]->n_sb = flexran_get_n_SB(mod_id,i);
cell_conf[i]->has_n_sb = 1;
cell_conf[i]->phich_resource = flexran_get_phich_resource(mod_id,i);
cell_conf[i]->has_phich_resource = 1;
cell_conf[i]->phich_duration = flexran_get_phich_duration(mod_id,i);
cell_conf[i]->has_phich_duration = 1;
cell_conf[i]->init_nr_pdcch_ofdm_sym = flexran_get_num_pdcch_symb(mod_id,i);
cell_conf[i]->has_init_nr_pdcch_ofdm_sym = 1;
Protocol__FlexSiConfig *si_config;
si_config = malloc(sizeof(Protocol__FlexSiConfig));
if(si_config == NULL)
goto error;
protocol__flex_si_config__init(si_config);
si_config->sfn = flexran_get_current_system_frame_num(mod_id);
si_config->has_sfn = 1;
si_config->sib1_length = flexran_get_sib1_length(mod_id,i);
si_config->has_sib1_length = 1;
si_config->si_window_length = (uint32_t) flexran_get_si_window_length(mod_id, i);
si_config->has_si_window_length = 1;
si_config->n_si_message = 0;
/* Protocol__FlexSiMessage **si_message; */
/* si_message = malloc(sizeof(Protocol__FlexSiMessage *) * si_config->n_si_message); */
/* if(si_message == NULL) */
/* goto error; */
/* for(j = 0; j < si_config->n_si_message; j++){ */
/* si_message[j] = malloc(sizeof(Protocol__FlexSiMessage)); */
/* if(si_message[j] == NULL) */
/* goto error; */
/* protocol__flex_si_message__init(si_message[j]); */
/* //TODO: Fill in with actual value, Periodicity of SI msg in radio frames */
/* si_message[j]->periodicity = 1; //SIPeriod */
/* si_message[j]->has_periodicity = 1; */
/* //TODO: Fill in with actual value, rhe length of the SI message in bytes */
/* si_message[j]->length = 10; */
/* si_message[j]->has_length = 1; */
/* } */
/* if(si_config->n_si_message > 0){ */
/* si_config->si_message = si_message; */
/* } */
cell_conf[i]->si_config = si_config;
cell_conf[i]->dl_bandwidth = flexran_get_N_RB_DL(mod_id,i);
cell_conf[i]->has_dl_bandwidth = 1;
cell_conf[i]->ul_bandwidth = flexran_get_N_RB_UL(mod_id,i);
cell_conf[i]->has_ul_bandwidth = 1;
cell_conf[i]->ul_cyclic_prefix_length = flexran_get_ul_cyclic_prefix_length(mod_id, i);
cell_conf[i]->has_ul_cyclic_prefix_length = 1;
cell_conf[i]->dl_cyclic_prefix_length = flexran_get_dl_cyclic_prefix_length(mod_id,i);
cell_conf[i]->has_dl_cyclic_prefix_length = 1;
cell_conf[i]->antenna_ports_count = flexran_get_antenna_ports(mod_id, i);
cell_conf[i]->has_antenna_ports_count = 1;
cell_conf[i]->duplex_mode = flexran_get_duplex_mode(mod_id,i);
cell_conf[i]->has_duplex_mode = 1;
cell_conf[i]->subframe_assignment = flexran_get_subframe_assignment(mod_id, i);
cell_conf[i]->has_subframe_assignment = 1;
cell_conf[i]->special_subframe_patterns = flexran_get_special_subframe_assignment(mod_id,i);
cell_conf[i]->has_special_subframe_patterns = 1;
//TODO: Fill in with actual value, The MBSFN radio frame period
cell_conf[i]->n_mbsfn_subframe_config_rfperiod = 0;
uint32_t *elem_rfperiod;
elem_rfperiod = (uint32_t *) malloc(sizeof(uint32_t) *cell_conf[i]->n_mbsfn_subframe_config_rfperiod);
if(elem_rfperiod == NULL)
goto error;
for(j = 0; j < cell_conf[i]->n_mbsfn_subframe_config_rfperiod; j++){
elem_rfperiod[j] = 1;
}
cell_conf[i]->mbsfn_subframe_config_rfperiod = elem_rfperiod;
//TODO: Fill in with actual value, The MBSFN radio frame offset
cell_conf[i]->n_mbsfn_subframe_config_rfoffset = 0;
uint32_t *elem_rfoffset;
elem_rfoffset = (uint32_t *) malloc(sizeof(uint32_t) *cell_conf[i]->n_mbsfn_subframe_config_rfoffset);
if(elem_rfoffset == NULL)
goto error;
for(j = 0; j < cell_conf[i]->n_mbsfn_subframe_config_rfoffset; j++){
elem_rfoffset[j] = 1;
}
cell_conf[i]->mbsfn_subframe_config_rfoffset = elem_rfoffset;
//TODO: Fill in with actual value, Bitmap indicating the MBSFN subframes
cell_conf[i]->n_mbsfn_subframe_config_sfalloc = 0;
uint32_t *elem_sfalloc;
elem_sfalloc = (uint32_t *) malloc(sizeof(uint32_t) *cell_conf[i]->n_mbsfn_subframe_config_sfalloc);
if(elem_sfalloc == NULL)
goto error;
for(j = 0; j < cell_conf[i]->n_mbsfn_subframe_config_sfalloc; j++){
elem_sfalloc[j] = 1;
}
cell_conf[i]->mbsfn_subframe_config_sfalloc = elem_sfalloc;
cell_conf[i]->prach_config_index = flexran_get_prach_ConfigIndex(mod_id,i);
cell_conf[i]->has_prach_config_index = 1;
cell_conf[i]->prach_freq_offset = flexran_get_prach_FreqOffset(mod_id,i);
cell_conf[i]->has_prach_freq_offset = 1;
cell_conf[i]->ra_response_window_size = flexran_get_ra_ResponseWindowSize(mod_id,i);
cell_conf[i]->has_ra_response_window_size = 1;
cell_conf[i]->mac_contention_resolution_timer = flexran_get_mac_ContentionResolutionTimer(mod_id,i);
cell_conf[i]->has_mac_contention_resolution_timer = 1;
cell_conf[i]->max_harq_msg3tx = flexran_get_maxHARQ_Msg3Tx(mod_id,i);
cell_conf[i]->has_max_harq_msg3tx = 1;
cell_conf[i]->n1pucch_an = flexran_get_n1pucch_an(mod_id,i);
cell_conf[i]->has_n1pucch_an = 1;
cell_conf[i]->deltapucch_shift = flexran_get_deltaPUCCH_Shift(mod_id,i);
cell_conf[i]->has_deltapucch_shift = 1;
cell_conf[i]->nrb_cqi = flexran_get_nRB_CQI(mod_id,i);
cell_conf[i]->has_nrb_cqi = 1;
cell_conf[i]->srs_subframe_config = flexran_get_srs_SubframeConfig(mod_id,i);
cell_conf[i]->has_srs_subframe_config = 1;
cell_conf[i]->srs_bw_config = flexran_get_srs_BandwidthConfig(mod_id,i);
cell_conf[i]->has_srs_bw_config = 1;
cell_conf[i]->srs_mac_up_pts = flexran_get_srs_MaxUpPts(mod_id,i);
cell_conf[i]->has_srs_mac_up_pts = 1;
cell_conf[i]->dl_freq = flexran_agent_get_operating_dl_freq (mod_id,i);
cell_conf[i]->has_dl_freq = 1;
cell_conf[i]->ul_freq = flexran_agent_get_operating_ul_freq (mod_id, i);
cell_conf[i]->has_ul_freq = 1;
cell_conf[i]->eutra_band = flexran_agent_get_operating_eutra_band (mod_id,i);
cell_conf[i]->has_eutra_band = 1;
cell_conf[i]->dl_pdsch_power = flexran_agent_get_operating_pdsch_refpower(mod_id, i);
cell_conf[i]->has_dl_pdsch_power = 1;
cell_conf[i]->ul_pusch_power = flexran_agent_get_operating_pusch_p0 (mod_id,i);
cell_conf[i]->has_ul_pusch_power = 1;
cell_conf[i]->enable_64qam = flexran_get_enable64QAM(mod_id,i);
cell_conf[i]->has_enable_64qam = 1;
cell_conf[i]->carrier_index = i; cell_conf[i]->carrier_index = i;
cell_conf[i]->has_carrier_index = 1; cell_conf[i]->has_carrier_index = 1;
} }
......
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