From a256858a60be01ad3ec6a598f997c02f5cc95b21 Mon Sep 17 00:00:00 2001 From: magounak <magounak@eurecom.fr> Date: Thu, 24 Jan 2019 16:44:53 +0100 Subject: [PATCH] new packet type PULCALIB works --- openair1/PHY/LTE_TRANSPORT/if4_tools.c | 4 ++-- targets/RT/USER/lte-ru.c | 32 +++++++++++++++++++------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c index 5d3f8025b6..187080f285 100644 --- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c @@ -121,7 +121,7 @@ void send_IF4p5(RU_t *ru, int frame, int subframe, uint16_t packet_type) { } else if (packet_type == IF4p5_PULCALIB) { LOG_D(PHY,"send PULCALIB_IF4p5: RU %d frame %d, subframe %d\n",ru->idx,frame,subframe); - AssertFatal(subframe_select(fp,subframe==SF_S), "calling PULCALIB in non-S subframe\n"); + AssertFatal(subframe_select(fp,subframe)==SF_S, "calling PULCALIB in non-S subframe\n"); db_fulllength = 12*fp->N_RB_UL; db_halflength = (db_fulllength)>>1; slotoffsetF += (fp->ofdm_symbol_size*3); @@ -138,7 +138,7 @@ void send_IF4p5(RU_t *ru, int frame, int subframe, uint16_t packet_type) { gen_IF4p5_ul_header(packet_header, packet_type, frame, subframe); AssertFatal(txdataF[0]!=NULL,"txdataF_BF[0] is null\n"); - for (symbol_id=3; symbol_id<11; symbol_id=10) { + for (symbol_id=3; symbol_id<11; symbol_id+=10) { for (int antenna_id=0; antenna_id<ru->nb_tx; antenna_id++) { for (element_id=0; element_id<db_halflength; element_id++) { i = (uint16_t*) &txdataF[antenna_id][blockoffsetF+element_id]; diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index 0b2eb60e22..ad492e925c 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -158,7 +158,7 @@ static inline void fh_if4p5_south_out(RU_t *ru) { if (subframe_select(&ru->frame_parms,ru->proc.subframe_tx)!=SF_UL) { send_IF4p5(ru,ru->proc.frame_tx, ru->proc.subframe_tx, IF4p5_PDLFFT); ru->south_out_cnt++; - LOG_I(PHY,"south_out_cnt %d, frame %d, subframe %d, RU %d\n",ru->south_out_cnt,ru->proc.frame_tx,ru->proc.subframe_tx,ru->idx); + LOG_D(PHY,"south_out_cnt %d, frame %d, subframe %d, RU %d\n",ru->south_out_cnt,ru->proc.frame_tx,ru->proc.subframe_tx,ru->idx); } /*if (ru == RC.ru[0] || ru == RC.ru[1]) { VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_RU+ru->idx, ru->proc.frame_tx ); @@ -214,16 +214,27 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) { uint32_t symbol_number=0; uint32_t symbol_mask_full; - if ((fp->frame_type == TDD) && (subframe_select(fp,*subframe)==SF_S)) - symbol_mask_full = (1<<fp->ul_symbols_in_S_subframe)-1; - else + if ((fp->frame_type == TDD) && (subframe_select(fp,*subframe)==SF_S)) { + if (*subframe == 1) { + symbol_mask_full = (1<<11)-1; + } else { + symbol_mask_full = (1<<fp->ul_symbols_in_S_subframe)-1; + } + } else { symbol_mask_full = (1<<fp->symbols_per_tti)-1; + } + + if (proc->symbol_mask[*subframe] == symbol_mask_full) proc->symbol_mask[*subframe] = 0; LOG_D(PHY,"fh_if4p5_south_in: RU %d, frame %d, subframe %d, ru %d\n",ru->idx,*frame,*subframe,ru->idx); AssertFatal(proc->symbol_mask[*subframe]==0,"rx_fh_if4p5: proc->symbol_mask[%d] = %x\n",*subframe,proc->symbol_mask[*subframe]); do { recv_IF4p5(ru, &f, &sf, &packet_type, &symbol_number); + LOG_D(PHY,"~~~~*** RU %d, frame %d, subframe %d, ru %d, packet_type %x, symbol %d\n",ru->idx,*frame,*subframe,ru->idx,packet_type,symbol_number); if (oai_exit == 1 || ru->cmd== STOP_RU) break; if (packet_type == IF4p5_PULFFT) proc->symbol_mask[sf] = proc->symbol_mask[sf] | (1<<symbol_number); + else if (packet_type == IF4p5_PULCALIB) { + proc->symbol_mask[sf] = (2<<symbol_number)-1; + } else if (packet_type == IF4p5_PULTICK) { if ((proc->first_rx==0) && (f!=*frame)) LOG_E(PHY,"rx_fh_if4p5: PULTICK received frame %d != expected %d (RU %d)\n",f,*frame, ru->idx); if ((proc->first_rx==0) && (sf!=*subframe)) LOG_E(PHY,"rx_fh_if4p5: PULTICK received subframe %d != expected %d (first_rx %d)\n",sf,*subframe,proc->first_rx); @@ -503,8 +514,13 @@ void fh_if4p5_north_out(RU_t *ru) { } if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)!=SF_UL)) { /// **** in TDD during DL send_IF4 of ULTICK to RCC **** /// - //send_IF4p5(ru, proc->frame_rx, proc->subframe_rx, IF4p5_PULTICK); - send_IF4p5(ru, proc->frame_rx, proc->subframe_rx, IF4p5_PULCALIB); + if (subframe_select(fp,subframe)==SF_S && subframe==1) { + send_IF4p5(ru, proc->frame_rx, proc->subframe_rx, IF4p5_PULCALIB); + LOG_D(PHY,"~~~~~~******* Sending PULCALIB frame %d, subframe %d\n",proc->frame_rx,proc->subframe_rx); + } else { + send_IF4p5(ru, proc->frame_rx, proc->subframe_rx, IF4p5_PULTICK); + LOG_D(PHY,"~~~~~~******* Sending PULTICK frame %d, subframe %d\n",proc->frame_rx,proc->subframe_rx); + } LOG_D(PHY,"fh_if4p5_north_out: Sending IF4p5_PULCALIB SFN.SF %d.%d\n",proc->frame_rx,proc->subframe_rx); ru->north_out_cnt++; return; @@ -1514,8 +1530,8 @@ static void* ru_stats_thread(void* param) { print_meas(&ru->transport,"transport",NULL,NULL); LOG_I(PHY,"ru->north_out_cnt = %d\n",ru->north_out_cnt); } - if (ru->fh_south_out) LOG_I(PHY,"ru->south_out_cnt = %d\n",ru->south_out_cnt); - if (ru->fh_north_asynch_in) LOG_I(PHY,"ru->north_in_cnt = %d\n",ru->north_in_cnt); + if (ru->fh_south_out) LOG_D(PHY,"ru->south_out_cnt = %d\n",ru->south_out_cnt); + if (ru->fh_north_asynch_in) LOG_D(PHY,"ru->north_in_cnt = %d\n",ru->north_in_cnt); } } -- 2.26.2