diff --git a/openair1/PHY/LTE_REFSIG/defs_NB_IoT.h b/openair1/PHY/LTE_REFSIG/defs_NB_IoT.h
index 12bf87c5941b27dfaf7f1093b26bb257a49a30cd..20e468fdaf031506fc18203afd02fc3a4eb7922f 100644
--- a/openair1/PHY/LTE_REFSIG/defs_NB_IoT.h
+++ b/openair1/PHY/LTE_REFSIG/defs_NB_IoT.h
@@ -27,7 +27,7 @@
 @param lte_gold_table pointer to table where sequences are stored
 @param Nid_cell Cell Id for NB_IoT (to compute sequences for local and adjacent cells) */
 
-void lte_gold_NB_IoT(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_table[20][2][14],uint16_t Nid_cell);
+void lte_gold_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_table[20][2][14],uint16_t Nid_cell);
 
 /*! \brief This function generates the Narrowband reference signal (NRS) sequence (36-211, Sec 6.10.1.1)
 @param phy_vars_eNB Pointer to eNB variables
diff --git a/openair1/PHY/LTE_REFSIG/lte_gold_NB_IoT.c b/openair1/PHY/LTE_REFSIG/lte_gold_NB_IoT.c
index e66a4884f8da1740f24ebbbe755d198d303d6166..cccd0d3f1701f2397926a09c44174395d53c1c9e 100644
--- a/openair1/PHY/LTE_REFSIG/lte_gold_NB_IoT.c
+++ b/openair1/PHY/LTE_REFSIG/lte_gold_NB_IoT.c
@@ -15,7 +15,7 @@
 #include "defs.h"
 #include "defs_NB_IoT.h"
 
-void lte_gold_NB_IoT(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_table_NB_IoT[20][2][14],uint16_t Nid_cell)  //  Nid_cell = Nid_cell_NB_IoT
+void lte_gold_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_table_NB_IoT[20][2][14],uint16_t Nid_cell)  //  Nid_cell = Nid_cell_NB_IoT
 {
   unsigned char ns,l,Ncp=1;
   unsigned int n,x1,x2;
diff --git a/openair1/PHY/LTE_TRANSPORT/npbch_NB_IoT.c b/openair1/PHY/LTE_TRANSPORT/npbch_NB_IoT.c
index a226942ca4fa063ab4d38adc5069dfa67a3c10cf..a30ee2e4607bd7686a421504365a5200a1ff9ac0 100644
--- a/openair1/PHY/LTE_TRANSPORT/npbch_NB_IoT.c
+++ b/openair1/PHY/LTE_TRANSPORT/npbch_NB_IoT.c
@@ -34,7 +34,7 @@
 
 #define NPBCH_A 34                             // 34 for NB-IoT and 24 for LTE
 
-int allocate_npbch_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
+int allocate_npbch_REs_in_RB(NB_IoT_DL_FRAME_PARMS *frame_parms,
                             int32_t **txdataF,
                             uint32_t *jj,
                             uint32_t symbol_offset,
@@ -120,7 +120,7 @@ int allocate_npbch_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
 int generate_npbch(NB_IoT_eNB_NPBCH_t *eNB_npbch,
                   int32_t **txdataF,
                   int amp,
-                  LTE_DL_FRAME_PARMS *frame_parms,
+                  NB_IoT_DL_FRAME_PARMS *frame_parms,
                   uint8_t *npbch_pdu,
                   uint8_t frame_mod64,
 				  unsigned short NB_IoT_RB_ID)
@@ -216,7 +216,7 @@ return(0);
 }
 /**********************************************************
 **********************************************************/
