From 2ccbef43e0f6f551a0c564e191cb39053e64dd9f Mon Sep 17 00:00:00 2001
From: Nick Ho <nick133371@gmail.com>
Date: Fri, 16 Jun 2017 16:13:22 +0200
Subject: [PATCH] Add the compilation option NB_IOT

---
 cmake_targets/CMakeLists.txt    | 6 ++++++
 openair2/LAYER2/MAC/extern.h    | 9 +++++----
 openair2/LAYER2/MAC/vars.h      | 5 ++---
 targets/RT/USER/lte-softmodem.c | 8 +++++---
 4 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index e6406129ac..5bb0f3004e 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -567,6 +567,12 @@ add_boolean_option(MESSAGE_CHART_GENERATOR_PHY     False "trace some PHY exchang
 
 add_boolean_option(FLEXRAN_AGENT_SB_IF             False         "enable FlexRAN agent to inteface with a SDN controller")
 
+################################################################
+# NB-IOT
+################################################################
+add_boolean_option(NB_IOT True "Enabling NB-IoT code")
+
+
 ########################
 # Include order
 ##########################
diff --git a/openair2/LAYER2/MAC/extern.h b/openair2/LAYER2/MAC/extern.h
index 0b5bf1b2ee..a863deb2ef 100644
--- a/openair2/LAYER2/MAC/extern.h
+++ b/openair2/LAYER2/MAC/extern.h
@@ -38,7 +38,6 @@
 #endif //USER_MODE
 #include "PHY/defs.h"
 #include "defs.h"
-#include "defs_nb_iot.h"
 #include "COMMON/mac_rrc_primitives.h"
 #ifdef PHY_EMUL
 //#include "SIMULATION/simulation_defs.h"
@@ -46,9 +45,13 @@
 #include "PHY_INTERFACE/defs.h"
 #include "RRC/LITE/defs.h"
 
-//NB-IoT
+#ifdef NB_IOT
+#include "defs_nb_iot.h"
 
+//NB-IoT
 extern IF_Module_t *if_inst;
+extern eNB_MAC_INST_NB *eNB_mac_inst_NB;
+#endif
 
 extern const uint32_t BSR_TABLE[BSR_TABLE_SIZE];
 //extern uint32_t EBSR_Level[63];
@@ -69,8 +72,6 @@ extern UE_MAC_INST *ue_mac_inst;
 extern MAC_RLC_XFACE *Mac_rlc_xface;
 extern uint8_t Is_rrc_registered;
 
-//NB-IoT
-extern eNB_MAC_INST_NB *eNB_mac_inst_NB;
 
 extern eNB_ULSCH_INFO eNB_ulsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][NUMBER_OF_UE_MAX]; // eNBxUE = 8x8
 extern eNB_DLSCH_INFO eNB_dlsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][NUMBER_OF_UE_MAX]; // eNBxUE = 8x8
diff --git a/openair2/LAYER2/MAC/vars.h b/openair2/LAYER2/MAC/vars.h
index 5d9522b363..3ac759355e 100644
--- a/openair2/LAYER2/MAC/vars.h
+++ b/openair2/LAYER2/MAC/vars.h
@@ -41,9 +41,11 @@
 #include "PHY_INTERFACE/defs.h"
 #include "COMMON/mac_rrc_primitives.h"
 
+#ifdef NB_IOT
 //NB-IoT
 eNB_MAC_INST_NB *eNB_mac_inst_NB;
 IF_Module_t *if_inst;
+#endif
 
 const uint32_t BSR_TABLE[BSR_TABLE_SIZE]= {0,10,12,14,17,19,22,26,31,36,42,49,57,67,78,91,
                                            105,125,146,171,200,234,274,321,376,440,515,603,706,826,967,1132,
@@ -103,9 +105,6 @@ MAC_RLC_XFACE *Mac_rlc_xface;
 /// Primary component carrier index of eNB
 int pCC_id[NUMBER_OF_eNB_MAX];
 
-//NB-IoT
-eNB_MAC_INST_NB *eNB_mac_inst_NB;
-
 
 eNB_ULSCH_INFO eNB_ulsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][NUMBER_OF_UE_MAX]; // eNBxUE = 8x8
 eNB_DLSCH_INFO eNB_dlsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][NUMBER_OF_UE_MAX]; // eNBxUE = 8x8
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 8a695056ff..ea8bfa80ff 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -1623,9 +1623,11 @@ int main( int argc, char **argv ) {
         //this is eNB
         PHY_vars_eNB_g = malloc(sizeof(PHY_VARS_eNB**));
         PHY_vars_eNB_g[0] = malloc(sizeof(PHY_VARS_eNB*));
+
+#ifdef NB_IOT
         // do the initialization for the IF Module
         if_inst = malloc(sizeof(IF_Module_t *));
-
+#endif
         for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
             PHY_vars_eNB_g[0][CC_id] = init_lte_eNB(frame_parms[CC_id],0,frame_parms[CC_id]->Nid_cell,node_function[CC_id],abstraction_flag);
             PHY_vars_eNB_g[0][CC_id]->ue_dl_rb_alloc=0x1fff;
@@ -1852,10 +1854,10 @@ int main( int argc, char **argv ) {
             PHY_vars_UE_g[0][CC_id]->rf_map.chain=CC_id+chain_offset;
         }
     } else {
+#ifdef NB_IOT
         printf("Initializing IF Module in PHY layer\n");
-
         IF_Module_init_L1();
-
+#endif
         printf("Initializing eNB threads\n");
         init_eNB(node_function,node_timing,1,eth_params,single_thread_flag,wait_for_sync);
 
-- 
2.26.2