From 79d77a4af8b5ed572b3664c3f741555cf3568068 Mon Sep 17 00:00:00 2001 From: "islam.galal" <igalal.ext@orange.com> Date: Mon, 14 Aug 2017 18:43:49 +0200 Subject: [PATCH] debugging for SIB1-BR --- openair1/PHY/CODING/lte_rate_matching.c | 2 +- openair1/PHY/LTE_TRANSPORT/defs.h | 4 +- openair1/PHY/LTE_TRANSPORT/dlsch_coding.c | 20 ++--- openair1/SCHED/phy_procedures_lte_eNb.c | 96 ++++++++++++++--------- openair2/LAYER2/MAC/eNB_scheduler_bch.c | 52 ++++++------ openair2/RRC/LITE/MESSAGES/asn1_msg.c | 3 +- targets/RT/USER/lte-ru.c | 7 +- 7 files changed, 109 insertions(+), 75 deletions(-) diff --git a/openair1/PHY/CODING/lte_rate_matching.c b/openair1/PHY/CODING/lte_rate_matching.c index a25dbe8b79..7d48021721 100644 --- a/openair1/PHY/CODING/lte_rate_matching.c +++ b/openair1/PHY/CODING/lte_rate_matching.c @@ -520,7 +520,7 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC, GpmodC = Gp%C; #ifdef RM_DEBUG - printf("lte_rate_matching_turbo: Ncb %d, Kw %d, Nir/C %d, rvidx %d, G %d, Qm %d, Nl%d, r %d\n",Ncb,3*(RTC<<5),Nir/C,rvidx, G, Qm,Nl,r); + LOG_D(PHY,"lte_rate_matching_turbo: Ncb %d, Kw %d, Nir/C %d, rvidx %d, G %d, Qm %d, Nl%d, r %d\n",Ncb,3*(RTC<<5),Nir/C,rvidx, G, Qm,Nl,r); #endif if (r < (C-(GpmodC))) diff --git a/openair1/PHY/LTE_TRANSPORT/defs.h b/openair1/PHY/LTE_TRANSPORT/defs.h index 9d3d9c2b40..e2be6810b2 100644 --- a/openair1/PHY/LTE_TRANSPORT/defs.h +++ b/openair1/PHY/LTE_TRANSPORT/defs.h @@ -291,7 +291,9 @@ typedef struct { int16_t sqrt_rho_a; /// amplitude of PDSCH (compared to RS) in symbols containing pilots int16_t sqrt_rho_b; - +#ifdef Rel14 + uint8_t sib1_br_flag; +#endif } LTE_eNB_DLSCH_t; #define PUSCH_x 2 diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c index 18df5c3b44..68f38398c7 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c @@ -145,7 +145,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_ bzero(dlsch,sizeof(LTE_eNB_DLSCH_t)); dlsch->Kmimo = Kmimo; dlsch->Mdlharq = Mdlharq; - dlsch->Mlimit = 4; + dlsch->Mlimit = 8; dlsch->Nsoft = Nsoft; for (layer=0; layer<4; layer++) { @@ -597,19 +597,19 @@ int dlsch_encoding(PHY_VARS_eNB *eNB, beamforming_mode = 8; else if(dlsch->harq_processes[harq_pid]->mimo_mode == TM9_10) beamforming_mode = 9; - G = get_G(frame_parms,nb_rb,dlsch->harq_processes[harq_pid]->rb_alloc,mod_order,dlsch->harq_processes[harq_pid]->Nl,num_pdcch_symbols,frame,subframe,beamforming_mode); + G = get_G(frame_parms, + nb_rb, + dlsch->harq_processes[harq_pid]->rb_alloc, + mod_order, + dlsch->harq_processes[harq_pid]->Nl, + num_pdcch_symbols, + frame, + subframe, + beamforming_mode); - // if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet if (dlsch->harq_processes[harq_pid]->round == 0) { // this is a new packet - /* - int i; - printf("dlsch (tx): \n"); - for (i=0;i<(A>>3);i++) - printf("%02x.",a[i]); - printf("\n"); - */ // Add 24-bit crc (polynomial A) to payload crc = crc24a(a, A)>>8; diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index 514e7894cc..80789c2e8d 100644 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -715,43 +715,48 @@ void pdsch_procedures(PHY_VARS_eNB *eNB, LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms; int i; - LOG_D(PHY, - "[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"PRIu16", G %d, nb_rb %"PRIu16", mcs %"PRIu8", pmi_alloc %"PRIx64", rv %"PRIu8" (round %"PRIu8")\n", - eNB->Mod_id, dlsch->rnti,harq_pid, - frame, subframe, input_buffer_length, - get_G(fp, - dlsch_harq->nb_rb, - dlsch_harq->rb_alloc, - get_Qm(dlsch_harq->mcs), - dlsch_harq->Nl, - num_pdcch_symbols, - frame, - subframe, - dlsch_harq->mimo_mode==TM7?7:0), - dlsch_harq->nb_rb, - dlsch_harq->mcs, - pmi2hex_2Ar1(dlsch_harq->pmi_alloc), - dlsch_harq->rvidx, + if (frame < 20) { + LOG_I(PHY, + "[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"PRIu16", num_pdcch_symbols %d, G %d, nb_rb %"PRIu16", rb0 %x, rb1 %x, TBS %"PRIu16", pmi_alloc %"PRIx64", rv %"PRIu8" (round %"PRIu8")\n", + eNB->Mod_id, dlsch->rnti,harq_pid, + frame, subframe, input_buffer_length, num_pdcch_symbols, + get_G(fp, + dlsch_harq->nb_rb, + dlsch_harq->rb_alloc, + dlsch_harq->Qm, + dlsch_harq->Nl, + num_pdcch_symbols, + frame, + subframe, + dlsch_harq->mimo_mode==TM7?7:0), + dlsch_harq->nb_rb, + dlsch_harq->rb_alloc[0], + dlsch_harq->rb_alloc[1], + dlsch_harq->TBS, + pmi2hex_2Ar1(dlsch_harq->pmi_alloc), + dlsch_harq->rvidx, dlsch_harq->round); - + for (i=0;i<dlsch_harq->TBS>>3;i++) printf("%x.",dlsch_harq->pdu[i]); + printf("\n"); + } #if defined(MESSAGE_CHART_GENERATOR_PHY) MSC_LOG_TX_MESSAGE( MSC_PHY_ENB,MSC_PHY_UE, NULL,0, - "%05u:%02u PDSCH/DLSCH input size = %"PRIu16", G %d, nb_rb %"PRIu16", mcs %"PRIu8", pmi_alloc %"PRIx16", rv %"PRIu8" (round %"PRIu8")", + "%05u:%02u PDSCH/DLSCH input size = %"PRIu16", G %d, nb_rb %"PRIu16", TBS %"PRIu16", pmi_alloc %"PRIx16", rv %"PRIu8" (round %"PRIu8")", frame, subframe, input_buffer_length, get_G(fp, dlsch_harq->nb_rb, dlsch_harq->rb_alloc, - get_Qm(dlsch_harq->mcs), + dlsch_harq->Qm, dlsch_harq->Nl, num_pdcch_symbols, frame, subframe, dlsch_harq->mimo_mode==TM7?7:0), dlsch_harq->nb_rb, - dlsch_harq->mcs, + dlsch_harq->TBS, pmi2hex_2Ar1(dlsch_harq->pmi_alloc), dlsch_harq->rvidx, dlsch_harq->round); @@ -868,7 +873,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB, get_G(fp, dlsch_harq->nb_rb, dlsch_harq->rb_alloc, - get_Qm(dlsch_harq->mcs), + dlsch_harq->Qm, dlsch_harq->Nl, num_pdcch_symbols, frame,subframe, @@ -1003,7 +1008,7 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, dlsch1 = eNB->dlsch[UE_id][1]; #ifdef Rel14 - if ((rel13->pdsch_payload_type == 0) && (rel13->ue_type>0)) dlsch0->harq_ids[proc->subframe_tx] = 0; + if ((rel13->pdsch_payload_type < 2) && (rel13->ue_type>0)) dlsch0->harq_ids[proc->subframe_tx] = 0; #endif harq_pid = dlsch0->harq_ids[proc->subframe_tx]; @@ -1018,7 +1023,15 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, else dlsch1_harq->pdu = sdu; #ifdef Rel14 + dlsch0->sib1_br_flag=0; if ((rel13->pdsch_payload_type <2) && (rel13->ue_type>0)) { // this is a BR/CE UE and SIB1-BR/SI-BR + dlsch0->rnti = 0xFFFF; + dlsch0->Kmimo = 1; + dlsch0->Mdlharq = 4; + dlsch0->Nsoft = 25344; + + if (rel13->pdsch_payload_type == 0) dlsch0->sib1_br_flag=1; + // configure PDSCH switch (eNB->frame_parms.N_RB_DL) { case 6: @@ -1055,7 +1068,8 @@ handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, dlsch0_harq->round = 0; dlsch0_harq->status = ACTIVE; dlsch0_harq->TBS = rel8->length<<3; - + dlsch0_harq->Qm = rel8->modulation; + dlsch0_harq->codeword = 0; } @@ -1437,34 +1451,42 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX,0); // Now scan UE specific DLSCH + LTE_eNB_DLSCH_t *dlsch0,*dlsch1; for (UE_id=0; UE_id<NUMBER_OF_UE_MAX; UE_id++) { - if ((eNB->dlsch[(uint8_t)UE_id][0])&& - (eNB->dlsch[(uint8_t)UE_id][0]->rnti>0)&& - (eNB->dlsch[(uint8_t)UE_id][0]->active == 1)) { + dlsch0 = eNB->dlsch[(uint8_t)UE_id][0]; + dlsch1 = eNB->dlsch[(uint8_t)UE_id][1]; + if ((dlsch0)&& + (dlsch0->rnti>0)&& + (dlsch0->active == 1)) { // get harq_pid - harq_pid = eNB->dlsch[(uint8_t)UE_id][0]->harq_ids[subframe]; + harq_pid = dlsch0->harq_ids[subframe]; AssertFatal(harq_pid>=0,"harq_pid is negative\n"); // generate pdsch pdsch_procedures(eNB, proc, harq_pid, - eNB->dlsch[(uint8_t)UE_id][0], - eNB->dlsch[(uint8_t)UE_id][1], + dlsch0, + dlsch1, &eNB->UE_stats[(uint32_t)UE_id], 0, - num_pdcch_symbols); +#ifdef Rel14 + dlsch0->sib1_br_flag==0 ? num_pdcch_symbols : 3 +#else + num_pdcch_symbols +#endif +); } - else if ((eNB->dlsch[(uint8_t)UE_id][0])&& - (eNB->dlsch[(uint8_t)UE_id][0]->rnti>0)&& - (eNB->dlsch[(uint8_t)UE_id][0]->active == 0)) { + else if ((dlsch0)&& + (dlsch0->rnti>0)&& + (dlsch0->active == 0)) { // clear subframe TX flag since UE is not scheduled for PDSCH in this subframe (so that we don't look for PUCCH later) - eNB->dlsch[(uint8_t)UE_id][0]->subframe_tx[subframe]=0; + dlsch0->subframe_tx[subframe]=0; } } @@ -1676,7 +1698,6 @@ void process_HARQ_feedback(uint8_t UE_id, dl_subframe = ul_ACK_subframe2_dl_subframe(fp, subframe, m); - if (dlsch->subframe_tx[dl_subframe]==1) { if (pusch_flag == 1) mp++; @@ -1696,10 +1717,9 @@ void process_HARQ_feedback(uint8_t UE_id, if (dl_harq_pid[m]<dlsch->Mdlharq) { dlsch_harq_proc = dlsch->harq_processes[dl_harq_pid[m]]; #ifdef DEBUG_PHY_PROC - LOG_D(PHY,"[eNB %d][PDSCH %x/%d] subframe %d, status %d, round %d (mcs %d, rv %d, TBS %d)\n",eNB->Mod_id, + LOG_D(PHY,"[eNB %d][PDSCH %x/%d] subframe %d, status %d, round %d (rv %d, TBS %d)\n",eNB->Mod_id, dlsch->rnti,dl_harq_pid[m],dl_subframe, dlsch_harq_proc->status,dlsch_harq_proc->round, - dlsch->harq_processes[dl_harq_pid[m]]->mcs, dlsch->harq_processes[dl_harq_pid[m]]->rvidx, dlsch->harq_processes[dl_harq_pid[m]]->TBS); diff --git a/openair2/LAYER2/MAC/eNB_scheduler_bch.c b/openair2/LAYER2/MAC/eNB_scheduler_bch.c index 2a7023e3ab..1cace89799 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_bch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_bch.c @@ -121,16 +121,16 @@ schedule_SIB1_BR( break; case 1: // repetition 8 k = frameP&3; - AssertFatal(N_RB_DL<=15,"SIB1-BR repetition 8 not allowed for N_RB_DL= %d\n",N_RB_DL); + AssertFatal(N_RB_DL>15,"SIB1-BR repetition 8 not allowed for N_RB_DL= %d\n",N_RB_DL); if ((foffset==0) && (subframeP!=(4+sfoffset))) continue; else if ((foffset==1) && (subframeP!=((9+sfoffset)%10))) continue; break; case 2: // repetition 16 k = ((10*frameP) + subframeP)&3; - AssertFatal(N_RB_DL<=15,"SIB1-BR repetition 16 not allowed for N_RB_DL= %d\n",N_RB_DL); + AssertFatal(N_RB_DL>15,"SIB1-BR repetition 16 not allowed for N_RB_DL= %d\n",N_RB_DL); if ((sfoffset == 1) && ((subframeP!=0)||(subframeP!=5))) continue; - else if ((sfoffset == 0) && (foffset==0) && ((subframeP!=4) || (subframeP!=9))) continue; - else if ((sfoffset == 0) && (foffset==1) && ((subframeP!=0) || (subframeP!=9))) continue; + else if ((sfoffset == 0) && (foffset==0) && (subframeP!=4) && (subframeP!=9)) continue; + else if ((sfoffset == 0) && (foffset==1) && (subframeP!=0) && (subframeP!=9)) continue; break; } // if we get here we have to schedule SIB1_BR in this frame/subframe @@ -170,14 +170,13 @@ schedule_SIB1_BR( Sj = Sj100; break; } - + // Note: definition of k above and rvidx from 36.321 section 5.3.1 rvidx = (((3*k)>>1) + (k&1))&3; i = cc->SIB1_BR_cnt & (m-1); n_NB = Sj[((cc->physCellId % N_S_NB) + (i*N_S_NB/m))%N_S_NB]; - if ((frameP%1000) < 40) LOG_D(MAC,"[eNB %d] Frame %d, subframe %d : BCCH_BR->DLSCH (SIB1) CC_id %d\n",module_idP,frameP,subframeP,CC_id); bcch_sdu_length = mac_rrc_data_req(module_idP, CC_id, @@ -197,11 +196,11 @@ schedule_SIB1_BR( AssertFatal(bcch_sdu_length <= TBS, "length returned by RRC %d is not compatible with the TBS %d from MIB\n",bcch_sdu_length,TBS); - LOG_D(MAC,"[eNB %d] Frame %d : BCCH_BR->DLSCH CC_id %d, Received %d bytes \n",module_idP,frameP,CC_id,bcch_sdu_length); + if ((frameP&1023) < 200) LOG_I(MAC,"[eNB %d] Frame %d Subframe %d: SIB1_BR->DLSCH CC_id %d, Received %d bytes, scheduling on NB %d (i %d,m %d,N_S_NB %d) rvidx %d\n",module_idP,frameP,subframeP,CC_id,bcch_sdu_length,n_NB,i,m,N_S_NB,rvidx); // allocate all 6 PRBs in narrowband for SIB1_BR first_rb = n_NB*6; - vrb_map[first_rb] = 1; + vrb_map[first_rb] = 1; vrb_map[first_rb+1] = 1; vrb_map[first_rb+2] = 1; vrb_map[first_rb+3] = 1; @@ -341,7 +340,10 @@ schedule_SI_BR( "si_WindowLength_BR_r13 %d > %d\n", (int)cc->sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->si_WindowLength_BR_r13, SystemInformationBlockType1_v1310_IEs__bandwidthReducedAccessRelatedInfo_r13__si_WindowLength_BR_r13_ms200); - + + // check that SI frequency-hopping is disabled + AssertFatal(cc->sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->si_HoppingConfigCommon_r13==SystemInformationBlockType1_v1310_IEs__bandwidthReducedAccessRelatedInfo_r13__si_HoppingConfigCommon_r13_off, + "Deactivate SI_HoppingConfigCommon_r13 in configuration file, not supported for now\n"); long si_WindowLength_BR_r13 = si_WindowLength_BR_r13tab[cc->sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->si_WindowLength_BR_r13]; long si_RepetitionPattern_r13 = cc->sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->si_RepetitionPattern_r13; @@ -359,14 +361,10 @@ schedule_SI_BR( // check if the SI is to be scheduled now int period_in_sf = 80<<si_Periodicity; // 2^i * 80 subframes, note: si_Periodicity is 2^i * 80ms int sf_mod_period = ((frameP*10)+subframeP)%period_in_sf; - + int k = sf_mod_period&3; + // Note: definition of k and rvidx from 36.321 section 5.3.1 + rvidx = (((3*k)>>1) + (k&1))&3; - rvidx = (((3*sf_mod_period)>>1) + (sf_mod_period&1))&3; - - if ((frameP%1000) < 200) LOG_I(MAC,"[eNB %d] Frame %d : BCCH_BR->DLSCH (SI) CC_id %d, rvidx %d (sf_mod_period %d : si_WindowLength_BR_r13 %d : si_RepetitionPattern_r13 %d\n", - module_idP,frameP,CC_id,si_Narrowband_r13,rvidx, - sf_mod_period,si_WindowLength_BR_r13,si_RepetitionPattern_r13); - if ((sf_mod_period < si_WindowLength_BR_r13) && ((frameP&(((1<<si_RepetitionPattern_r13)-1)))==0)) { // this SIB is to be scheduled @@ -385,18 +383,26 @@ schedule_SI_BR( AssertFatal(bcch_sdu_length <= (si_TBS_r13>>3), "RRC provided bcch with length %d > %d (si_TBS_r13 %d)\n", bcch_sdu_length,(int)(si_TBS_r13>>3),(int)schedulingInfoList_BR_r13->list.array[i]->si_TBS_r13); - LOG_D(MAC,"[eNB %d] Frame %d : BCCH_BR %d->DLSCH CC_id %d, Received %d bytes \n",module_idP,frameP,i,CC_id,bcch_sdu_length); - - if ((frameP%1000) < 200) LOG_I(MAC,"[eNB %d] Frame %d : BCCH_BR->DLSCH (SI) CC_id %d, Received %d bytes for NB %d/rvidx %d\n",module_idP,frameP,CC_id,bcch_sdu_length,si_Narrowband_r13,rvidx); // allocate all 6 PRBs in narrowband for SIB1_BR - first_rb = si_Narrowband_r13*6; + first_rb = (si_Narrowband_r13-1)*6; + + // check that SIB1 didn't take this narrowband + if (vrb_map[first_rb] > 0) continue; + vrb_map[first_rb] = 1; vrb_map[first_rb+1] = 1; vrb_map[first_rb+2] = 1; - vrb_map[first_rb+3] = 1; vrb_map[first_rb+4] = 1; vrb_map[first_rb+5] = 1; + + if ((frameP%1000) < 200) LOG_D(MAC,"[eNB %d] Frame %d Subframe %d: SI_BR->DLSCH CC_id %d, Narrowband %d rvidx %d (sf_mod_period %d : si_WindowLength_BR_r13 %d : si_RepetitionPattern_r13 %d) bcch_sdu_length %d\n", + module_idP,frameP,subframeP,CC_id,si_Narrowband_r13-1,rvidx, + sf_mod_period,si_WindowLength_BR_r13,si_RepetitionPattern_r13, + bcch_sdu_length); + + + dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; memset((void*)dl_config_pdu,0,sizeof(nfapi_dl_config_request_pdu_t)); @@ -512,7 +518,7 @@ void schedule_mib(module_id_t module_idP, LOG_D(MAC,"Frame %d, subframe %d: Adding BCH PDU in position %d (length %d)\n", frameP,subframeP,dl_req->number_pdu,mib_sdu_length); - if ((frameP&1023) < 40) LOG_I(MAC,"[eNB %d] Frame %d : MIB->BCH CC_id %d, Received %d bytes (cc->mib->message.schedulingInfoSIB1_BR_r13 %d)\n",module_idP,frameP,CC_id,mib_sdu_length,cc->mib->message.schedulingInfoSIB1_BR_r13); + if ((frameP&1023) < 40) LOG_D(MAC,"[eNB %d] Frame %d : MIB->BCH CC_id %d, Received %d bytes (cc->mib->message.schedulingInfoSIB1_BR_r13 %d)\n",module_idP,frameP,CC_id,mib_sdu_length,cc->mib->message.schedulingInfoSIB1_BR_r13); dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu]; memset((void*)dl_config_pdu,0,sizeof(nfapi_dl_config_request_pdu_t)); @@ -749,7 +755,7 @@ schedule_SI( #ifdef Rel14 schedule_SIB1_BR(module_idP,frameP,subframeP); - schedule_SI_BR(module_idP,frameP,subframeP); + // schedule_SI_BR(module_idP,frameP,subframeP); #endif stop_meas(&eNB->schedule_si); diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.c b/openair2/RRC/LITE/MESSAGES/asn1_msg.c index f4ed3ca44d..1a2bf04f73 100644 --- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c @@ -511,7 +511,8 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier, ////Rel1310 #if defined(ENABLE_ITTI) - if (configuration->schedulingInfoSIB1_BR_r13[CC_id] != 0) + if ((configuration->schedulingInfoSIB1_BR_r13[CC_id] != 0) && + (brOption==TRUE)) { sib1_1250->nonCriticalExtension = calloc(1, sizeof(SystemInformationBlockType1_v1310_IEs_t)); memset(sib1_1250->nonCriticalExtension, 0, sizeof(SystemInformationBlockType1_v1310_IEs_t)); diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index ee7d73263a..d449790a56 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -822,7 +822,12 @@ void tx_rf(RU_t *ru) { if (txs != fp->samples_per_tti) { LOG_E(PHY,"TX : Timeout (sent %d/%d)\n",txs, fp->samples_per_tti); exit_fun( "problem transmitting samples" ); - } + } + /* + if ((proc->subframe_tx == 4) && (proc->frame_tx == 10)) { + write_output("ru_tx_sf4.m","txs",(void*)&ru->common.txdata[0][4*fp->samples_per_tti],fp->samples_per_tti,1,1); + exit(-1); + }*/ } } -- 2.26.2