diff --git a/ci-scripts/xml_files/container_nsa_b200_quectel.xml b/ci-scripts/xml_files/container_nsa_b200_quectel.xml
index 3cac13dad4..552a917dab 100644
--- a/ci-scripts/xml_files/container_nsa_b200_quectel.xml
+++ b/ci-scripts/xml_files/container_nsa_b200_quectel.xml
@@ -37,8 +37,8 @@
000001
050000
050001
- 070000
070001
+ 070000
050000
050001
010002
@@ -119,19 +119,19 @@
Iperf
- iperf (DL/40Mbps/UDP)(60 sec)(single-ue profile)
- -u -b 40M -t 60
+ iperf (DL/30Mbps/UDP)(60 sec)(single-ue profile)
+ -u -b 30M -t 60
DL
idefix
- 3
+ 5
95
single-ue
Iperf
- iperf (UL/2Mbps/UDP)(60 sec)(single-ue profile)
- -u -b 2M -t 60
+ iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)
+ -u -b 3M -t 60
UL
idefix
1
diff --git a/ci-scripts/xml_files/fr1_nsa_quectel.xml b/ci-scripts/xml_files/fr1_nsa_quectel.xml
index 5e5853ab7f..721c22a840 100644
--- a/ci-scripts/xml_files/fr1_nsa_quectel.xml
+++ b/ci-scripts/xml_files/fr1_nsa_quectel.xml
@@ -34,9 +34,10 @@
050000
050001
000001
+ 070003
070000
- 000001
070001
+ 070002
000001
050000
050001
@@ -114,16 +115,38 @@
Iperf
- iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile)
- -u -b 60M -t 60
+ iperf (DL/30Mbps/UDP)(30 sec)(single-ue profile)
+ -u -b 30M -t 30
DL
idefix
- 3
+ 5
95
single-ue
+ Iperf
+ iperf (DL/40Mbps/UDP)(30 sec)(single-ue profile)
+ -u -b 40M -t 30
+ DL
+ idefix
+ 5
+ 95
+ single-ue
+
+
+
+ Iperf
+ iperf (DL/60Mbps/UDP)(30 sec)(single-ue profile)
+ -u -b 60M -t 30
+ DL
+ idefix
+ 5
+ 95
+ single-ue
+
+
+
Iperf
iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)
-u -b 3M -t 60
diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index ca21b2825e..95b5ff1a60 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -2774,7 +2774,6 @@ target_link_libraries (test5Gnas LIB_5GNAS_GNB CONFIG_LIB minimal_lib )
###################################################
add_executable(lte-softmodem
- ${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
${OPENAIR_TARGETS}/RT/USER/lte-enb.c
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
${OPENAIR_TARGETS}/RT/USER/ru_control.c
@@ -2889,7 +2888,6 @@ target_link_libraries(du_test
add_executable(oairu
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
${OPENAIR_TARGETS}/RT/USER/ru_control.c
- ${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
${OPENAIR_TARGETS}/ARCH/COMMON/record_player.c
${OPENAIR_DIR}/executables/softmodem-common.c
@@ -2917,7 +2915,6 @@ target_link_libraries (oairu pthread m ${CONFIG_LIB} rt ${CMAKE_DL_LIBS} ${T_LIB
#######################################
add_executable(lte-uesoftmodem
- ${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
${OPENAIR_TARGETS}/RT/USER/lte-ue.c
${OPENAIR_TARGETS}/RT/USER/lte-uesoftmodem.c
${OPENAIR_DIR}/executables/softmodem-common.c
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index b427b161e5..2dc03967f6 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -707,7 +707,7 @@ function main() {
# generate USIM data
if [ -f $dbin/conf2uedata ]; then
- install_nas_tools $conf_nvram_path $gen_nvram_path
+ install_nas_tools $conf_nvram_path $gen_nvram_path "$dlog/conf2uedata.txt"
echo_info "Copying UE specific part to $DIR/$build_dir/build"
cp -Rvf $dbin/.ue_emm.nvram0 $DIR/$build_dir/build
cp -Rvf $dbin/.ue.nvram0 $DIR/$build_dir/build
diff --git a/cmake_targets/install_external_packages.ubuntu20 b/cmake_targets/install_external_packages.ubuntu20
index f0314ca575..0023c8d3c8 100755
--- a/cmake_targets/install_external_packages.ubuntu20
+++ b/cmake_targets/install_external_packages.ubuntu20
@@ -452,17 +452,6 @@ install_asn1c_from_source(){
) > "$asn1_install_log" 2>&1
}
-#################################################
-# 2. compile
-################################################
-
-install_nas_tools() {
- echo_success "generate .ue_emm.nvram .ue.nvram"
- ./nvram --gen -c "$1" -o "$2"
- ./usim --gen -c "$1" -o "$2"
-}
-
-
################################
# set_openair_env
###############################
diff --git a/cmake_targets/nas_sim_tools/CMakeLists.txt b/cmake_targets/nas_sim_tools/CMakeLists.txt
index 308c71be4c..739e55a33e 100755
--- a/cmake_targets/nas_sim_tools/CMakeLists.txt
+++ b/cmake_targets/nas_sim_tools/CMakeLists.txt
@@ -15,6 +15,7 @@ set(CMAKE_C_FLAGS
set(OPENAIR_DIR $ENV{OPENAIR_DIR})
set(OPENAIR3_DIR $ENV{OPENAIR_DIR}/openair3)
include_directories (${OPENAIR_DIR}/openair2/COMMON)
+include_directories (${OPENAIR_DIR})
set(CONF2UEDATA_LIB_SRC
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_emm.c
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 06f32183b7..a23d4eca9d 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -892,20 +892,10 @@ install_asn1c_from_source(){
################################################
install_nas_tools() {
- if [ ! -f .ue.nvram0 ]; then
- echo_success "generate .ue_emm.nvram .ue.nvram"
- ./nvram --gen -c $1 -o $2
- else
- [ ./nvram -nt .ue.nvram0 -o ./nvram -nt .ue_emm.nvram0 ] && ./nvram --gen -c $1 -o $2
- fi
-
- if [ ! -f .usim.nvram0 ]; then
- echo_success "generate .usim.nvram"
- ./usim --gen -c $1 -o $2
- else
- [ ./usim -nt .usim.nvram0 ] && ./usim --gen -c $1 -o $2
- fi
-
+ echo_success "generate .ue_emm.nvram .ue.nvram"
+ ./nvram --gen -c $1 -o $2 > "$3"
+ echo_success "generate .usim.nvram"
+ ./usim --gen -c $1 -o $2 >> "$3"
}
diff --git a/common/utils/system.c b/common/utils/system.c
index 93b13f03f2..d897063144 100644
--- a/common/utils/system.c
+++ b/common/utils/system.c
@@ -211,6 +211,19 @@ void start_background_system(void) {
background_system_process();
}
+int rt_sleep_ns (uint64_t x)
+{
+ struct timespec myTime;
+ clock_gettime(CLOCK_MONOTONIC, &myTime);
+ myTime.tv_sec += x/1000000000ULL;
+ myTime.tv_nsec = x%1000000000ULL;
+ if (myTime.tv_nsec>=1000000000) {
+ myTime.tv_nsec -= 1000000000;
+ myTime.tv_sec++;
+ }
+
+ return clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &myTime, NULL);
+}
void threadCreate(pthread_t* t, void * (*func)(void*), void * param, char* name, int affinity, int priority){
pthread_attr_t attr;
@@ -260,11 +273,128 @@ void threadCreate(pthread_t* t, void * (*func)(void*), void * param, char* name,
pthread_attr_destroy(&attr);
}
+// Legacy, pthread_create + thread_top_init() should be replaced by threadCreate
+// threadCreate encapsulates the posix pthread api
+void thread_top_init(char *thread_name,
+ int affinity,
+ uint64_t runtime,
+ uint64_t deadline,
+ uint64_t period) {
+
+#ifdef DEADLINE_SCHEDULER
+ struct sched_attr attr;
+
+ unsigned int flags = 0;
+
+ attr.size = sizeof(attr);
+ attr.sched_flags = 0;
+ attr.sched_nice = 0;
+ attr.sched_priority = 0;
+
+ attr.sched_policy = SCHED_DEADLINE;
+ attr.sched_runtime = runtime;
+ attr.sched_deadline = deadline;
+ attr.sched_period = period;
+
+ if (sched_setattr(0, &attr, flags) < 0 ) {
+ perror("[SCHED] eNB tx thread: sched_setattr failed\n");
+ fprintf(stderr,"sched_setattr Error = %s",strerror(errno));
+ exit(1);
+ }
+
+#else //LOW_LATENCY
+ int policy, s, j;
+ struct sched_param sparam;
+ char cpu_affinity[1024];
+ cpu_set_t cpuset;
+ int settingPriority = 1;
+
+ /* Set affinity mask to include CPUs 2 to MAX_CPUS */
+ /* CPU 0 is reserved for UHD threads */
+ /* CPU 1 is reserved for all RX_TX threads */
+ /* Enable CPU Affinity only if number of CPUs > 2 */
+ CPU_ZERO(&cpuset);
+
+#ifdef CPU_AFFINITY
+ if (affinity == 0) {
+ LOG_W(HW,"thread_top_init() called with affinity==0, but overruled by #ifdef CPU_AFFINITY\n");
+ }
+ else if (get_nprocs() > 2)
+ {
+ for (j = 2; j < get_nprocs(); j++)
+ CPU_SET(j, &cpuset);
+ s = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+ if (s != 0)
+ {
+ perror( "pthread_setaffinity_np");
+ exit_fun("Error setting processor affinity");
+ }
+ }
+#else //CPU_AFFINITY
+ if (affinity) {
+ LOG_W(HW,"thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY.\n");
+ }
+#endif //CPU_AFFINITY
+
+ /* Check the actual affinity mask assigned to the thread */
+ s = pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+ if (s != 0)
+ {
+ perror( "pthread_getaffinity_np");
+ exit_fun("Error getting processor affinity ");
+ }
+ memset(cpu_affinity,0,sizeof(cpu_affinity));
+ for (j = 0; j < 1024; j++)
+ {
+ if (CPU_ISSET(j, &cpuset))
+ {
+ char temp[1024];
+ sprintf (temp, " CPU_%d", j);
+ strcat(cpu_affinity, temp);
+ }
+ }
+
+ if (checkIfFedoraDistribution())
+ if (checkIfGenericKernelOnFedora())
+ if (checkIfInsideContainer())
+ settingPriority = 0;
+
+ if (settingPriority) {
+ memset(&sparam, 0, sizeof(sparam));
+ sparam.sched_priority = sched_get_priority_max(SCHED_FIFO);
+ policy = SCHED_FIFO;
+
+ s = pthread_setschedparam(pthread_self(), policy, &sparam);
+ if (s != 0) {
+ perror("pthread_setschedparam : ");
+ exit_fun("Error setting thread priority");
+ }
+
+ s = pthread_getschedparam(pthread_self(), &policy, &sparam);
+ if (s != 0) {
+ perror("pthread_getschedparam : ");
+ exit_fun("Error getting thread priority");
+ }
+
+ pthread_setname_np(pthread_self(), thread_name);
+
+ LOG_I(HW, "[SCHED][eNB] %s started on CPU %d, sched_policy = %s , priority = %d, CPU Affinity=%s \n",thread_name,sched_getcpu(),
+ (policy == SCHED_FIFO) ? "SCHED_FIFO" :
+ (policy == SCHED_RR) ? "SCHED_RR" :
+ (policy == SCHED_OTHER) ? "SCHED_OTHER" :
+ "???",
+ sparam.sched_priority, cpu_affinity );
+ }
+
+#endif //LOW_LATENCY
+}
+
+
// Block CPU C-states deep sleep
-void configure_linux(void) {
+void set_latency_target(void) {
int ret;
static int latency_target_fd=-1;
- uint32_t latency_target_value=10; // in microseconds
+ uint32_t latency_target_value=2; // in microseconds
if (latency_target_fd == -1) {
if ( (latency_target_fd = open("/dev/cpu_dma_latency", O_RDWR)) != -1 ) {
ret = write(latency_target_fd, &latency_target_value, sizeof(latency_target_value));
diff --git a/common/utils/system.h b/common/utils/system.h
index c76fef9144..c25c2a6f1f 100644
--- a/common/utils/system.h
+++ b/common/utils/system.h
@@ -43,10 +43,9 @@ int background_system(char *command);
void start_background_system(void);
void set_latency_target(void);
-void configure_linux(void);
-void threadCreate(pthread_t* t, void * (*func)(void*), void * param, char* name, int affinity, int priority);
-
+void threadCreate(pthread_t *t, void *(*func)(void *), void *param, char *name, int affinity, int priority);
+
#define SCHED_OAI SCHED_RR
#define OAI_PRIORITY_RT_LOW sched_get_priority_min(SCHED_OAI)
#define OAI_PRIORITY_RT ((sched_get_priority_min(SCHED_OAI)+sched_get_priority_max(SCHED_OAI))/2)
@@ -65,7 +64,7 @@ void thread_top_init(char *thread_name,
int checkIfFedoraDistribution(void);
int checkIfGenericKernelOnFedora(void);
int checkIfInsideContainer(void);
-
+int rt_sleep_ns (uint64_t x);
#ifdef __cplusplus
}
#endif
diff --git a/common/utils/utils.c b/common/utils/utils.c
index 3f32881393..16402c1057 100644
--- a/common/utils/utils.c
+++ b/common/utils/utils.c
@@ -7,23 +7,7 @@
#include
#include "utils.h"
-void *calloc_or_fail(size_t size) {
- void *ptr = calloc(1, size);
- if (ptr == NULL) {
- fprintf(stderr, "[UE] Failed to calloc %zu bytes", size);
- exit(EXIT_FAILURE);
- }
- return ptr;
-}
-void *malloc_or_fail(size_t size) {
- void *ptr = malloc(size);
- if (ptr == NULL) {
- fprintf(stderr, "[UE] Failed to malloc %zu bytes", size);
- exit(EXIT_FAILURE);
- }
- return ptr;
-}
const char *hexdump(const void *data, size_t data_len, char *out, size_t out_len)
{
diff --git a/common/utils/utils.h b/common/utils/utils.h
index d4337e71a6..5963ae0c8e 100644
--- a/common/utils/utils.h
+++ b/common/utils/utils.h
@@ -1,15 +1,112 @@
#ifndef _UTILS_H
#define _UTILS_H
-#include
-#include
+
#ifdef __cplusplus
extern "C" {
#endif
+#include
+#include
+#include
+#include
+#include
+#include
+
+#ifdef MALLOC_TRACE
+#define malloc myMalloc
+#endif
+
#define sizeofArray(a) (sizeof(a)/sizeof(*(a)))
-void *calloc_or_fail(size_t size);
-void *malloc_or_fail(size_t size);
+
+#define cmax(a,b) ((a>b) ? (a) : (b))
+#define cmax3(a,b,c) ((cmax(a,b)>c) ? (cmax(a,b)) : (c))
+#define cmin(a,b) ((a
extern volatile int oai_exit;
@@ -1335,24 +1336,22 @@ void *ru_thread( void *param ) {
while (!oai_exit) {
- // these are local subframe/frame counters to check that we are in synch with the fronthaul timing.
- // They are set on the first rx/tx in the underly FH routines.
- slot_start = timespec_add(slot_start,slot_duration);
- struct timespec curr_time;
- clock_gettime(CLOCK_MONOTONIC, &curr_time);
-
- struct timespec sleep_time;
-
- if((slot_start.tv_sec > curr_time.tv_sec) || (slot_start.tv_sec == curr_time.tv_sec && slot_start.tv_nsec > curr_time.tv_nsec)){
- sleep_time = timespec_sub(slot_start,curr_time);
+
+ if (NFAPI_MODE==NFAPI_MODE_VNF) {
+ // We should make a VNF main loop with proper tasks calls in case of VNF
+ slot_start = timespec_add(slot_start,slot_duration);
+ struct timespec curr_time;
+ clock_gettime(CLOCK_MONOTONIC, &curr_time);
- usleep(sleep_time.tv_nsec * 1e-3);
+ struct timespec sleep_time;
+
+ if((slot_start.tv_sec > curr_time.tv_sec) || (slot_start.tv_sec == curr_time.tv_sec && slot_start.tv_nsec > curr_time.tv_nsec)){
+ sleep_time = timespec_sub(slot_start,curr_time);
+
+ usleep(sleep_time.tv_nsec * 1e-3);
+ }
}
- else{//continue
- }
-
- // clock_gettime(CLOCK_MONOTONIC, &curr_time);
- //printf("sfn:%d, slot:%d, start time %d.%d slot start %d.%d \n",frame,slot,curr_time.tv_sec,curr_time.tv_nsec,slot_start.tv_sec,slot_start.tv_nsec);
+
if (slot==(fp->slots_per_frame-1)) {
slot=0;
frame++;
diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c
index 62bef5a34d..2b8335167a 100644
--- a/executables/nr-softmodem.c
+++ b/executables/nr-softmodem.c
@@ -656,7 +656,7 @@ int main( int argc, char **argv ) {
memset(&openair0_cfg[0],0,sizeof(openair0_config_t)*MAX_CARDS);
memset(tx_max_power,0,sizeof(int)*MAX_NUM_CCs);
logInit();
- configure_linux();
+ set_latency_target();
printf("Reading in command-line options\n");
get_options ();
diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c
index ac89bcfd4e..c718b7a15c 100644
--- a/executables/nr-uesoftmodem.c
+++ b/executables/nr-uesoftmodem.c
@@ -84,6 +84,7 @@ unsigned short config_frames[4] = {2,9,11,13};
#include "executables/thread-common.h"
#include "nr_nas_msg_sim.h"
+#include
extern const char *duplex_mode[];
THREAD_STRUCT thread_struct;
@@ -522,7 +523,7 @@ int main( int argc, char **argv ) {
// init UE_PF_PO and mutex lock
pthread_mutex_init(&ue_pf_po_mutex, NULL);
memset (&UE_PF_PO[0][0], 0, sizeof(UE_PF_PO_t)*NUMBER_OF_UE_MAX*MAX_NUM_CCs);
- configure_linux();
+ set_latency_target();
mlockall(MCL_CURRENT | MCL_FUTURE);
if(IS_SOFTMODEM_DOSCOPE) {
diff --git a/executables/ocp-gnb.c b/executables/ocp-gnb.c
index 7b4b1c6680..462a07c707 100644
--- a/executables/ocp-gnb.c
+++ b/executables/ocp-gnb.c
@@ -920,7 +920,7 @@ int main( int argc, char **argv ) {
# define PACKAGE_VERSION "UNKNOWN"
#endif
LOG_I(HW, "Version: %s\n", PACKAGE_VERSION);
- configure_linux();
+ set_latency_target();
get_options ();
get_common_options(SOFTMODEM_GNB_BIT );
AssertFatal(!CONFIG_ISFLAGSET(CONFIG_ABORT),"Getting configuration failed\n");
diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c
index d81a18a84b..ecd3dc99f7 100644
--- a/openair1/PHY/INIT/nr_init_ue.c
+++ b/openair1/PHY/INIT/nr_init_ue.c
@@ -32,6 +32,7 @@
#include "PHY/NR_REFSIG/ul_ref_seq_nr.h"
#include "PHY/NR_REFSIG/refsig_defs_ue.h"
#include "PHY/NR_REFSIG/nr_refsig.h"
+#include
#if 0
void phy_config_harq_ue(module_id_t Mod_id,
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index b5bcb0848d..3ccbd8ca35 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -42,7 +42,6 @@
#include "common/utils/LOG/log.h"
#include "targets/RT/USER/lte-softmodem.h"
#include
-#include "targets/RT/USER/rt_wrapper.h"
#include
//#define DEBUG_DLSCH_CODING
diff --git a/openair1/PHY/TOOLS/calibration_test.c b/openair1/PHY/TOOLS/calibration_test.c
index 53baf83d41..5dced27060 100644
--- a/openair1/PHY/TOOLS/calibration_test.c
+++ b/openair1/PHY/TOOLS/calibration_test.c
@@ -42,7 +42,7 @@ int main(int argc, char **argv) {
get_common_options(SOFTMODEM_GNB_BIT );
config_process_cmdline( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL);
CONFIG_CLEARRTFLAG(CONFIG_NOEXITONHELP);
- configure_linux();
+ set_latency_target();
int N_RB=50;
diff --git a/openair1/PHY/TOOLS/lte_enb_scope.c b/openair1/PHY/TOOLS/lte_enb_scope.c
index bed507feee..7fde9f244c 100644
--- a/openair1/PHY/TOOLS/lte_enb_scope.c
+++ b/openair1/PHY/TOOLS/lte_enb_scope.c
@@ -49,9 +49,15 @@ void reset_stats(FL_OBJECT *button, long arg) {
int i,j,k;
PHY_VARS_eNB *phy_vars_eNB = RC.eNB[0][0];
- for (i=0; idlsch[i][0]->Mlimit; j++) {
+ printf("XXX %d %d %d\n",
+ sizeofArray(phy_vars_eNB->UE_stats),
+ sizeofArray( phy_vars_eNB->UE_stats[i].dlsch_NAK),
+ sizeofArray( *phy_vars_eNB->UE_stats[i].dlsch_NAK)
+ );
+
+ for (i=0; iUE_stats); i++) {
+ for (k=0; kUE_stats[i].dlsch_NAK); k++) { //harq_processes
+ for (j=0; jUE_stats[i].dlsch_NAK); j++) {
phy_vars_eNB->UE_stats[i].dlsch_NAK[k][j]=0;
phy_vars_eNB->UE_stats[i].dlsch_ACK[k][j]=0;
phy_vars_eNB->UE_stats[i].dlsch_trials[k][j]=0;
@@ -67,7 +73,6 @@ void reset_stats(FL_OBJECT *button, long arg) {
}
}
-
static void *scope_thread_eNB(void *arg) {
struct sched_param sched_param;
int UE_id, CC_id;
@@ -75,7 +80,6 @@ static void *scope_thread_eNB(void *arg) {
sched_param.sched_priority = sched_get_priority_min(SCHED_FIFO)+1;
sched_setscheduler(0, SCHED_FIFO,&sched_param);
printf("Scope thread has priority %d\n",sched_param.sched_priority);
-
while (!oai_exit) {
ue_cnt=0;
diff --git a/openair1/PHY/impl_defs_top.h b/openair1/PHY/impl_defs_top.h
index 31b9899605..ad68bc5769 100644
--- a/openair1/PHY/impl_defs_top.h
+++ b/openair1/PHY/impl_defs_top.h
@@ -107,11 +107,10 @@
* @}
*/
+#include
#include "defs_eNB.h"
#include "types.h"
-
-
/** @addtogroup _PHY_STRUCTURES_
* @{
*/
@@ -315,50 +314,6 @@ typedef struct {
#include "openairinterface5g_limits.h"
#include "assertions.h"
-#define cmax(a,b) ((a>b) ? (a) : (b))
-#define cmax3(a,b,c) ((cmax(a,b)>c) ? (cmax(a,b)) : (c))
-#define cmin(a,b) ((adlsch[k][i] = new_eNB_dlsch(Kmimo,8,Nsoft,N_RB_DL,0,&eNB->frame_parms);
@@ -1247,6 +1247,17 @@ int main(int argc, char **argv) {
eNB->dlsch[k][i]->rnti = n_rnti+k;
}
}
+
+ for (int i=0;iulsch[i] = new_eNB_ulsch(MAX_TURBO_ITERATIONS,eNB->frame_parms.N_RB_UL, 0);
+
+ if (!eNB->ulsch[i]) {
+ LOG_E(PHY,"Can't get eNB ulsch structures\n");
+ exit(-1);
+ }
+ }
/* allocate memory for both subframes (only one is really used
* but there is now "copy_harq_proc_struct" which needs both
@@ -1815,12 +1826,12 @@ int main(int argc, char **argv) {
if (t_rx > 2000 )
n_rx_dropped++;
- appendVarArray(table_tx, &t_tx);
- appendVarArray(table_tx_ifft, &t_tx_ifft);
- appendVarArray(table_rx, &t_rx );
- appendVarArray(table_rx_fft, &t_rx_fft );
- appendVarArray(table_rx_demod, &t_rx_demod );
- appendVarArray(table_rx_dec, &t_rx_dec );
+ appendVarArray(&table_tx, &t_tx);
+ appendVarArray(&table_tx_ifft, &t_tx_ifft);
+ appendVarArray(&table_rx, &t_rx );
+ appendVarArray(&table_rx_fft, &t_rx_fft );
+ appendVarArray(&table_rx_demod, &t_rx_demod );
+ appendVarArray(&table_rx_dec, &t_rx_dec );
} //trials
// round_trials[0]: number of code word : goodput the protocol
diff --git a/openair1/SIMULATION/LTE_PHY/dummy_functions.c b/openair1/SIMULATION/LTE_PHY/dummy_functions.c
index 120e4845d9..fcbab51f4b 100644
--- a/openair1/SIMULATION/LTE_PHY/dummy_functions.c
+++ b/openair1/SIMULATION/LTE_PHY/dummy_functions.c
@@ -86,12 +86,6 @@ int8_t get_Po_NOMINAL_PUSCH(module_id_t module_idP, uint8_t CC_id) { return(0);}
int8_t get_deltaP_rampup(module_id_t module_idP, uint8_t CC_id) { return(0);}
-void thread_top_init(char *thread_name,
- int affinity,
- uint64_t runtime,
- uint64_t deadline,
- uint64_t period) {}
-
int oai_nfapi_hi_dci0_req(nfapi_hi_dci0_request_t *hi_dci0_req) { return(0);}
int oai_nfapi_tx_req(nfapi_tx_request_t *tx_req) { return(0); }
diff --git a/openair1/SIMULATION/LTE_PHY/mbmssim.c b/openair1/SIMULATION/LTE_PHY/mbmssim.c
index 53c15ccc89..31c3b47227 100644
--- a/openair1/SIMULATION/LTE_PHY/mbmssim.c
+++ b/openair1/SIMULATION/LTE_PHY/mbmssim.c
@@ -1971,12 +1971,12 @@ int main(int argc, char **argv) {
if (t_rx > 2000 )
n_rx_dropped++;
- appendVarArray(table_tx, &t_tx);
- appendVarArray(table_tx_ifft, &t_tx_ifft);
- appendVarArray(table_rx, &t_rx );
- appendVarArray(table_rx_fft, &t_rx_fft );
- appendVarArray(table_rx_demod, &t_rx_demod );
- appendVarArray(table_rx_dec, &t_rx_dec );
+ appendVarArray(&table_tx, &t_tx);
+ appendVarArray(&table_tx_ifft, &t_tx_ifft);
+ appendVarArray(&table_rx, &t_rx );
+ appendVarArray(&table_rx_fft, &t_rx_fft );
+ appendVarArray(&table_rx_demod, &t_rx_demod );
+ appendVarArray(&table_rx_dec, &t_rx_dec );
} //trials
// round_trials[0]: number of code word : goodput the protocol
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index 39593a640c..1b1058535e 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -743,7 +743,7 @@ int main(int argc, char **argv) {
UE2eNB->max_Doppler = maxDoppler;
// NN: N_RB_UL has to be defined in ulsim
- for (int k=0; kulsch[k] = new_eNB_ulsch(max_turbo_iterations,N_RB_DL,0);
+ for (int k=0; kulsch[k] = new_eNB_ulsch(max_turbo_iterations,N_RB_DL,0);
UE->ulsch[0] = new_ue_ulsch(N_RB_DL,0);
printf("ULSCH %p\n",UE->ulsch[0]);
@@ -1279,14 +1279,14 @@ int main(int argc, char **argv) {
n_rx_dropped++;
if (trials < 1000) {
- appendVarArray(table_tx, &t_tx);
- appendVarArray(table_tx_ifft, &t_tx_ifft);
- appendVarArray(table_tx_mod, &t_tx_mod );
- appendVarArray(table_tx_enc, &t_tx_enc );
- appendVarArray(table_rx, &t_rx );
- appendVarArray(table_rx_fft, &t_rx_fft );
- appendVarArray(table_rx_demod, &t_rx_demod );
- appendVarArray(table_rx_dec, &t_rx_dec );
+ appendVarArray(&table_tx, &t_tx);
+ appendVarArray(&table_tx_ifft, &t_tx_ifft);
+ appendVarArray(&table_tx_mod, &t_tx_mod );
+ appendVarArray(&table_tx_enc, &t_tx_enc );
+ appendVarArray(&table_rx, &t_rx );
+ appendVarArray(&table_rx_fft, &t_rx_fft );
+ appendVarArray(&table_rx_demod, &t_rx_demod );
+ appendVarArray(&table_rx_dec, &t_rx_dec );
}
} //trials
diff --git a/openair2/COMMON/openair_defs.h b/openair2/COMMON/openair_defs.h
index 4d8d50606c..cdda6a7e87 100644
--- a/openair2/COMMON/openair_defs.h
+++ b/openair2/COMMON/openair_defs.h
@@ -24,26 +24,6 @@
#include
#include
-#if !defined (msg)
-# define msg(aRGS...) LOG_D(PHY, ##aRGS)
-#endif
-#ifndef malloc16
-# ifdef __AVX2__
-# define malloc16(x) memalign(32,x)
-# else
-# define malloc16(x) memalign(16,x)
-# endif
-#endif
-#define free16(y,x) free(y)
-#define bigmalloc malloc
-#define bigmalloc16 malloc16
-#define openair_free(y,x) free((y))
-#define PAGE_SIZE 4096
-
-#define PAGE_MASK 0xfffff000
-#define virt_to_phys(x) (x)
-
-#define cmax(a,b) ((a>b) ? (a) : (b))
-#define cmin(a,b) ((a
#endif // /*__openair_DEFS_H__ */
diff --git a/openair2/SIMULATION/NR_RRC/itti_sim.c b/openair2/SIMULATION/NR_RRC/itti_sim.c
index e3792dca77..28de1ca3b8 100644
--- a/openair2/SIMULATION/NR_RRC/itti_sim.c
+++ b/openair2/SIMULATION/NR_RRC/itti_sim.c
@@ -546,7 +546,7 @@ int main( int argc, char **argv )
#endif
logInit();
- //configure_linux();
+ //set_latency_target();
printf("Reading in command-line options\n");
get_options ();
diff --git a/openair2/UTIL/LISTS/list.h b/openair2/UTIL/LISTS/list.h
index b88c581dea..079c723ebf 100644
--- a/openair2/UTIL/LISTS/list.h
+++ b/openair2/UTIL/LISTS/list.h
@@ -48,6 +48,8 @@
#include "UTIL/MEM/mem_block.h"
+#include
+
//-----------------------------------------------------------------------------
void list_init (list_t* , char *);
@@ -126,10 +128,13 @@ static inline void * dataArray(varArray_t * input) {
return input+1;
}
-static inline void appendVarArray(varArray_t * input, void* data) {
+static inline void appendVarArray(varArray_t ** inputPtr, void* data) {
+ varArray_t *input=*inputPtr;
if (input->size>=input->mallocedSize) {
input->mallocedSize+=input->increment;
- input=(varArray_t *)realloc(input,sizeof(varArray_t)+input->mallocedSize*input->atomSize);
+ *inputPtr=(varArray_t *)realloc(input,sizeof(varArray_t)+input->mallocedSize*input->atomSize);
+ AssertFatal(*inputPtr, "no memory left");
+ input=*inputPtr;
}
memcpy((uint8_t*)(input+1)+input->atomSize*input->size++, data, input->atomSize);
}
diff --git a/targets/RT/USER/TOOLS/thread_ipc.c b/targets/RT/USER/TOOLS/thread_ipc.c
deleted file mode 100644
index 7eda3e8431..0000000000
--- a/targets/RT/USER/TOOLS/thread_ipc.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- * contact@openairinterface.org
- */
-
-#include
-#include
-#include
-#include
-
-#include
-#include
-
-#include "thread_ipc.h"
-
-g_thread_ipc_t thread_ipc = {0};
-
-void loop_buffer_reset(buffer_t *loop_buf)
-{
- int i;
-
- for (i = 0; i < BUFFERMAX; i++) {
- loop_buf[i].subframe_num = -1;
- }
-
- return;
-}
-
-static void loop_buffer_init(loop_buffer_op_t *loop_buffer)
-{
- loop_buffer->packet_num = 0;
- loop_buffer->isfull = 0;
- loop_buffer->isempty = 1;
-
- pthread_mutex_init(&loop_buffer->buffer_mutex, NULL);
-
- pthread_cond_init(&loop_buffer->full_cond, NULL);
- pthread_cond_init(&loop_buffer->empty_cond, NULL);
-
- loop_buffer_reset(loop_buffer->loop_buf);
-
- return;
-}
-
-static void sync_buffer_init(sync_buffer_t *sync_buffer)
-{
- sync_buffer->decoding_subframe_num = 0;
- pthread_mutex_init(&sync_buffer->buffer_mutex, NULL);
-
- return;
-}
-
-int thread_ipc_init(void)
-{
- //printf("recv %d\n", thread_ipc.sync_buffer.decoding_subframe_num);
- thread_ipc.ue_sync_state = 0;
- thread_ipc.rx_timestamp = 0;
- thread_ipc.tx_timestamp = 0;
- thread_ipc.current_subframe = 0;
-
- pthread_mutex_init(&thread_ipc.dl_decode_mutex, NULL);
- pthread_mutex_lock(&thread_ipc.dl_decode_mutex);
-
- pthread_mutex_init(&thread_ipc.ul_send_mutex, NULL);
- pthread_mutex_lock(&thread_ipc.ul_send_mutex);
-
- pthread_mutex_init(&thread_ipc.sync_mutex, NULL);
- pthread_mutex_lock(&thread_ipc.sync_mutex);
-
- loop_buffer_init(&thread_ipc.loop_buffer);
- sync_buffer_init(&thread_ipc.sync_buffer);
-
- return 0;
-}
-
-int thread_ipc_deinit(void)
-{
- pthread_mutex_destroy(&thread_ipc.ul_send_mutex);
- pthread_mutex_destroy(&thread_ipc.sync_mutex);
- pthread_mutex_destroy(&thread_ipc.dl_decode_mutex);
-
- pthread_mutex_destroy(&thread_ipc.loop_buffer.buffer_mutex);
- pthread_cond_destroy(&thread_ipc.loop_buffer.full_cond);
- pthread_cond_destroy(&thread_ipc.loop_buffer.empty_cond);
-
- pthread_mutex_destroy(&thread_ipc.sync_buffer.buffer_mutex);
-
- return 0;
-}
-
-int set_thread_attr(pthread_attr_t *attr, int policy, int priority, int cpuid)
-{
- struct sched_param param;
- cpu_set_t cpu_info;
-
- pthread_attr_init(attr);
-
- if (pthread_attr_setschedpolicy(attr, policy) != 0) {
- perror("pthread_attr_setschedpolicy");
- return -1;
- }
-
- param.sched_priority = priority;
-
- if (pthread_attr_setschedparam(attr, ¶m) != 0) {
- perror("pthread_attr_setschedparam");
- return -1;
- }
-
- CPU_ZERO(&cpu_info);
- CPU_SET(cpuid, &cpu_info);
-
- if (pthread_attr_setaffinity_np(attr,sizeof(cpu_set_t),&cpu_info)) {
- perror("pthread_attr_setaffinity_np");
- return -1;
- }
-
- if (pthread_attr_setinheritsched(attr, PTHREAD_EXPLICIT_SCHED) != 0) {
- perror("pthread_attr_setinheritsched");
- return -1;
- }
-
- return 0;
-}
-
-
-int find_subframe_num(unsigned long long current_subframe_num, buffer_t *buf, int *flag)
-{
- long long tmp;
- int i;
-
- tmp = current_subframe_num;
-
- for ( i = 0; i < HIGHBUFFER + 1; i++) {
- if(tmp == buf[i].subframe_num) {
- return i;
- } else if (tmp < buf[i].subframe_num) {
- *flag = 1;
- }
- }
-
- return -1;
-}
-
-int ue_unsync_thread_ipc_reset(void)
-{
- thread_ipc.ue_sync_state = 0;
-
- pthread_mutex_lock(&thread_ipc.loop_buffer.buffer_mutex);
-
- if (thread_ipc.loop_buffer.isempty) {
- pthread_cond_signal(&thread_ipc.loop_buffer.empty_cond);
- }
-
- if (thread_ipc.loop_buffer.isfull) {
- pthread_cond_signal(&thread_ipc.loop_buffer.full_cond);
- }
-
- thread_ipc.loop_buffer.packet_num = 0;
- thread_ipc.loop_buffer.isfull = 0;
- thread_ipc.loop_buffer.isempty = 1;
-
- loop_buffer_reset(thread_ipc.loop_buffer.loop_buf);
- pthread_mutex_unlock(&thread_ipc.loop_buffer.buffer_mutex);
-
- thread_ipc.current_subframe = 0;
-
- return 0;
-}
-void bind_thread2kernel(int cpu_id)
-{
- cpu_set_t mask;
- cpu_set_t get;
- int i;
- int num = sysconf(_SC_NPROCESSORS_CONF);
- //printf("system has %d processor(s) by super\n", num);
- CPU_ZERO(&mask);
- CPU_SET(cpu_id, &mask);
-
- if (pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0) {
- fprintf(stderr, "set thread affinity failed\n");
- }
-
- /*CPU_ZERO(&get);
- if (pthread_getaffinity_np(pthread_self(), sizeof(get), &get) < 0) {
- fprintf(stderr, "get thread affinity failed\n");
- }
- for (i = 0; i < num; i++) {
- if (CPU_ISSET(i, &get)) {
- printf("thread %d is running in processor %d\n", (int)pthread_self(), i);
- }
- }
- if (CPU_ISSET(cpu_id, &get)) {
- printf("thread %d is running in processor %d by super\n", (int)pthread_self(), cpu_id);
- }*/
-}
-void get_thread2kernel(void)
-{
- cpu_set_t get;
- int i;
- int num = sysconf(_SC_NPROCESSORS_CONF);
- printf("system has %d processor(s) by super\n", num);
- CPU_ZERO(&get);
-
- if (pthread_getaffinity_np(pthread_self(), sizeof(get), &get) < 0) {
- fprintf(stderr, "get thread affinity failed\n");
- }
-
- for (i = 0; i < num; i++) {
- if (CPU_ISSET(i, &get)) {
- printf("The thread %d is running in processor %d by super\n", (int)pthread_self(), i);
- }
- }
-}
-
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index f20f8267ed..0b6b0b3a75 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -48,8 +48,6 @@
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
-#include "rt_wrapper.h"
-
#include "assertions.h"
@@ -101,7 +99,6 @@ extern RAN_CONTEXT_t RC;
//#define USRP_DEBUG 1
struct timing_info_t {
//unsigned int frame, hw_slot, last_slot, next_slot;
- RTIME time_min, time_max, time_avg, time_last, time_now;
//unsigned int mbox0, mbox1, mbox2, mbox_target;
unsigned int n_samples;
} timing_info;
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 20644388c8..8ad610f1af 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -44,7 +44,6 @@
#include
#include
#include
-#include "rt_wrapper.h"
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 8cc693623b..85e493f194 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -34,7 +34,6 @@
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include
-#include "rt_wrapper.h"
#include
@@ -518,13 +517,6 @@ static void wait_nfapi_init(char *thread_name) {
int main ( int argc, char **argv )
{
- set_priority(79);
- if (mlockall(MCL_CURRENT | MCL_FUTURE) == -1)
- {
- fprintf(stderr, "mlockall: %s\n", strerror(errno));
- return EXIT_FAILURE;
- }
-
int i;
int CC_id = 0;
int ru_id;
@@ -537,8 +529,8 @@ int main ( int argc, char **argv )
}
mode = normal_txrx;
- set_latency_target();
logInit();
+ set_latency_target();
printf("Reading in command-line options\n");
get_options ();
@@ -573,13 +565,10 @@ int main ( int argc, char **argv )
init_opt();
// to make a graceful exit when ctrl-c is pressed
set_softmodem_sighandler();
- check_clock();
#ifndef PACKAGE_VERSION
# define PACKAGE_VERSION "UNKNOWN-EXPERIMENTAL"
#endif
LOG_I(HW, "Version: %s\n", PACKAGE_VERSION);
- printf("Runtime table\n");
- fill_modeled_runtime_table(runtime_phy_rx,runtime_phy_tx);
/* Read configuration */
if (RC.nb_inst > 0) {
diff --git a/targets/RT/USER/lte-softmodem.h b/targets/RT/USER/lte-softmodem.h
index 4154d6c8db..cf35a13fe9 100644
--- a/targets/RT/USER/lte-softmodem.h
+++ b/targets/RT/USER/lte-softmodem.h
@@ -6,7 +6,6 @@
#include
#include
#include
-#include "rt_wrapper.h"
#include
#include
#include
@@ -21,7 +20,6 @@
#include
#include
#include "threads_t.h"
-#include "rt_wrapper.h"
#include "../../ARCH/COMMON/common_lib.h"
//#undef MALLOC
#include "assertions.h"
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 70e4677943..1643ca36ca 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -31,7 +31,6 @@
*/
#include "lte-softmodem.h"
-#include "rt_wrapper.h"
#include "system.h"
#include "LAYER2/MAC/mac.h"
diff --git a/targets/RT/USER/lte-uesoftmodem.c b/targets/RT/USER/lte-uesoftmodem.c
index dcbecc85ac..4395694bf4 100644
--- a/targets/RT/USER/lte-uesoftmodem.c
+++ b/targets/RT/USER/lte-uesoftmodem.c
@@ -34,9 +34,6 @@
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include
-#include "rt_wrapper.h"
-
-
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
#include "assertions.h"
@@ -542,12 +539,6 @@ AssertFatal(false,"");
}
int main( int argc, char **argv ) {
- set_priority(79);
- if (mlockall(MCL_CURRENT | MCL_FUTURE) == -1)
- {
- fprintf(stderr, "mlockall: %s\n", strerror(errno));
- return EXIT_FAILURE;
- }
int CC_id;
uint8_t abstraction_flag=0;
@@ -565,8 +556,8 @@ int main( int argc, char **argv ) {
mode = normal_txrx;
memset(&openair0_cfg[0],0,sizeof(openair0_config_t)*MAX_CARDS);
- set_latency_target();
logInit();
+ set_latency_target();
printf("Reading in command-line options\n");
for (int i=0; i2 */
- cpu_set_t cpuset;
- int s;
- char cpu_affinity[1024];
- CPU_ZERO(&cpuset);
-#ifdef CPU_AFFINITY
- int j;
- if (get_nprocs() > 2) {
- for (j = 2; j < get_nprocs(); j++)
- CPU_SET(j, &cpuset);
-
- s = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
-
- if (s != 0) {
- perror( "pthread_setaffinity_np");
- exit_fun("Error setting processor affinity");
- }
- LOG_I(HW, "Setting the affinity of main function to all CPUs, for device library to use CPU 0 only!\n");
- }
-
-#endif
- /* Check the actual affinity mask assigned to the thread */
- s = pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
-
- if (s != 0) {
- perror( "pthread_getaffinity_np");
- exit_fun("Error getting processor affinity ");
- }
-
- memset(cpu_affinity, 0, sizeof(cpu_affinity));
-
- for (int j = 0; j < CPU_SETSIZE; j++) {
- if (CPU_ISSET(j, &cpuset)) {
- char temp[1024];
- sprintf(temp, " CPU_%d ", j);
- strcat(cpu_affinity, temp);
- }
- }
-
- LOG_I(HW, "CPU Affinity of main() function is... %s\n", cpu_affinity);
-#endif
-
if (create_tasks_ue(NB_UE_INST) < 0) {
printf("cannot create ITTI tasks\n");
exit(-1); // need a softer mode
diff --git a/targets/RT/USER/rt_wrapper.c b/targets/RT/USER/rt_wrapper.c
deleted file mode 100644
index da3a2d3cfe..0000000000
--- a/targets/RT/USER/rt_wrapper.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- * contact@openairinterface.org
- */
-
-/*! \file rt_wrapper.h
-* \brief provides a wrapper for the timing function, runtime calculations for real-time opeartions depending on weather RTAI or DEADLINE_SCHEDULER kernels are used or not
-* \author F. Kaltenberger and Navid Nikaein
-* \date 2013
-* \version 0.1
-* \company Eurecom
-* \email: florian.kaltenberger@eurecom.fr, navid.nikaein@eurecom.fr
-* \note
-* \warning
-*/
-#define _GNU_SOURCE
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include "rt_wrapper.h"
-#include "system.h"
-#include
-#include
-
-#include "openair1/PHY/defs_common.h"
-
-static int latency_target_fd = -1;
-static int32_t latency_target_value = 0;
-/* Latency trick - taken from cyclictest.c
- * if the file /dev/cpu_dma_latency exists,
- * open it and write a zero into it. This will tell
- * the power management system not to transition to
- * a high cstate (in fact, the system acts like idle=poll)
- * When the fd to /dev/cpu_dma_latency is closed, the behavior
- * goes back to the system default.
- *
- * Documentation/power/pm_qos_interface.txt
- */
-void set_latency_target(void) {
- struct stat s;
- int ret;
-
- if (stat("/dev/cpu_dma_latency", &s) == 0) {
- latency_target_fd = open("/dev/cpu_dma_latency", O_RDWR);
-
- if (latency_target_fd == -1)
- return;
-
- ret = write(latency_target_fd, &latency_target_value, 4);
-
- if (ret == 0) {
- printf("# error setting cpu_dma_latency to %d!: %s\n", latency_target_value, strerror(errno));
- close(latency_target_fd);
- return;
- }
-
- printf("# /dev/cpu_dma_latency set to %dus\n", latency_target_value);
- }
-}
-
-
-struct timespec interval, next, now, res;
-clockid_t clock_id = CLOCK_MONOTONIC; //other options are CLOCK_MONOTONIC, CLOCK_REALTIME, CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID
-RTIME rt_get_time_ns (void)
-{
- clock_gettime(clock_id, &now);
- return(now.tv_sec*1e9+now.tv_nsec);
-}
-
-int rt_sleep_ns (RTIME x)
-{
- int ret;
- clock_gettime(clock_id, &now);
- interval.tv_sec = x/((RTIME)1000000000);
- interval.tv_nsec = x%((RTIME)1000000000);
- //rt_printk("sleeping for %d sec and %d ns\n",interval.tv_sec,interval.tv_nsec);
- next = now;
- next.tv_sec += interval.tv_sec;
- next.tv_nsec += interval.tv_nsec;
-
- if (next.tv_nsec>=1000000000) {
- next.tv_nsec -= 1000000000;
- next.tv_sec++;
- }
-
- ret = clock_nanosleep(clock_id, TIMER_ABSTIME, &next, NULL);
-
- /*
- if (ret==EFAULT)
- rt_printk("rt_sleep_ns returned EFAULT (%d), reqested %d sec and %d ns\n",ret,next.tv_sec,next.tv_nsec);
- if (ret==EINVAL)
- rt_printk("rt_sleep_ns returned EINVAL (%d), reqested %d sec and %d ns\n",ret,next.tv_sec,next.tv_nsec);
- if (ret==EINTR)
- rt_printk("rt_sleep_ns returned EINTR (%d), reqested %d sec and %d ns\n",ret,next.tv_sec,next.tv_nsec);
- */
-
- return(ret);
-}
-
-void check_clock(void)
-{
- if (clock_getres(clock_id, &res)) {
- printf("clock_getres failed");
- } else {
- printf("reported resolution = %lld ns\n", (long long int) ((int) 1e9 * res.tv_sec) + (long long int) res.tv_nsec);
- }
-}
-
-uint16_t cell_processing_dl[6]={10,15,24,42,80,112};
-uint16_t platform_processing_dl=20; // upperbound for GPP, LXC, DOCKER and KVM
-uint16_t user_processing_dl_a[6]={2,4,5,7,10,12};
-uint16_t user_processing_dl_b[6]={10, 15, 25, 70, 110, 150};
-uint16_t user_processing_dl_err[6]={20, 40, 60, 90, 120, 160};
-uint16_t protocol_processing_dl[6]={150, 250, 350, 450, 650, 800}; // assumption: max MCS 27 --> gives an upper bound for the transport block size : to be measured
-
-uint16_t cell_processing_ul[6]={10,15,24,42,80,112};
-uint16_t platform_processing_ul=30; // upperbound for GPP, LXC, DOCKER and KVM
-uint16_t user_processing_ul_a[6]={5, 9, 12, 24, 33, 42};
-uint16_t user_processing_ul_b[6]={20, 30, 40, 76, 140, 200};
-uint16_t user_processing_ul_err[6]={15, 25, 32, 60, 80, 95};
-uint16_t protocol_processing_ul[6]={100, 200, 300, 400, 550, 700}; // assumption: max MCS 16 --> gives an upper bound for the transport block size
-
-int fill_modeled_runtime_table(uint16_t runtime_phy_rx[29][6],
- uint16_t runtime_phy_tx[29][6]){
- //double cpu_freq;
- //cpu_freq = get_cpu_freq_GHz();
- // target_dl_mcs
- // target_ul_mcs
- // frame_parms[0]->N_RB_DL
- int i,j;
- memset(runtime_phy_rx,0,sizeof(uint16_t)*29*6);
- memset(runtime_phy_tx,0,sizeof(uint16_t)*29*6);
- /* only the BBU/PHY procesing time */
- for (i=0;i<29;i++){
- for (j=0;j<6;j++){
- runtime_phy_rx[i][j] = cell_processing_ul[j] + platform_processing_ul + user_processing_ul_err[j] + user_processing_ul_a[j]*i+ user_processing_ul_b[j];
- runtime_phy_tx[i][j] = cell_processing_dl[j] + platform_processing_dl + user_processing_dl_err[j] + user_processing_dl_a[j]*i+ user_processing_dl_b[j];
- }
- }
- return 0;
-}
-
-// int runtime_upper_layers[6]; // values for different RBs
-// int runtime_phy_rx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75, 100]
-// int runtime_phy_tx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75, 100]
-
-// target_dl_mcs
- // target_ul_mcs
- // frame_parms[0]->N_RB_DL
- //runtime_upper_layers[6]; // values for different RBs
- // int runtime_phy_rx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75, 100]
- // int runtime_phy_tx[29][6]
-
-double get_runtime_tx(int tx_subframe, uint16_t runtime_phy_tx[29][6], uint32_t mcs, int N_RB_DL,double cpuf,int nb_tx_antenna){
- int i;
- double runtime;
- //printf("cpuf =%lf \n",cpuf);
- switch(N_RB_DL){
- case 6:
- i = 0;
- break;
- case 15:
- i = 1;
- break;
- case 25:
- i = 2;
- break;
- case 50:
- i = 3;
- break;
- case 75:
- i = 4;
- break;
- case 100:
- i = 5;
- break;
- default:
- i = 3;
- break;
- }
-
- runtime = ( (3.2/cpuf)*(double)runtime_phy_tx[mcs][i] + (3.2/cpuf)*(double)protocol_processing_dl[i])/1000 ;
- printf("Setting tx %d runtime value (ms) = %lf\n",tx_subframe,runtime);
-
- return runtime;
- }
-
-double get_runtime_rx(int rx_subframe, uint16_t runtime_phy_rx[29][6], uint32_t mcs, int N_RB_DL,double cpuf,int nb_rx_antenna){
- int i;
- double runtime;
-
- //printf("N_RB_DL=%d cpuf =%lf \n",N_RB_DL, cpuf);
- switch(N_RB_DL){
- case 6:
- i = 0;
- break;
- case 15:
- i = 1;
- break;
- case 25:
- i = 2;
- break;
- case 50:
- i = 3;
- break;
- case 75:
- i = 4;
- break;
- case 100:
- i = 5;
- break;
- default:
- i = 3;
- break;
- }
-
- runtime = ((3.2/cpuf)*(double)runtime_phy_rx[mcs][i] + (3.2/cpuf)*(double)protocol_processing_ul[i])/1000 ;
- printf("Setting rx %d runtime value (ms) = %lf \n",rx_subframe, runtime);
-
- return runtime;
-}
-
-#ifdef DEADLINE_SCHEDULER
-int sched_setattr(pid_t pid, const struct sched_attr *attr, unsigned int flags)
-{
-
- return syscall(__NR_sched_setattr, pid, attr, flags);
-}
-
-
-int sched_getattr(pid_t pid,struct sched_attr *attr,unsigned int size, unsigned int flags)
-{
-
- return syscall(__NR_sched_getattr, pid, attr, size, flags);
-}
-
-#endif
-
-void thread_top_init(char *thread_name,
- int affinity,
- uint64_t runtime,
- uint64_t deadline,
- uint64_t period) {
-
- MSC_START_USE();
-
-#ifdef DEADLINE_SCHEDULER
- struct sched_attr attr;
-
- unsigned int flags = 0;
-
- attr.size = sizeof(attr);
- attr.sched_flags = 0;
- attr.sched_nice = 0;
- attr.sched_priority = 0;
-
- attr.sched_policy = SCHED_DEADLINE;
- attr.sched_runtime = runtime;
- attr.sched_deadline = deadline;
- attr.sched_period = period;
-
- if (sched_setattr(0, &attr, flags) < 0 ) {
- perror("[SCHED] eNB tx thread: sched_setattr failed\n");
- fprintf(stderr,"sched_setattr Error = %s",strerror(errno));
- exit(1);
- }
-
-#else //LOW_LATENCY
- int policy, s, j;
- struct sched_param sparam;
- char cpu_affinity[1024];
- cpu_set_t cpuset;
- int settingPriority = 1;
-
- /* Set affinity mask to include CPUs 2 to MAX_CPUS */
- /* CPU 0 is reserved for UHD threads */
- /* CPU 1 is reserved for all RX_TX threads */
- /* Enable CPU Affinity only if number of CPUs > 2 */
- CPU_ZERO(&cpuset);
-
-#ifdef CPU_AFFINITY
- if (affinity == 0) {
- LOG_W(HW,"thread_top_init() called with affinity==0, but overruled by #ifdef CPU_AFFINITY\n");
- }
- else if (get_nprocs() > 2)
- {
- for (j = 2; j < get_nprocs(); j++)
- CPU_SET(j, &cpuset);
- s = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
- if (s != 0)
- {
- perror( "pthread_setaffinity_np");
- exit_fun("Error setting processor affinity");
- }
- }
-#else //CPU_AFFINITY
- if (affinity) {
- LOG_W(HW,"thread_top_init() called with affinity>0, but overruled by #ifndef CPU_AFFINITY.\n");
- }
-#endif //CPU_AFFINITY
-
- /* Check the actual affinity mask assigned to the thread */
- s = pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
- if (s != 0)
- {
- perror( "pthread_getaffinity_np");
- exit_fun("Error getting processor affinity ");
- }
- memset(cpu_affinity,0,sizeof(cpu_affinity));
- for (j = 0; j < 1024; j++)
- {
- if (CPU_ISSET(j, &cpuset))
- {
- char temp[1024];
- sprintf (temp, " CPU_%d", j);
- strcat(cpu_affinity, temp);
- }
- }
-
- if (checkIfFedoraDistribution())
- if (checkIfGenericKernelOnFedora())
- if (checkIfInsideContainer())
- settingPriority = 0;
-
- if (settingPriority) {
- memset(&sparam, 0, sizeof(sparam));
- sparam.sched_priority = sched_get_priority_max(SCHED_FIFO);
- policy = SCHED_FIFO;
-
- s = pthread_setschedparam(pthread_self(), policy, &sparam);
- if (s != 0) {
- perror("pthread_setschedparam : ");
- exit_fun("Error setting thread priority");
- }
-
- s = pthread_getschedparam(pthread_self(), &policy, &sparam);
- if (s != 0) {
- perror("pthread_getschedparam : ");
- exit_fun("Error getting thread priority");
- }
-
- pthread_setname_np(pthread_self(), thread_name);
-
- LOG_I(HW, "[SCHED][eNB] %s started on CPU %d, sched_policy = %s , priority = %d, CPU Affinity=%s \n",thread_name,sched_getcpu(),
- (policy == SCHED_FIFO) ? "SCHED_FIFO" :
- (policy == SCHED_RR) ? "SCHED_RR" :
- (policy == SCHED_OTHER) ? "SCHED_OTHER" :
- "???",
- sparam.sched_priority, cpu_affinity );
- }
-
-#endif //LOW_LATENCY
-
- mlockall(MCL_CURRENT | MCL_FUTURE);
-
-}
-
-
diff --git a/targets/RT/USER/rt_wrapper.h b/targets/RT/USER/rt_wrapper.h
deleted file mode 100644
index 32554d9e17..0000000000
--- a/targets/RT/USER/rt_wrapper.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- * contact@openairinterface.org
- */
-
-/*! \file rt_wrapper.h
-* \brief provides a wrapper for the timing function for real-time opeartions. It also implements an API for the SCHED_DEADLINE kernel scheduler.
-* \author F. Kaltenberger and Navid Nikaein
-* \date 2013
-* \version 0.1
-* \company Eurecom
-* \email: florian.kaltenberger@eurecom.fr, navid.nikaein@eurecom.fr
-* \note
-* \warning This code will be removed when a legacy libc API becomes available.
-*/
-
-#ifndef _RT_WRAPPER_H_
-#define _RT_WRAPPER_H_
-
-#define _GNU_SOURCE
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "common/utils/LOG/log_extern.h"
-#include "msc.h"
-
-#define RTIME long long int
-
-#define rt_printk printf
-
-void set_latency_target(void);
-
-RTIME rt_get_time_ns (void);
-
-int rt_sleep_ns (RTIME x);
-
-void check_clock(void);
-
-int fill_modeled_runtime_table(uint16_t runtime_phy_rx[29][6],uint16_t runtime_phy_tx[29][6]);
-
-double get_runtime_tx(int tx_subframe, uint16_t runtime_phy_tx[29][6],uint32_t mcs, int N_RB_DL,double cpuf,int nb_tx_antenna);
-
-double get_runtime_rx(int rx_subframe, uint16_t runtime_phy_rx[29][6], uint32_t mcs, int N_RB_DL,double cpuf,int nb_rx_antenna);
-/**
- * see https://www.kernel.org/doc/Documentation/scheduler/sched-deadline.txt or
- * http://www.blaess.fr/christophe/2014/04/05/utiliser-un-appel-systeme-inconnu-de-la-libc/
- */
-#ifdef DEADLINE_SCHEDULER
-
-#define gettid() syscall(__NR_gettid)
-
-#define SCHED_DEADLINE 6
-
-/* XXX use the proper syscall numbers */
-#ifdef __x86_64__
-#define __NR_sched_setattr 314
-#define __NR_sched_getattr 315
-#endif
-
-#ifdef __i386__
-#define __NR_sched_setattr 351
-#define __NR_sched_getattr 352
-#endif
-
-struct sched_attr {
- __u32 size;
-
- __u32 sched_policy;
- __u64 sched_flags;
-
- /* SCHED_NORMAL, SCHED_BATCH */
- __s32 sched_nice;
-
- /* SCHED_FIFO, SCHED_RR */
- __u32 sched_priority;
-
- /* SCHED_DEADLINE (nsec) */
- __u64 sched_runtime;
- __u64 sched_deadline;
- __u64 sched_period;
-};
-
-int sched_setattr(pid_t pid, const struct sched_attr *attr, unsigned int flags);
-
-int sched_getattr(pid_t pid,struct sched_attr *attr,unsigned int size, unsigned int flags);
-
-#endif
-
-#define gettid() syscall(__NR_gettid) // for gettid
-
-
-void thread_top_init(char *thread_name,
- int affinity,
- uint64_t runtime,
- uint64_t deadline,
- uint64_t period);
-
-#endif
diff --git a/targets/RT/USER/ru_control.c b/targets/RT/USER/ru_control.c
index 95b5ce6155..7280c78523 100644
--- a/targets/RT/USER/ru_control.c
+++ b/targets/RT/USER/ru_control.c
@@ -42,7 +42,6 @@
#include
#include
#include
-#include "rt_wrapper.h"
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
diff --git a/targets/build_helper.bash b/targets/build_helper.bash
deleted file mode 100755
index 9c98ef85b0..0000000000
--- a/targets/build_helper.bash
+++ /dev/null
@@ -1,1315 +0,0 @@
-#/*
-# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
-# * contributor license agreements. See the NOTICE file distributed with
-# * this work for additional information regarding copyright ownership.
-# * The OpenAirInterface Software Alliance licenses this file to You under
-# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
-# * except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# * http://www.openairinterface.org/?page_id=698
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-# *-------------------------------------------------------------------------------
-# * For more information about the OpenAirInterface (OAI) Software Alliance:
-# * contact@openairinterface.org
-# */
-################################################################################
-# file build_helper.bash
-# brief
-# author Lionel Gauthier and Navid Nikaein
-# company Eurecom
-# email: lionel.gauthier@eurecom.fr and navid.nikaein@eurecom.fr
-#
-#######################################
-# Helper Func
-######################################
-
-declare ROOT_UID=0
-declare E_NOTROOT=67
-declare NUM_CPU=`cat /proc/cpuinfo | grep processor | wc -l`
-declare OAI_INSTALLED=1
-declare PWD=`pwd`
-declare USER=`whoami`
-declare BUILD_FROM_MAKEFILE=0
-declare SUDO=''
-declare PW=''
-declare UBUNTU_REL=`lsb_release -r | cut -f2`
-declare UBUNTU_REL_NAME=`lsb_release -cs`
-
-set_build_from_makefile(){
- BUILD_FROM_MAKEFILE=$1
-}
-
-check_for_root_rights() {
-
- # if [[ $EUID -ne $ROOT_EUID ]]; then
- if [ $USER != "root" ]; then
- SUDO="sudo -E "
- echo "Run as a sudoers"
- return 1
- else
- echo "Run as a root"
- return 0
- fi
-}
-
-test_install_package() {
- # usage: test_install_package package_name
-
- if [ $# -eq 1 ]; then
- dpkg -s "$1" > /dev/null 2>&1 && {
- echo "$1 is installed."
- } || {
- echo "$1 is not installed."
- OAI_INSTALLED=0
- $SUDO apt-get install -y $@
- }
- fi
-}
-
-test_uninstall_package() {
-
- if [ $# -eq 1 ]; then
- dpkg -s "$1" > /dev/null 2>&1 && {
- $SUDO apt-get remove --assume-yes $1
- echo "$1 is uninstalled."
- } || {
- echo "$1 is not installed."
- }
- fi
-}
-test_command_install_script() {
- # usage: test_command_install_script searched_binary script_to_be_invoked_if_binary_not_found
- command -v $1 >/dev/null 2>&1 || { echo_warning "Program $1 is not installed. Trying installing it." >&2; bash $2; command -v $1 >/dev/null 2>&1 || { echo_fatal "Program $1 is not installed. Aborting." >&2; };}
- echo_success "$1 available"
-}
-
-
-check_for_machine_type(){
- MACHINE_TYPE=`uname -m`
- if [ ${MACHINE_TYPE} = "x86_64" ]; then
- return 64 # 64-bit stuff here
- else
- if [ ${MACHINE_TYPE} = "i686" ]; then
- return 32 # 32-bit stuff here
- else
- return -1
- fi
- fi
-}
-
-####################################################
-## OAI related functions
-#####################################################
-
-####################################################
-# 1. install the required packages
-####################################################
-
-make_certs(){
-
- # for certtificate generation
- rm -rf demoCA
- mkdir -m 777 -p demoCA
- echo 01 > demoCA/serial
- touch demoCA/index.txt
-
- echo "creating the certificate"
-
- user=$(whoami)
- HOSTNAME=$(hostname -f)
-
- echo "Creating certificate for user '$HOSTNAME'"
-
-# CA self certificate
- openssl req -new -batch -x509 -days 3650 -nodes -newkey rsa:1024 -out cacert.pem -keyout cakey.pem -subj /CN=eur/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
-
- # openssl genrsa -out user.key.pem 1024
- openssl genrsa -out hss.key.pem 1024
- #openssl req -new -batch -out user.csr.pem -key user.key.pem -subj /CN=$HOSTNAME.eur/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
- openssl req -new -batch -out hss.csr.pem -key hss.key.pem -subj /CN=hss.eur/C=FR/ST=PACA/L=Aix/O=Eurecom/OU=CM
- openssl ca -cert cacert.pem -keyfile cakey.pem -in hss.csr.pem -out hss.cert.pem -outdir . -batch
-
- if [ ! -d /usr/local/etc/freeDiameter ]; then
- echo "Creating non existing directory: /usr/local/etc/freeDiameter/"
- $SUDO mkdir /usr/local/etc/freeDiameter/
- fi
-
- echo "Copying *.pem to /usr/local/etc/freeDiameter/"
- $SUDO cp *.pem /usr/local/etc/freeDiameter/
- mv *.pem bin/
-
-# openssl genrsa -out ubuntu.key.pem 1024
-# openssl req -new -batch -x509 -out ubuntu.csr.pem -key ubuntu.key.pem -subj /CN=ubuntu.localdomain/C=FR/ST=BdR/L=Aix/O=fD/OU=Tests
-# openssl ca -cert cacert.pem -keyfile cakey.pem -in ubuntu.csr.pem -out ubuntu.cert.pem -outdir . -batch
-
-}
-
-check_install_nettle(){
- if [ ! -f ./.lock_oaibuild ]; then
- if [ $UBUNTU_REL = "12.04" ]; then
- test_uninstall_package nettle-dev
- test_uninstall_package nettle-bin
-
- if [ ! -d /usr/local/src/ ]; then
- echo "/usr/local/src/ doesn't exist please create one"
- exit -1
- fi
-
- if [ ! -w /usr/local/src/ ]; then
- echo "You don't have permissions to write to /usr/local/src/, installing as a sudoer"
- # exit -1
- fi
-
- cd /usr/local/src/
-
- echo "Downloading nettle archive"
-
- if [ -f nettle-2.5.tar.gz ]; then
- $SUDO rm -f nettle-2.5.tar.gz
- fi
- if [ -f nettle-2.5.tar ]; then
- $SUDO rm -f nettle-2.5.tar
- fi
- if [ -d nettle-2.5 ]; then
- $SUDO rm -rf nettle-2.5/
- fi
-
-
- $SUDO wget ftp://ftp.lysator.liu.se/pub/security/lsh/nettle-2.5.tar.gz
- $SUDO gunzip nettle-2.5.tar.gz
- $SUDO echo "Uncompressing nettle archive"
- $SUDO tar -xf nettle-2.5.tar
- cd nettle-2.5/
- $SUDO ./configure --disable-openssl --enable-shared --prefix=/usr
- if [ $? -ne 0 ]; then
- exit -1
- fi
- echo "Compiling nettle"
- $SUDO make -j $NUM_CPU
- $SUDO make check
- $SUDO make install
- cd ../
- fi
- fi
-}
-
-check_install_freediamter(){
-
- if [ $UBUNTU_REL = "12.04" ]; then
-
- if [ ! -d /usr/local/src/ ]; then
- echo "/usr/local/src/ doesn't exist please create one"
- exit -1
- fi
-
- if [ ! -w /usr/local/src/ ]; then
- echo "You don't have permissions to write to /usr/local/src/, installing as a sudoer"
-# exit -1
- fi
-
- cd /usr/local/src/
-
- echo "Downloading nettle archive"
-
- if [ -f nettle-2.5.tar.gz ]; then
- $SUDO rm -f nettle-2.5.tar.gz
- fi
- if [ -f nettle-2.5.tar ]; then
- $SUDO rm -f nettle-2.5.tar
- fi
- if [ -d nettle-2.5 ]; then
- $SUDO rm -rf nettle-2.5/
- fi
-
-
- $SUDO wget ftp://ftp.lysator.liu.se/pub/security/lsh/nettle-2.5.tar.gz
- $SUDO gunzip nettle-2.5.tar.gz
- $SUDO echo "Uncompressing nettle archive"
- $SUDO tar -xf nettle-2.5.tar
- cd nettle-2.5/
- $SUDO ./configure --disable-openssl --enable-shared --prefix=/usr
- if [ $? -ne 0 ]; then
- exit -1
- fi
- echo "Compiling nettle"
- $SUDO make -j $NUM_CPU
- $SUDO make check
- $SUDO make install
- cd ../
- fi
-
- echo "Downloading gnutls archive"
-
- if [ -f gnutls-3.1.23.tar.xz ]; then
- $SUDO rm -f gnutls-3.1.23.tar.xz
- fi
- if [ -d gnutls-3.1.23/ ]; then
- $SUDO rm -rf gnutls-3.1.23/
- fi
-
- test_uninstall_package libgnutls-dev
-
- $SUDO wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.23.tar.xz
- $SUDO tar -xf gnutls-3.1.23.tar.xz
- echo "Uncompressing gnutls archive ($PWD)"
- cd gnutls-3.1.23/
- $SUDO ./configure --prefix=/usr
- if [ $? -ne 0 ]; then
- exit -1
- fi
- echo "Compiling gnutls"
- $SUDO make -j $NUM_CPU
- $SUDO make install
- cd ../
-
- echo "Downloading freeDiameter archive"
-
- if [ -f 1.1.5.tar.gz ]; then
- $SUDO rm -f 1.1.5.tar.gz
- fi
- if [ -d freeDiameter-1.1.5/ ]; then
- $SUDO rm -rf freeDiameter-1.1.5/
- fi
-
- $SUDO wget http://www.freediameter.net/hg/freeDiameter/archive/1.1.5.tar.gz
- $SUDO tar -xzf 1.1.5.tar.gz
- echo "Uncompressing freeDiameter archive"
- cd freeDiameter-1.1.5
- $SUDO patch -p1 < $OPENAIR3_DIR/S6A/freediameter/freediameter-1.1.5.patch
- $SUDO mkdir build
- cd build
- $SUDO cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ../
- if [ $? -ne 0 ]; then
- exit -1
- fi
- echo "Compiling freeDiameter"
- $SUDO make -j $NUM_CPU
-#make help
- $SUDO make test
- $SUDO sudo make install
-
-# make_certs
-
-}
-
-
-test_is_host_reachable() {
- ping -c 1 $1 > /dev/null || { echo_fatal "$2 host $1 does not respond to ping" >&2 ; }
- echo_success "$2 host $1 is reachable"
-}
-
-
-check_epc_s6a_certificate() {
- if [ -d /usr/local/etc/freeDiameter ]
- then
- if [ -f /usr/local/etc/freeDiameter/user.cert.pem ]
- then
- full_hostname=`cat /usr/local/etc/freeDiameter/user.cert.pem | grep "Subject" | grep "CN" | cut -d '=' -f6`
- if [ a$full_hostname == a`hostname`.${1:-'eur'} ]
- then
- echo_success "EPC S6A: Found valid certificate in /usr/local/etc/freeDiameter"
- return 0
- fi
- fi
- fi
- echo_error "EPC S6A: Did not find valid certificate in /usr/local/etc/freeDiameter"
- echo_warning "EPC S6A: generatting new certificate in /usr/local/etc/freeDiameter..."
- cd $OPENAIR3_DIR/S6A/freediameter
- ./make_certs.sh ${1:-'eur'}
- if [ $# -lt 2 ] ; then
- check_epc_s6a_certificate ${1:-'eur'} 2
- return $?
- else
- exit 1
- fi
-}
-
-
-check_hss_s6a_certificate() {
- if [ -d /usr/local/etc/freeDiameter ]; then
- if [ -f /usr/local/etc/freeDiameter/hss.cert.pem ]; then
- full_hostname=`cat /usr/local/etc/freeDiameter/hss.cert.pem | grep "Subject" | grep "CN" | cut -d '=' -f6`
- if [ a$full_hostname == a`hostname`.${1:-'eur'} ]
- then
- echo_success "HSS S6A: Found valid certificate in /usr/local/etc/freeDiameter"
- return 0
- else
- echo_error "Bad hss hostname found in cert file: "$full_hostname " hostname is "`hostname`
- fi
- fi
- fi
- echo_error "S6A: Did not find valid certificate in /usr/local/etc/freeDiameter"
- echo_warning "S6A: generatting new certificate in /usr/local/etc/freeDiameter..."
- cd $OPENAIR3_DIR/OPENAIRHSS/conf
- ./make_certs.sh ${1:-'eur'}
- if [ $# -lt 2 ] ; then
- check_hss_s6a_certificate ${1:-'eur'} 2
- return $?
- else
- exit 1
- fi
-}
-
-check_install_usrp_uhd_driver(){
- if [ ! -f /etc/apt/sources.list.d/ettus.list ] ; then
- $SUDO bash -c 'echo "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/`lsb_release -cs` `lsb_release -cs` main" >> /etc/apt/sources.list.d/ettus.list'
- $SUDO apt-get update
- fi
- $SUDO apt-get install -t $UBUNTU_REL_NAME uhd
- test_install_package python
- test_install_package libboost-all-dev
- test_install_package libusb-1.0-0-dev
- #test_install_package uhd
-}
-
-check_install_oai_software() {
-
- if [ ! -f ./.lock_oaibuild ]; then
- $SUDO apt-get update
- if [ $UBUNTU_REL = "12.04" ]; then
- test_uninstall_package nettle-dev
- test_uninstall_package nettle-bin
- else
- test_install_package nettle-dev
- test_install_package nettle-bin
- fi
- test_install_package autoconf
- test_install_package automake
- test_install_package bison
- test_install_package build-essential
- test_install_package dialog
- test_install_package flex
- test_install_package gawk
- test_install_package gcc
- test_install_package gdb
- test_install_package make
- test_install_package cmake
- test_install_package openssh-client
- test_install_package openssh-server
- sudo service ssh start
- test_install_package unzip
- test_install_package autoconf
- test_install_package automake
- test_install_package bison
- test_install_package build-essential
- test_install_package check
- test_install_package ethtool
- test_install_package flex
- test_install_package g++
- test_install_package gawk
- test_install_package gcc
- test_install_package gccxml
- test_install_package gdb
- test_install_package guile-2.0-dev
- test_install_package iperf
- test_install_package iproute
- test_install_package iptables
- test_install_package libatlas-base-dev
- test_install_package libatlas-dev
- test_install_package libblas3gf
- test_install_package libblas-dev
- test_install_package liblapack-dev
- test_install_package liblapack-dev
-# if [ $MACHINE_ARCH = 64 ]; then
- test_install_package libconfig8-dev
-# else
-# test_install_package libconfig-dev
-# fi
- test_install_package libforms-bin
- test_install_package libforms-dev
- test_install_package libgcrypt11-dev
- test_install_package libgmp-dev
- test_install_package libgtk-3-dev
- test_install_package libidn11-dev
- test_install_package libidn2-0-dev
- test_install_package libpgm-dev
- test_install_package libpgm-5.1-0
- test_install_package libpthread-stubs0-dev
- test_install_package libsctp1
- test_install_package libsctp-dev
- test_install_package libtasn1-3-dev
- test_install_package libxml2
- test_install_package libxml2-dev
-# test_install_package linux-headers-`uname -r`
- test_install_package openssl
- test_install_package libssl-dev
- test_install_package pkg-config
- test_install_package python-dev
- test_install_package python-pexpect
- test_install_package sshfs
- test_install_package subversion
- test_install_package valgrind
- test_install_package doxygen
- test_install_package graphviz
-
-# test_install_package libboost-all-dev
-
- if [ $OAI_INSTALLED = 1 ]; then
- touch ./.lock_oaibuild
- fi
-
- else
- echo_info "All the required packages installed: skip"
- fi
-
-}
-
-check_install_hss_software() {
- if [ ! -f ./.lock_oaibuild ]; then
- $SUDO apt-get update
- if [ $UBUNTU_REL = "12.04" ]; then
- test_uninstall_package nettle-dev
- test_uninstall_package nettle-bin
- else
- test_install_package nettle-dev
- test_install_package nettle-bin
- fi
- test_install_package autoconf
- test_install_package automake
- test_install_package bison
- test_install_package build-essential
- test_install_package cmake
- test_install_package cmake-curses-gui
- test_install_package dialog
- test_install_package dkms
- test_install_package flex
- test_install_package gawk
- test_install_package gcc
- test_install_package gdb
- test_install_package guile-2.0-dev
- test_install_package g++
- test_install_package libgmp-dev
- test_install_package libgcrypt11-dev
- test_install_package libidn11-dev
- test_install_package libidn2-0-dev
- test_install_package libmysqlclient-dev
- test_install_package libtasn1-3-dev
- test_install_package libsctp1
- test_install_package libsctp-dev
- test_install_package libxml2-dev
-# test_install_package linux-headers-`uname -r`
- test_install_package make
- test_install_package mysql-client
- test_install_package mysql-server-core-5.5
- test_install_package mysql-server
- test_install_package openssh-client
- test_install_package openssh-server
- sudo service ssh start
- test_install_package phpmyadmin
- test_install_package python-dev
- test_install_package sshfs
- test_install_package swig
- test_install_package unzip
-# test_install_package nettle-bin
-# test_install_package nettle-dev
- test_install_package valgrind
-
- if [ $OAI_INSTALLED = 1 ]; then
- touch ./.lock_oaibuild
- fi
-
- else
- echo_info "All the required packages installed: skip"
- fi
-
-}
-
-check_install_epc_software() {
-
- if [ ! -f ./.lock_oaibuild ]; then
- $SUDO apt-get update
- if [ $UBUNTU_REL = "12.04" ]; then
- test_uninstall_package nettle-dev
- test_uninstall_package nettle-bin
- else
- test_install_package nettle-dev
- test_install_package nettle-bin
- fi
- test_install_package autoconf
- test_install_package automake
- test_install_package bison
- test_install_package build-essential
- test_install_package check
- test_install_package cmake
- test_install_package cmake-curses-gui
- test_install_package dialog
- test_install_package ethtool
- test_install_package flex
- test_install_package g++
- test_install_package gawk
- test_install_package gcc
- test_install_package gccxml
- test_install_package gdb
- test_install_package guile-2.0-dev
- test_install_package gtkwave
- test_install_package iperf
- test_install_package iproute
- test_install_package iptables
- test_install_package iptables-dev
- test_install_package libatlas-base-dev
- test_install_package libatlas-dev
- test_install_package libblas
- test_install_package libblas-dev
-# if [ $MACHINE_ARCH = 64 ]; then
- test_install_package libconfig8-dev
-# else
-# test_install_package libconfig-dev
-# fi
- test_install_package libforms-bin
- test_install_package libforms-dev
- test_install_package libgcrypt11-dev
- test_install_package libgmp-dev
- test_install_package libgtk-3-dev
- test_install_package libidn11-dev
- test_install_package libidn2-0-dev
- test_install_package libmysqlclient-dev
- test_install_package libpgm-dev
- test_install_package libpthread-stubs0-dev
- test_install_package libsctp1
- test_install_package libsctp-dev
- test_install_package libssl-dev
- test_install_package libtasn1-3-dev
- test_install_package libtool
- test_install_package libxml2
- test_install_package libxml2-dev
-# test_install_package linux-headers-`uname -r`
- test_install_package make
- test_install_package openssh-client
- test_install_package openssh-server
- $SUDO service ssh start
- test_install_package openssl
- test_install_package openvpn
- test_install_package pkg-config
- test_install_package python-dev
- test_install_package sshfs
- test_install_package subversion
- test_install_package swig
- test_install_package tshark
- test_install_package uml-utilities
- test_install_package unzip
- test_install_package valgrind
- test_install_package vlan
-
- if [ $OAI_INSTALLED = 1 ]; then
- touch ./.lock_oaibuild
- fi
-
- else
- echo_info "All the required packages installed: skip"
- fi
-
-}
-
-check_install_asn1c(){
-
- test_command_install_script "asn1c" "$OPENAIR_TARGETS/SCRIPTS/install_asn1c_0.9.24.modified.bash $SUDO"
-
- # One mor check about version of asn1c
- ASN1C_COMPILER_REQUIRED_VERSION_MESSAGE="ASN.1 Compiler, v0.9.24"
- ASN1C_COMPILER_VERSION_MESSAGE=`asn1c -h 2>&1 | grep -i ASN\.1\ Compiler`
- ##ASN1C_COMPILER_VERSION_MESSAGE=`trim $ASN1C_COMPILER_VERSION_MESSAGE`
- if [ "$ASN1C_COMPILER_VERSION_MESSAGE" != "$ASN1C_COMPILER_REQUIRED_VERSION_MESSAGE" ]; then
- # diff <(echo -n "$ASN1C_COMPILER_VERSION_MESSAGE") <(echo -n "$ASN1C_COMPILER_REQUIRED_VERSION_MESSAGE")
- echo_error "Version of asn1c is not the required one, do you want to install the required one (overwrite installation) ? (Y/n)"
- echo_error "$ASN1C_COMPILER_VERSION_MESSAGE"
- while read -r -n 1 -s answer; do
- if [[ $answer = [YyNn] ]]; then
- [[ $answer = [Yy] ]] && $OPENAIR_TARGETS/SCRIPTS/install_asn1c_0.9.24.modified.bash $SUDO
- [[ $answer = [Nn] ]] && echo_error "Version of asn1c is not the required one, exiting." && exit 1
- break
- fi
- done
- fi
-
-}
-
-#################################################
-# 2. compile
-################################################
-compile_hss() {
- cd $OPENAIR3_DIR/OPENAIRHSS
-
- if [ "$1" -eq 1 ]; then
- echo_info "build a clean HSS"
- rm -rfv obj*
- rm -rfv m4
- rm -rfv .autom4*
- rm -fv configure
- fi
-
- OBJ_DIR=`find . -maxdepth 1 -type d -iname obj*`
-
- if [ ! -n "$OBJ_DIR" ]; then
- OBJ_DIR="objs"
- mkdir --verbose -m 777 ./$OBJ_DIR
- else
- OBJ_DIR=`basename $OBJ_DIR`
- fi
-
- if [ ! -f "$OBJ_DIR"/Makefile ]; then
- if [ ! -d m4 ]; then
- mkdir --verbose -m 777 m4
- fi
- echo_success "Invoking autogen"
- ./autogen.sh
- if [ $? -ne 0 ]; then
- return 1
- fi
- cd $OBJ_DIR
- echo_success "Invoking configure"
- ../configure
- if [ $? -ne 0 ]; then
- return 1
- fi
- else
- cd $OBJ_DIR
- fi
-
- if [ -f Makefile ]; then
- echo_success "Compiling..."
- make ; #-j $NUM_CPU
- if [ $? -ne 0 ]; then
- echo_error "Build failed, exiting"
- return 1
- else
- return 0
- fi
- else
- echo_error "Configure failed, aborting"
- fi
- return 1
-}
-
-
-compile_epc() {
- cd $OPENAIR3_DIR
- if [ $1 = 1 ]; then
- echo_info "build a clean EPC"
- bash_exec "rm -rf objs"
- fi
- OBJ_DIR=`find . -maxdepth 1 -type d -iname obj*`
- if [ ! -n "$OBJ_DIR" ]; then
- OBJ_DIR="objs"
- bash_exec "mkdir -m 777 ./$OBJ_DIR"
- echo_success "Created $OBJ_DIR directory"
- else
- OBJ_DIR=`basename $OBJ_DIR`
- fi
- if [ ! -f $OBJ_DIR/Makefile ]; then
- if [ ! -n "m4" ]; then
- mkdir -m 777 m4
- fi
- bash_exec "autoreconf -i -f"
- echo_success "Invoking autogen"
- bash_exec "libtoolize"
- bash_exec "./autogen.sh"
- cd ./$OBJ_DIR
- echo_success "Invoking configure"
- if [ $DEBUG -ne 0 ]; then
- ../configure --enable-debug --enable-standalone-epc --enable-gtp1u-in-kernel LDFLAGS=-L/usr/local/lib
- else
- ../configure --enable-standalone-epc --enable-gtp1u-in-kernel LDFLAGS=-L/usr/local/lib
- fi
- else
- cd ./$OBJ_DIR
- fi
-
-# pkill oai_epc
-# pkill tshark
-
- if [ -f Makefile ]; then
- echo_success "Compiling..."
- make -j $NUM_CPU
- if [ $? -ne 0 ]; then
- echo_error "Build failed, exiting"
- return 1
- else
- cp -pf ./OAI_EPC/oai_epc $OPENAIR_TARGETS/bin
- fi
- else
- echo_error "Configure failed, exiting"
- return 1
- fi
-
- cd $OPENAIR3_DIR/GTPV1-U/GTPUAH;
- make
- if [ $? -ne 0 ]; then
- echo_error "Build GTPUAH module failed, exiting"
- return 1
- else
- $SUDO cp -pfv ./Bin/libxt_*.so /lib/xtables
- $SUDO cp -pfv ./Bin/*.ko $OPENAIR_TARGETS/bin
- fi
-
- cd $OPENAIR3_DIR/GTPV1-U/GTPURH;
- make
- if [ $? -ne 0 ]; then
- echo_error "Build GTPURH module failed, exiting"
- return 1
- else
- $SUDO cp -pfv ./Bin/libxt_*.so /lib/xtables
- $SUDO cp -pfv ./Bin/*.ko $OPENAIR_TARGETS/bin
- fi
- return 0
-}
-
-compile_exmimo2_driver() {
- cd $OPENAIR_TARGETS/ARCH/EXMIMO/DRIVER/eurecom && make clean && make || exit 1
- cd $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT && make clean && make || exit 1
- # TO DO CHECKS...
-}
-
-
-compile_ltesoftmodem() {
- cd $OPENAIR_TARGETS/RT/USER
- if [ -f Makefile ]; then
- rm -f ./lte-softmodem
- echo "LTE softmodem compiling directives: $SOFTMODEM_DIRECTIVES"
- if [ $OAI_CLEAN -ne 0 ]; then
- echo "Cleaning LTE softmodem"
- make cleanall > /dev/null 2>&1
- fi
- make -j $NUM_CPU $SOFTMODEM_DIRECTIVES
- if [ $? -ne 0 ]; then
- # to locate easily compilation error in log file
- make $SOFTMODEM_DIRECTIVES
- fi
- if [ $? -ne 0 ]; then
- if [ ! -f ./lte-softmodem ]; then
- echo_error "Build lte-softmodem failed, returning"
- return 1
- else
- cp -pf ./lte-softmodem $OPENAIR_TARGETS/bin
- return 0
- fi
- else
- cp -pf ./lte-softmodem $OPENAIR_TARGETS/bin
- return 0
- fi
- else
- echo_error "make file for oai softmodem not found, returning"
- return 1
- fi
-}
-
-compile_oaisim() {
- cd $OPENAIR_TARGETS/SIMU/USER
- if [ -f Makefile ]; then
- echo "Compiling for oaisim target ($OAISIM_DIRECTIVES)"
- make cleanall > /dev/null
- make -j $NUM_CPU $OAISIM_DIRECTIVES
- if [ $? -ne 0 ]; then
- echo_error "Build oaisim failed, returning"
- return 1
- else
- cp -pf ./oaisim $OPENAIR_TARGETS/bin
- return 0
- fi
- else
- echo_error "Makefile not found for oaisim target, returning"
- return 1
- fi
-}
-
-compile_unisim() {
- cd $OPENAIR1_DIR/SIMULATION/LTE_PHY
- if [ -f Makefile ]; then
- echo "Compiling for UNISIM target ..."
- make cleanall
- make -j $NUM_CPU all
- if [ $? -ne 0 ]; then
- echo_error "Build unisim failed, returning"
- return 1
- else
- cp -pf ./dlsim $OPENAIR_TARGETS/bin
- cp -pf ./ulsim $OPENAIR_TARGETS/bin
- cp -pf ./pucchsim $OPENAIR_TARGETS/bin
- cp -pf ./prachsim $OPENAIR_TARGETS/bin
- cp -pf ./pdcchsim $OPENAIR_TARGETS/bin
- cp -pf ./pbchsim $OPENAIR_TARGETS/bin
- cp -pf ./mbmssim $OPENAIR_TARGETS/bin
- return 0
- fi
- else
- echo_error "Configure failed, exiting"
- return 1
- fi
-}
-
-compile_nas_tools() {
-
- export NVRAM_DIR=$OPENAIR_TARGETS/bin
-
- cd $NVRAM_DIR
-
- if [ ! -f /tmp/nas_cleaned ]; then
- echo_success "make --directory=$OPENAIR3_DIR/NAS/EURECOM-NAS/tools veryveryclean"
- make --directory=$OPENAIR3_DIR/NAS/EURECOM-NAS/tools veryveryclean
- fi
- echo_success "make --directory=$OPENAIR3_DIR/NAS/EURECOM-NAS/tools all"
- make --directory=$OPENAIR3_DIR/NAS/EURECOM-NAS/tools all
- rm .ue.nvram0
- rm .usim.nvram0
- touch /tmp/nas_cleaned
-}
-
-
-compile_ue_ip_nw_driver() {
- cd $OPENAIR2_DIR && make ue_ip.ko
-}
-
-################################################
-# 1. check if the executable functions exist
-###############################################
-
-check_for_ltesoftmodem_executable() {
- if [ ! -f $OPENAIR_TARGETS/RT/USER/lte-softmodem ]; then
- echo_error "Cannot find lte-softmodem executable object in directory $OPENAIR_TARGETS/RT/USER"
- echo_error "Check the compilation logs in bin/install_log.txt"
- exit 1
- fi
-}
-
-check_for_epc_executable() {
- if [ ! -f $OPENAIR3_DIR/objs/OAI_EPC/oai_epc ]; then
- echo_error "Cannot find oai_epc executable object in directory $OPENAIR3_DIR/objs/OAI_EPC/"
- echo_fatal "Please make sure you have compiled OAI EPC with --enable-standalone-epc option"
- fi
-}
-
-check_for_hss_executable() {
- if [ ! -f $OPENAIR3_DIR/OPENAIRHSS/objs/openair-hss ]; then
- echo_error "Cannot find openair-hss executable object in directory $OPENAIR3_DIR/OPENAIRHSS/objs/"
- echo_fatal "Please make sure you have compiled OAI HSS"
- fi
-}
-
-check_for_sgw_executable() {
- if [ ! -f $OPENAIR3_DIR/objs/OAI_SGW/oai_sgw ]; then
- echo_error "Cannot find oai_sgw executable object in directory $OPENAIR3_DIR/OPENAIRMME/objs/OAI_SGW/"
- echo_fatal "Please make sure you have compiled OAI EPC without --enable-standalone-epc option"
- fi
-}
-
-check_for_oaisim_executable() {
- if [ ! -f $OPENAIR_TARGETS/SIMU/USER/oaisim ]; then
- echo_error "Cannot find oaisim executable object in directory $OPENAIR_TARGETS/SIMU/USER"
- echo_error "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-check_for_dlsim_executable() {
- if [ ! -f $OPENAIR1_DIR/SIMULATION/LTE_PHY/dlsim ]; then
- echo_error "Cannot find dlsim executable object in directory $OPENAIR1_DIR/SIMULATION/LTE_PHY"
- echo_error "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-check_for_ulsim_executable() {
- if [ ! -f $OPENAIR1_DIR/SIMULATION/LTE_PHY/ulsim ]; then
- echo_error "Cannot find ulsim executable object in directory $OPENAIR1_DIR/SIMULATION/LTE_PHY"
- echo_error "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-check_for_pucchsim_executable() {
- if [ ! -f $OPENAIR1_DIR/SIMULATION/LTE_PHY/pucchsim ]; then
- echo_error "Cannot find pucchsim executable object in directory $OPENAIR1_DIR/SIMULATION/LTE_PHY"
- echo_error "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-check_for_prachsim_executable() {
- if [ ! -f $OPENAIR1_DIR/SIMULATION/LTE_PHY/prachsim ]; then
- echo_error "Cannot find prachsim executable object in directory $OPENAIR1_DIR/SIMULATION/LTE_PHY"
- echo_error "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-check_for_pdcchsim_executable() {
- if [ ! -f $OPENAIR1_DIR/SIMULATION/LTE_PHY/pdcchsim ]; then
- echo_error "Cannot find pdcchsim executable object in directory $OPENAIR1_DIR/SIMULATION/LTE_PHY"
- echo_error "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-check_for_pbchsim_executable() {
- if [ ! -f $OPENAIR1_DIR/SIMULATION/LTE_PHY/pbchsim ]; then
- echo_error "Cannot find pbchsim executable object in directory $OPENAIR1_DIR/SIMULATION/LTE_PHY"
- echo_error "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-check_for_mbmssim_executable() {
- if [ ! -f $OPENAIR1_DIR/SIMULATION/LTE_PHY/mbmssim ]; then
- echo_error "Cannot find mbmssim executable object in directory $OPENAIR1_DIR/SIMULATION/LTE_PHY"
- echo_error "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-check_for_nas_ue_executable() {
- if [ ! -f $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/UserProcess ]; then
- echo_error "Cannot find UserProcess executable object in directory $OPENAIR3_DIR/NAS/EURECOM-NAS/bin"
- echo_fatal "Check the compilation logs in bin/install_log.txt"
- fi
-}
-
-################################################
-# 1. check if the executable functions exist
-###############################################
-
-# arg1 is RT
-# arg2 is HW
-# arg3 is ENB_S1
-install_ltesoftmodem() {
- # RT
- if [ $1 = "RTAI" ]; then
- if [ ! -f /tmp/init_rt_done.tmp ]; then
- echo_info " 8.1 Insert RTAI modules"
- $SUDO insmod /usr/realtime/modules/rtai_hal.ko > /dev/null 2>&1
- $SUDO insmod /usr/realtime/modules/rtai_sched.ko > /dev/null 2>&1
- $SUDO insmod /usr/realtime/modules/rtai_sem.ko > /dev/null 2>&1
- $SUDO insmod /usr/realtime/modules/rtai_fifos.ko > /dev/null 2>&1
- $SUDO insmod /usr/realtime/modules/rtai_mbx.ko > /dev/null 2>&1
- $SUDO touch /tmp/init_rt_done.tmp
- $SUDO chmod 666 /tmp/init_rt_done.tmp
- else
- echo_warning " 8.1 RTAI modules already inserted"
- fi
- fi
- #HW
- if [ $2 = "EXMIMO" ]; then
- echo_info " 8.2 [EXMIMO] creating RTAI fifos"
- for i in `seq 0 64`; do
- have_rtfX=`ls /dev/ |grep -c rtf$i`;
- if [ "$have_rtfX" -eq 0 ] ; then
- $SUDO mknod -m 666 /dev/rtf$i c 150 $i;
- fi;
- done
- echo_info " 8.3 [EXMIMO] Build lte-softmodemdrivers"
- cd $OPENAIR_TARGETS/ARCH/EXMIMO/DRIVER/eurecom && make clean && make # || exit 1
- cd $OPENAIR_TARGETS/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT && make clean && make # || exit 1
-
- echo_info " 8.4 [EXMIMO] Setup RF card"
- cd $OPENAIR_TARGETS/RT/USER
- . ./init_exmimo2.sh
- else
- if [ $2 = "USRP" ]; then
- echo_info " 8.2 [USRP] "
- fi
-
- fi
-
- # ENB_S1
- if [ $3 = 0 ]; then
- cd $OPENAIR2_DIR && make clean && make nasmesh_netlink.ko #|| exit 1
- cd $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL && make clean && make # || exit 1
- fi
-
-}
-
-# arg1 is ENB_S1 'boolean'
-install_oaisim() {
- if [ $1 = 0 ]; then
- cd $OPENAIR2_DIR && make clean && make nasmesh_netlink.ko #|| exit 1
- cd $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL && make clean && make # || exit 1
- else
- compile_ue_ip_nw_driver
- install_nas_tools
- fi
-
-}
-
-
-install_nas_tools() {
- cd $OPENAIR_TARGETS/bin
- if [ ! -f .ue.nvram0 ]; then
- echo_success "generate .ue_emm.nvram0 .ue.nvram0"
- $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/ue_data --gen
- fi
-
- if [ ! -f .usim.nvram0 ]; then
- echo_success "generate .usim.nvram0"
- $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/usim_data --gen
- fi
- $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/ue_data --print
- $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/usim_data --print
-}
-
-install_nasmesh(){
- echo_success "LOAD NASMESH IP DRIVER FOR UE AND eNB"
- (cd $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL && make clean && make)
- (cd $OPENAIR2_DIR && make clean && make nasmesh_netlink_address_fix.ko)
- $SUDO rmmod nasmesh
- $SUDO insmod $OPENAIR2_DIR/NAS/DRIVER/MESH/nasmesh.ko
-}
-
-##################################
-# create HSS DB
-################################
-
-# arg 1 is mysql user (root)
-# arg 2 is mysql password (linux)
-# arg 3 is hss username (hssadmin)
-# arg 4 is hss password (admin)
-# arg 5 is database name (oai_db)
-create_hss_database(){
- EXPECTED_ARGS=5
- E_BADARGS=65
- MYSQL=`which mysql`
- rv=0
- if [ $# -ne $EXPECTED_ARGS ]
- then
- echo_fatal "Usage: $0 dbuser dbpass hssuser hsspass databasename"
- rv=1
- fi
-
- set_openair_env
-
- # removed %
- #Q1="GRANT ALL PRIVILEGES ON *.* TO '$3'@'%' IDENTIFIED BY '$4' WITH GRANT OPTION;"
- Q1="GRANT ALL PRIVILEGES ON *.* TO '$3'@'localhost' IDENTIFIED BY '$4' WITH GRANT OPTION;"
- Q2="FLUSH PRIVILEGES;"
- SQL="${Q1}${Q2}"
- $MYSQL -u $1 --password=$2 -e "$SQL"
- if [ $? -ne 0 ]; then
- echo_error "$3 permissions failed"
- return 1
- else
- echo_success "$3 permissions succeeded"
- fi
-
-
- Q1="CREATE DATABASE IF NOT EXISTS ${BTICK}$5${BTICK};"
- SQL="${Q1}"
- $MYSQL -u $3 --password=$4 -e "$SQL"
- if [ $? -ne 0 ]; then
- echo_error "$5 creation failed"
- return 1
- else
- echo_success "$5 creation succeeded"
- fi
-
-
- # test if tables have been created
- mysql -u $3 --password=$4 -e "desc $5.users" > /dev/null 2>&1
-
- if [ $? -eq 1 ]; then
- $MYSQL -u $3 --password=$4 $5 < $OPENAIR3_DIR/OPENAIRHSS/db/oai_db.sql
- if [ $? -ne 0 ]; then
- echo_error "$5 tables creation failed"
- return 1
- else
- echo_success "$5 tables creation succeeded"
- fi
- fi
-
- return 0
-}
-
-################################
-# set_openair_env
-###############################
-set_openair_env(){
-
- fullpath=`readlink -f $BASH_SOURCE`
- [ -f "/.$fullpath" ] || fullpath=`readlink -f $PWD/$fullpath`
- openair_path=${fullpath%/targets/*}
- openair_path=${openair_path%/openair3/*}
- openair_path=${openair_path%/openair[123]/*}
-
- export OPENAIR_DIR=$openair_path
- export OPENAIR_HOME=$openair_path
- export OPENAIR1_DIR=$openair_path/openair1
- export OPENAIR2_DIR=$openair_path/openair2
- export OPENAIR3_DIR=$openair_path/openair3
- export OPENAIR3_DIR=$openair_path/openair3
- export OPENAIR_TARGETS=$openair_path/targets
-
-}
-
-########################################
-### print help
-######################################
-
-print_help(){
- echo_success "Name : build_oai - install and build OAI"
- echo_success "Usage: build_oai.bash -a -b -c -d -e RTAI -m -r REL8 -s -t OAISIM -w EXMIMO -x"
- echo_success "-a | --doxygen : Enable doxygen for documentation (default disabled)"
- echo_success "-b | --disable-s1 : Disable S1 interface for eNB (default enabled)"
- echo_success "-c | --clean : Enable clean OAI build (default disabled)"
- echo_success "-C | --config-file : Set the config file local path"
- echo_success "-d | --debug : Enable debug mode (default disabled)"
- echo_success "-D | --disable-check-installed-software : Disable the checking of installed software (default is check)"
- echo_success "-e | --realtime : Set realtime mode: RTAI, NONE (default NONE)"
- echo_success "-g | --run-with-gdb : Run the executable built by this script with gdb"
- echo_success "-K | --itti-dump-file : Set the execution events trace file"
- echo_success "-l | --build-target : Set the LTE build target: ENB,EPC,HSS,NONE (default ENB)"
- echo_success "-m | --build-from-makefile : Enable build from the makefile (default disabled)"
- echo_success "-r | --3gpp-release : Set the release: REL8, REL10 (default REL8)"
- echo_success "-p | --wireshark : enable wireshark interface for L2 pdus"
- echo_success "-R | --run : Run the executable built by this script"
- echo_success "-s | --check : Enable OAI testing and sanity check (default disabled)"
- echo_success "-t | --enb-build-target : Set the eNB build target: ALL, SOFTMODEM,OAISIM,UNISIM (default ALL)"
- echo_success "-V | --vcd : Log vcd events"
- echo_success "-w | --hardware : Set the hardware platform: EXMIMO, USRP (also installs UHD driver), ETHERNET, NONE, (default EXMIMO)"
- echo_success "-x | --xforms : Enable xforms (default disabled)"
- echo_success "-z | --defaults : Set the default build options"
-}
-
-print_help_perf(){
- echo_success "Name : perf_oai generate traffic and evaluate the performance "
- echo_success "Usage: perf_oai.bash -l ITG "
- echo_success "-l | --perf-app : Set Performance evaluation app: ITGS, ITGD,PING, OTG-OAISIM, OTG-CBA, (default PING)"
- echo_success "-m | --owd : enable D-ITG one-way-delay meter (default disabled)"
- echo_success "-e | --duration : set the duration of the experiment (default 60000ms)"
- echo_success "-i | --idt-dist : set the distribution of the inter-departure time: CONSTANT, UNIFORM,EXPONENTIAL (default CONSTANT)"
- echo_success "-s | --ps-dist : set the distribution of the inter-departure time (default CONSTANT, available options: UNIFORM,EXPONENTIAL)"
- echo_success "-d | --dst : set the destination address (default 127.0.0.1)"
- echo_success "-p | --dst-port : set the destination address (default NONE)"
- echo_success "-t | --test : enable test mode to validate the functionality (default disabled)"
- echo_success "-k | --keep-log-file : keep the log files (default disabled)"
-
-}
-###############################
-## echo and family
-###############################
-black='\E[30m'
-red='\E[31m'
-green='\E[32m'
-yellow='\E[33m'
-blue='\E[34m'
-magenta='\E[35m'
-cyan='\E[36m'
-white='\E[37m'
-reset_color='\E[00m'
-
-
-cecho() # Color-echo
-# arg1 = message
-# arg2 = color
-{
- local default_msg="No Message."
- message=${1:-$default_msg}
- color=${2:-$green}
- if [ $BUILD_FROM_MAKEFILE = 0 ]; then
- echo -e -n "$color$message$reset_color"
- echo
- else
- echo "$message"
- fi
- return
-}
-
-echo_error() {
- local my_string=""
- until [ -z "$1" ]
- do
- my_string="$my_string$1"
- shift
- done
- cecho "$my_string" $red
-}
-
-echo_fatal() {
- local my_string=""
- until [ -z "$1" ]
- do
- my_string="$my_string$1"
- shift
- done
- echo_error "$my_string"
- exit -1
-}
-
-echo_warning() {
- local my_string=""
- until [ -z "$1" ]
- do
- my_string="$my_string$1"
- shift
- done
- cecho "$my_string" $yellow
-}
-
-echo_success() {
- local my_string=""
- until [ -z "$1" ]
- do
- my_string="$my_string$1"
- shift
- done
- cecho "$my_string" $green
-}
-echo_info() {
- local my_string=""
- until [ -z "$1" ]
- do
- my_string="$my_string$1"
- shift
- done
- cecho "$my_string" $blue
-}
-
-bash_exec() {
- output=$($1 2>&1)
- result=$?
- if [ $result -eq 0 ]; then
- echo_success "$1"
- else
- echo_error "$1: $output"
- fi
-}
-
-
-wait_process_started () {
- if [ -z "$1" ]; then
- echo_error "WAITING FOR PROCESS START: NO PROCESS"
- return 1
- fi
- ps -C $1 > /dev/null 2>&1
- while [ $? -ne 0 ]; do
- echo_warning "WAITING FOR $1 START"
- sleep 2
- ps -C $1 > /dev/null 2>&1
- done
- echo_success "PROCESS $1 STARTED"
- return 0
-}
-
-is_process_started () {
- if [ -z "$1" ]; then
- echo_error "WAITING FOR PROCESS START: NO PROCESS"
- return 1
- fi
- ps -C $1 > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo_success "PROCESS $1 NOT STARTED"
- return 1
- fi
- echo_success "PROCESS $1 STARTED"
- return 0
-}
-
-assert() {
- # If condition false
- # exit from script with error message
- E_PARAM_ERR=98
- E_PARAM_FAILED=99
-
- if [ -z "$2" ] ; then # Not enought parameters passed.
- return $E_PARAM_ERR
- fi
-
- lineno=$2
- if [ ! $1 ]; then
- echo_error "Assertion failed: \"$1\""
- echo_fatal "File \"$0\", line $lineno"
- fi
-}
diff --git a/targets/build_oai.bash b/targets/build_oai.bash
deleted file mode 100755
index 05b14a541b..0000000000
--- a/targets/build_oai.bash
+++ /dev/null
@@ -1,840 +0,0 @@
-#/*
-# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
-# * contributor license agreements. See the NOTICE file distributed with
-# * this work for additional information regarding copyright ownership.
-# * The OpenAirInterface Software Alliance licenses this file to You under
-# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
-# * except in compliance with the License.
-# * You may obtain a copy of the License at
-# *
-# * http://www.openairinterface.org/?page_id=698
-# *
-# * Unless required by applicable law or agreed to in writing, software
-# * distributed under the License is distributed on an "AS IS" BASIS,
-# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# * See the License for the specific language governing permissions and
-# * limitations under the License.
-# *-------------------------------------------------------------------------------
-# * For more information about the OpenAirInterface (OAI) Software Alliance:
-# * contact@openairinterface.org
-# */
-################################################################################
-# file build_oai.bash
-# brief OAI automated build tool that can be used to install, compile, run OAI.
-# author Navid Nikaein, Lionel GAUTHIER
-# company Eurecom
-# email: navid.nikaein@eurecom.fr, lionel.gauthier@eurecom.fr
-#
-
-#!/bin/bash
-################################
-# include helper functions
-################################
-THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
-. $THIS_SCRIPT_PATH/build_helper.bash
-
-check_for_root_rights
-
-#######################################
-# Default PARAMETERS
-######################################
-declare OAI_DB_ADMIN_USER_NAME="root"
-declare OAI_DB_ADMIN_USER_PASSWORD="linux"
-
-#only one could be set at the time
-declare BUILD_LTE="NONE" # ENB, EPC, HSS
-
-declare HW="EXMIMO" # EXMIMO, USRP, ETHERNET, NONE
-declare TARGET="ALL" # ALL, SOFTMODEM, OAISIM, UNISIM, NONE
-declare ENB_S1=1
-declare REL="REL8" # REL8, REL10
-declare RT="NONE" # RTAI, RT_PREMPT, NONE
-declare DEBUG=0
-declare CONFIG_FILE=" "
-declare CONFIG_FILE_ACCESS_OK=0
-declare EXE_ARGUMENTS=" "
-declare RUN_GDB=0
-declare RUN=0
-declare DISABLE_CHECK_INSTALLED_SOFTWARE=0
-declare OAI_CLEAN=0
-declare CLEAN_IPTABLES=0
-declare CLEAN_HSS=0
-
-declare OAI_TEST=0
-declare XFORMS=0
-
-# script is not currently handling these params
-declare EPC=0 # flag to build EPC
-
-declare ITTI_ANALYZER=0
-declare VCD_TIMING=0
-declare WIRESHARK=0
-declare TIME_MEAS=0
-declare DOXYGEN=0
-declare DEV=0
-
-#EMULATION_DEV_INTERFACE="eth0"
-#EMULATION_MULTICAST_GROUP=1
-#EMULATION_DEV_ADDRESS=`ifconfig $EMULATION_DEV_INTERFACE | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`
-
-############## script params #####################
-
-if [ -f ./.lock_oaibuild ]; then
- OAI_CLEAN=0
-else
- OAI_CLEAN=1
-fi
-
-#for i in "$@"
-#do
-# echo "i is : $i"
-# case $i in
-
-
- until [ -z "$1" ]
- do
- case "$1" in
- -a | --doxygen)
- DOXYGEN=1
- echo "setting doxygen flag to: $DOXYGEN"
- shift;
- ;;
- -b | --disable-s1)
- ENB_S1=0
- echo "disable eNB S1 flag"
- shift;
- ;;
- -c | --clean)
- rm -rf ./.lock_oaibuild
- OAI_CLEAN=1
- CLEAN_HSS=1
- echo "setting clean flag to: $OAI_CLEAN"
- echo "may check package installation, and recompile OAI"
- shift;
- ;;
- --clean-iptables)
- CLEAN_IPTABLES=1;
- shift;
- ;;
- -C | --config-file)
- CONFIG_FILE=$2
- # may be relative path
- if [ -f $(dirname $(readlink -f $0))/$CONFIG_FILE ]; then
- CONFIG_FILE=$(dirname $(readlink -f $0))/$CONFIG_FILE
- echo "setting config file to: $CONFIG_FILE"
- CONFIG_FILE_ACCESS_OK=1
- else
- # may be absolute path
- if [ -f $CONFIG_FILE ]; then
- echo "setting config file to: $CONFIG_FILE"
- CONFIG_FILE_ACCESS_OK=1
- else
- echo "config file not found"
- exit 1
- fi
- fi
- EXE_ARGUMENTS="$EXE_ARGUMENTS -O $CONFIG_FILE"
- shift 2;
- ;;
- -d | --debug)
- DEBUG=1
- echo "setting debug flag to: $DEBUG"
- shift;
- ;;
- -D | --disable-check-installed-software)
- DISABLE_CHECK_INSTALLED_SOFTWARE=1
- echo "disable check installed software"
- shift;
- ;;
- -e | --realtime)
- RT=$2
- echo "setting realtime flag to: $RT"
- shift 2 ;
- ;;
- -g | --run-with-gdb)
- DEBUG=1
- RUN=1
- RUN_GDB=1
- echo "Running with gdb"
- shift;
- ;;
- -K | --itti-dump-file)
- ITTI_ANALYZER=1
- ITTI_DUMP_FILE=$2
- echo "setting ITTI dump file to: $ITTI_DUMP_FILE"
- EXE_ARGUMENTS="$EXE_ARGUMENTS -K $ITTI_DUMP_FILE"
- shift 2;
- ;;
- -l | --build-target)
- BUILD_LTE=$2
- echo "setting top-level build target to: $2"
- shift 2;
- ;;
- -h | --help)
- print_help
- exit -1
- ;;
- -m | --build-from-makefile)
- BUILD_FROM_MAKEFILE=1
- set_build_from_makefile $BUILD_FROM_MAKEFILE
- echo "setting a flag to build from makefile to: $BUILD_FROM_MAKEFILE"
- shift;
- ;;
- -r | --3gpp-release)
- REL=$2
- echo "setting release to: $REL"
- shift 2 ;
- ;;
- -R | --run)
- RUN=1
- echo "setting run to $RUN"
- shift;
- ;;
- -s | --check)
- OAI_TEST=1
- echo "setting sanity check to: $OAI_TEST"
- shift;
- ;;
- -t | --enb-build-target)
- TARGET=$2
- echo "setting enb build target to: $TARGET"
- shift 2;
- ;;
- -V | --vcd)
- echo "setting gtk-wave output"
- VCD_TIMING=1
- EXE_ARGUMENTS="$EXE_ARGUMENTS -V"
- shift ;
- ;;
- -w | --hardware)
- HW="$2" #"${i#*=}"
- echo "setting hardware to: $HW"
- shift 2 ;
- ;;
- -x | --xforms)
- XFORMS=1
- EXE_ARGUMENTS="$EXE_ARGUMENTS -d"
- echo "setting xforms to: $XFORMS"
- shift;
- ;;
- -p | --wireshark)
- WIRESHARK=1
- echo "enabling Wireshark interface to $WIRESHARK"
- shift;
- ;;
- -z | --defaults)
- echo "setting all parameters to: default"
- rm -rf ./.lock_oaibuild
- OAI_CLEAN=1
- HW="EXMIMO"
- TARGET="ALL"
- ENB_S1=1
- REL="REL8"
- RT="NONE"
- DEBUG=0
- ENB_CONFIG_FILE=$OPENAIR_TARGETS/"PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.conf"
- OAI_TEST=0
- shift ;
- ;;
- *)
- echo "Unknown option $1"
- break ;
- # unknown option
- ;;
- esac
-done
-
-#####################
-# create a bin dir
-#####################
-echo_info "1. Creating the bin dir ..."
-mkdir -m 777 bin
-
-build_date=`date +%Y_%m_%d`
-oai_build_date="oai_built_${build_date}"
-touch bin/${oai_build_date}
-chmod -f 777 bin/${oai_build_date}
-
-touch bin/install_log.txt
-chmod -f 777 bin/install_log.txt
-################################
-# cleanup first
-################################
-#echo_info "3. Cleaning ..."
-
-#$SUDO kill -9 `ps -ef | grep oaisim | awk '{print $2}'` 2>&1
-#$SUDO kill -9 `ps -ef | grep lte-softmodem | awk '{print $2}'` 2>&1
-#$SUDO kill -9 `ps -ef | grep dlsim | awk '{print $2}'` 2>&1
-#$SUDO kill -9 `ps -ef | grep ulsim | awk '{print $2}'` 2>&1
-
-if [ $CLEAN_IPTABLES -eq 1 ]; then
- echo_info "Flushing iptables..."
- $SUDO modprobe ip_tables
- $SUDO modprobe x_tables
- $SUDO iptables -P INPUT ACCEPT
- $SUDO iptables -F INPUT
- $SUDO iptables -P OUTPUT ACCEPT
- $SUDO iptables -F OUTPUT
- $SUDO iptables -P FORWARD ACCEPT
- $SUDO iptables -F FORWARD
- $SUDO iptables -t nat -F
- $SUDO iptables -t mangle -F
- $SUDO iptables -t filter -F
- $SUDO iptables -t raw -F
- echo_info "Flushed iptables"
-fi
-############################################
-# setting and printing OAI envs, we should check here
-############################################
-
-echo_info "2. Setting the OAI PATHS ..."
-
-set_openair_env
-cecho "OPENAIR_HOME = $OPENAIR_HOME" $green
-cecho "OPENAIR1_DIR = $OPENAIR1_DIR" $green
-cecho "OPENAIR2_DIR = $OPENAIR2_DIR" $green
-cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green
-cecho "OPENAIR3_DIR = $OPENAIR3_DIR" $green
-cecho "OPENAIR_TARGETS = $OPENAIR_TARGETS" $green
-
-
-echo "OPENAIR_HOME = $OPENAIR_HOME" >> bin/${oai_build_date}
-echo "OPENAIR1_DIR = $OPENAIR1_DIR" >> bin/${oai_build_date}
-echo "OPENAIR2_DIR = $OPENAIR2_DIR" >> bin/${oai_build_date}
-echo "OPENAIR3_DIR = $OPENAIR3_DIR" >> bin/${oai_build_date}
-echo "OPENAIR3_DIR = $OPENAIR3_DIR" >> bin/${oai_build_date}
-echo "OPENAIR_TARGETS = $OPENAIR_TARGETS" >> bin/${oai_build_date}
-
-
-build_enb(){
-
-##########################################
-# process parameters
-#########################################
-
- echo_info "4. Process the parameters"
-
- echo_info "User-defined Parameters : HW=$HW, TARGET=$TARGET, ENB_S1=$ENB_S1, REL=$REL, RT=$RT, DEBUG=$DEBUG XFORMS=$XFORMS"
-
- echo "User-defined Parameters : HW=$HW, TARGET=$TARGET, ENB_S1=$ENB_S1, REL=$REL, RT=$RT, DEBUG=$DEBUG XFORMS=$XFORMS" >> bin/${oai_build_date}
-
-
-############################################
-# compilation directives
-############################################
-
- echo_info "5. building the compilation directives ..."
-
-
- SOFTMODEM_DIRECTIVES="DEBUG=$DEBUG XFORMS=$XFORMS "
- OAISIM_DIRECTIVES="DEBUG=$DEBUG XFORMS=$XFORMS "
-
- if [ $ENB_S1 -eq 1 ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES USE_MME=R10 ENABLE_ITTI=1 LINK_ENB_PDCP_TO_GTPV1U=1 SECU=1 "
- #OAISIM_DIRECTIVES="$OAISIM_DIRECTIVES USE_MME=R10 ENABLE_ITTI=1 LINK_ENB_PDCP_TO_GTPV1U=1 SECU=1 "
- OAISIM_DIRECTIVES="$OAISIM_DIRECTIVES ENABLE_ITTI=1 LINK_ENB_PDCP_TO_GTPV1U=1 SECU=1 "
- fi
-
- if [ $DEBUG -eq 0 ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES DISABLE_XER_PRINT=1 "
- OAISIM_DIRECTIVES="$OAISIM_DIRECTIVES DISABLE_XER_PRINT=1 "
- fi
-
- if [ $HW = "USRP" ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES USRP=1 "
- fi
-
- if [ $HW = "ADRV9371_ZC706" ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES ADRV9371_ZC706=1 "
- fi
-
- if [ $HW = "EXMIMO" ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES EXMIMO=1 "
- fi
-
- if [ $HW = "ETHERNET" ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES ETHERNET=1 "
- fi
-
- if [ $ENB_S1 -eq 0 ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES NAS=1 "
- OAISIM_DIRECTIVES="$OAISIM_DIRECTIVES NAS=1 "
- fi
-
- if [ $REL = "REL8" ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES Rel8=1 "
- OAISIM_DIRECTIVES="$OAISIM_DIRECTIVES Rel8=1 "
- else
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES Rel10=1 "
- OAISIM_DIRECTIVES="$OAISIM_DIRECTIVES Rel10=1 "
- fi
-
- if [ $RT = "RTAI" ]; then
- if [ ! -f /usr/realtime/modules/rtai_hal.ko ]; then
- echo_warning "RTAI doesn't seem to be installed"
- RT="NONE"
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES RTAI=0 "
- else
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES HARD_RT=1 "
- fi
- else
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES RTAI=0 "
- RT="NONE"
- fi
-
- if [ $TARGET != "ALL" ]; then
- if [ $TARGET != "SOFTMODEM" ]; then
- HW="NONE"
- fi
- fi
-
- if [ $UBUNTU_REL = "12.04" ]; then
- output=$(check_for_machine_type 2>&1)
- MACHINE_ARCH=$?
- if [ $MACHINE_ARCH -eq 64 ]; then
- SOFTMODEM_DIRECTIVES="$SOFTMODEM_DIRECTIVES LIBCONFIG_LONG=1 "
- OAISIM_DIRECTIVES="$OASIM_DIRECTIVES LIBCONFIG_LONG=1 "
- fi
- fi
-
- echo_success "SOFTMODEM Compilation directives: $SOFTMODEM_DIRECTIVES"
- echo_success "OAISIM Compilation directives: $OAISIM_DIRECTIVES"
-
- echo "SOFTMODEM Compilation directives: $SOFTMODEM_DIRECTIVES" >> bin/${oai_build_date}
- echo "OAISIM Compilation directive: $OAISIM_DIRECTIVES" >> bin/${oai_build_date}
-
-
-############################################
-# check the installation
-############################################
- if [ $DISABLE_CHECK_INSTALLED_SOFTWARE -eq 0 ]; then
- echo_info "6. Checking the the required softwares/packages ..."
-
- check_install_oai_software
- if [ $HW = "USRP" ]; then
- check_install_usrp_uhd_driver
- fi
- check_install_asn1c
- check_install_nettle
- else
- echo_info "6. Not checking the required softwares/packages ..."
- touch ./.lock_oaibuild
- fi
-
-############################################
-# compile
-############################################
-
- echo_info "7. compiling and installing the OAI binaries ..."
-
- softmodem_compiled=1
- oaisim_compiled=1
- unisim_compiled=1
-
- if [ $TARGET = "ALL" ]; then
- echo "############# compile_ltesoftmodem #############" >> bin/install_log.txt
- output=$(compile_ltesoftmodem >> bin/install_log.txt 2>&1 )
- softmodem_compiled=$?
- check_for_ltesoftmodem_executable
- echo_info "7.1 finished ltesoftmodem target : check the installation log file bin/install_log.txt"
-
- echo "################ compile_oaisim #################" >> bin/install_log.txt
- output=$(compile_oaisim >> bin/install_log.txt 2>&1 )
- oaisim_compiled=$?
- check_for_oaisim_executable
- echo_info "7.2 finished oaisim target : check the installation log file bin/install_log.txt"
-
- echo "################## compile_unisim ##################" >> bin/install_log.txt
- output=$(compile_unisim >> bin/install_log.txt 2>&1 )
- unisim_compiled=$?
- check_for_dlsim_executable
- check_for_ulsim_executable
- check_for_pucchsim_executable
- check_for_prachsim_executable
- check_for_pdcchsim_executable
- check_for_pbchsim_executable
- check_for_mbmssim_executable
- echo_info "7.3 finished unisim target : check the installation log file bin/install_log.txt"
-
-
- else
- if [ $TARGET == "SOFTMODEM" ]; then
- echo "############# compile_ltesoftmodem #############" >> bin/install_log.txt
- output=$(compile_ltesoftmodem >> bin/install_log.txt 2>&1 )
- softmodem_compiled=$?
- check_for_ltesoftmodem_executable
- echo_info "7.1 finished ltesoftmodem target: check the installation log file bin/install_log.txt"
-
- if [ $HW == "EXMIMO" ]; then
- output=$(compile_exmimo2_driver >> bin/install_log.txt 2>&1)
- fi
- fi
- if [ $TARGET = "OAISIM" ]; then
- echo "################ compile_oaisim #################" >> bin/install_log.txt
- output=$(compile_oaisim >> bin/install_log.txt 2>&1 )
- oaisim_compiled=$?
- check_for_oaisim_executable
- echo_info "7.2 finished oaisim target: check the installation log file bin/install_log.txt"
-
- if [ $ENB_S1 -eq 1 ]; then
- compile_nas_tools 2>&1
- nas_tools_compiled=$?
- check_for_nas_tools_executable
- echo_info "7.2.1 finished nas ue target: check the installation log file bin/install_log.txt"
- fi
- fi
- if [ $TARGET = "UNISIM" ]; then
- echo "################## compile_unisim ##################" >> bin/install_log.txt
- output=$(compile_unisim >> bin/install_log.txt 2>&1 )
- unisim_compiled=$?
- check_for_dlsim_executable
- check_for_ulsim_executable
- check_for_pucchsim_executable
- check_for_prachsim_executable
- check_for_pdcchsim_executable
- check_for_pbchsim_executable
- check_for_mbmssim_executable
- echo_info "7.3 finished unisim target: check the installation log file bin/install_log.txt"
- fi
- fi
-
-
-############################################
-# install
-############################################
-
- echo_info "8. Installing ..."
-
- if [ $softmodem_compiled -eq 0 ]; then
- echo_success "target lte-softmodem built and installed in the bin directory"
- echo "target lte-softmodem built and installed in the bin directory" >> bin/${oai_build_date}
- output=$(install_ltesoftmodem $RT $HW $ENB_S1 )
- fi
- if [ $oaisim_compiled -eq 0 ]; then
- echo_success "target oaisim built and installed in the bin directory"
- echo "target oaisim built and installed in the bin directory" >> bin/${oai_build_date}
- output=$(install_oaisim $ENB_S1 )
- fi
- if [ $unisim_compiled -eq 0 ]; then
- echo_success "target unisim built and installed in the bin directory"
- echo "target unisim built and installed in the bin directory" >> bin/${oai_build_date}
- fi
-
- echo_info "build terminated, binaries are located in bin/"
- echo_info "build terminated, logs are located in bin/${oai_build_date} and bin/install_log.txt"
-
-
-
-}
-build_epc(){
-
- epc_compiled=1
-
- echo_info "Note: this scripts tested only on Ubuntu 14.04x64"
-
-######################################
-# CHECK MISC SOFTWARES AND LIBS #
-######################################
- if [ $DISABLE_CHECK_INSTALLED_SOFTWARE -eq 0 ]; then
- echo_info "4. Checking the the required softwares/packages for EPC..."
-
- check_install_epc_software
- check_install_asn1c
- if [ $OAI_CLEAN -eq 1 ]; then
- check_install_freediamter
- else
- if [ ! -d /usr/local/etc/freeDiameter ]; then
- check_install_freediamter
- fi
- fi
- else
- echo_info "4. Not checking the required softwares/packages for EPC"
- fi
-
-###########################################
-# configure and compile
-##########################################
-
- echo_info "5. configure and compile epc"
-
- output=$(compile_epc $OAI_CLEAN >> $OPENAIR_TARGETS/bin/install_log.txt 2>&1 )
- epc_compiled=$?
- if [ $epc_compiled -ne 0 ]; then
- echo_error "EPC compilation failed : check the installation log file bin/install_log.txt"
- exit 1
- fi
- check_for_epc_executable
- echo_info "finished epc target: check the installation log file bin/install_log.txt"
-
- if [ $CONFIG_FILE_ACCESS_OK -eq 0 ]; then
- echo_error "You have to provide a EPC config file"
- exit 1
- fi
-
- TEMP_FILE=`tempfile`
- VARIABLES=" S6A_CONF\|\
- HSS_HOSTNAME\|\
- REALM"
-
- VARIABLES=$(echo $VARIABLES | sed -e 's/\\r//g')
- VARIABLES=$(echo $VARIABLES | tr -d ' ')
- cat $CONFIG_FILE | grep -w "$VARIABLES"| tr -d " " | tr -d ";" > $TEMP_FILE
- source $TEMP_FILE
- rm -f $TEMP_FILE
-
- if [ x"$REALM" == "x" ]; then
- echo_error "Your config file do not contain a REALM for S6A configuration"
- exit 1
- fi
- if [ x"$S6A_CONF" != "x./epc_s6a.conf" ]; then
- echo_error "Your config file do not contain the good path for the S6A config file,"
- echo_error "accordingly to what is done in this script, it should be set to epc_s6a.conf"
- exit 1
- fi
-
- check_epc_s6a_certificate $REALM
-
-###########################################
-# install the binary in bin
-##########################################
-
- echo_info "6. install the binary file"
-
- if [ $epc_compiled -eq 0 ]; then
- echo_success "target epc built and installed in the bin directory"
- echo "target epc built and installed in the bin directory" >> bin/${oai_build_date}
- cp -f $CONFIG_FILE $OPENAIR_TARGETS/bin
- cp -f $OPENAIR3_DIR/objs/UTILS/CONF/s6a.conf $OPENAIR_TARGETS/bin/epc_s6a.conf
- fi
-}
-
-build_hss(){
- echo_info "Note: this script tested only for Ubuntu 12.04 x64 -> 14.04 x64"
-
-######################################
-# CHECK MISC SOFTWARES AND LIBS #
-######################################
- if [ $DISABLE_CHECK_INSTALLED_SOFTWARE -eq 0 ]; then
- echo_info "4. check the required packages for HSS"
- check_install_hss_software
- if [ $OAI_CLEAN -eq 1 ]; then
- check_install_freediamter
- else
- if [ ! -d /usr/local/etc/freeDiameter ]; then
- check_install_freediamter
- fi
- fi
- else
- echo_info "4. Not checking the required packages for HSS"
- fi
-
-
-######################################
-# compile HSS #
-######################################
- echo_info "5. compile HSS"
-
- # Bad behaviour of $OAI_CLEAN with ./.lock_oaibuild ...
- compile_hss $CLEAN_HSS
- hss_compiled=$?
- check_for_hss_executable
- echo_info "finished hss target"
-
-######################################
-# Check certificates #
-######################################
-
- TEMP_FILE=`tempfile`
- cat $OPENAIR3_DIR/OPENAIRHSS/conf/hss_fd.conf | grep -w "Identity" | tr -d " " | tr -d ";" > $TEMP_FILE
- cat $OPENAIR3_DIR/OPENAIRHSS/conf/hss.conf | grep -w "MYSQL_user" | tr -d " " | tr -d ";" >> $TEMP_FILE
- cat $OPENAIR3_DIR/OPENAIRHSS/conf/hss.conf | grep -w "MYSQL_pass" | tr -d " " | tr -d ";" >> $TEMP_FILE
- cat $OPENAIR3_DIR/OPENAIRHSS/conf/hss.conf | grep -w "MYSQL_db" | tr -d " " | tr -d ";" >> $TEMP_FILE
- source $TEMP_FILE
- rm -f $TEMP_FILE
-
- if [ x"$Identity" == "x" ]; then
- echo_error "Your config file do not contain a host identity for S6A configuration"
- exit 1
- fi
- HSS_REALM=$(echo $Identity | sed 's/.*\.//')
- HSS_HOSTNAME=${Identity%.$HSS_REALM}
- NEW_HOSTNAME=`hostname -s`
- if [ "x$HSS_HOSTNAME" != "x$NEW_HOSTNAME" ]; then
- echo_warning "Changing identity of HSS from <$HSS_HOSTNAME.$HSS_REALM> to <$NEW_HOSTNAME.$HSS_REALM>"
- sed -ibak "s/$HSS_HOSTNAME/$NEW_HOSTNAME/" $OPENAIR3_DIR/OPENAIRHSS/conf/hss_fd.conf
- fi
- check_hss_s6a_certificate $HSS_REALM
-
-######################################
-# fill the HSS DB
-######################################
- echo_info "6. create HSS database (for EURECOM SIM CARDS)"
- hss_db_created=1
- create_hss_database $OAI_DB_ADMIN_USER_NAME $OAI_DB_ADMIN_USER_PASSWORD $MYSQL_user $MYSQL_pass $MYSQL_db
- if [ $? -eq 1 ]; then
- echo_fatal "hss DB not created"
- fi
-}
-
-
-
-
-echo_info "3. set the top-level build target"
-case "$BUILD_LTE" in
- 'ENB')
- echo_success "build LTE eNB"
- build_enb
- ;;
- 'EPC')
- echo_success "build EPC(MME and xGW)"
- build_epc
- ;;
- 'HSS')
- echo_success "build HSS"
- build_hss
- ;;
- 'NONE')
- ;;
- *)
- ;;
-esac
-
-# Additional operation
-
-############################################
-# Generate doxygen documentation
-############################################
-
-if [ $DOXYGEN = 1 ]; then
- echo_info "9. Generate doxygen documentation ..."
- doxygen $OPENAIR_TARGETS/DOCS/Doxyfile
- echo_info "9.1 use your navigator to open $OPENAIR_TARGETS/DOCS/html/index.html "
-else
- echo_info "9. Bypassing doxygen documentation ..."
-fi
-
-
-############################################
-# testing
-############################################
-
-if [ $OAI_TEST -eq 1 ]; then
- echo_info "10. Running OAI pre commit tests (pre-ci) ..."
- python $OPENAIR_TARGETS/TEST/OAI/test01.py -l
-else
- echo_info "10. Bypassing the Tests ..."
-fi
-
-############################################
-# run
-############################################
-
-if [ $RUN -ne 0 ]; then
- echo_info "11. Running ..."
- cd $OPENAIR_TARGETS/bin
- case "$BUILD_LTE" in
- 'ENB')
- if [ $TARGET == "SOFTMODEM" ]; then
- if [ $HW == "EXMIMO" ]; then
- $SUDO chmod 777 $OPENAIR_TARGETS/RT/USER/init_exmimo2.sh
- $SUDO $OPENAIR_TARGETS/RT/USER/init_exmimo2.sh
- fi
- if [ $WIRESHARK -eq 1 ]; then
- EXE_ARGUMENTS="$EXE_ARGUMENTS -W"
- fi
- echo "############# running ltesoftmodem #############"
- if [ $RUN_GDB -eq 0 ]; then
- $SUDO $OPENAIR_TARGETS/bin/lte-softmodem `echo $EXE_ARGUMENTS`
- else
- $SUDO setenv MALLOC_CHECK_ 2
- $SUDO touch ~/.gdb_lte_softmodem
- $SUDO echo "file $OPENAIR_TARGETS/bin/lte-softmodem" > ~/.gdb_lte_softmodem
- $SUDO echo "set args $EXE_ARGUMENTS" >> ~/.gdb_lte_softmodem
- $SUDO echo "run" >> ~/.gdb_lte_softmodem
- $SUDO gdb -nh -x ~/.gdb_lte_softmodem 2>&1
- fi
-
- elif [ $TARGET == "OAISIM" ]; then
-
- if [ $ENB_S1 -eq 0 ]; then
- install_nasmesh
- else
- # prepare NAS for UE
- if [ ! -f .ue.nvram0 ]; then
- echo_success "generate .ue_emm.nvram0 .ue.nvram0"
- $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/ue_data --gen
- fi
-
- if [ ! -f .usim.nvram0 ]; then
- echo_success "generate .usim.nvram0"
- $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/usim_data --gen
- fi
- $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/ue_data --print
- $OPENAIR3_DIR/NAS/EURECOM-NAS/bin/usim_data --print
-
- insmod $OPENAIR2_DIR/NETWORK_DRIVER/UE_IP/ue_ip.ko
-
- fi
- if [ $WIRESHARK -eq 1 ]; then
- EXE_ARGUMENTS="$EXE_ARGUMENTS -P wireshark"
- fi
- if [ $RUN_GDB -eq 0 ]; then
- $SUDO exec $OPENAIR_TARGETS/bin/oaisim `echo $EXE_ARGUMENTS`
- else
- $SUDO setenv MALLOC_CHECK_ 2
- $SUDO touch ~/.gdb_oaisim
- $SUDO echo "file $OPENAIR_TARGETS/bin/lte-oaisim" > ~/.gdb_oaisim
- $SUDO echo "set args $EXE_ARGUMENTS" >> ~/.gdb_oaisim
- $SUDO echo "run" >> ~/.gdb_oaisim
- $SUDO gdb -nh -x ~/.gdb_oaisim 2>&1
- fi
- fi
- ;;
-
-
- 'EPC')
- echo "############# running EPC #############"
- test_is_host_reachable $HSS_HOSTNAME.$REALM HSS
- if [ $RUN_GDB -eq 0 ]; then
- $SUDO $OPENAIR_TARGETS/bin/oai_epc `echo $EXE_ARGUMENTS`
- else
- touch ~/.gdb_epc
- chmod 777 ~/.gdb_epc
- echo "file $OPENAIR_TARGETS/bin/oai_epc" > ~/.gdb_epc
- echo "set args $EXE_ARGUMENTS" >> ~/.gdb_epc
- echo "run" >> ~/.gdb_epc
- $SUDO gdb -nh -x ~/.gdb_epc 2>&1
- fi
- ;;
-
-
- 'HSS')
- echo "############# running HSS #############"
- cd $OPENAIR3_DIR/OPENAIRHSS/objs
- if [ $RUN_GDB -eq 0 ]; then
- $SUDO exec ./openair-hss -c ./conf/hss.conf
- else
- touch ~/.gdb_hss
- chmod 777 ~/.gdb_hss
- echo "file ./openair-hss" > ~/.gdb_hss
- echo "set args -c ./conf/hss.conf" >> ~/.gdb_hss
- echo "run" >> ~/.gdb_hss
- $SUDO gdb -nh -x ~/.gdb_hss 2>&1
- fi
- ;;
-
-
- 'NONE')
- ;;
-
-
- *)
- echo_error "Unknown option $BUILD_LTE: do not execute"
- ;;
- esac
-else
- echo_info "11. No run requested, end of script"
- exit 0
-fi
-
-