Commit 2a792c1c authored by Matthieu Kanj's avatar Matthieu Kanj

removing warnings (121 remaining)

parent 8df96ab5
......@@ -210,14 +210,14 @@ typedef struct {
// SCHEDULED_ACCESS,
// CBA_ACCESS};
// typedef enum {
// eNodeB_3GPP=0, // classical eNodeB function
// eNodeB_3GPP_BBU, // eNodeB with NGFI IF5
// NGFI_RCC_IF4p5, // NGFI_RCC (NGFI radio cloud center)
// NGFI_RAU_IF4p5,
// NGFI_RRU_IF5, // NGFI_RRU (NGFI remote radio-unit,IF5)
// NGFI_RRU_IF4p5 // NGFI_RRU (NGFI remote radio-unit,IF4p5)
// } eNB_func_NB_IoT_t;
typedef enum {
eNodeB_3GPP_NB_IoT=0, // classical eNodeB function
eNodeB_3GPP_BBU_NB_IoT, // eNodeB with NGFI IF5
NGFI_RCC_IF4p5_NB_IoT, // NGFI_RCC (NGFI radio cloud center)
NGFI_RAU_IF4p5_NB_IoT,
NGFI_RRU_IF5_Nb_IoT, // NGFI_RRU (NGFI remote radio-unit,IF5)
NGFI_RRU_IF4p5_NB_IoT // NGFI_RRU (NGFI remote radio-unit,IF4p5)
} eNB_func_NB_IoT_t;
typedef enum {
......@@ -510,7 +510,7 @@ typedef struct PHY_VARS_eNB_NB_IoT_s {
module_id_t Mod_id;
uint8_t CC_id;
eNB_proc_NB_IoT_t proc;
//eNB_func_NB_IoT_t node_function;
eNB_func_NB_IoT_t node_function;
eNB_timing_NB_IoT_t node_timing;
eth_params_t *eth_params;
int single_thread_flag;
......
......@@ -137,9 +137,9 @@ extern void (*rlc_rrc_data_conf)(
//NB1/NB2 Offset of category (XXX for the moment we choose a random number but i don't know if whould be like this- TS 36.101 ch 5.7.3F)
float Category_Offset_NB_IoT[21]={-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,-0.5,0,1,2,3,4,5,6,7,8,9}; //-0.5 is not applicable for in-band and guard band
float Category_Offset_short_NB_IoT[2]={-0.5,0}; //for guard band operating mode
float Category_Offset_anchor_NB_IoT[4]={-2,-1,0,1}; //for in band and guard band mode over anchor carrier (include nsss and npsss)
float Category_Offset_NB_IoT[21] = {-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,-0.5,0,1,2,3,4,5,6,7,8,9}; //-0.5 is not applicable for in-band and guard band
float Category_Offset_short_NB_IoT[2] = {-0.5,0}; //for guard band operating mode
float Category_Offset_anchor_NB_IoT[4] = {-2,-1,0,1}; //for in band and guard band mode over anchor carrier (include nsss and npsss)
typedef struct eutra_bandentry_NB_s {
//this should be the colum order of the table below
......@@ -152,8 +152,10 @@ typedef struct eutra_bandentry_NB_s {
} eutra_bandentry_NB_IoT_t;
typedef struct band_info_s {
int nbands;
eutra_bandentry_NB_IoT_t band_info[100];
} band_info_t;
......@@ -227,6 +229,7 @@ int32_t get_uldl_offset_NB_IoT(int eutra_band) {
void config_mib_fapi_NB_IoT(
int rntiP,
int physCellId,
uint8_t eutra_band,
......@@ -236,7 +239,7 @@ void config_mib_fapi_NB_IoT(
int p_rx_eNB,
int dl_CarrierFreq,
int ul_CarrierFreq,
long*eutraControlRegionSize,
long *eutraControlRegionSize,
BCCH_BCH_Message_NB_t *mib_NB_IoT
)
......@@ -267,6 +270,7 @@ void config_mib_fapi_NB_IoT(
{
//FAPI specs pag 135
case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_SamePCI_r13:
config_INFO->cfg->config_NB_IoT.operating_mode.value = 0;
config_INFO->cfg->config_NB_IoT.prb_index.value = mib_NB_IoT->message.operationModeInfo_r13.choice.inband_SamePCI_r13.eutra_CRS_SequenceInfo_r13; //see TS 36.213 ch 16.0
config_INFO->cfg->config_NB_IoT.assumed_crs_aps.value = -1; //is not defined so we put a negative value
......@@ -281,13 +285,13 @@ void config_mib_fapi_NB_IoT(
break;
case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_DifferentPCI_r13:
config_INFO->cfg->config_NB_IoT.operating_mode.value = 1;
config_INFO->cfg->config_NB_IoT.operating_mode.value = 1;
//XXX problem: fapi think to define also eutra_CRS_sequenceInfo also for in band with different PCI but the problem is that we don-t have i
//XXX should pass the prb_index may defined by configuration file depending on the LTE band we are considering (see Rhode&Shwartz whitepaper pag9)
//config_INFO->config_NB_IoT.prb_index.value =
config_INFO->cfg->config_NB_IoT.assumed_crs_aps.value = mib_NB_IoT->message.operationModeInfo_r13.choice.inband_DifferentPCI_r13.eutra_NumCRS_Ports_r13;
if(eutraControlRegionSize == NULL)
......@@ -295,41 +299,31 @@ void config_mib_fapi_NB_IoT(
else
config_INFO->cfg->config_NB_IoT.control_region_size.value = *eutraControlRegionSize;
//m_dl = NB_Category_Offset_anchor[rand()%4];
break;
case MasterInformationBlock_NB__operationModeInfo_r13_PR_guardband_r13:
config_INFO->cfg->config_NB_IoT.operating_mode.value = 2;
config_INFO->cfg->config_NB_IoT.operating_mode.value = 2;
//XXX should pass the prb_index may defined by configuration file depending on the LTE band we are considering (see Rhode&Shwartz whitepaper pag9)
//config_INFO->config_NB_IoT.prb_index.value =
config_INFO->cfg->config_NB_IoT.control_region_size.value = -1; //should not being defined so we put a negative value
config_INFO->cfg->config_NB_IoT.assumed_crs_aps.value = -1; //is not defined so we put a negative value
//m_dl = NB_Category_Offset_anchor[rand()%4];
break;
case MasterInformationBlock_NB__operationModeInfo_r13_PR_standalone_r13:
config_INFO->cfg->config_NB_IoT.operating_mode.value = 3;
config_INFO->cfg->config_NB_IoT.prb_index.value = -1; // is not defined for this case (put a negative random value--> will be not considered for encoding, scrambling procedures)
config_INFO->cfg->config_NB_IoT.control_region_size.value = -1;//is not defined so we put a negative value
config_INFO->cfg->config_NB_IoT.control_region_size.value = -1; //is not defined so we put a negative value
config_INFO->cfg->config_NB_IoT.assumed_crs_aps.value = -1; //is not defined so we put a negative value
//m_dl = NB_Category_Offset_short[rand()%2];
break;
default:
LOG_E(RRC, "rrc_mac_config_req_eNB_NB_IoT: NB-IoT operating Mode (MIB-NB) not set\n");
break;
}
//we shoud use dl_CarrierConfig for generating the earfcn for LTE-CAT N2 based on TS 36.101 5.7.3F
/*
* 1) takes a random number from the offset of category NB1 and NB2 based on the operating mode (we assume always the usage of anchor carrier)
......@@ -339,7 +333,6 @@ void config_mib_fapi_NB_IoT(
}
void config_sib2_fapi_NB_IoT(
int physCellId,
RadioResourceConfigCommonSIB_NB_r13_t *radioResourceConfigCommon
......@@ -568,7 +561,7 @@ int rrc_mac_config_req_eNB_NB_IoT(
int rntiP,
int physCellId, // is the NcellID for NB-IoT
int p_eNB, //number of eNB TX antenna ports (1 or 2 for NB-IoT)
int p_rx_eNB,// number of eNB Rx antenna ports (1 or 2 for NB-IoT)
int p_rx_eNB, // number of eNB Rx antenna ports (1 or 2 for NB-IoT)
int Ncp,
int Ncp_UL,
long eutra_band, //requencyBandIndicator (eutra_band) in sib1. this param is set in the do_sib1_nb and is directly taken from the .config file
......@@ -583,7 +576,7 @@ int rrc_mac_config_req_eNB_NB_IoT(
RadioResourceConfigCommonSIB_NB_r13_t *radioResourceConfigCommon,
struct PhysicalConfigDedicated_NB_r13 *physicalConfigDedicated,
MAC_MainConfig_NB_r13_t *mac_MainConfig, //most probably not needed since only used at UE side
long logicalChannelIdentity,//FIXME: decide how to use it
long logicalChannelIdentity, //FIXME: decide how to use it
LogicalChannelConfig_NB_r13_t *logicalChannelConfig //FIXME: decide how to use it
)
{
......@@ -598,7 +591,6 @@ int rrc_mac_config_req_eNB_NB_IoT(
config_INFO->get_MIB = 0;
config_INFO->get_COMMON = 0;
config_INFO->get_DEDICATED = 0;
config_INFO->mod_id = Mod_idP;
config_INFO->CC_id = CC_idP;
config_INFO->cfg->subframe_config.duplex_mode.value = 2; //HD-FDD for NB-IoT
......@@ -606,7 +598,7 @@ int rrc_mac_config_req_eNB_NB_IoT(
if (mib_NB_IoT!=NULL ) {
if (mib_NB_IoT != NULL) {
//XXX possible alternative implementation (as RU-RAU splitting)
//if(eNB_mac_inst == NULL) l2_init_eNB(); //TODO MP: to be included in the MAC/main.c
......@@ -623,7 +615,7 @@ int rrc_mac_config_req_eNB_NB_IoT(
eNB_mac_inst_NB_IoT[Mod_idP].common_channels[CC_idP].dl_CarrierFreq = dl_CarrierFreq;
LOG_I(MAC,
"Configuring MIB for instance %d, CCid %d : (band %d,Nid_cell %d,TX antenna port (p) %d,DL freq %u\n",
"Configuring MIB for instance %d, CCid %d : (band %ld,Nid_cell %d,TX antenna port (p) %d,DL freq %u\n",
Mod_idP,
CC_idP,
eutra_band,
......@@ -643,8 +635,7 @@ int rrc_mac_config_req_eNB_NB_IoT(
//Mapping OAI params into FAPI params
config_mib_fapi_NB_IoT(
rntiP,
config_mib_fapi_NB_IoT(rntiP,
physCellId,
eutra_band,
Ncp,
......@@ -657,8 +648,6 @@ int rrc_mac_config_req_eNB_NB_IoT(
mib_NB_IoT
);
}//mib_NB_IoT!=NULL
......@@ -677,8 +666,8 @@ int rrc_mac_config_req_eNB_NB_IoT(
eNB_mac_inst_NB_IoT[Mod_idP].common_channels[CC_idP].radioResourceConfigCommon = radioResourceConfigCommon;
if (ul_CarrierFreq>0) eNB_mac_inst_NB_IoT[Mod_idP].common_channels[CC_idP].ul_CarrierFreq = ul_CarrierFreq;
if (ul_CarrierFreq>0)
eNB_mac_inst_NB_IoT[Mod_idP].common_channels[CC_idP].ul_CarrierFreq = ul_CarrierFreq;
config_sib2_fapi_NB_IoT(physCellId,radioResourceConfigCommon);
......@@ -697,7 +686,6 @@ int rrc_mac_config_req_eNB_NB_IoT(
}
}
if (physicalConfigDedicated != NULL) {
......@@ -736,14 +724,13 @@ int rrc_mac_config_req_eNB_NB_IoT(
//-------------------------------------------------------
//New
int npdsch_rep_to_array[3] ={4,8,16}; //TS 36.213 Table 16.4.1.3-3
int npdsch_rep_to_array[3] = {4,8,16}; //TS 36.213 Table 16.4.1.3-3
int sib1_startFrame_to_array[4] = {0,16,32,48};//TS 36.213 Table 16.4.1.3-4
//New----------------------------------------------------
//return -1 whenever no SIB1-NB transmission occur.
//return sib1_startFrame when transmission occur in the current frame
uint32_t is_SIB1_NB_IoT(
const frame_t frameP,
long schedulingInfoSIB1,//from the mib
uint32_t is_SIB1_NB_IoT(const frame_t frameP,
long schedulingInfoSIB1, //from the mib
int physCellId, //by configuration
NB_IoT_eNB_NDLSCH_t *ndlsch_SIB1
)
......@@ -903,18 +890,17 @@ uint32_t is_SIB1_NB_IoT(
//New----------------------------------------------------
//Function for check if the current frame is the start of a new SIB1-NB period
uint8_t is_SIB1_start_NB_IoT(
const frame_t frameP,
long schedulingInfoSIB1,//from the mib
uint8_t is_SIB1_start_NB_IoT(const frame_t frameP,
long schedulingInfoSIB1, //from the mib
int physCellId //by configuration
)
{
uint8_t nb_rep=0; // number of sib1-nb repetitions within the 256 radio frames
uint8_t nb_rep = 0; // number of sib1-nb repetitions within the 256 radio frames
uint32_t sib1_startFrame;
// uint32_t sib1_period_NB_IoT = 256;//from specs TS 36.331 (rf)
// uint8_t index;
// int offset;
// int period_nb; // the number of the actual period over the 1024 frames
// uint32_t sib1_period_NB_IoT = 256;//from specs TS 36.331 (rf)
// uint8_t index;
// int offset;
// int period_nb; // the number of the actual period over the 1024 frames
if(schedulingInfoSIB1 > 11 || schedulingInfoSIB1 < 0){
......@@ -958,12 +944,11 @@ uint8_t is_SIB1_start_NB_IoT(
//---------------------------------------------------------------------------
//New
int si_windowLength_to_rf[7]={16,32,48,64,96,128,160}; //TS 36.331 v14.2.1 pag 587
int si_repPattern_to_nb[4]={2,4,8,16};
int si_period_to_nb[7]={64,128,256,512,1024,2048,4096};
int si_windowLength_to_rf[7] = {16,32,48,64,96,128,160}; //TS 36.331 v14.2.1 pag 587
int si_repPattern_to_nb[4] = {2,4,8,16};
int si_period_to_nb[7] = {64,128,256,512,1024,2048,4096};
//New---------------------------------------------------------------------------
boolean_t is_SIB23_NB_IoT(
const frame_t frameP,
boolean_t is_SIB23_NB_IoT(const frame_t frameP,
const frame_t h_frameP, // the HSFN (increased by 1 every SFN wrap around) (10 bits)
long si_period, //SI-periodicity (value given by the Enumerative of the SIB1-NB)
long si_windowLength_ms, //Si-windowlength (ms) received as an enumerative (see the IE of SIB1-NB)
......
......@@ -72,9 +72,10 @@
#include "../../SIMU/USER/init_lte.h"
//NB-IoT
#include "PHY/defs_NB_IoT.h"
#include "SCHED/defs_NB_IoT.h"
#include "PHY_INTERFACE/IF_Module_NB_IoT.h"
#include "PHY/extern_NB_IoT.h"
#include "LAYER2/MAC/defs.h"
#include "LAYER2/MAC/extern.h"
#include "LAYER2/MAC/proto.h"
......@@ -582,7 +583,7 @@ int wait_CCs(eNB_rxtx_proc_t *proc) {
*
* For the moment the NB-IoT implementation foresees a single thread implementation
* */
static inline int NB_rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_name) {
static inline int NB_rxtx(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_NB_IoT_t *proc, char *thread_name) {
//Allocate memory for the structures used by PHY and MAC
UL_IND_t *UL_INFO;
......@@ -596,7 +597,7 @@ static inline int NB_rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_
// ****************************************
// Common RX procedures subframe n
if ((eNB->do_prach)&&((eNB->node_function != NGFI_RCC_IF4p5)))
if ((eNB->do_prach)&&((eNB->node_function != NGFI_RCC_IF4p5_NB_IoT)))
eNB->do_prach(eNB,proc->frame_rx,proc->subframe_rx);
/*UE-specific RX processing for subframe n*/
......@@ -669,8 +670,12 @@ static void* eNB_thread_rxtx( void* param ) {
static int eNB_thread_rxtx_status;
eNB_rxtx_proc_t *proc = (eNB_rxtx_proc_t*)param;
eNB_rxtx_proc_NB_IoT_t *proc_NB_IoT = (eNB_rxtx_proc_NB_IoT_t*)param; // to remove when eNB_thread_rxtx_status is duplicated for NB-IoT
PHY_VARS_eNB *eNB = PHY_vars_eNB_g[0][proc->CC_id];
PHY_VARS_eNB_NB_IoT *eNB_NB_IoT = PHY_vars_eNB_NB_IoT_g[0][proc_NB_IoT->CC_id]; // to remove when eNB_thread_rxtx_status is duplicated for NB-IoT
char thread_name[100];
......@@ -695,7 +700,7 @@ static void* eNB_thread_rxtx( void* param ) {
if (eNB->CC_id==0)
{
#ifdef NB_IOT
if(NB_rxtx(eNB, proc,thread_name)<0) break;
if(NB_rxtx(eNB_NB_IoT, proc_NB_IoT,thread_name)<0) break;
#else
if (rxtx(eNB,proc,thread_name) < 0) break;
#endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment