From 1d849624c444b6651c6e49f2f4560183f1b78498 Mon Sep 17 00:00:00 2001 From: Raymond Knopp Date: Sun, 22 Feb 2015 20:41:44 +0000 Subject: [PATCH] git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6598 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair1/PHY/LTE_TRANSPORT/dci_tools.c | 26 ++++++++++--------- openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c | 2 +- .../PHY/LTE_TRANSPORT/dlsch_demodulation.c | 1 + openair1/PHY/LTE_TRANSPORT/lte_mcs.c | 2 +- openair1/SCHED/phy_procedures_lte_ue.c | 9 ++++--- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c index 92018c1f61..1ccb3196fc 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c @@ -658,7 +658,7 @@ int generate_eNB_dlsch_params_from_dci(uint8_t subframe, rv = ((DCI1A_10MHz_FDD_t *)dci_pdu)->rv; TPC = ((DCI1A_10MHz_FDD_t *)dci_pdu)->TPC; harq_pid = ((DCI1A_10MHz_FDD_t *)dci_pdu)->harq_pid; - // printf("FDD 1A: mcs %d, rballoc %x,rv %d, NPRB %d\n",mcs,rballoc,rv,NPRB); + //printf("FDD 1A: mcs %d, rballoc %x,rv %d, TPC %d\n",mcs,rballoc,rv,TPC); } dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; @@ -740,7 +740,7 @@ int generate_eNB_dlsch_params_from_dci(uint8_t subframe, if (NPRB==0) return(-1); - // printf("NPRB %d, nb_rb %d, ndi %d\n",NPRB,dlsch0_harq->nb_rb,ndi); + //printf("NPRB %d, nb_rb %d, ndi %d\n",NPRB,dlsch0_harq->nb_rb,ndi); dlsch0_harq->rvidx = rv; dlsch0_harq->Nl = 1; @@ -3548,7 +3548,6 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, dlsch0_harq = dlsch[0]->harq_processes[harq_pid]; // see 36-212 V8.6.0 p. 45 NPRB = (TPC&1) + 2; - // toggle the ndi } else { @@ -3589,41 +3588,44 @@ int generate_ue_dlsch_params_from_dci(uint8_t subframe, } // change the mcs limit from 7 to 8, supported by MAC if (mcs > 10) { - LOG_E(PHY,"Format 1A: unlikely mcs for format 1A (%d)\n",mcs); + LOG_E(PHY,"Format 1A: subframe %d unlikely mcs for format 1A (%d), TPC %d rv %d\n",subframe,mcs,TPC,rv); return(-1); } if ((rnti==si_rnti) || (rnti==p_rnti) || (rnti==ra_rnti)){ // - // toggle the ndi, always toggled for si,p and ra - ndi = 1-dlsch0_harq->DCINdi; + if (dlsch0_harq->round == 4) { + dlsch0_harq->round = 0; + dlsch0_harq->first_tx = 1; + } + // if (dlsch0_harq->round == 0) + // ndi = 1-dlsch0_harq->DCINdi; } dlsch[0]->current_harq_pid = harq_pid; - // msg("Format 1A: harq_pid %d\n",harq_pid); + dlsch0_harq->rvidx = rv; dlsch0_harq->Nl = 1; // dlsch[0]->layer_index = 0; dlsch0_harq->mimo_mode = frame_parms->mode1_flag == 1 ?SISO : ALAMOUTI; dlsch0_harq->dl_power_off = 1; //no power offset - LOG_D(PHY,"UE (%x/%d): Subframe %d Format1A DCI: ndi %d, old_ndi %d (first tx %d) harq_status %d\n",dlsch[0]->rnti,harq_pid,subframe,ndi,dlsch0_harq->DCINdi, - dlsch0_harq->first_tx,dlsch0_harq->status); - if ((rnti != si_rnti) && (rnti!=ra_rnti)) { + //LOG_I(PHY,"UE (%x/%d): Subframe %d Format1A DCI: ndi %d, old_ndi %d (first tx %d) harq_status %d\n",dlsch[0]->rnti,harq_pid,subframe,ndi,dlsch0_harq->DCINdi, + //dlsch0_harq->first_tx,dlsch0_harq->status); if ((ndi!=dlsch0_harq->DCINdi)|| // DCI has been toggled or this is the first transmission (dlsch0_harq->first_tx==1)) { dlsch0_harq->round = 0; if (dlsch0_harq->first_tx==1) { - LOG_I(PHY,"[PDSCH %x/%d] Format 1A DCI First TX: Clearing flag\n"); + //LOG_I(PHY,"[PDSCH %x/%d] Format 1A DCI First TX: Clearing flag\n"); dlsch0_harq->first_tx = 0; } } - } dlsch0_harq->DCINdi = ndi; dlsch0_harq->mcs = mcs; dlsch0_harq->TBS = TBStable[get_I_TBS(mcs)][NPRB-1]; dlsch[0]->rnti = rnti; dlsch0 = dlsch[0]; + //printf("Format 1A: harq_pid %d, nb_rb %d, round %d\n",harq_pid,dlsch0_harq->nb_rb,dlsch0_harq->round); break; case format1: diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c index 224d8a91e3..0324b1b736 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c @@ -291,7 +291,7 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue, (r==0) ? harq_process->F : 0); #ifdef DEBUG_DLSCH_DECODING - msg("HARQ_PID %d Rate Matching Segment %d (coded bits %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...\n", + LOG_I(PHY,"HARQ_PID %d Rate Matching Segment %d (coded bits %d,unpunctured/repeated bits %d, TBS %d, mod_order %d, nb_rb %d, Nl %d, rv %d, round %d)...\n", harq_pid,r, G, Kr*3, harq_process->TBS, diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c index f6a95f1a62..e5bad6d49d 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c @@ -2818,6 +2818,7 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF, if (rb_alloc_ind==1) { + //printf("demod: rb %d\n",rb); *pmi_loc = (pmi>>((rb>>2)<<1))&3; // printf("rb %d: sb %d : pmi %d\n",rb,rb>>2,*pmi_loc); diff --git a/openair1/PHY/LTE_TRANSPORT/lte_mcs.c b/openair1/PHY/LTE_TRANSPORT/lte_mcs.c index 402a02e02d..2f5da6902a 100644 --- a/openair1/PHY/LTE_TRANSPORT/lte_mcs.c +++ b/openair1/PHY/LTE_TRANSPORT/lte_mcs.c @@ -335,7 +335,7 @@ int get_G(LTE_DL_FRAME_PARMS *frame_parms,uint16_t nb_rb,uint32_t *rb_alloc,uint if (is_pmch_subframe(frame,subframe,frame_parms) == 0) { G_adj= adjust_G(frame_parms,rb_alloc,mod_order,subframe); - // printf("get_G subframe %d mod_order %d, nb_rb %d: rb_alloc %x,%x,%x,%x, G_adj %d\n",subframe,mod_order,nb_rb,rb_alloc[3],rb_alloc[2],rb_alloc[1],rb_alloc[0], G_adj); + //printf("get_G subframe %d mod_order %d, nb_rb %d: rb_alloc %x,%x,%x,%x, G_adj %d\n",subframe,mod_order,nb_rb,rb_alloc[3],rb_alloc[2],rb_alloc[1],rb_alloc[0], G_adj); if (frame_parms->Ncp==NORMAL) { // normal prefix // PDDDPDD PDDDPDD - 13 PDSCH symbols, 10 full, 3 w/ pilots = 10*12 + 3*8 // PCDDPDD PDDDPDD - 12 PDSCH symbols, 9 full, 3 w/ pilots = 9*12 + 3*8 diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c index 32f928eebb..8c9755a129 100755 --- a/openair1/SCHED/phy_procedures_lte_ue.c +++ b/openair1/SCHED/phy_procedures_lte_ue.c @@ -1835,7 +1835,7 @@ void lte_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst phy_vars_ue->lte_frame_parms.phich_config_common.phich_duration, phy_vars_ue->lte_frame_parms.phich_config_common.phich_resource); if (frame_rx%100 == 0) { - LOG_I(PHY,"[UE %d] frame %d, slot %d, PBCH: mode1_flag %d, tx_ant %d, frame_tx %d, phase %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6\n", + LOG_I(PHY,"[UE %d] frame %d, slot %d, PBCH: mode1_flag %d, tx_ant %d, frame_tx %d, phase %d. N_RB_DL %d, phich_duration %d, phich_resource %d/6,Frequency offset %d Hz (%d)\n", phy_vars_ue->Mod_id, frame_rx, slot_rx, @@ -1845,7 +1845,8 @@ void lte_ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst pbch_phase, phy_vars_ue->lte_frame_parms.N_RB_DL, phy_vars_ue->lte_frame_parms.phich_config_common.phich_duration, - phy_vars_ue->lte_frame_parms.phich_config_common.phich_resource); + phy_vars_ue->lte_frame_parms.phich_config_common.phich_resource, + phy_vars_ue->lte_ue_common_vars.freq_offset,openair_daq_vars.freq_offset); //dump_frame_parms(&phy_vars_ue->lte_frame_parms); } #endif @@ -2746,8 +2747,8 @@ int lte_ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *phy_vars_ue,uint8_t abst LOG_D(PHY,"[UE %d] Frame %d, subframe %d, received SI in error\n",phy_vars_ue->Mod_id,frame_rx,subframe_prev); #endif - dump_dlsch_SI(phy_vars_ue,eNB_id,subframe_prev); - exit(-1); + //dump_dlsch_SI(phy_vars_ue,eNB_id,subframe_prev); + //exit(-1); vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_OUT); stop_meas(&phy_vars_ue->phy_proc_rx); return(-1);