---------- Forwarded message ----------
From: Adeel Anwar <adeela...@gmail.com>
Date: Wed, Sep 26, 2012 at 3:52 AM
Subject: Re: [Discuss-gnuradio] using general_work when output rate is not
fixed
To: "Rahman, Muhammad Mahboob Ur" <mahboob-rah...@uiowa.edu>


Mahboob,


uhd usrp sink. Now, the other issue is, when I send pre-recorded GMSK
samples to the uhd usrp sink, I still see lot of underruns occuring

If ur aim is to TX discontinuous samples with SOB and EOB tags to avoid
under-flows then

1. pre-recorded GMSK samples can be sent using gr_message_burst_source

          http://gnuradio.org/redmine/projects/gnuradio/wiki/ChangeLogV3_6_2


2. u can take following gr-uhd example as a reference and modify it

http://gnuradio.org/redmine/projects/gnuradio/repository/revisions/master/entry/gr-uhd/examples/c++/tag_source_demo.h



-Adeel




On Tue, Sep 25, 2012 at 12:02 PM, Rahman, Muhammad Mahboob Ur <
mahboob-rah...@uiowa.edu> wrote:

> Hi Tom & All,
>
> I am now doing consume_each(noutput_items) but my problem is not solved
> yet. I have also made sure that my code effectively sends one sob tag and
> one eob tag per burst of samples.
>
> Questions about new experiment:
> Now, I have created yet another simple experiment whose flow-graph is as
> follows:
>
> uhd usrp source --> my custom block --> uhd usrp sink
>                                                        |
>                                                        --> file sink
>
> The relevant code of my custom block is below:
> int
> howto_send_discont::general_work (...) {
>
>   int ninput_items_used_in_this_work_call;
>   ninput_items_used_in_this_work_call = 0;
>
>   for (int i = 0; i < noutput_items; i++){
>
>     samp_count++;
>     if (samp_count == 1) { out[i] = gr_complex(0.7,0);
> this->make_sob_tag(this->nitems_written(0)+i);}
>     else if (samp_count == 2) { out[i] = gr_complex(0.7,0);
> this->make_eob_tag(this->nitems_written(0)+i);}
>     else if (samp_count == 25000) {
>     samp_count = 0; send_tx_pkt = true; pkt_no++; }
>     if (send_tx_pkt) {
>         pkt_samp_no++;
>         ninput_items_used_in_this_work_call++;
>         /*if (total_samps_outputted_so_far == 7761) {
>                pkt_samp_no = 1; samp_count = 1;
> total_samps_outputted_so_far = 10000; pkt_no = 0; }
>         else if (total_samps_outputted_so_far < 7761){
>                total_samps_outputted_so_far++; }*/
>         out[i] = gmsk_pkt_samples_2[pkt_samp_no-1];
>         if (pkt_samp_no == 1) {
>             this->make_sob_tag(this->nitems_written(0)+i);
>         }
>         else if (pkt_samp_no == 1536) {
>             this->make_eob_tag(this->nitems_written(0)+i);
>             pkt_samp_no = 0;
>             send_tx_pkt = false;
>         }
>     }
>
>   }
>
>   consume_each (noutput_items);
>
>   // Tell runtime system how many output items we produced.
>   return ninput_items_used_in_this_work_call;
> }
>
> You can see from the above code that my custom block maintains an internal
> counter samp_count which causes the custom block to output N samples
> whenever internal counter's count equals M (N=1536, M=25000 in my case). I
> use the same counter to initially send a burst of 2 samples to uhd usrp
> sink after attaching sob and eob tags so as to avoid underflow problem at
> the transmit side. But my problems are persistent which are:
>
> - I see many zero-valued samples among the first 7761 output samples of my
> custom block, even when the samples my custom block should output are
> either constant valued samples or pre-recorded GMSK samples (depending upon
> which line is uncommented in my above code). Why it is so?
>
> - Even though I have avoided the above mentioned problem by noticing that
> in my case, after first 7761 samples, all the subsequent samples are
> correct. So, I use another counter to start all over again (to reset the
> functionality of my block) once my custom block has sent 7761 samples to
> uhd usrp sink. Now, the other issue is, when I send pre-recorded GMSK
> samples to the uhd usrp sink, I still see lot of underruns occuring
> indefinitely at tx side. Why are the sob and eob tags being ineffective?
> Moreover, when those GMSK packets are received at another node, the packet
> decode rate is too low over there (I guess not all of the samples
> corresponding to many GMSK packets are being transmitted from node1, fix
> me).
>
>
> Thanks in anticipation for your help,
> Mahboob
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to