modicaitions for rru, initial configuration exchage
This commit is contained in:
@@ -619,6 +619,8 @@ typedef enum {
|
|||||||
typedef struct RU_t_s{
|
typedef struct RU_t_s{
|
||||||
/// index of this ru
|
/// index of this ru
|
||||||
uint32_t idx;
|
uint32_t idx;
|
||||||
|
/// Pointer to configuration file
|
||||||
|
char *rf_config_file;
|
||||||
/// southbound interface
|
/// southbound interface
|
||||||
RU_if_south_t if_south;
|
RU_if_south_t if_south;
|
||||||
/// timing
|
/// timing
|
||||||
@@ -1423,6 +1425,7 @@ typedef struct RRU_capabilities_s {
|
|||||||
} RRU_capabilities_t;
|
} RRU_capabilities_t;
|
||||||
|
|
||||||
typedef struct RRU_config_s {
|
typedef struct RRU_config_s {
|
||||||
|
|
||||||
/// Fronthaul format
|
/// Fronthaul format
|
||||||
RU_if_south_t FH_fmt;
|
RU_if_south_t FH_fmt;
|
||||||
/// number of EUTRA bands (<=4) configured in RRU
|
/// number of EUTRA bands (<=4) configured in RRU
|
||||||
|
|||||||
@@ -463,6 +463,8 @@ void RCconfig_RU() {
|
|||||||
int num_eNB4RU = 0;
|
int num_eNB4RU = 0;
|
||||||
libconfig_int eNB_list[256];
|
libconfig_int eNB_list[256];
|
||||||
int fronthaul_flag = CONFIG_TRUE;
|
int fronthaul_flag = CONFIG_TRUE;
|
||||||
|
/// TRUE for eNB or RRU, FALSE for RAU
|
||||||
|
int local_rf_flag = CONFIG_TRUE;
|
||||||
|
|
||||||
load_config_file(&cfg);
|
load_config_file(&cfg);
|
||||||
|
|
||||||
@@ -488,10 +490,29 @@ void RCconfig_RU() {
|
|||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
fronthaul_flag = CONFIG_FALSE;
|
fronthaul_flag = CONFIG_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !(
|
||||||
|
config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_RF,(const char **)&local_rf)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
local_rf_flag = CONFIG_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fronthaul_flag != CONFIG_TRUE) { // no fronthaul
|
if (local_rf_flag == CONFIG_TRUE) { // eNB or RRU
|
||||||
|
|
||||||
|
|
||||||
|
if ( !(
|
||||||
|
config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_MAX_RS_EPRE, &max_pdschReferenceSignalPower)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
AssertFatal (0,
|
||||||
|
"Failed to parse configuration file %s, RU %d config !\n",
|
||||||
|
RC.config_file_name, j);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
AssertFatal((setting_band = config_setting_get_member(setting_ru, CONFIG_STRING_RU_BAND_LIST))!=NULL,"No allowable LTE bands\n");
|
AssertFatal((setting_band = config_setting_get_member(setting_ru, CONFIG_STRING_RU_BAND_LIST))!=NULL,"No allowable LTE bands\n");
|
||||||
|
|
||||||
if (setting_band != NULL) num_bands = config_setting_length(setting_band);
|
if (setting_band != NULL) num_bands = config_setting_length(setting_band);
|
||||||
@@ -503,7 +524,8 @@ void RCconfig_RU() {
|
|||||||
printf("RU %d: band %d\n",j,band[i]);
|
printf("RU %d: band %d\n",j,band[i]);
|
||||||
}
|
}
|
||||||
} // fronthaul_flag == CONFIG_FALSE
|
} // fronthaul_flag == CONFIG_FALSE
|
||||||
else { // fronthaul_flag == CONFIG_TRUE
|
|
||||||
|
if (fronthaul_flag == CONFIG_TRUE) { // fronthaul_flag == CONFIG_TRUE
|
||||||
if ( !(
|
if ( !(
|
||||||
config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_ADDRESS, (const char **)&ipv4)
|
config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_ADDRESS, (const char **)&ipv4)
|
||||||
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_REMOTE_ADDRESS, (const char **)&ipv4_remote)
|
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_REMOTE_ADDRESS, (const char **)&ipv4_remote)
|
||||||
@@ -542,7 +564,6 @@ void RCconfig_RU() {
|
|||||||
if ( !(
|
if ( !(
|
||||||
config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_TX, &nb_tx)
|
config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_TX, &nb_tx)
|
||||||
&& config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_RX, &nb_rx)
|
&& config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_RX, &nb_rx)
|
||||||
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_RF,(const char **)&local_rf)
|
|
||||||
)) {
|
)) {
|
||||||
AssertFatal (0,
|
AssertFatal (0,
|
||||||
"Failed to parse configuration file %s, RU %d config !\n",
|
"Failed to parse configuration file %s, RU %d config !\n",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
RUs = (
|
RUs = (
|
||||||
{
|
{
|
||||||
local_if_name = "lo";
|
local_if_name = "enp1s0";
|
||||||
remote_address = "127.0.0.2";
|
remote_address = "192.168.117.113";
|
||||||
local_address = "127.0.0.1";
|
local_address = "192.168.117.205";
|
||||||
local_portc = 50000;
|
local_portc = 50000;
|
||||||
remote_portc = 50000;
|
remote_portc = 50000;
|
||||||
local_portd = 50001;
|
local_portd = 50001;
|
||||||
|
|||||||
@@ -1210,6 +1210,17 @@ static void* ru_thread( void* param ) {
|
|||||||
else ret = attach_rru(ru);
|
else ret = attach_rru(ru);
|
||||||
AssertFatal(ret==0,"Cannot connect to radio\n");
|
AssertFatal(ret==0,"Cannot connect to radio\n");
|
||||||
}
|
}
|
||||||
|
// if (ru->function == eNodeB_3GPP) { // configure RF parameters only for 3GPP eNodeB, we need to get them from RAU otherwise
|
||||||
|
fill_rf_config(ru,ru->rf_config_file);
|
||||||
|
init_frame_parms(&ru->frame_parms,1);
|
||||||
|
phy_init_RU(ru);
|
||||||
|
// }
|
||||||
|
|
||||||
|
ret = openair0_device_load(&ru->rfdevice,&ru->openair0_cfg);
|
||||||
|
if (setup_RU_buffers(ru)!=0) {
|
||||||
|
printf("Exiting, cannot initialize RU Buffers\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
LOG_I(PHY, "Signaling main thread that RU %d is ready\n",ru->idx);
|
LOG_I(PHY, "Signaling main thread that RU %d is ready\n",ru->idx);
|
||||||
pthread_mutex_lock(&RC.ru_mutex);
|
pthread_mutex_lock(&RC.ru_mutex);
|
||||||
@@ -1829,6 +1840,7 @@ void init_RU(const char *rf_config_file) {
|
|||||||
|
|
||||||
for (ru_id=0;ru_id<RC.nb_RU;ru_id++) {
|
for (ru_id=0;ru_id<RC.nb_RU;ru_id++) {
|
||||||
ru = RC.ru[ru_id];
|
ru = RC.ru[ru_id];
|
||||||
|
ru->rf_config_file = rf_config_file;
|
||||||
ru->idx = ru_id;
|
ru->idx = ru_id;
|
||||||
ru->ts_offset = 0;
|
ru->ts_offset = 0;
|
||||||
// use eNB_list[0] as a reference for RU frame parameters
|
// use eNB_list[0] as a reference for RU frame parameters
|
||||||
@@ -1911,7 +1923,7 @@ void init_RU(const char *rf_config_file) {
|
|||||||
ru->fh_south_out = tx_rf; // local synchronous RF TX
|
ru->fh_south_out = tx_rf; // local synchronous RF TX
|
||||||
ru->start_rf = start_rf; // need to start the local RF interface
|
ru->start_rf = start_rf; // need to start the local RF interface
|
||||||
printf("configuring ru_id %d (start_rf %p)\n",ru_id,start_rf);
|
printf("configuring ru_id %d (start_rf %p)\n",ru_id,start_rf);
|
||||||
|
/*
|
||||||
if (ru->function == eNodeB_3GPP) { // configure RF parameters only for 3GPP eNodeB, we need to get them from RAU otherwise
|
if (ru->function == eNodeB_3GPP) { // configure RF parameters only for 3GPP eNodeB, we need to get them from RAU otherwise
|
||||||
fill_rf_config(ru,rf_config_file);
|
fill_rf_config(ru,rf_config_file);
|
||||||
init_frame_parms(&ru->frame_parms,1);
|
init_frame_parms(&ru->frame_parms,1);
|
||||||
@@ -1922,7 +1934,7 @@ void init_RU(const char *rf_config_file) {
|
|||||||
if (setup_RU_buffers(ru)!=0) {
|
if (setup_RU_buffers(ru)!=0) {
|
||||||
printf("Exiting, cannot initialize RU Buffers\n");
|
printf("Exiting, cannot initialize RU Buffers\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}*/
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case REMOTE_IF5: // the remote unit is IF5 RRU
|
case REMOTE_IF5: // the remote unit is IF5 RRU
|
||||||
|
|||||||
Reference in New Issue
Block a user