From 878eef41398204385a2d7754fb8ae8b214112392 Mon Sep 17 00:00:00 2001 From: navid <navid@mycompany.com> Date: Fri, 24 Jul 2015 17:33:18 +0000 Subject: [PATCH] fix the bugs came from r7709 in lte-softmodem with USRP interface git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7742 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- targets/RT/USER/lte-softmodem.c | 37 ++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 9cd4c13b7f..d5ba61186f 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -1555,7 +1555,7 @@ static void* eNB_thread( void* arg ) void *txp[2]; // FIXME hard coded array size; indexed by lte_frame_parms.nb_antennas_tx int hw_subframe = 0; // 0..NUM_ENB_THREADS-1 => 0..9 - spp = openair0_cfg[0].samples_per_packet; + unsigned int rx_pos = 0; unsigned int tx_pos = 0; //spp*tx_delay; #endif @@ -1631,6 +1631,9 @@ static void* eNB_thread( void* arg ) int frame = 0; + spp = openair0_cfg[0].samples_per_packet; + tx_pos=spp*openair0_cfg[0].tx_delay; + while (!oai_exit) { start_meas( &softmodem_stats_mt ); @@ -1762,7 +1765,7 @@ static void* eNB_thread( void* arg ) openair0_timestamp timestamp; int i=0; // prepare rx buffer pointers - for (i=0; i<PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_rx; i++){ + for (i=0; i<PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_rx; i++) rxp[i] = (void*)&rxdata[i][rx_pos]; // check if nsymb_read == spp // map antenna port i to the cc_id. Now use the 1:1 mapping @@ -1770,8 +1773,8 @@ static void* eNB_thread( void* arg ) ×tamp, rxp, spp, - i); - } + PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_rx); + stop_meas( &softmodem_stats_hw ); clock_gettime( CLOCK_MONOTONIC, &trx_time1 ); @@ -1784,20 +1787,20 @@ static void* eNB_thread( void* arg ) // Transmit TX buffer based on timestamp from RX + + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 ); + // prepare tx buffer pointers + for (i=0; i<PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_tx; i++) + txp[i] = (void*)&txdata[i][tx_pos]; + //printf("tx_pos %d ts %d, ts_offset %d txp[i] %p, ap %d\n", tx_pos, timestamp, (timestamp+(tx_delay*spp)-tx_forward_nsamps),txp[i], i); + // if symb_written < spp ==> error if (frame > 50) { - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 ); - // prepare tx buffer pointers - for (i=0; i<PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_tx; i++){ - txp[i] = (void*)&rxdata[i][tx_pos]; - //printf("tx_pos %d ts %d, ts_offset %d txp[i] %p, ap %d\n", tx_pos, timestamp, (timestamp+(tx_delay*spp)-tx_forward_nsamps),txp[i], i); - // if symb_written < spp ==> error - openair0.trx_write_func(&openair0, - (timestamp+(openair0_cfg[card].tx_delay*spp)-openair0_cfg[card].tx_forward_nsamps), - txp, - spp, - i, - 1); - } + openair0.trx_write_func(&openair0, + (timestamp+(openair0_cfg[card].tx_delay*spp)-openair0_cfg[card].tx_forward_nsamps), + txp, + spp, + PHY_vars_eNB_g[0][0]->lte_frame_parms.nb_antennas_tx, + 1); } VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, timestamp&0xffffffff ); -- GitLab