diff --git a/modules/uhd/uhd_usrp_io/uhd_io.cpp b/modules/uhd/uhd_usrp_io/uhd_io.cpp index 934fee2acf00674ff34d4c8d650e8417fde5e3c5..434e99a7de13e8de2f45efd4e0cfe30fd0593105 100644 --- a/modules/uhd/uhd_usrp_io/uhd_io.cpp +++ b/modules/uhd/uhd_usrp_io/uhd_io.cpp @@ -530,6 +530,7 @@ int do_iio(const cmdlineParser & args) tag_tx_plain * plan = (tag_tx_plain *) (packagedta.data()); if (total_points_left==-1) total_points_left = plan->length_left; + //fprintf(stderr,"plan %d points\n",plan->length_left); mtx_plan.lock(); tx_plan.push_back(*plan); mtx_plan.unlock(); @@ -541,6 +542,7 @@ int do_iio(const cmdlineParser & args) } else { + //fprintf(stderr,"recv %d points\n",packagedta.size()/2/sizeof(SPTYPE)); for (int ch = 0; ch < tx_channel_count;++ch) { if (header.subject_id == i_wav_tx[ch]) @@ -600,10 +602,11 @@ int do_iio(const cmdlineParser & args) continue; } //突发模式数据不够 - if (total_points_left >0 && tx_pos[ch] + (long long) (tx_sps_buff ) >= stdin_pos[ch] - && tx_pos[ch] + (long long) (total_points_left ) >= stdin_pos[ch] + if (total_points_left >0 && tx_pos[ch] + (long long) (tx_sps_buff ) > stdin_pos[ch] + && tx_pos[ch] + (long long) (total_points_left ) > stdin_pos[ch] ) { + //fprintf(stderr,"total_points LESS! for %d points\n",total_points_left); can_send = false; continue; } @@ -641,6 +644,7 @@ int do_iio(const cmdlineParser & args) //First pack if (plan->length_left==total_points_left) { + //fprintf(stderr,"total_points start for %d points\n",total_points_left); if (total_points_left <= (qint64)tx_sps_buff) { UHD_DO(uhd_tx_metadata_make(&tx_meta_burst, @@ -657,11 +661,15 @@ int do_iio(const cmdlineParser & args) //Last pack else if (total_points_left <= (qint64)tx_sps_buff) { + //fprintf(stderr,"total_points end for %d points\n",total_points_left); emit_points = total_points_left; UHD_DO(uhd_tx_metadata_make(&tx_meta_burst,false,0,0,false,true)); } else + { + //fprintf(stderr,"total_points middle for %d points\n",total_points_left); UHD_DO(uhd_tx_metadata_make(&tx_meta_burst,false,0,0,false,false)); + } UHD_DO(uhd_tx_streamer_send(tx_streamer, (const void **)tx_buff_ptr.data(), @@ -673,14 +681,18 @@ int do_iio(const cmdlineParser & args) assert(total_points_left>=0); if(total_points_left==0) { + //fprintf(stderr,"total_points over\n"); mtx_plan.lock(); assert(tx_plan.size()); tx_plan.pop_front(); if (tx_plan.size()) total_points_left = tx_plan.front().length_left; + else + total_points_left = -1; mtx_plan.unlock(); } UHD_DO(uhd_tx_metadata_free(&tx_meta_burst)); + //fprintf(stderr,"total_points left %d points\n",total_points_left); }//end else if (total_points_left>0) }//end while (!stop_signal_called)