Commit 8df96ab5 authored by Matthieu Kanj's avatar Matthieu Kanj

removing warnings (124 remaining)

parent 2a4a37c0
......@@ -120,7 +120,7 @@ static inline void* malloc16_clear( size_t size )
// #define UNUSED(x) (void)x;
#include "impl_defs_top_NB_IoT.h"
#include "PHY/impl_defs_top_NB_IoT.h"
//#include "impl_defs_top.h"
//#include "impl_defs_lte.h"
#include "PHY/impl_defs_lte_NB_IoT.h"
......@@ -131,7 +131,8 @@ static inline void* malloc16_clear( size_t size )
//#include "PHY/TOOLS/defs.h"
//#include "platform_types.h"
///#include "openair1/PHY/LTE_TRANSPORT/defs_nb_iot.h"
#ifdef OPENAIR_LTE
////////////////////////////////////////////////////////////////////#ifdef OPENAIR_LTE (check if this is required)
//#include "PHY/LTE_TRANSPORT/defs.h"
#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h"
......@@ -179,6 +180,7 @@ typedef struct UE_SCAN_INFO_NB_IoT_s {
int32_t amp[3][10];
/// 10 frequency offsets (kHz) corresponding to best amplitudes, with respect do minimum DL frequency in the band
int32_t freq_offset_Hz[3][10];
} UE_SCAN_INFO_NB_IoT_t;
/// Top-level PHY Data Structure for RN
......@@ -194,12 +196,12 @@ typedef struct {
NB_IoT_UE_DLSCH_t *dlsch_rn_MCH[10];
} PHY_VARS_RN_NB_IoT;
/*
#ifdef OCP_FRAMEWORK
#include <enums.h>
#else
//typedef enum {normal_txrx=0,rx_calib_ue=1,rx_calib_ue_med=2,rx_calib_ue_byp=3,debug_prach=4,no_L2_connect=5,calib_prach_tx=6,rx_dump_frame=7,loop_through_memory=8} runmode_t;
*/
// enum transmission_access_mode {
// NO_ACCESS=0,
// POSTPONED_ACCESS,
......@@ -218,25 +220,31 @@ typedef struct {
// } eNB_func_NB_IoT_t;
typedef enum {
synch_to_ext_device_NB_IoT=0, // synch to RF or Ethernet device
synch_to_other_NB_IoT // synch to another source (timer, other CC_id)
} eNB_timing_NB_IoT_t;
#endif
////////////////////////////////////////////////////////////////////#endif
typedef struct {
struct PHY_VARS_eNB_NB_IoT_s *eNB;
NB_IoT_eNB_NDLSCH_t *dlsch;
int G;
} te_params_NB_IoT;
typedef struct {
struct PHY_VARS_eNB_NB_IoT_s *eNB;
int UE_id;
int harq_pid;
int llr8_flag;
int ret;
} td_params_NB_IoT;
......@@ -267,13 +275,13 @@ typedef struct {
pthread_mutex_t mutex_rxtx;
/// scheduling parameters for RXn-TXnp4 thread
struct sched_param sched_param_rxtx;
/// NB-IoT for IF_Module
pthread_t pthread_l2;
pthread_cond_t cond_l2;
pthread_mutex_t mutex_l2;
int instance_cnt_l2;
pthread_attr_t attr_l2;
} eNB_rxtx_proc_NB_IoT_t;
/*
typedef struct {
......@@ -455,9 +463,13 @@ typedef struct {
pthread_mutex_t mutex_rxtx;
/// scheduling parameters for RXn-TXnp4 thread
struct sched_param sched_param_rxtx;
///
int sub_frame_start;
///
int sub_frame_step;
///
unsigned long long gotIQs;
} UE_rxtx_proc_NB_IoT_t;
/// Context data structure for eNB subframe processing
......@@ -487,6 +499,7 @@ typedef struct {
pthread_mutex_t mutex_synch;
/// set of scheduling variables RXn-TXnp4 threads
UE_rxtx_proc_NB_IoT_t proc_rxtx[2];
} UE_proc_NB_IoT_t;
......@@ -536,40 +549,34 @@ typedef struct PHY_VARS_eNB_NB_IoT_s {
//LTE_eNB_DLSCH_t *dlsch_MCH;
NB_IoT_eNB_UE_stats UE_stats[NUMBER_OF_UE_MAX_NB_IoT];
//LTE_eNB_UE_stats *UE_stats_ptr[NUMBER_OF_UE_MAX_NB_IoT];
/// cell-specific reference symbols
uint32_t lte_gold_table_NB_IoT[20][2][14];
/// UE-specific reference symbols (p=5), TM 7
uint32_t lte_gold_uespec_port5_table[NUMBER_OF_UE_MAX_NB_IoT][20][38];
/// UE-specific reference symbols (p=7...14), TM 8/9/10
uint32_t lte_gold_uespec_table[2][20][2][21];
/// mbsfn reference symbols
uint32_t lte_gold_mbsfn_table[10][3][42];
///
uint32_t X_u[64][839];
///
uint8_t pbch_pdu[4]; //PBCH_PDU_SIZE
///
char eNB_generate_rar;
/// Indicator set to 0 after first SR
uint8_t first_sr[NUMBER_OF_UE_MAX_NB_IoT];
uint32_t max_peak_val;
///
int max_eNB_id, max_sync_pos;
///
int N_TA_offset; ///timing offset used in TDD
/// \brief sinr for all subcarriers of the current link (used only for abstraction).
/// first index: ? [0..N_RB_DL*12[
double *sinr_dB;
/// N0 (used for abstraction)
double N0;
///
unsigned char first_run_timing_advance[NUMBER_OF_UE_MAX_NB_IoT];
unsigned char first_run_I0_measurements;
......@@ -583,62 +590,49 @@ typedef struct PHY_VARS_eNB_NB_IoT_s {
/// hold the precoder for NULL beam to the primary user
int **dl_precoder_SeNB[3];
///
char log2_maxp; /// holds the maximum channel/precoder coefficient
/// if ==0 enables phy only test mode
int mac_enabled;
/// For emulation only (used by UE abstraction to retrieve DCI)
uint8_t num_common_dci[2]; // num_dci in even/odd subframes
///
uint8_t num_ue_spec_dci[2]; // num_dci in even/odd subframes
///
DCI_ALLOC_NB_IoT_t dci_alloc[2][NUM_DCI_MAX_NB_IoT]; // dci_alloc from even/odd subframes
/////////////
// PDSCH Varaibles
PDSCH_CONFIG_DEDICATED_NB_IoT pdsch_config_dedicated[NUMBER_OF_UE_MAX_NB_IoT];
// PUSCH Varaibles
PUSCH_CONFIG_DEDICATED_NB_IoT pusch_config_dedicated[NUMBER_OF_UE_MAX_NB_IoT];
// PUCCH variables
PUCCH_CONFIG_DEDICATED_NB_IoT pucch_config_dedicated[NUMBER_OF_UE_MAX_NB_IoT];
// UL-POWER-Control
UL_POWER_CONTROL_DEDICATED_NB_IoT ul_power_control_dedicated[NUMBER_OF_UE_MAX_NB_IoT];
// TPC
TPC_PDCCH_CONFIG_NB_IoT tpc_pdcch_config_pucch[NUMBER_OF_UE_MAX_NB_IoT];
///
TPC_PDCCH_CONFIG_NB_IoT tpc_pdcch_config_pusch[NUMBER_OF_UE_MAX_NB_IoT];
// CQI reporting
CQI_REPORT_CONFIG_NB_IoT cqi_report_config[NUMBER_OF_UE_MAX_NB_IoT];
// SRS Variables
SOUNDINGRS_UL_CONFIG_DEDICATED_NB_IoT soundingrs_ul_config_dedicated[NUMBER_OF_UE_MAX_NB_IoT];
///
uint8_t ncs_cell[20][7];
// Scheduling Request Config
SCHEDULING_REQUEST_CONFIG_NB_IoT scheduling_request_config[NUMBER_OF_UE_MAX_NB_IoT];
// Transmission mode per UE
uint8_t transmission_mode[NUMBER_OF_UE_MAX_NB_IoT];
/// cba_last successful reception for each group, used for collision detection
uint8_t cba_last_reception[4];
// Pointers for active physicalConfigDedicated to be applied in current subframe
struct PhysicalConfigDedicated *physicalConfigDedicated[NUMBER_OF_UE_MAX_NB_IoT];
//Pointers for actve physicalConfigDedicated for NB-IoT to be applied in current subframe
struct PhysicalConfigDedicated_NB_r13 *phy_config_dedicated_NB[NUMBER_OF_UE_MAX_NB_IoT];
///
uint32_t rb_mask_ul[4];
/// Information regarding TM5
MU_MIMO_mode_NB_IoT mu_mimo_mode[NUMBER_OF_UE_MAX_NB_IoT];
/// target_ue_dl_mcs : only for debug purposes
uint32_t target_ue_dl_mcs;
/// target_ue_ul_mcs : only for debug purposes
......@@ -647,26 +641,23 @@ typedef struct PHY_VARS_eNB_NB_IoT_s {
uint32_t ue_dl_rb_alloc;
/// target ul PRBs : only for debug
uint32_t ue_ul_nb_rb;
///check for Total Transmissions
uint32_t check_for_total_transmissions;
///check for MU-MIMO Transmissions
uint32_t check_for_MUMIMO_transmissions;
///check for SU-MIMO Transmissions
uint32_t check_for_SUMIMO_transmissions;
///check for FULL MU-MIMO Transmissions
uint32_t FULL_MUMIMO_transmissions;
/// Counter for total bitrate, bits and throughput in downlink
uint32_t total_dlsch_bitrate;
///
uint32_t total_transmitted_bits;
///
uint32_t total_system_throughput;
///
int hw_timing_advance;
///
time_stats_t_NB_IoT phy_proc;
time_stats_t_NB_IoT phy_proc_tx;
time_stats_t_NB_IoT phy_proc_rx;
......@@ -699,10 +690,10 @@ typedef struct PHY_VARS_eNB_NB_IoT_s {
time_stats_t_NB_IoT ulsch_tc_intl1_stats;
time_stats_t_NB_IoT ulsch_tc_intl2_stats;
#ifdef LOCALIZATION
#ifdef LOCALIZATION
/// time state for localization
time_stats_t_NB_IoT localization_stats;
#endif
#endif
int32_t pucch1_stats_cnt[NUMBER_OF_UE_MAX_NB_IoT][10];
int32_t pucch1_stats[NUMBER_OF_UE_MAX_NB_IoT][10*1024];
......@@ -843,34 +834,29 @@ typedef struct {
uint32_t IMSImod1024;
uint32_t PF;
uint32_t PO;
// For abstraction-purposes only
uint8_t sr[10];
uint8_t pucch_sel[10];
uint8_t pucch_payload[22];
//UE_MODE_t UE_mode[NUMBER_OF_CONNECTED_eNB_MAX];
/// cell-specific reference symbols
//cell-specific reference symbols
uint32_t lte_gold_table[7][20][2][14];
/// UE-specific reference symbols (p=5), TM 7
//UE-specific reference symbols (p=5), TM 7
uint32_t lte_gold_uespec_port5_table[20][38];
/// ue-specific reference symbols
//ue-specific reference symbols
uint32_t lte_gold_uespec_table[2][20][2][21];
/// mbsfn reference symbols
//mbsfn reference symbols
uint32_t lte_gold_mbsfn_table[10][3][42];
///
uint32_t X_u[64][839];
///
uint32_t high_speed_flag;
uint32_t perfect_ce;
int16_t ch_est_alpha;
int generate_ul_signal[NUMBER_OF_CONNECTED_eNB_MAX];
///
UE_SCAN_INFO_NB_IoT_t scan_info[NB_BANDS_MAX_NB_IoT];
///
char ulsch_no_allocation_counter[NUMBER_OF_CONNECTED_eNB_MAX];
/*
......@@ -935,21 +921,16 @@ typedef struct {
*/
/// if ==0 enables phy only test mode
int mac_enabled;
/// Flag to initialize averaging of PHY measurements
int init_averaging;
/// \brief sinr for all subcarriers of the current link (used only for abstraction).
/// - first index: ? [0..12*N_RB_DL[
double *sinr_dB;
/// \brief sinr for all subcarriers of first symbol for the CQI Calculation.
/// - first index: ? [0..12*N_RB_DL[
double *sinr_CQI_dB;
/// sinr_effective used for CQI calulcation
double sinr_eff;
/// N0 (used for abstraction)
double N0;
/*
......@@ -1123,5 +1104,5 @@ static inline int release_thread(pthread_mutex_t *mutex,int *instance_cnt,char *
//#include "PHY/LTE_ESTIMATION/defs.h"
//#include "SIMULATION/ETH_TRANSPORT/defs.h"
#endif
//#endif
#endif // __PHY_DEFS__H__
......@@ -176,9 +176,8 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
PHY_VARS_eNB_NB_IoT *eNB = PHY_vars_eNB_NB_IoT_g[0][Sched_INFO->CC_id];
eNB_rxtx_proc_NB_IoT_t *proc = &eNB->proc.proc_rxtx[0];
NB_IoT_eNB_NPBCH_t *npbch;
///
int i;
//module_id_t Mod_id = Sched_INFO->module_id;
//uint8_t CC_id = Sched_INFO->CC_id;
nfapi_dl_config_request_t *DL_req = Sched_INFO->DL_req;
......@@ -186,8 +185,8 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
nfapi_hi_dci0_request_t *HI_DCI0_req = Sched_INFO->HI_DCI0_req;
nfapi_tx_request_t *TX_req = Sched_INFO->TX_req;
uint32_t hypersfn = Sched_INFO->hypersfn;
frame_t frame = Sched_INFO->frame;
//uint32_t hypersfn = Sched_INFO->hypersfn;
//frame_t frame = Sched_INFO->frame; // unused for instance
sub_frame_t subframe = Sched_INFO->subframe;
// implicite declaration of AssertFatal
......@@ -198,13 +197,11 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
uint8_t number_ul_pdu = UL_req->ul_config_request_body.number_of_pdus;
uint8_t number_ul_dci = HI_DCI0_req->hi_dci0_request_body.number_of_dci;
//uint8_t number_pdsch_rnti = DL_req->number_pdsch_rnti; // for the moment not used
// at most 2 pdus (DCI) in the case of NPDCCH
nfapi_dl_config_request_pdu_t *dl_config_pdu;
nfapi_ul_config_request_pdu_t *ul_config_pdu;
nfapi_hi_dci0_request_pdu_t *hi_dci0_pdu;
//clear previous possible allocation (maybe someone else should be added)
for(int i = 0; i < NUMBER_OF_UE_MAX_NB_IoT; i++)
{
......@@ -215,7 +212,6 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
eNB->ndlsch[i]->subframe_tx[subframe] = 0;
}
/*clear the DCI allocation maps for new subframe*/
if(eNB->nulsch[i])
{
......@@ -227,7 +223,6 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
}
for (i=0;i<number_dl_pdu;i++) //in principle this should be at most 2 (in case of DCI)
{
dl_config_pdu = &DL_req->dl_config_request_body.dl_config_pdu_list[i];
......@@ -316,7 +311,8 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
//XXX problem: although we may have nothing to transmit this function should be always triggered in order to allow the PHY layer to complete the repetitions
//of previous Transport Blocks
phy_procedures_eNB_TX_NB_IoT(eNB,proc,NULL);
//phy_procedures_eNB_TX_NB_IoT(eNB,proc,NULL);
phy_procedures_eNB_TX_NB_IoT(eNB,proc,0); // check if 0 or NULL ?!
}
......
......@@ -37,7 +37,7 @@
#include "SCHED/extern_NB_IoT.h"
//#include "PHY/LTE_TRANSPORT/if4_tools.h"
//#include "PHY/LTE_TRANSPORT/if5_tools.h"
//#include "RRC/LITE/proto_nb_iot.h"
#include "RRC/LITE/proto_NB_IoT.h"
#include "SIMULATION/TOOLS/defs.h" // purpose: included for taus() function
//#ifdef EMOS
//#include "SCHED/phy_procedures_emos.h"
......@@ -109,13 +109,13 @@ extern int rx_sig_fifo;
*/
void common_signal_procedures_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_NB_IoT_t *proc)
{
NB_IoT_DL_FRAME_PARMS *fp=&eNB->frame_parms_NB_IoT;
NB_IoT_DL_FRAME_PARMS *fp = &eNB->frame_parms_NB_IoT;
int **txdataF = eNB->common_vars.txdataF[0];
int subframe = proc->subframe_tx;
int frame = proc->frame_tx;
uint16_t Ntti = 10;//ntti = 10
int RB_IoT_ID;// XXX should be initialized (RB reserved for NB-IoT, PRB index)
int With_NSSS;// With_NSSS = 1; if the frame include a sub-Frame with NSSS signal
uint16_t Ntti = 10; //ntti = 10
int RB_IoT_ID; // XXX should be initialized (RB reserved for NB-IoT, PRB index)
int With_NSSS; // With_NSSS = 1; if the frame include a sub-Frame with NSSS signal
/*NSSS only happened in the even frame*/
if(frame%2==0)
......@@ -184,7 +184,6 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_
UL_INFO->frame = frame;
UL_INFO->subframe = subframe;
T(T_ENB_PHY_UL_TICK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe));
T(T_ENB_PHY_INPUT_SIGNAL, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(0),
......@@ -202,7 +201,7 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_
// Check for active processes in current subframe
// NB-IoT subframe2harq_pid is in dci_tools, always set the frame type to FDD, this would become simpler.
harq_pid = subframe2harq_pid(fp,frame,subframe);
harq_pid = subframe2harq_pid_NB_IoT(fp,frame,subframe);
// delete the cba
// delete the srs
......@@ -266,13 +265,15 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_
eNB->pusch_stats_rb[i][(frame*10)+subframe] = eNB->nulsch[i]->harq_process->nb_rb;
eNB->pusch_stats_round[i][(frame*10)+subframe] = eNB->nulsch[i]->harq_process->round;
eNB->pusch_stats_mcs[i][(frame*10)+subframe] = eNB->nulsch[i]->harq_process->mcs;
/*
need for rx_ulsch function for NB_IoT
rx_ulsch(eNB,proc,
eNB->UE_stats[i].sector, // this is the effective sector id
i,
eNB->nulsch,
0);
*/
ret = ulsch_decoding_NB_IoT(eNB,proc,
i,
0, // control_only_flag
......@@ -283,19 +284,25 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_
eNB->nulsch[(uint32_t)i]->harq_process->delta_TF = get_hundred_times_delta_IF_eNB_NB_IoT(eNB,i,harq_pid, 0); // 0 means bw_factor is not considered
eNB->UE_stats[i].nulsch_decoding_attempts[harq_pid][eNB->nulsch[i]->harq_process->round]++;
eNB->nulsch[i]->harq_process->subframe_scheduling_flag=0;
if (eNB->nulsch[i]->harq_process->cqi_crc_status == 1)
{
if (eNB->nulsch[i]->harq_process->cqi_crc_status == 1) {
extract_CQI(eNB->nulsch[i]->harq_process->o,
eNB->nulsch[i]->harq_process->uci_format,
&eNB->UE_stats[i],
fp->N_RB_DL,
&rnti, &access_mode);
eNB->UE_stats[i].rank = eNB->nulsch[i]->harq_process->o_RI[0];
}
if (ret == (1+MAX_TURBO_ITERATIONS))
{
T(T_ENB_PHY_ULSCH_UE_NACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(i), T_INT(eNB->nulsch[i]->rnti),
if (ret == (1+MAX_TURBO_ITERATIONS)) {
T(T_ENB_PHY_ULSCH_UE_NACK,
T_INT(eNB->Mod_id),
T_INT(frame),
T_INT(subframe),
T_INT(i),
T_INT(eNB->nulsch[i]->rnti),
T_INT(harq_pid));
eNB->UE_stats[i].ulsch_round_errors[harq_pid][eNB->nulsch[i]->harq_process->round]++;
......@@ -337,10 +344,10 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_
if (eNB->mac_enabled == 1)
{
//instead rx_sdu to report The Uplink data not received successfully to MAC
(UL_INFO->crc_ind.crc_pdu_list+i)->crc_indication_rel8.crc_flag= 1;
(UL_INFO->crc_ind.crc_pdu_list+i)->crc_indication_rel8.crc_flag = 1;
UL_INFO->crc_ind.number_of_crcs++;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.rnti= eNB->nulsch[i]->rnti;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->data= NULL;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.rnti = eNB->nulsch[i]->rnti;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->data = NULL;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_indication_rel8.length = 0;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.harq_pid = harq_pid;
UL_INFO->RX_NPUSCH.number_of_pdus++;
......@@ -358,10 +365,7 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_
for (j=0; j<fp->nb_antennas_rx; j++)
//this is the RSSI per RB
eNB->UE_stats[i].UL_rssi[j] =
dB_fixed(eNB->pusch_vars[i]->ulsch_power[j]*
(eNB->nulsch[i]->harq_process->nb_rb*12)/
fp->ofdm_symbol_size) -
eNB->rx_total_gain_dB -
dB_fixed(eNB->pusch_vars[i]->ulsch_power[j] * (eNB->nulsch[i]->harq_process->nb_rb*12) / fp->ofdm_symbol_size) - eNB->rx_total_gain_dB -
hundred_times_log10_NPRB_NB_IoT[eNB->nulsch[i]->harq_process->nb_rb-1]/100 -
get_hundred_times_delta_IF_eNB_NB_IoT(eNB,i,harq_pid, 0)/100;
//for NB-IoT PHICH not work
......@@ -379,9 +383,9 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_
if (eNB->mac_enabled)
{
// store successful MSG3 in UL_Info instead rx_sdu
(UL_INFO->crc_ind.crc_pdu_list+i)->crc_indication_rel8.crc_flag= 0;
(UL_INFO->crc_ind.crc_pdu_list+i)->crc_indication_rel8.crc_flag = 0;
UL_INFO->crc_ind.number_of_crcs++;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.rnti= eNB->nulsch[i]->rnti;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.rnti = eNB->nulsch[i]->rnti;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->data = eNB->nulsch[i]->harq_process->b;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_indication_rel8.length = eNB->nulsch[i]->harq_process->TBS>>3;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.harq_pid = harq_pid;
......@@ -412,36 +416,36 @@ void phy_procedures_eNB_uespec_RX_NB_IoT(PHY_VARS_eNB_NB_IoT *eNB,eNB_rxtx_proc_
{ //harq_processes
for (j=0; j<eNB->ndlsch[i]->Mlimit; j++)
{
eNB->UE_stats[i].dlsch_NAK[k][j]=0;
eNB->UE_stats[i].dlsch_ACK[k][j]=0;
eNB->UE_stats[i].dlsch_trials[k][j]=0;
eNB->UE_stats[i].dlsch_NAK[k][j] = 0;
eNB->UE_stats[i].dlsch_ACK[k][j] = 0;
eNB->UE_stats[i].dlsch_trials[k][j] = 0;
}
eNB->UE_stats[i].dlsch_l2_errors[k]=0;
eNB->UE_stats[i].ulsch_errors[k]=0;
eNB->UE_stats[i].ulsch_consecutive_errors=0;
eNB->UE_stats[i].dlsch_l2_errors[k] = 0;
eNB->UE_stats[i].ulsch_errors[k] = 0;
eNB->UE_stats[i].ulsch_consecutive_errors = 0;
for (j=0; j<eNB->nulsch[i]->Mlimit; j++)
{
eNB->UE_stats[i].nulsch_decoding_attempts[k][j]=0;
eNB->UE_stats[i].ulsch_decoding_attempts_last[k][j]=0;
eNB->UE_stats[i].ulsch_round_errors[k][j]=0;
eNB->UE_stats[i].ulsch_round_fer[k][j]=0;
eNB->UE_stats[i].nulsch_decoding_attempts[k][j] = 0;
eNB->UE_stats[i].ulsch_decoding_attempts_last[k][j] = 0;
eNB->UE_stats[i].ulsch_round_errors[k][j] = 0;
eNB->UE_stats[i].ulsch_round_fer[k][j] = 0;
}
}
eNB->UE_stats[i].dlsch_sliding_cnt=0;
eNB->UE_stats[i].dlsch_NAK_round0=0;
eNB->UE_stats[i].dlsch_mcs_offset=0;
eNB->UE_stats[i].dlsch_sliding_cnt = 0;
eNB->UE_stats[i].dlsch_NAK_round0 = 0;
eNB->UE_stats[i].dlsch_mcs_offset = 0;
} // Msg3_flag==1
else
{ // Msg3_flag == 0
if (eNB->mac_enabled==1)
if (eNB->mac_enabled == 1)
{
// store successful Uplink data in UL_Info instead rx_sdu
(UL_INFO->crc_ind.crc_pdu_list+i)->crc_indication_rel8.crc_flag= 0;
(UL_INFO->crc_ind.crc_pdu_list+i)->crc_indication_rel8.crc_flag = 0;
UL_INFO->crc_ind.number_of_crcs++;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.rnti= eNB->nulsch[i]->rnti;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.rnti = eNB->nulsch[i]->rnti;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->data = eNB->nulsch[i]->harq_process->b;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_indication_rel8.length = eNB->nulsch[i]->harq_process->TBS>>3;
(UL_INFO->RX_NPUSCH.rx_pdu_list+i)->rx_ue_information.harq_pid = harq_pid;
......
......@@ -32,6 +32,7 @@
//#include "defs_nb_iot.h"
#include "PHY/defs_NB_IoT.h"
#include "PHY/TOOLS/dB_routines.h"
//#include "PHY/LTE_TRANSPORT/proto_nb_iot.h"
//#include "PHY/extern_NB_IoT.h"
......
......@@ -31,6 +31,7 @@
//#include "defs_NB_IoT.h"
//#include "extern.h"
//#include "RRC/LITE/extern_NB_IoT.h"
//#include "common/utils/collection/tree.h"
#include "LAYER2/MAC/extern_NB_IoT.h"
//#include "COMMON/openair_defs.h"
//#include "COMMON/platform_types.h"
......
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