From 9fcca73f538bf710d25f93ea9e03758d821a4b8e Mon Sep 17 00:00:00 2001 From: Xiwen JIANG <xiwen.jiang@eureocm.fr> Date: Mon, 21 Mar 2016 16:55:26 +0100 Subject: [PATCH] lte softmodem adaption for massive antennas (not complete) --- openair1/PHY/INIT/lte_init.c | 2 +- openair1/PHY/impl_defs_lte.h | 5 +++++ openair1/SCHED/phy_procedures_lte_eNb.c | 23 +++++++++++++++-------- targets/RT/USER/lte-softmodem.c | 4 ++-- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/openair1/PHY/INIT/lte_init.c b/openair1/PHY/INIT/lte_init.c index e604d599a1..672a3a51ef 100644 --- a/openair1/PHY/INIT/lte_init.c +++ b/openair1/PHY/INIT/lte_init.c @@ -1305,7 +1305,7 @@ int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNB, for (i=0; i<2; i++) { // 2 is the total number of cell specific antenna ports eNB_common_vars->cell_spec_bf_weights[eNB_id][i] = (int32_t **)malloc16_clear(frame_parms->nb_antennas_tx*sizeof(int32_t*)); for (j=0; j<frame_parms->nb_antennas_tx; j++) { - eNB_common_vars->cell_spec_bf_weights[eNB_id][i][j] = (int32_t*)malloc16_clear(OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES*sizeof(int32_t)); + eNB_common_vars->cell_spec_bf_weights[eNB_id][i][j] = (int32_t *)malloc16_clear(OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES*sizeof(int32_t)); #ifdef DEBUG_PUY msg("[openair][LTE_PHY][INIT] lte_eNB_common_vars->cell_spec_bf_weights[%d][%d][%d] = %p (%d bytes)\n", eNB_id,i,j,eNB_common_vars->cell_spec_bf_weights[eNB_id][i][j], diff --git a/openair1/PHY/impl_defs_lte.h b/openair1/PHY/impl_defs_lte.h index 134a92e15d..864d2d5d19 100644 --- a/openair1/PHY/impl_defs_lte.h +++ b/openair1/PHY/impl_defs_lte.h @@ -645,6 +645,11 @@ typedef struct { /// - third index: tx antenna [0..nb_antennas_tx[ /// - fourth index: sample [0..] int32_t **ue_spec_bf_weights[3][8]; + /// \brief Holds the tdd reciprocity calibration coefficients + /// - first index: eNB id [0..2] (hard coded) + /// - second index: tx antenna [0..nb_antennas_tx[ + /// - third index: frenquency [0..] + int32_t **tdd_calib_coeffs[3]; } LTE_eNB_COMMON; typedef struct { diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index 082f0c0568..dece28f78e 100755 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -2520,14 +2520,21 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e if (abstraction_flag==0) { start_meas(&phy_vars_eNB->ofdm_mod_stats); - do_OFDM_mod(phy_vars_eNB->lte_eNB_common_vars.txdataF[0], - phy_vars_eNB->lte_eNB_common_vars.txdata[0], - phy_vars_eNB->proc[sched_subframe].frame_tx,subframe<<1, - &phy_vars_eNB->lte_frame_parms); - do_OFDM_mod(phy_vars_eNB->lte_eNB_common_vars.txdataF[0], - phy_vars_eNB->lte_eNB_common_vars.txdata[0], - phy_vars_eNB->proc[sched_subframe].frame_tx,1+(subframe<<1), - &phy_vars_eNB->lte_frame_parms); + + do_OFDM_mod_l(phy_vars_eNB->lte_eNB_common_vars, + 0, + subframe<<1, + &phy_vars_eNB->lte_frame_parms, + num_pdcch_symbols, + eNB->transmission_mode[(uint8_t)UE_id]); + + do_OFDM_mod_l(phy_vars_eNB->lte_eNB_common_vars, + 0, + 1+(subframe<<1), + &phy_vars_eNB->lte_frame_parms, + num_pdcch_symbols, + eNB->transmission_mode[(uint8_t)UE_id]); + stop_meas(&phy_vars_eNB->ofdm_mod_stats); } diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 72d32fbdef..0fe4e2342c 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -2755,7 +2755,7 @@ int main( int argc, char **argv ) frame_parms[CC_id]->nb_antenna_ports_eNB = (transmission_mode == 1 || transmission_mode ==7) ? 1 : 2; //initial value overwritten by initial sync later } - frame_parms[CC_id]->mode1_flag = (transmission_mode == 1) ? 1 : 0; + frame_parms[CC_id]->mode1_flag = (transmission_mode == 1 || transmission_mode ==7) ? 1 : 0; frame_parms[CC_id]->phich_config_common.phich_resource = oneSixth; frame_parms[CC_id]->phich_config_common.phich_duration = normal; // UL RS Config @@ -3188,7 +3188,7 @@ int main( int argc, char **argv ) openair_daq_vars.timing_advance = 160; #endif if (setup_ue_buffers(UE,&openair0_cfg[0],rf_map)!=0) { - printf("Error setting up eNB buffer\n"); + printf("Error setting up UE buffer\n"); exit(-1); } -- 2.26.2