On Mon, Mar 16, 2009 at 7:43 AM, Mattias Kjellsson <m...@kth.se> wrote:

> If I install a signal handler which catches ctrl+c and sets a flag, and then
> use (still the same configuration) uses something like:
>
> top_block->start();
> while(!signaled)
>   asm(" nop");
> top_block->stop();
>
> The flow- graph is run as long as ctrl+c isn't pressed and the destructor of
> top_block is run as well.

This is the right way.  Unless you call top_block.run(), you are
responsible for your own SIGINT handler.

> Why is the destructor so important? It's important because if I don't add
> the two following statements in there:
>
> d_tx0->write_io (d_side, -129, 224);
> d_tx0->write_io (d_side, -129, 128);
> (where d_tx0 is a usrp_sink_s_sptr)
>
> I end up with a pike in the spectrum at the tuned center frequency.

This is an open bug (ticket #348), not your code.  It's not clear yet
why it happens, but one theory is that we are shutting down the USRP
transmit pipeline before it has a chance to drain, and leaving a DC
value as input to the CORDIC, resulting in a carrier tone.  Your
workaround is appropriate.

Johnathan


_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to