diff --git a/openair1/PHY/INIT/lte_init.c b/openair1/PHY/INIT/lte_init.c index 127a11d322b7a9e240ccb3214b9d8bc301a773f8..6cf72d8eed1925da1166b0d276660cc917046a27 100755 --- a/openair1/PHY/INIT/lte_init.c +++ b/openair1/PHY/INIT/lte_init.c @@ -34,7 +34,8 @@ #include "common/utils/LOG/vcd_signal_dumper.h" #include "assertions.h" #include <math.h> - +//NB-IoT +#include "openair2/ENB_APP/NB_IoT_config.c" extern uint32_t from_earfcn(int eutra_bandP,uint32_t dl_earfcn); extern int32_t get_uldl_offset(int eutra_bandP); @@ -96,7 +97,7 @@ l1_north_init_NB_IoT() LOG_I(PHY,"RC.L1_NB_IoT = %p\n",RC.L1_NB_IoT); for (j=0; j<NbIoT_L1_ParamList.numelt; j++) { - AssertFatal(RC.L1_NB_IoT[j]!=NULL,"RC.eNB_NB_IoT[%d] is null\n",i); + AssertFatal(RC.L1_NB_IoT[j]!=NULL,"RC.eNB_NB_IoT[%d] is null\n",j); LOG_I(PHY,"RC.L1_NB_IoT = %p\n",RC.L1_NB_IoT); diff --git a/openair1/PHY/INIT/lte_init_NB_IoT.c b/openair1/PHY/INIT/lte_init_NB_IoT.c index cffba8de29dfe18add125d3e033175a5415fe80b..34bdf9cde4119570279888fd08cc155e46369f5f 100644 --- a/openair1/PHY/INIT/lte_init_NB_IoT.c +++ b/openair1/PHY/INIT/lte_init_NB_IoT.c @@ -428,41 +428,43 @@ void phy_config_dedicated_eNB_NB_IoT(uint8_t Mod_id, } -// void phy_init_lte_top_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms) -// { +void phy_init_lte_top_NB_IoT(NB_IoT_DL_FRAME_PARMS *frame_parms) +{ -// // crcTableInit(); + crcTableInit_NB_IoT(); -// // ccodedot11_init(); -// // ccodedot11_init_inv(); + //ccodedot11_init(); + //ccodedot11_init_inv(); + ccodelte_init_NB_IoT(); + ccodelte_init2_NB_IoT(); + //ccodelte_init_inv(); -// // ccodelte_init(); -// // ccodelte_init_inv(); + //treillis_table_init(); -// // treillis_table_init(); + //phy_generate_viterbi_tables(); + //phy_generate_viterbi_tables_lte(); -// // phy_generate_viterbi_tables(); -// // phy_generate_viterbi_tables_lte(); + //init_td8(); + // init_td16(); +#ifdef __AVX2__ + // init_td16avx2(); +#endif -// // init_td8(); -// // init_td16(); -// // #ifdef __AVX2__ -// // init_td16avx2(); -// // #endif + //lte_sync_time_init_NB_IoT(frame_parms); -// // lte_sync_time_init(frame_parms); + //generate_ul_ref_sigs(); + //generate_ul_ref_sigs_rx(); + generate_ul_ref_sigs_rx_NB_IoT(); -// // generate_ul_ref_sigs(); -// generate_ul_ref_sigs_rx_NB_IoT(); + // generate_64qam_table(); + //generate_16qam_table(); + // generate_RIV_tables(); -// // generate_64qam_table(); -// // generate_16qam_table(); -// // generate_RIV_tables(); + init_unscrambling_lut_NB_IoT(); + // init_scrambling_lut(); -// // init_unscrambling_lut(); -// // init_scrambling_lut(); -// // //set_taus_seed(1328); + //set_taus_seed(1328); -// } +} diff --git a/openair1/PHY/INIT/phy_init.h b/openair1/PHY/INIT/phy_init.h index bdf4ef7f4365456ca3b8f06d4fb713d033e90e6c..bde918ee934ddc749abb033f9c6d899750ea5da7 100644 --- a/openair1/PHY/INIT/phy_init.h +++ b/openair1/PHY/INIT/phy_init.h @@ -24,8 +24,8 @@ #include "PHY/defs_eNB.h" #include "PHY/defs_UE.h" - - +#include "PHY/defs_NB_IoT.h" +#include "PHY/impl_defs_lte_NB_IoT.h" #include "LTE_SystemInformationBlockType2.h" //#include "RadioResourceConfigCommonSIB.h" #include "LTE_RadioResourceConfigDedicated.h" diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c index c8f20a4ac77ad8ff429918d1c037846396da8660..d9774cc66b099628b84ab41dc92ec57ba1489faf 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c @@ -484,15 +484,15 @@ void *te_thread(void *param) { return(NULL); } - /*if(opp_enabled == 1 && te_wakeup_stats0->p_time>50*3000){ + if(opp_enabled == 1 && te_wakeup_stats0->p_time>50*3000){ print_meas_now(te_wakeup_stats0,"coding_wakeup",stderr); printf("te_thread0 delay for waking up in frame_rx: %d subframe_rx: %d \n",proc->frame_rx,proc->subframe_rx); - }*/ + } } return(NULL); } - +*/ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, diff --git a/openair1/PHY/LTE_TRANSPORT/pbch.c b/openair1/PHY/LTE_TRANSPORT/pbch.c index 9bd256ee0bc22e7ee1d8be1c36cdab60ac323fa8..c09014eb3b17c5d3872c163070fbf4d3e6bcd780 100644 --- a/openair1/PHY/LTE_TRANSPORT/pbch.c +++ b/openair1/PHY/LTE_TRANSPORT/pbch.c @@ -47,9 +47,6 @@ //#define DEBUG_PBCH_ENCODING //#define INTERFERENCE_MITIGATION 1 - -#include "PHY/LTE_REFSIG/defs.h" - #define PBCH_A 24 int allocate_pbch_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms, diff --git a/openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h b/openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h index a1459e78050f307201f3eba028062d3c03f3e73f..471b2df4e0609d2b7e788ff0bbeabcdc248f1d7f 100644 --- a/openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h +++ b/openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h @@ -35,6 +35,7 @@ #include "PHY/LTE_TRANSPORT/transport_common_proto.h" #include <math.h> #include "nfapi_interface.h" +#include "PHY/defs_NB_IoT.h" // Functions below implement 36-211 and 36-212 @@ -43,25 +44,6 @@ */ -/** \fn free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch,unsigned char N_RB_DL) - \brief This function frees memory allocated for a particular DLSCH at eNB - @param dlsch Pointer to DLSCH to be removed -*/ -void free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch); - -void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch); - -/** \fn new_eNB_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t abstraction_flag, LTE_DL_FRAME_PARMS* frame_parms) - \brief This function allocates structures for a particular DLSCH at eNB - @returns Pointer to DLSCH to be removed - @param Kmimo Kmimo factor from 36-212/36-213 - @param Mdlharq Maximum number of HARQ rounds (36-212/36-213) - @param Nsoft Soft-LLR buffer size from UE-Category - @params N_RB_DL total number of resource blocks (determine the operating BW) - @param abstraction_flag Flag to indicate abstracted interface - @param frame_parms Pointer to frame descriptor structure -*/ -LTE_eNB_DLSCH_t *new_eNB_dlsch(uint8_t Kmimo,uint8_t Mdlharq,uint32_t Nsoft,uint8_t N_RB_DL, uint8_t abstraction_flag, LTE_DL_FRAME_PARMS* frame_parms); @@ -90,40 +72,7 @@ void free_ue_ulsch(LTE_UE_ULSCH_t *ulsch); LTE_UE_ULSCH_t *new_ue_ulsch(unsigned char N_RB_UL, uint8_t abstraction_flag); -/** \fn dlsch_encoding(PHY_VARS_eNB *eNB, - uint8_t *input_buffer, - LTE_DL_FRAME_PARMS *frame_parms, - uint8_t num_pdcch_symbols, - LTE_eNB_DLSCH_t *dlsch, - int frame, - uint8_t subframe) - \brief This function performs a subset of the bit-coding functions for LTE as described in 36-212, Release 8.Support is limited to turbo-coded channels (DLSCH/ULSCH). The implemented functions are: - - CRC computation and addition - - Code block segmentation and sub-block CRC addition - - Channel coding (Turbo coding) - - Rate matching (sub-block interleaving, bit collection, selection and transmission - - Code block concatenation - @param eNB Pointer to eNB PHY context - @param input_buffer Pointer to input buffer for sub-frame - @param frame_parms Pointer to frame descriptor structure - @param num_pdcch_symbols Number of PDCCH symbols in this subframe - @param dlsch Pointer to dlsch to be encoded - @param frame Frame number - @param subframe Subframe number - @param rm_stats Time statistics for rate-matching - @param te_stats Time statistics for turbo-encoding - @param i_stats Time statistics for interleaving - @returns status -*/ -int32_t dlsch_encoding(PHY_VARS_eNB *eNB, - uint8_t *a, - uint8_t num_pdcch_symbols, - LTE_eNB_DLSCH_t *dlsch, - int frame, - uint8_t subframe, - time_stats_t *rm_stats, - time_stats_t *te_stats, - time_stats_t *i_stats); + int32_t dlsch_encoding_SIC(PHY_VARS_UE *ue, uint8_t *a, @@ -137,194 +86,11 @@ int32_t dlsch_encoding_SIC(PHY_VARS_UE *ue, -/** \fn dlsch_encoding_2threads(PHY_VARS_eNB *eNB, - uint8_t *input_buffer, - uint8_t num_pdcch_symbols, - LTE_eNB_DLSCH_t *dlsch, - int frame, - uint8_t subframe) - \brief This function performs a subset of the bit-coding functions for LTE as described in 36-212, Release 8.Support is limited to turbo-coded channels (DLSCH/ULSCH). This version spawns 1 worker thread. The implemented functions are: - - CRC computation and addition - - Code block segmentation and sub-block CRC addition - - Channel coding (Turbo coding) - - Rate matching (sub-block interleaving, bit collection, selection and transmission - - Code block concatenation - @param eNB Pointer to eNB PHY context - @param input_buffer Pointer to input buffer for sub-frame - @param num_pdcch_symbols Number of PDCCH symbols in this subframe - @param dlsch Pointer to dlsch to be encoded - @param frame Frame number - @param subframe Subframe number - @param rm_stats Time statistics for rate-matching - @param te_stats Time statistics for turbo-encoding - @param i_stats Time statistics for interleaving - @returns status -*/ -int32_t dlsch_encoding_2threads(PHY_VARS_eNB *eNB, - uint8_t *a, - uint8_t num_pdcch_symbols, - LTE_eNB_DLSCH_t *dlsch, - int frame, - uint8_t subframe, - time_stats_t *rm_stats, - time_stats_t *te_stats, - time_stats_t *i_stats); void dlsch_encoding_emul(PHY_VARS_eNB *phy_vars_eNB, uint8_t *DLSCH_pdu, LTE_eNB_DLSCH_t *dlsch); - -// Functions below implement 36-211 - -/** \fn allocate_REs_in_RB(int32_t **txdataF, - uint32_t *jj, - uint32_t *jj2, - uint16_t re_offset, - uint32_t symbol_offset, - LTE_DL_eNB_HARQ_t *dlsch0_harq, - LTE_DL_eNB_HARQ_t *dlsch1_harq, - uint8_t pilots, - int16_t amp, - int16_t *qam_table_s, - uint32_t *re_allocated, - uint8_t skip_dc, - uint8_t skip_half, - uint8_t use2ndpilots, - LTE_DL_FRAME_PARMS *frame_parms); - - \brief Fills RB with data - \param txdataF pointer to output data (frequency domain signal) - \param jj index to output (from CW 1) - \param jj2 index to output (from CW 2) - \param re_offset index of the first RE of the RB - \param symbol_offset index to the OFDM symbol - \param dlsch0_harq Pointer to Transport block 0 HARQ structure - \param dlsch0_harq Pointer to Transport block 1 HARQ structure - \param pilots =1 if symbol_offset is an OFDM symbol that contains pilots, 0 otherwise - \param amp Amplitude for symbols - \param qam_table_s0 pointer to scaled QAM table for Transport Block 0 (by rho_a or rho_b) - \param qam_table_s1 pointer to scaled QAM table for Transport Block 1 (by rho_a or rho_b) - \param re_allocated pointer to allocation counter - \param skip_dc offset for positive RBs - \param skip_half indicate that first or second half of RB must be skipped for PBCH/PSS/SSS - \param ue_spec_rs UE specific RS indicator - \param nb_antennas_tx_phy Physical antenna elements which can be different with antenna port number, especially in beamforming case - \param use2ndpilots Set to use the pilots from antenna port 1 for PDSCH - \param frame_parms Frame parameter descriptor -*/ - -// Functions below implement 36-211 - -/** \fn allocate_REs_in_RB(int32_t **txdataF, - uint32_t *jj, - uint32_t *jj2, - uint16_t re_offset, - uint32_t symbol_offset, - LTE_DL_eNB_HARQ_t *dlsch0_harq, - LTE_DL_eNB_HARQ_t *dlsch1_harq, - uint8_t pilots, - int16_t amp, - int16_t *qam_table_s, - uint32_t *re_allocated, - uint8_t skip_dc, - uint8_t skip_half, - uint8_t use2ndpilots, - LTE_DL_FRAME_PARMS *frame_parms); - - \brief Fills RB with data - \param txdataF pointer to output data (frequency domain signal) - \param jj index to output (from CW 1) - \param jj index to output (from CW 2) - \param re_offset index of the first RE of the RB - \param symbol_offset index to the OFDM symbol - \param dlsch0_harq Pointer to Transport block 0 HARQ structure - \param dlsch0_harq Pointer to Transport block 1 HARQ structure - \param pilots =1 if symbol_offset is an OFDM symbol that contains pilots, 0 otherwise - \param amp Amplitude for symbols - \param qam_table_s0 pointer to scaled QAM table for Transport Block 0 (by rho_a or rho_b) - \param qam_table_s1 pointer to scaled QAM table for Transport Block 1 (by rho_a or rho_b) - \param re_allocated pointer to allocation counter - \param skip_dc offset for positive RBs - \param skip_half indicate that first or second half of RB must be skipped for PBCH/PSS/SSS - \param use2ndpilots Set to use the pilots from antenna port 1 for PDSCH - \param frame_parms Frame parameter descriptor -*/ - -int32_t allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB, - int32_t **txdataF, - uint32_t *jj, - uint32_t *jj2, - uint16_t re_offset, - uint32_t symbol_offset, - LTE_DL_eNB_HARQ_t *dlsch0_harq, - LTE_DL_eNB_HARQ_t *dlsch1_harq, - uint8_t pilots, - int16_t amp, - uint8_t precoder_index, - int16_t *qam_table_s0, - int16_t *qam_table_s1, - uint32_t *re_allocated, - uint8_t skip_dc, - uint8_t skip_half, - uint8_t lprime, - uint8_t mprime, - uint8_t Ns, - int *P1_SHIFT, - int *P2_SHIFT); - -/** \fn int32_t dlsch_modulation(int32_t **txdataF, - int16_t amp, - uint32_t sub_frame_offset, - LTE_DL_FRAME_PARMS *frame_parms, - uint8_t num_pdcch_symbols, - LTE_eNB_DLSCH_t *dlsch); - - \brief This function is the top-level routine for generation of the sub-frame signal (frequency-domain) for DLSCH. - @param txdataF Table of pointers for frequency-domain TX signals - @param amp Amplitude of signal - @param sub_frame_offset Offset of this subframe in units of subframes (usually 0) - @param frame_parms Pointer to frame descriptor - @param num_pdcch_symbols Number of PDCCH symbols in this subframe - @param dlsch0 Pointer to Transport Block 0 DLSCH descriptor for this allocation - @param dlsch1 Pointer to Transport Block 0 DLSCH descriptor for this allocation -*/ -int32_t dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB, - int32_t **txdataF, - int16_t amp, - uint32_t sub_frame_offset, - uint8_t num_pdcch_symbols, - LTE_eNB_DLSCH_t *dlsch0, - LTE_eNB_DLSCH_t *dlsch1); - -int32_t dlsch_modulation_SIC(int32_t **sic_buffer, - uint32_t sub_frame_offset, - LTE_DL_FRAME_PARMS *frame_parms, - uint8_t num_pdcch_symbols, - LTE_eNB_DLSCH_t *dlsch0, - int G); -/* - \brief This function is the top-level routine for generation of the sub-frame signal (frequency-domain) for MCH. - @param txdataF Table of pointers for frequency-domain TX signals - @param amp Amplitude of signal - @param subframe_offset Offset of this subframe in units of subframes (usually 0) - @param frame_parms Pointer to frame descriptor - @param dlsch Pointer to DLSCH descriptor for this allocation -*/ -int mch_modulation(int32_t **txdataF, - int16_t amp, - uint32_t subframe_offset, - LTE_DL_FRAME_PARMS *frame_parms, - LTE_eNB_DLSCH_t *dlsch); - -/** \brief Top-level generation function for eNB TX of MBSFN - @param phy_vars_eNB Pointer to eNB variables - @param a Pointer to transport block - @param abstraction_flag - -*/ -void generate_mch(PHY_VARS_eNB *phy_vars_eNB,eNB_rxtx_proc_t *proc,uint8_t *a); - /** \brief This function generates the frequency-domain pilots (cell-specific downlink reference signals) @param phy_vars_eNB Pointer to eNB variables @param proc Pointer to RXn-TXnp4 proc information @@ -400,7 +166,7 @@ int32_t generate_pilots_slot(PHY_VARS_eNB *phy_vars_eNB, int first_pilot_only); int32_t generate_mbsfn_pilot(PHY_VARS_eNB *phy_vars_eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, int32_t **txdataF, int16_t amp); diff --git a/openair1/PHY/LTE_TRANSPORT/dci_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/dci_NB_IoT.h similarity index 100% rename from openair1/PHY/LTE_TRANSPORT/dci_NB_IoT.h rename to openair1/PHY/NBIoT_TRANSPORT/dci_NB_IoT.h diff --git a/openair1/PHY/LTE_TRANSPORT/defs_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/defs_NB_IoT.h similarity index 99% rename from openair1/PHY/LTE_TRANSPORT/defs_NB_IoT.h rename to openair1/PHY/NBIoT_TRANSPORT/defs_NB_IoT.h index cf23c70f8850d545f18baad35b8c2bf8585a52aa..ed34aa53f3de5480dc4d53f467ac56667871d413 100644 --- a/openair1/PHY/LTE_TRANSPORT/defs_NB_IoT.h +++ b/openair1/PHY/NBIoT_TRANSPORT/defs_NB_IoT.h @@ -15,11 +15,11 @@ #define __LTE_TRANSPORT_DEFS_NB_IOT__H__ ////#include "PHY/defs.h" //#include "PHY/defs_nb_iot.h" -#include "PHY/LTE_TRANSPORT/dci_NB_IoT.h" +#include "PHY/NBIoT_TRANSPORT/dci_NB_IoT.h" #include "PHY/impl_defs_lte_NB_IoT.h" #include "openair2/COMMON/platform_types.h" //#include "dci.h" -#include "PHY/LTE_TRANSPORT/uci_NB_IoT.h" +#include "PHY/NBIoT_TRANSPORT/uci_NB_IoT.h" //#include "dci.h" //#include "uci.h" //#ifndef STANDALONE_COMPILE diff --git a/openair1/PHY/NBIoT_TRANSPORT/dlsch_coding_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/dlsch_coding_NB_IoT.c index 44bfae3cf5d18b2aae380d13e43e50fb9a527b90..00047e7e9cca5efd24798654210181c7c88e605d 100644 --- a/openair1/PHY/NBIoT_TRANSPORT/dlsch_coding_NB_IoT.c +++ b/openair1/PHY/NBIoT_TRANSPORT/dlsch_coding_NB_IoT.c @@ -32,13 +32,14 @@ #include <string.h> //#include "PHY/impl_defs_lte.h" //#include "openair2/COMMON/openair_defs.h" -#include "PHY/defs.h" +#include "PHY/defs_eNB.h" +#include "PHY/defs_UE.h" //#include "PHY/extern_NB_IoT.h" #include "PHY/CODING/defs_NB_IoT.h" //#include "PHY/CODING/extern.h" //#include "PHY/CODING/lte_interleaver_inline.h" -#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h" -#include "PHY/LTE_TRANSPORT/proto.h" +#include "PHY/NBIoT_TRANSPORT/defs_NB_IoT.h" +#include "PHY/LTE_TRANSPORT/transport_proto.h" //#include "SCHED/defs_NB_IoT.h" //#include "defs_nb_iot.h" //#include "UTIL/LOG/vcd_signal_dumper.h" diff --git a/openair1/PHY/NBIoT_TRANSPORT/npss_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/npss_NB_IoT.c index 484b84e9ef8d351d3752488c5dfadd41edc27357..98a5c3097c40916f4d21ce48186fac1e69ad8b28 100644 --- a/openair1/PHY/NBIoT_TRANSPORT/npss_NB_IoT.c +++ b/openair1/PHY/NBIoT_TRANSPORT/npss_NB_IoT.c @@ -28,9 +28,10 @@ * \warning */ -#include "PHY/defs.h" +#include "PHY/defs_eNB.h" +#include "PHY/defs_UE.h" ///////////////#include "PHY/defs_nb_iot.h" -#include "PHY/extern.h" +#include "PHY/phy_extern.h" #include <math.h> //#include "PHY/impl_defs_lte_NB_IoT.h" //#include "PHY/impl_defs_top_NB_IoT.h" diff --git a/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.c index d4f0ece9fd3b530e5a294f9ceaa9bce15676fd7e..53e5dddb85727dfa37a26e1e7b68159f975fc1bb 100644 --- a/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.c +++ b/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.c @@ -30,11 +30,12 @@ */ //#include <math.h> -#include "PHY/defs.h" +#include "PHY/defs_eNB.h" +#include "PHY/defs_UE.h" //#include "PHY/defs_NB_IoT.h" // not can be replaced by impl_defs_lte_NB_IoT & impl_defs_top_NB_IoT if "msg" function is not used //#include "defs.h" //#include "PHY/extern_NB_IoT.h" -#include "PHY/extern.h" +#include "PHY/phy_extern.h" //#include "PHY/impl_defs_lte_NB_IoT.h" //#include "PHY/impl_defs_top_NB_IoT.h" #include "nsss_NB_IoT.h" diff --git a/openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.h similarity index 100% rename from openair1/PHY/LTE_TRANSPORT/nsss_NB_IoT.h rename to openair1/PHY/NBIoT_TRANSPORT/nsss_NB_IoT.h diff --git a/openair1/PHY/LTE_TRANSPORT/nsss_gen_NB_IoT.m b/openair1/PHY/NBIoT_TRANSPORT/nsss_gen_NB_IoT.m similarity index 100% rename from openair1/PHY/LTE_TRANSPORT/nsss_gen_NB_IoT.m rename to openair1/PHY/NBIoT_TRANSPORT/nsss_gen_NB_IoT.m diff --git a/openair1/PHY/NBIoT_TRANSPORT/pilots_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/pilots_NB_IoT.c index c1972b2295deee572559dfceca70e15f26a60820..e477260c4300606b966a6d6c77e91efa264d5fbe 100644 --- a/openair1/PHY/NBIoT_TRANSPORT/pilots_NB_IoT.c +++ b/openair1/PHY/NBIoT_TRANSPORT/pilots_NB_IoT.c @@ -12,7 +12,8 @@ * \warning */ -#include "PHY/defs.h" +#include "PHY/defs_eNB.h" +#include "PHY/defs_UE.h" #include "PHY/defs_NB_IoT.h" #include "PHY/LTE_REFSIG/defs_NB_IoT.h" diff --git a/openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/proto_NB_IoT.h similarity index 100% rename from openair1/PHY/LTE_TRANSPORT/proto_NB_IoT.h rename to openair1/PHY/NBIoT_TRANSPORT/proto_NB_IoT.h diff --git a/openair1/PHY/LTE_TRANSPORT/sc_rotation_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/sc_rotation_NB_IoT.h similarity index 100% rename from openair1/PHY/LTE_TRANSPORT/sc_rotation_NB_IoT.h rename to openair1/PHY/NBIoT_TRANSPORT/sc_rotation_NB_IoT.h diff --git a/openair1/PHY/LTE_TRANSPORT/tables_nprach_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/tables_nprach_NB_IoT.h similarity index 100% rename from openair1/PHY/LTE_TRANSPORT/tables_nprach_NB_IoT.h rename to openair1/PHY/NBIoT_TRANSPORT/tables_nprach_NB_IoT.h diff --git a/openair1/PHY/LTE_TRANSPORT/uci_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/uci_NB_IoT.h similarity index 100% rename from openair1/PHY/LTE_TRANSPORT/uci_NB_IoT.h rename to openair1/PHY/NBIoT_TRANSPORT/uci_NB_IoT.h diff --git a/openair1/PHY/NBIoT_TRANSPORT/ulsch_demodulation_NB_IoT.c b/openair1/PHY/NBIoT_TRANSPORT/ulsch_demodulation_NB_IoT.c index 839f2d722bf2ed9d7c0ada437e3244b2a3d5f498..137b0877d3fbaf29d6f68a0766c04634135bf9c7 100644 --- a/openair1/PHY/NBIoT_TRANSPORT/ulsch_demodulation_NB_IoT.c +++ b/openair1/PHY/NBIoT_TRANSPORT/ulsch_demodulation_NB_IoT.c @@ -1506,7 +1506,7 @@ void descrambling_NPUSCH_ack_NB_IoT(LTE_DL_FRAME_PARMS *fp, ////////////////////////////////////////////////////////////////////////////////////////// uint32_t turbo_decoding_NB_IoT(PHY_VARS_eNB *eNB, NB_IoT_eNB_NULSCH_t *ulsch_NB_IoT, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_NB_IoT_t *proc, uint8_t npusch_format, unsigned int G, uint8_t rvdx, @@ -1687,7 +1687,7 @@ void deinterleaving_NPUSCH_data_NB_IoT(NB_IoT_UL_eNB_HARQ_t *ulsch_harq, int16_t void decode_NPUSCH_msg_NB_IoT(PHY_VARS_eNB *eNB, LTE_DL_FRAME_PARMS *fp, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, uint8_t npusch_format, uint16_t N_SF_per_word, uint16_t Nsc_RU, @@ -1852,7 +1852,7 @@ void decode_NPUSCH_msg_NB_IoT(PHY_VARS_eNB *eNB, uint8_t rx_ulsch_Gen_NB_IoT(PHY_VARS_eNB *eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, uint8_t eNB_id, // this is the effective sector id uint8_t UE_id, uint16_t UL_RB_ID_NB_IoT, // 22 , to be included in // to be replaced by NB_IoT_start ?? diff --git a/openair1/PHY/LTE_TRANSPORT/vars_NB_IoT.h b/openair1/PHY/NBIoT_TRANSPORT/vars_NB_IoT.h similarity index 100% rename from openair1/PHY/LTE_TRANSPORT/vars_NB_IoT.h rename to openair1/PHY/NBIoT_TRANSPORT/vars_NB_IoT.h diff --git a/openair1/PHY/defs_L1_NB_IoT.h b/openair1/PHY/defs_L1_NB_IoT.h index 1c40314fd4d2ab127cc93da73942982e12a9f87c..a47854cb2e5ae799ac557acc5bb5b840c9bc841a 100644 --- a/openair1/PHY/defs_L1_NB_IoT.h +++ b/openair1/PHY/defs_L1_NB_IoT.h @@ -137,7 +137,7 @@ static inline void* malloc16_clear( size_t size ) ////////////////////////////////////////////////////////////////////#ifdef OPENAIR_LTE (check if this is required) //#include "PHY/LTE_TRANSPORT/defs.h" -#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h" +#include "PHY/NBIoT_TRANSPORT/defs_NB_IoT.h" #include <pthread.h> #include "targets/ARCH/COMMON/common_lib.h" @@ -1033,5 +1033,5 @@ typedef struct { #include "PHY/INIT/defs_NB_IoT.h" #include "PHY/LTE_REFSIG/defs_NB_IoT.h" -#include "PHY/LTE_TRANSPORT/proto_NB_IoT.h" +#include "PHY/NBIoT_TRANSPORT/proto_NB_IoT.h" #endif // __PHY_DEFS__H__ diff --git a/openair1/PHY/defs_NB_IoT.h b/openair1/PHY/defs_NB_IoT.h index 0e4cbbe70585ecf33655bc00e44b5795fe159f34..1ce5099d1d6fee88bbda03e94e1f61e19fbc4063 100644 --- a/openair1/PHY/defs_NB_IoT.h +++ b/openair1/PHY/defs_NB_IoT.h @@ -135,7 +135,7 @@ static inline void* malloc16_clear( size_t size ) ////////////////////////////////////////////////////////////////////#ifdef OPENAIR_LTE (check if this is required) //#include "PHY/LTE_TRANSPORT/defs.h" -#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h" +#include "PHY/NBIoT_TRANSPORT/defs_NB_IoT.h" #include "openair2/PHY_INTERFACE/IF_Module_NB_IoT.h" #include <pthread.h> @@ -286,6 +286,21 @@ typedef struct { pthread_mutex_t mutex_l2; int instance_cnt_l2; pthread_attr_t attr_l2; + uint32_t frame_msg5; + uint32_t subframe_msg5; + int subframe_real; + uint8_t flag_scrambling; + uint8_t flag_msg3; + uint8_t counter_msg3; + uint32_t frame_msg3; + uint8_t flag_msg4; + uint8_t counter_msg4; + uint32_t frame_msg4; + uint32_t subframe_msg4; + uint8_t counter_msg5; + uint8_t flag_msg5; + uint32_t frame_dscr_msg5; + uint32_t subframe_dscr_msg5; } eNB_rxtx_proc_NB_IoT_t; /* @@ -1108,7 +1123,7 @@ static inline int release_thread(pthread_mutex_t *mutex,int *instance_cnt,char * #include "PHY/LTE_REFSIG/defs_NB_IoT.h" //#include "PHY/MODULATION/defs.h" //#include "PHY/LTE_TRANSPORT/proto.h" -#include "PHY/LTE_TRANSPORT/proto_NB_IoT.h" +#include "PHY/NBIoT_TRANSPORT/proto_NB_IoT.h" //#include "PHY/LTE_ESTIMATION/defs.h" //#include "SIMULATION/ETH_TRANSPORT/defs.h" //#endif diff --git a/openair1/PHY/defs_common.h b/openair1/PHY/defs_common.h index 253c3e0c96426935bd67d4cb855d01c43d7693bb..c038ee07a2782b7a75187cb10bb5654d796aa806 100644 --- a/openair1/PHY/defs_common.h +++ b/openair1/PHY/defs_common.h @@ -136,6 +136,56 @@ typedef enum { two=12 } PHICH_RESOURCE_t; #endif + +////////////////////////////////////////// NB-IoT testing /////////////////////////////////////////////////////////////// +typedef struct{ + /// The base sequence of DMRS sequence in a cell for 3 tones transmission; see TS 36.211 [21, 10.1.4.1.2]. If absent, it is given by NB-IoT CellID mod 12. Value 12 is not used. + uint16_t threeTone_BaseSequence; + /// Define 3 cyclic shifts for the 3-tone case, see TS 36.211 [21, 10.1.4.1.2]. + uint16_t threeTone_CyclicShift; + /// The base sequence of DMRS sequence in a cell for 6 tones transmission; see TS 36.211 [21, 10.1.4.1.2]. If absent, it is given by NB-IoT CellID mod 14. Value 14 is not used. + uint16_t sixTone_BaseSequence; + /// Define 4 cyclic shifts for the 6-tone case, see TS 36.211 [21, 10.1.4.1.2]. + uint16_t sixTone_CyclicShift; + /// The base sequence of DMRS sequence in a cell for 12 tones transmission; see TS 36.211 [21, 10.1.4.1.2]. If absent, it is given by NB-IoT CellID mod 30. Value 30 is not used. + uint16_t twelveTone_BaseSequence; + +}DMRS_CONFIGx_t; + +/// UL-ReferenceSignalsNPUSCH from 36.331 RRC spec +typedef struct { + /// Parameter: Group-hopping-enabled, see TS 36.211 (5.5.1.3). \vr{[0..1]} + uint8_t groupHoppingEnabled; + /// , see TS 36.211 (5.5.1.3). \vr{[0..29]} + uint8_t groupAssignmentNPUSCH; + /// Parameter: cyclicShift, see TS 36.211 (Table 5.5.2.1.1-2). \vr{[0..7]} + uint8_t cyclicShift; + /// nPRS for cyclic shift of DRS \note not part of offical UL-ReferenceSignalsPUSCH ASN1 specification. + uint8_t nPRS[20]; + /// group hopping sequence for DMRS, 36.211, Section 10.1.4.1.3. Second index corresponds to the four possible subcarrier configurations + uint8_t grouphop[20][4]; + /// sequence hopping sequence for DRS \note not part of offical UL-ReferenceSignalsPUSCH ASN1 specification. + uint8_t seqhop[20]; +} UL_REFERENCE_SIGNALS_NPUSCHx_t; + + +/// PUSCH-ConfigCommon from 36.331 RRC spec. +typedef struct { + /// Number of repetitions for ACK/NACK HARQ response to NPDSCH containing Msg4 per NPRACH resource, see TS 36.213 [23, 16.4.2]. + uint8_t ack_NACK_NumRepetitions_Msg4[3]; + /// SRS SubframeConfiguration. See TS 36.211 [21, table 5.5.3.3-1]. Value sc0 corresponds to value 0, sc1 to value 1 and so on. + uint8_t srs_SubframeConfig; + /// Parameter: \f$N^{HO}_{RB}\f$, see TS 36.211 (5.3.4). \vr{[0..98]} + DMRS_CONFIGx_t dmrs_Config; + /// Ref signals configuration + UL_REFERENCE_SIGNALS_NPUSCHx_t ul_ReferenceSignalsNPUSCH; + +} NPUSCH_CONFIG_COMMONx; + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + /// PHICH-Config from 36.331 RRC spec typedef struct { /// Parameter: PHICH-Duration, see TS 36.211 (Table 6.9.3-1). @@ -722,6 +772,19 @@ typedef struct { #endif /// for fair RR scheduler uint32_t ue_multiple_max; + ////////////////////////// NB-IoT testing ////////////////////////////// + uint8_t subcarrier_spacing; + + uint16_t control_region_size; + + uint8_t nb_antennas_tx_NB_IoT; // to replace with NB_IoT_frame_params + + NPUSCH_CONFIG_COMMONx npusch_config_common; + + uint8_t RB_ID_NB_IoT; // to be used + + uint8_t flag_free_sf; // flag to indicate for NPDSCH and NPDCCH process if the current SF already used + ///////////////////////////////////////////////////////////////////// } LTE_DL_FRAME_PARMS; typedef enum { diff --git a/openair1/SCHED/phy_procedures_lte_common.c b/openair1/SCHED/phy_procedures_lte_common.c index bd9d51ee44c9991b46521539b28a480e08691c1c..f030356df293b595fd1565674b115e69dbd50c23 100644 --- a/openair1/SCHED/phy_procedures_lte_common.c +++ b/openair1/SCHED/phy_procedures_lte_common.c @@ -31,6 +31,7 @@ */ #include "PHY/defs_eNB.h" #include "PHY/defs_UE.h" +#include "PHY/phy_extern.h" #include "SCHED/sched_common_extern.h" #include "PHY/LTE_TRANSPORT/transport_common_proto.h" @@ -907,7 +908,7 @@ unsigned int is_phich_subframe(LTE_DL_FRAME_PARMS *frame_parms,unsigned char sub - +/* LTE_eNB_UE_stats* get_UE_stats(uint8_t Mod_id, uint8_t CC_id,uint16_t rnti) { int8_t UE_id; @@ -940,7 +941,7 @@ int8_t find_ue(uint16_t rnti, PHY_VARS_eNB *eNB) } return(-1); } - +*/ LTE_DL_FRAME_PARMS* get_lte_frame_parms(module_id_t Mod_id, uint8_t CC_id) @@ -949,7 +950,7 @@ LTE_DL_FRAME_PARMS* get_lte_frame_parms(module_id_t Mod_id, uint8_t CC_id) return(&RC.eNB[Mod_id][CC_id]->frame_parms); } - +/* MU_MIMO_mode *get_mu_mimo_mode (module_id_t Mod_id, uint8_t CC_id, rnti_t rnti) { int8_t UE_id = find_ue( rnti, RC.eNB[Mod_id][CC_id] ); @@ -959,7 +960,7 @@ MU_MIMO_mode *get_mu_mimo_mode (module_id_t Mod_id, uint8_t CC_id, rnti_t rnti) return &RC.eNB[Mod_id][CC_id]->mu_mimo_mode[UE_id]; } - +*/ int is_srs_occasion_common(LTE_DL_FRAME_PARMS *frame_parms,int frame_tx,int subframe_tx) { diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index 166c02073cfc95c710531dd97801db3bf8fac7dc..ba60dac5307b61c5ff2e53f79693b8e7f899b8f8 100755 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -2003,5 +2003,5 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC, 0 ); } -#endif + diff --git a/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.c b/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.c index cc0bc47c12ac960c8b77f35443a76cf48b65b3d2..f245bd31bf85fd0fa28fa9b8de6b735b9b3d484d 100644 --- a/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.c +++ b/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.c @@ -50,7 +50,7 @@ int Irep_to_Nrep_x[16] = {1,2,4,8,16,32,64,128,192,256,384,512,768,1024,1536,204 void handle_nfapi_dlsch_pdu_NB_IoT(PHY_VARS_eNB *eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, nfapi_dl_config_request_pdu_t *dl_config_pdu, uint8_t *sdu) { @@ -282,7 +282,7 @@ void schedule_response_NB_IoT(Sched_Rsp_NB_IoT_t *Sched_INFO) //LOG_I(PHY,"schedule_response_NB_IoT\n"); //XXX check if correct to take eNB like this PHY_VARS_eNB *eNB = PHY_vars_eNB_g[0][Sched_INFO->CC_id]; - eNB_rxtx_proc_t *proc = &eNB->proc.proc_rxtx[0]; + eNB_rxtx_proc_NB_IoT_t *proc = &eNB->proc.proc_rxtx[0]; NB_IoT_eNB_NPBCH_t *npbch; /// int i; diff --git a/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.h b/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.h index 63c3eb1fcf61717c0e411076d9d665cdbcb1b96e..53b83b2ce97274e663008548ac5a8c59a554f69d 100644 --- a/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.h +++ b/openair1/SCHED_NBIOT/IF_Module_L1_primitives_NB_IoT.h @@ -14,7 +14,7 @@ void handle_nfapi_dlsch_pdu_NB_IoT(PHY_VARS_eNB *eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, nfapi_dl_config_request_pdu_t *dl_config_pdu, uint8_t *sdu); diff --git a/openair1/SCHED_NBIOT/defs_NB_IoT.h b/openair1/SCHED_NBIOT/defs_NB_IoT.h index 1ed2a2a1acb8e6dff35ff419fcfa7a9509d5a6d0..d54c10debe59954069de2c1f9eff56a1bad3d965 100644 --- a/openair1/SCHED_NBIOT/defs_NB_IoT.h +++ b/openair1/SCHED_NBIOT/defs_NB_IoT.h @@ -19,22 +19,22 @@ enum openair_HARQ_TYPE_NB_IoT { void process_schedule_rsp_NB_IoT(Sched_Rsp_NB_IoT_t *sched_rsp, PHY_VARS_eNB_NB_IoT *eNB, - eNB_rxtx_proc_t *proc); + eNB_rxtx_proc_NB_IoT_t *proc); /*Processing the ue-specific resources for uplink in NB-IoT*/ -void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc); // UL_IND_NB_IoT_t *UL_INFO); +void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc); // UL_IND_NB_IoT_t *UL_INFO); /* For NB-IoT, we put NPBCH in later part, since it would be scheduled by MAC scheduler,this generates NRS/NPSS/NSSS*/ -void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc); +void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc); /*Generate the ulsch params and do the mapping for the FAPI style parameters to OAI, and then do the packing*/ -void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu); +void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu); /*Generate the dlsch params and do the mapping for the FAPI style parameters to OAI, and then do the packing*/ -void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,nfapi_dl_config_request_pdu_t *dl_config_pdu); +void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t * proc,nfapi_dl_config_request_pdu_t *dl_config_pdu); /*Process all the scheduling result from MAC and also common signals.*/ -void phy_procedures_eNB_TX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_t *proc,int do_meas); +void phy_procedures_eNB_TX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_NB_IoT_t *proc,int do_meas); int8_t find_ue_NB_IoT(uint16_t rnti, PHY_VARS_eNB *eNB); @@ -50,10 +50,10 @@ uint32_t is_SIB1_NB_IoT(const frame_t frameP, uint32_t rx_nprach_NB_IoT(PHY_VARS_eNB *eNB,int frame, uint8_t subframe, uint16_t *rnti, uint16_t *preamble_index, uint16_t *timing_advance); -void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc); +void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc); ////////////////// NB-IoT testing //////////////////// -void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t data_or_control, uint8_t decode_flag); +void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t data_or_control, uint8_t decode_flag); void fill_crc_indication_NB_IoT(PHY_VARS_eNB *eNB,int UE_id,int frame,int subframe,uint8_t decode_flag); diff --git a/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_NB_IoT.c b/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_NB_IoT.c index 15bc05adebc8e971770bfa7710f289c20c4ca61e..d0e2dc1f4ad6d64bcb703fa6a89087405e48916e 100644 --- a/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_NB_IoT.c +++ b/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_NB_IoT.c @@ -213,7 +213,7 @@ uint32_t is_SIB1_NB_IoT(const frame_t frameP, * It generates NRS/NPSS/NSSS * */ -void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) +void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc) { //LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms_NB_IoT; LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms; @@ -401,7 +401,7 @@ void common_signal_procedures_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) } -void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) //UL_IND_NB_IoT_t *UL_INFO) +void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc) //UL_IND_NB_IoT_t *UL_INFO) { //RX processing for ue-specific resources (i //NB_IoT_DL_FRAME_PARMS *fp=&eNB->frame_parms_NB_IoT; @@ -437,7 +437,7 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc } /////////////////////////////////////////////////////////// backup //////////////////////////////////////////////////////// -/*void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_t *proc, UL_IND_NB_IoT_t *UL_INFO) +/*void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_NB_IoT_t *proc, UL_IND_NB_IoT_t *UL_INFO) { //RX processing for ue-specific resources (i uint32_t ret=0,i,j,k; @@ -762,7 +762,7 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc /////Generate eNB ndlsch params for NB-IoT from the NPDCCH PDU of the DCI, modify the input to the Sched Rsp variable//// */ -void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,nfapi_dl_config_request_pdu_t *dl_config_pdu) +void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t * proc,nfapi_dl_config_request_pdu_t *dl_config_pdu) { int UE_id = -1; LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms; @@ -911,7 +911,7 @@ void generate_eNB_dlsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t * proc,n -void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu) { +void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu) { //int UE_id = -1; //int harq_pid = 0; @@ -966,7 +966,7 @@ void generate_eNB_ulsch_params_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,nf * ** redundancy version exist only in UL for NB-IoT and not in DL */ void npdsch_procedures(PHY_VARS_eNB_NB_IoT *eNB, - eNB_rxtx_proc_t *proc, //Context data structure for RX/TX portion of subframe processing + eNB_rxtx_proc_NB_IoT_t *proc, //Context data structure for RX/TX portion of subframe processing NB_IoT_eNB_NDLSCH_t *ndlsch, //int num_pdcch_symbols, //(BCOM says are not needed uint8_t *pdu @@ -1228,7 +1228,7 @@ extern int oai_exit; */ void phy_procedures_eNB_TX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, int do_meas) { int frame = proc->frame_tx; @@ -1607,7 +1607,7 @@ void fill_crc_indication_NB_IoT(PHY_VARS_eNB *eNB,int UE_id,int frame,int subfra pthread_mutex_unlock(&eNB->UL_INFO_mutex); } -void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t data_or_control, uint8_t decode_flag) +void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t data_or_control, uint8_t decode_flag) { nfapi_rx_indication_pdu_t *pdu; nfapi_nb_harq_indication_pdu_t *ack_ind; // &eNB->UL_INFO.nb_harq_ind.nb_harq_indication_body.nb_harq_pdu_list[0] // nb_harq_indication_fdd_rel13->harq_tb1 @@ -1680,7 +1680,7 @@ void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t d -void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) +void npusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc) { uint32_t i; diff --git a/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_nbiot.c b/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_nbiot.c index be84cb2a9e71b1e43297e6ce8e6a228c239c19cf..14fd62ab0d90491d6285bd91c112f8fb7984a4b6 100755 --- a/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_nbiot.c +++ b/openair1/SCHED_NBIOT/phy_procedures_lte_eNb_nbiot.c @@ -127,7 +127,7 @@ extern int rx_sig_fifo; #endif -uint8_t is_SR_subframe(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t UE_id) +uint8_t is_SR_subframe(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t UE_id) { const int subframe = proc->subframe_rx; @@ -322,7 +322,7 @@ void phy_procedures_emos_eNB_TX(unsigned char subframe, PHY_VARS_eNB *eNB) } #endif -void phy_procedures_eNB_S_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,relaying_type_t r_type) +void phy_procedures_eNB_S_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,relaying_type_t r_type) { UNUSED(r_type); int subframe = proc->subframe_rx; @@ -419,7 +419,7 @@ unsigned int taus(void); DCI_PDU DCI_pdu_tmp; -void pmch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,PHY_VARS_RN *rn,relaying_type_t r_type) { +void pmch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,PHY_VARS_RN *rn,relaying_type_t r_type) { #if defined(Rel10) || defined(Rel14) @@ -506,7 +506,7 @@ int16_t buffer_npusch_ext[153600]; //int32_t llr_msg5[16]; //int32_t y_msg5[16]; -void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) { +void common_signal_procedures (PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc) { LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms; int **txdataF = eNB->common_vars.txdataF[0]; @@ -877,7 +877,7 @@ if(proc->flag_msg4 == 1 && proc->counter_msg4 > 0) ///////////////////////////////////////////////////////////////////////// } -void generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_alloc,const int UE_id) { +void generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,DCI_ALLOC_t *dci_alloc,const int UE_id) { LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms; int frame = proc->frame_tx; @@ -1022,7 +1022,7 @@ void generate_eNB_dlsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC } -void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_alloc,const int UE_id) { +void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,DCI_ALLOC_t *dci_alloc,const int UE_id) { int harq_pid; LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms; @@ -1118,7 +1118,7 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC } void pdsch_procedures(PHY_VARS_eNB *eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, LTE_eNB_DLSCH_t *dlsch, LTE_eNB_DLSCH_t *dlsch1, LTE_eNB_UE_stats *ue_stats, @@ -1373,7 +1373,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB, } void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, relaying_type_t r_type, PHY_VARS_RN *rn, int do_meas, @@ -1748,7 +1748,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, } -void process_Msg3(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t UE_id, uint8_t harq_pid) +void process_Msg3(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t UE_id, uint8_t harq_pid) { // this prepares the demodulation of the first PUSCH of a new user, containing Msg3 int subframe = proc->subframe_rx; @@ -1785,7 +1785,7 @@ void process_Msg3(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t UE_id, uint8_t void process_HARQ_feedback(uint8_t UE_id, PHY_VARS_eNB *eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, uint8_t pusch_flag, uint8_t *pucch_payload, uint8_t pucch_sel, @@ -2058,7 +2058,7 @@ void process_HARQ_feedback(uint8_t UE_id, } void get_n1_pucch_eNB(PHY_VARS_eNB *eNB, - eNB_rxtx_proc_t *proc, + eNB_rxtx_proc_NB_IoT_t *proc, uint8_t UE_id, int16_t *n1_pucch0, int16_t *n1_pucch1, @@ -2409,7 +2409,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PRACH_RX,0);*/ } -void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq_pid,uint8_t do_srs) +void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,int UE_id,int harq_pid,uint8_t do_srs) { LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms; uint8_t SR_payload = 0,*pucch_payload=NULL,pucch_payload0[2]= {0,0},pucch_payload1[2]= {0,0}; @@ -2750,7 +2750,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq } -void cba_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq_pid) { +void cba_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,int UE_id,int harq_pid) { uint8_t access_mode; int num_active_cba_groups; @@ -3013,7 +3013,7 @@ void init_te_thread(PHY_VARS_eNB *eNB,pthread_attr_t *attr_te) { } */ -void eNB_fep_full_2thread(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) { +void eNB_fep_full_2thread(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc_rxtx) { eNB_proc_t *proc = &eNB->proc; @@ -3059,7 +3059,7 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) { -void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) { +void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc_rxtx) { int l; LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms; @@ -3099,7 +3099,7 @@ void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) { } } -void eNB_fep_rru_if5(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) { +void eNB_fep_rru_if5(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc_rxtx) { eNB_proc_t *proc=&eNB->proc; uint8_t seqno=0; @@ -3160,7 +3160,7 @@ if(frame%2==0 && subframe==9) } -void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc){ +void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc){ // eNB_proc_t *proc = &eNB->proc; @@ -3193,7 +3193,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc){ } /* -void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t data_or_control, uint8_t msg3_flag) +void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,uint8_t data_or_control, uint8_t msg3_flag) { nfapi_rx_indication_pdu_t *pdu; @@ -3235,7 +3235,7 @@ void fill_rx_indication_NB_IoT(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,uint8_t d } */ -void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const relaying_type_t r_type) +void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_NB_IoT_t *proc,const relaying_type_t r_type) { //RX processing for ue-specific resources (i UNUSED(r_type); diff --git a/openair2/LAYER2/MAC/defs_NB_IoT.h b/openair2/LAYER2/MAC/defs_NB_IoT.h index 0582a81ea1bc04265d263404bb17197dc29e3837..c5a0d4f1f5d3d3374f75a5a0a07861ede015e308 100644 --- a/openair2/LAYER2/MAC/defs_NB_IoT.h +++ b/openair2/LAYER2/MAC/defs_NB_IoT.h @@ -16,7 +16,7 @@ //#include "COMMON/openair_defs.h" #include "COMMON/platform_constants.h" #include "COMMON/mac_rrc_primitives.h" -#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h" +#include "PHY/NBIoT_TRANSPORT/defs_NB_IoT.h" //#include "PHY/defs.h" #include "PHY/defs_L1_NB_IoT.h" #include "openair2/PHY_INTERFACE/IF_Module_NB_IoT.h" @@ -593,7 +593,7 @@ typedef struct { nprach_parameters_NB_IoT_t nprach_list[3]; -nfapi_config_request_t config; + //DLSF Table DLSF_INFO_t DLSF_information; diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index 859b31e38de590e6d5ca726e52e42d67d5db07e5..58b053ec39fb9a2f3e15e4fee103b7694f0dadce 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -56,7 +56,7 @@ #include "UTIL/OSA/osa_defs.h" #include "openair2/RRC/NAS/nas_config.h" # include "intertask_interface.h" -#include "enb_paramdef.h" +#include "ENB_APP/enb_paramdef_NB_IoT.h" # include "gtpv1u_eNB_task.h" # include "gtpv1u.h" @@ -89,7 +89,7 @@ if (NBconfig.NB_IoT_configured > 0) #include "openair2/RRC/NBIOT/proto_NB_IoT.h" #undef maxDRB #define maxDRB maxDRB_NB_r13 -#endif + } /* pdcp module parameters and related functions*/ diff --git a/openair2/NETWORK_DRIVER/LITE/RB_TOOL/Makefile b/openair2/NETWORK_DRIVER/NBIOT/RB_TOOL/Makefile similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/RB_TOOL/Makefile rename to openair2/NETWORK_DRIVER/NBIOT/RB_TOOL/Makefile diff --git a/openair2/NETWORK_DRIVER/LITE/RB_TOOL/rb_tool.c b/openair2/NETWORK_DRIVER/NBIOT/RB_TOOL/rb_tool.c similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/RB_TOOL/rb_tool.c rename to openair2/NETWORK_DRIVER/NBIOT/RB_TOOL/rb_tool.c diff --git a/openair2/NETWORK_DRIVER/LITE/classifier.c b/openair2/NETWORK_DRIVER/NBIOT/classifier.c similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/classifier.c rename to openair2/NETWORK_DRIVER/NBIOT/classifier.c diff --git a/openair2/NETWORK_DRIVER/LITE/common.c b/openair2/NETWORK_DRIVER/NBIOT/common.c similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/common.c rename to openair2/NETWORK_DRIVER/NBIOT/common.c diff --git a/openair2/NETWORK_DRIVER/LITE/constant.h b/openair2/NETWORK_DRIVER/NBIOT/constant.h similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/constant.h rename to openair2/NETWORK_DRIVER/NBIOT/constant.h diff --git a/openair2/NETWORK_DRIVER/LITE/device.c b/openair2/NETWORK_DRIVER/NBIOT/device.c similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/device.c rename to openair2/NETWORK_DRIVER/NBIOT/device.c diff --git a/openair2/NETWORK_DRIVER/LITE/ioctl.c b/openair2/NETWORK_DRIVER/NBIOT/ioctl.c similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/ioctl.c rename to openair2/NETWORK_DRIVER/NBIOT/ioctl.c diff --git a/openair2/NETWORK_DRIVER/LITE/ioctl.h b/openair2/NETWORK_DRIVER/NBIOT/ioctl.h similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/ioctl.h rename to openair2/NETWORK_DRIVER/NBIOT/ioctl.h diff --git a/openair2/NETWORK_DRIVER/LITE/local.h b/openair2/NETWORK_DRIVER/NBIOT/local.h similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/local.h rename to openair2/NETWORK_DRIVER/NBIOT/local.h diff --git a/openair2/NETWORK_DRIVER/LITE/netlink.c b/openair2/NETWORK_DRIVER/NBIOT/netlink.c similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/netlink.c rename to openair2/NETWORK_DRIVER/NBIOT/netlink.c diff --git a/openair2/NETWORK_DRIVER/LITE/proto_extern.h b/openair2/NETWORK_DRIVER/NBIOT/proto_extern.h similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/proto_extern.h rename to openair2/NETWORK_DRIVER/NBIOT/proto_extern.h diff --git a/openair2/NETWORK_DRIVER/LITE/sap.h b/openair2/NETWORK_DRIVER/NBIOT/sap.h similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/sap.h rename to openair2/NETWORK_DRIVER/NBIOT/sap.h diff --git a/openair2/NETWORK_DRIVER/LITE/tool.c b/openair2/NETWORK_DRIVER/NBIOT/tool.c similarity index 100% rename from openair2/NETWORK_DRIVER/LITE/tool.c rename to openair2/NETWORK_DRIVER/NBIOT/tool.c