From 20cc8bc9f667ec4c75ea2f4e5c118d7b54c5dee4 Mon Sep 17 00:00:00 2001 From: lukashov Date: Thu, 3 Mar 2016 16:35:50 +0100 Subject: [PATCH] Fixing FDD for TM4 --- openair1/PHY/LTE_TRANSPORT/dci_tools.c | 13 ++++++++----- openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c | 4 +--- openair1/SIMULATION/LTE_PHY/dlsim.c | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c index efead973ae..9e56da1e74 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c @@ -1586,7 +1586,7 @@ int generate_eNB_dlsch_params_from_dci(int frame, dlsch0_harq->mimo_mode = DUALSTREAM_PUSCH_PRECODING; dlsch0_harq->pmi_alloc = DL_pmi_single; dlsch1_harq->mimo_mode = DUALSTREAM_PUSCH_PRECODING; - dlsch1_harq->pmi_alloc = DL_pmi_single; //this is actually never used, since the PMI for the second codeword is always the opposote of the first one + dlsch1_harq->pmi_alloc = DL_pmi_single; break; default: break; @@ -3337,7 +3337,8 @@ int dump_dci(LTE_DL_FRAME_PARMS *frame_parms, DCI_ALLOC_t *dci) break; case 25: - LOG_D(PHY,"DCI format2 2 antennas (FDD, 5 MHz), rnti %x (%x): rah %d, rb_alloc %x, mcs %d, harq_pid %d, ndi %d, RV %d, TPC %d\n", + //LOG_D + printf("DCI format2 2 antennas (FDD, 5 MHz), rnti %x (%x): rah %d, rb_alloc %x, mcs1 %d, mcs2 %d, harq_pid %d, ndi1 %d, ndi2 %d, RV1 %d, RV2 %d, swap %d, TPMI %d, TPC %d\n", dci->rnti, ((uint32_t*)&dci->dci_pdu)[0], ((DCI2_5MHz_2A_FDD_t *)&dci->dci_pdu[0])->rah, @@ -4772,8 +4773,10 @@ int generate_ue_dlsch_params_from_dci(int frame, return(-1); } - - tbswap = ((DCI2_5MHz_2A_TDD_t *)dci_pdu)->tb_swap; + if (frame_type == TDD) + tbswap = ((DCI2_5MHz_2A_TDD_t *)dci_pdu)->tb_swap; + else + tbswap = ((DCI2_5MHz_2A_FDD_t *)dci_pdu)->tb_swap; if (tbswap == 0) { dlsch0 = dlsch[0]; @@ -5899,7 +5902,7 @@ uint16_t quantize_subband_pmi(PHY_MEASUREMENTS *meas,uint8_t eNB_id,int nb_rb) else pmiq = PMI_2A_R1_1j; - // printf("subband %d, pmi_re %d, pmi_im %d, pmiq %d \n",i,pmi_re,pmi_im,pmiq); + // printf("subband %d, pmi_re %d, pmi_im %d, pmiq %d \n",i,pmi_re,pmi_im,pmiq); // printf("subband %d, pmi%d \n",i,pmiq); //According to Section 7.2.4 of 36.213 diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c index 9e1c187774..6718c8d8e4 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c @@ -776,9 +776,7 @@ int allocate_REs_in_RB(LTE_DL_FRAME_PARMS *frame_parms, else if ((mimo_mode >= DUALSTREAM_UNIFORM_PRECODING1)&&(mimo_mode <= DUALSTREAM_PUSCH_PRECODING)) { // this is for transmission mode 4 (1 layer) *re_allocated = *re_allocated + 1; - //amp = (int16_t)(((int32_t)tmp_amp*ONE_OVER_SQRT2_Q15)>>15); - amp = tmp_amp/2; - gain_lin_QPSK = (int16_t)((amp*ONE_OVER_SQRT2_Q15)>>15); + if (precoder_index==0) { precoder_index0 = 0; //[1 1] diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c index 7e59003dfd..23692b9f26 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim.c @@ -1785,7 +1785,7 @@ n(tikz_fname,"w"); } printf ("TM4 with tpmi =%d\n", ((DCI2_5MHz_2A_TDD_t *)&DLSCH_alloc_pdu_1[k])->tpmi); - if (((DCI2_5MHz_2A_TDD_t *)&DLSCH_alloc_pdu_1[k])->tpmi == 2) { + if ((((DCI2_5MHz_2A_TDD_t *)&DLSCH_alloc_pdu_1[k])->tpmi == 2) || (((DCI2_5MHz_2A_FDD_t *)&DLSCH_alloc_pdu_1[k])->tpmi == 2)) { PHY_vars_eNB->eNB_UE_stats[0].DL_pmi_single = (unsigned short)(taus()&0xffff); @@ -2771,7 +2771,7 @@ n(tikz_fname,"w"); } - if (transmission_mode==4 && (((DCI2_5MHz_2A_TDD_t *)&DLSCH_alloc_pdu_1[k])->tpmi == 2)){ + if (transmission_mode==4 && ((((DCI2_5MHz_2A_TDD_t *)&DLSCH_alloc_pdu_1[k])->tpmi == 2) ||(((DCI2_5MHz_2A_FDD_t *)&DLSCH_alloc_pdu_1[k])->tpmi == 2))){ PHY_vars_eNB->dlsch_eNB[0][0]->harq_processes[0]->pmi_alloc = quantize_subband_pmi(&PHY_vars_UE->PHY_measurements,0,PHY_vars_eNB->lte_frame_parms.N_RB_DL); PHY_vars_UE->dlsch_ue[0][0]->pmi_alloc = quantize_subband_pmi(&PHY_vars_UE->PHY_measurements,0,PHY_vars_UE->lte_frame_parms.N_RB_DL); }