diff --git a/executables/agent_if/conf_file.h b/executables/agent_if/conf_file.h index 8ff2e0e6f06798e2bbc86e3807e761f8bbfa92f5..6a7bff29b1ffee4a50d70e48c17331b2c682bc5c 100644 --- a/executables/agent_if/conf_file.h +++ b/executables/agent_if/conf_file.h @@ -12,5 +12,9 @@ fr_args_t init_fr_args(int argc, char* argv[]); char* get_near_ric_ip(fr_args_t const*); +char* get_conf_db_dir(fr_args_t const*); + +char* get_conf_db_name(fr_args_t const*); + #endif diff --git a/executables/agent_if/e2_agent_api.h b/executables/agent_if/e2_agent_api.h index 355c29575aca289125d9af9c5233d8e80fd3f63e..6bb326b4ca6754bc7f7b54a043f717d1d9b5ffff 100644 --- a/executables/agent_if/e2_agent_api.h +++ b/executables/agent_if/e2_agent_api.h @@ -26,6 +26,8 @@ #include "sm_io.h" #include "conf_file.h" +#include "../../common/ngran_types.h" + /* void init_agent_api(int mcc, int mnc, @@ -39,6 +41,8 @@ void init_agent_api(int mcc, int mnc, int mnc_digit_len, int nb_id, + int cu_du_id, + ngran_node_t ran_type, sm_io_ag_t io, fr_args_t const* args); diff --git a/executables/agent_if/libe2_agent.a b/executables/agent_if/libe2_agent.a index 090cb296e6068ad930af550f955c9843f5450313..3eb81d11be2804a00fb7e9064a95907b5bd25653 100644 Binary files a/executables/agent_if/libe2_agent.a and b/executables/agent_if/libe2_agent.a differ diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c index 18656aa8013ac8062f3d621dca3f51081d6af669..e7e96dc0968856f26238227503987522d23882e7 100644 --- a/executables/nr-softmodem.c +++ b/executables/nr-softmodem.c @@ -1272,19 +1272,42 @@ int main( int argc, char **argv ) { const gNB_RRC_INST* rrc = RC.nrrrc[mod_id]; assert(rrc != NULL && "rrc cannot be NULL"); - const int mcc = rrc->configuration.mcc[0]; // 208; - const int mnc = rrc->configuration.mnc[0]; // 94; - const int mnc_digit_len = rrc->configuration.mnc_digit_length[0]; // 2; - const int nb_id = rrc->configuration.cell_identity; //42; + const int mcc = rrc->configuration.mcc[0]; + const int mnc = rrc->configuration.mnc[0]; + const int mnc_digit_len = rrc->configuration.mnc_digit_length[0]; + const ngran_node_t node_type = rrc->node_type; + int nb_id = 0; + int cu_du_id = 0; + if (node_type == ngran_gNB) { + nb_id = rrc->configuration.cell_identity; + } else if (node_type == ngran_gNB_DU) { + cu_du_id = rrc->configuration.cell_identity; + } else if (node_type == ngran_gNB_CU) { + cu_du_id = rrc->node_id; + } else { + LOG_E(NR_RRC, "not supported ran type detect\n"); + } sm_io_ag_t io = {.read = read_RAN, .write = write_RAN}; printf("[E2 NODE]: mcc = %d mnc = %d mnc_digit = %d nd_id = %d \n", mcc, mnc, mnc_digit_len, nb_id); + // TODO: need to fix, parse the FlexRIC config in runtime int const agent_argc = 1; char** agent_argv = NULL; fr_args_t ric_args = init_fr_args(agent_argc, agent_argv); - strcpy(ric_args.conf_file, "/usr/local/flexric/flexric.conf"); - strcpy(ric_args.libs_dir, "/usr/local/flexric/"); - init_agent_api( mcc, mnc, mnc_digit_len, nb_id, io, &ric_args); + // TODO: integrate with oai config + char* conf_dir = getenv("FLEXRIC_CONF"); + char* lib_dir = getenv("FLEXRIC_LIB_DIR"); + + if (conf_dir != NULL) + strcpy(ric_args.conf_file, conf_dir); + else + strcpy(ric_args.conf_file, "/usr/local/etc/flexric/flexric.conf"); + if (lib_dir != NULL) + strcpy(ric_args.libs_dir, lib_dir); + else + strcpy(ric_args.libs_dir, "/usr/local/lib/flexric/"); + + init_agent_api( mcc, mnc, mnc_digit_len, nb_id, cu_du_id, node_type, io, &ric_args); ////////////////////////////////// ////////////////////////////////// diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 5e9cb203f6d30143bd215064775b2a46b5e87a63..d6951b9604d602cda858f8e6a03007e3f01056ca 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -1238,15 +1238,28 @@ int main ( int argc, char **argv ) const int mnc = rrc->configuration.mnc[0]; // 94; const int mnc_digit_len = rrc->configuration.mnc_digit_length[0]; // 2; const int nb_id = rrc->configuration.cell_identity; //42; + // TODO: node_type = 0 // ngran_eNB + const int cu_du_id = 0; sm_io_ag_t io = {.read = read_RAN, .write = write_RAN}; printf("[E2 NODE]: mcc = %d mnc = %d mnc_digit = %d nd_id = %d \n", mcc, mnc, mnc_digit_len, nb_id); int const agent_argc = 1; char** agent_argv = NULL; fr_args_t ric_args = init_fr_args(agent_argc, agent_argv); - strcpy(ric_args.conf_file, "/usr/local/flexric/flexric.conf"); - strcpy(ric_args.libs_dir, "/usr/local/flexric/"); - init_agent_api( mcc, mnc, mnc_digit_len, nb_id, io, &ric_args); + // TODO: integrate with oai config + char* conf_dir = getenv("FLEXRIC_CONF"); + char* lib_dir = getenv("FLEXRIC_LIB_DIR"); + + if (conf_dir != NULL) + strcpy(ric_args.conf_file, conf_dir); + else + strcpy(ric_args.conf_file, "/usr/local/etc/flexric/flexric.conf"); + if (lib_dir != NULL) + strcpy(ric_args.libs_dir, lib_dir); + else + strcpy(ric_args.libs_dir, "/usr/local/lib/flexric/"); + + init_agent_api( mcc, mnc, mnc_digit_len, nb_id, cu_du_id, 0, io, &ric_args); ////////////////////////////////// //////////////////////////////////