-void npbch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
+void npbch_scrambling(NB_IoT_DL_FRAME_PARMS *frame_parms,
                      uint8_t *npbch_e,
                      uint32_t length)  // 1600
 {
diff --git a/openair1/PHY/LTE_TRANSPORT/npss_NB_IoT.c b/openair1/PHY/LTE_TRANSPORT/npss_NB_IoT.c
index 74fb36136190024c241caa7df367cfc5027d929b..e21fafe9f388ba57aa7bf1bd6c6c2d7b7cf228c0 100644
--- a/openair1/PHY/LTE_TRANSPORT/npss_NB_IoT.c
+++ b/openair1/PHY/LTE_TRANSPORT/npss_NB_IoT.c
@@ -19,7 +19,7 @@
 
 int generate_npss_NB_IoT(int32_t **txdataF,
 						short amp,
-						LTE_DL_FRAME_PARMS *frame_parms,
+						NB_IoT_DL_FRAME_PARMS *frame_parms,
 						unsigned short symbol_offset,				// symbol_offset should equal to 3 for NB-IoT 
 						unsigned short slot_offset,
 						unsigned short RB_IoT_ID)					// new attribute (values are between 0.. Max_RB_number-1), it does not exist for LTE
diff --git a/openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.c b/openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.c
index 534ac7b6b0309c963e60dfbfbd94546cc90d6bbc..5505bdb8f1be30ce9669fdea41f249b9db7b11b8 100644
--- a/openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.c
+++ b/openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.c
@@ -21,7 +21,7 @@
 
 int generate_sss_NB_IoT(int32_t **txdataF,
 						int16_t amp,
-						LTE_DL_FRAME_PARMS *frame_parms, 
+						NB_IoT_DL_FRAME_PARMS *frame_parms, 
 						uint16_t symbol_offset, 				// symbol_offset = 3 for NB-IoT 
 						uint16_t slot_offset, 
 						unsigned short frame_number, 			// new attribute (Get value from higher layer), it does not exist for LTE
diff --git a/openair1/PHY/LTE_TRANSPORT/pilots_NB_IoT.c b/openair1/PHY/LTE_TRANSPORT/pilots_NB_IoT.c
index d843a615dae663d17f9a0602fda30c8940cf7f38..84ef719989b80a63b5cb6060a040a3e08d7b7fa3 100644
--- a/openair1/PHY/LTE_TRANSPORT/pilots_NB_IoT.c
+++ b/openair1/PHY/LTE_TRANSPORT/pilots_NB_IoT.c
@@ -24,7 +24,7 @@ void generate_pilots_NB_IoT(PHY_VARS_eNB *phy_vars_eNB,
 					 unsigned short With_NSSS) 		// With_NSSS = 1; if the frame include a sub-Frame with NSSS signal
 {
 
-  LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->frame_parms;
+  NB_IoT_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->frame_parms;
 
   uint32_t tti,tti_offset,slot_offset,Nsymb,samples_per_symbol;
   uint8_t first_pilot,second_pilot;
diff --git a/openair1/PHY/LTE_TRANSPORT/proto_nb_iot.h b/openair1/PHY/LTE_TRANSPORT/proto_nb_iot.h
index 5f9c19d270259617676acc98ec0094d0a9841d06..f292d39ded6f4745d75ee2298a761806a06557b4 100644
--- a/openair1/PHY/LTE_TRANSPORT/proto_nb_iot.h
+++ b/openair1/PHY/LTE_TRANSPORT/proto_nb_iot.h
@@ -38,7 +38,7 @@
 
 int generate_npss_NB_IoT(int32_t **txdataF,
                          short amp,
-                         LTE_DL_FRAME_PARMS *frame_parms,
+                         NB_IoT_DL_FRAME_PARMS *frame_parms,
                          unsigned short symbol_offset,          // symbol_offset should equal to 3 for NB-IoT 
                          unsigned short slot_offset,
                          unsigned short RB_IoT_ID);             // new attribute (values are between 0.. Max_RB_number-1), it does not exist for LTE
@@ -47,7 +47,7 @@ int generate_npss_NB_IoT(int32_t **txdataF,
 
 int generate_sss_NB_IoT(int32_t **txdataF,
                         int16_t amp,
-                        LTE_DL_FRAME_PARMS *frame_parms, 
+                        NB_IoT_DL_FRAME_PARMS *frame_parms, 
                         uint16_t symbol_offset,             // symbol_offset = 3 for NB-IoT 
                         uint16_t slot_offset, 
                         unsigned short frame_number,        // new attribute (Get value from higher layer), it does not exist for LTE
@@ -65,7 +65,7 @@ void generate_pilots_NB_IoT(PHY_VARS_eNB *phy_vars_eNB,
 
 //NPBCH
 
-int allocate_npbch_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
+int allocate_npbch_REs_in_RB(NB_IoT_DL_FRAME_PARMS *frame_parms,
                              int32_t **txdataF,
                              uint32_t *jj,
                              uint32_t symbol_offset,
@@ -78,12 +78,12 @@ int allocate_npbch_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms,
 int generate_npbch(NB_IoT_eNB_NPBCH_t *eNB_npbch,
                    int32_t **txdataF,
                    int amp,
-                   LTE_DL_FRAME_PARMS *frame_parms,
+                   NB_IoT_DL_FRAME_PARMS *frame_parms,
                    uint8_t *npbch_pdu,
                    uint8_t frame_mod64,
                    unsigned short NB_IoT_RB_ID);
 
-void npbch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
+void npbch_scrambling(NB_IoT_DL_FRAME_PARMS *frame_parms,
                       uint8_t *npbch_e,
                       uint32_t length);
 
diff --git a/openair1/PHY/impl_defs_lte_nb_iot.h b/openair1/PHY/impl_defs_lte_nb_iot.h
index 79063e6ca620c8b6815f88e438c25e71efe34083..c66359ef66bf755ee1d4fc9633feef4cacbc4e79 100644
--- a/openair1/PHY/impl_defs_lte_nb_iot.h
+++ b/openair1/PHY/impl_defs_lte_nb_iot.h
@@ -154,7 +154,8 @@ typedef struct {
 
 typedef struct {
 
-
+  /// Frame type (0 FDD, 1 TDD)
+  lte_frame_type_t frame_type;
   /// Number of resource blocks (RB) in DL of the LTE (for knowing the bandwidth)
   uint8_t N_RB_DL;
   /// Number of resource blocks (RB) in UL of the LTE ((for knowing the bandwidth)
diff --git a/openair1/SCHED/phy_procedures_lte_eNb_nb_iot.c b/openair1/SCHED/phy_procedures_lte_eNb_nb_iot.c
index 357e622428ac497934fe2682b62bf138dce3e556..9336372d3a5952a209b2fc08d75355b40562742e 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb_nb_iot.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb_nb_iot.c
@@ -105,7 +105,7 @@ extern int rx_sig_fifo;
 */
 void NB_common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) 
 {
-  LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
+  NB_IoT_DL_FRAME_PARMS *fp=&eNB->frame_parms;
   int **txdataF = eNB->common_vars.txdataF[0];
   int subframe = proc->subframe_tx;
   int frame = proc->frame_tx;
@@ -168,7 +168,7 @@ void NB_phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,UL_
   int sync_pos;
   uint16_t rnti=0;
   uint8_t access_mode;
-  LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
+  NB_IoT_DL_FRAME_PARMS *fp=&eNB->frame_parms;
 
   const int subframe = proc->subframe_rx;
   const int frame    = proc->frame_rx;
diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg_nb_iot.c b/openair2/RRC/LITE/MESSAGES/asn1_msg_nb_iot.c
index f847870d429800c5bba842b98a09544a2780a19d..c96a3a016f6e74983582325de9fc1cb89a1edbd6 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg_nb_iot.c
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg_nb_iot.c
@@ -1259,7 +1259,7 @@ uint8_t do_RRCConnectionReestablishment_NB(
 		uint8_t Mod_id,
 		uint8_t* const buffer,
 		const uint8_t     Transaction_id,
-		const LTE_DL_FRAME_PARMS* const frame_parms, //to be changed
+		const NB_IoT_DL_FRAME_PARMS* const frame_parms, //to be changed
 		SRB_ToAddModList_NB_r13_t*      SRB_list_NB) //should contain SRB1 already configured?
 {
 
diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg_nb_iot.h b/openair2/RRC/LITE/MESSAGES/asn1_msg_nb_iot.h
index 501be75944bb3c05b8b84f90328cab06950ab325..eef0b9a52173bcd640dcd81fbed22f7c05efe23a 100644
--- a/openair2/RRC/LITE/MESSAGES/asn1_msg_nb_iot.h
+++ b/openair2/RRC/LITE/MESSAGES/asn1_msg_nb_iot.h
@@ -155,7 +155,7 @@ do_RRCConnectionSetup_NB(
   int                              CC_id,
   uint8_t*                   const buffer, //carrier[CC_id].Srb0.Tx_buffer.Payload
   const uint8_t                    Transaction_id,
-  const LTE_DL_FRAME_PARMS* const frame_parms, //to be changed but not deleted
+  const NB_IoT_DL_FRAME_PARMS* const frame_parms, //to be changed but not deleted
   SRB_ToAddModList_NB_r13_t**             SRB_configList_NB, //in order to be configured--> stanno puntando alla SRB_configlist dell ue_context
   struct PhysicalConfigDedicated_NB_r13** physicalConfigDedicated_NB //in order to be configured--> stanno puntando alla physicalConfigDedicated dell ue_context
 );
@@ -279,7 +279,7 @@ uint8_t do_RRCConnectionReestablishment_NB(
 		uint8_t Mod_id,
 		uint8_t* const buffer,
 		const uint8_t     Transaction_id,
-		const LTE_DL_FRAME_PARMS* const frame_parms, //to be changed
+		const NB_IoT_DL_FRAME_PARMS* const frame_parms, //to be changed
 		SRB_ToAddModList_NB_r13_t**             SRB_configList_NB
 		 );