discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] CANNOT shutdown usrp with destructor


From: zzw.1012
Subject: [Discuss-gnuradio] CANNOT shutdown usrp with destructor
Date: Sun, 20 Jun 2010 16:36:22 +0800 (CST)

 Hi,
    I am studying GNURadio now. but I have a problem with it. At first, there is a test file called test_usrp_standard_tx.cc. This file is work well and usrp can be shutdown automatically when all my wanted data are transmitted. then, I add a code like followed:
//test_usrp_standard_tx.cc
...
utx->start();
test_output(utx, (long long)nsamples, amp, waveform);
while(1); // added code
return 0;
}
As result of Spectrum Analyzer, it always have  frequency spectrum even though I pull out usrp's USB wire. So, I  think the action of shutdown usrp is occured in destructor.
However, when I test my own code, it cannot shutdown usrp too. here is my new test code:
 
gr_message_source_sptr x0 = gr_make_message_source(1, 4);
gr_top_block_sptr tb = gr_make_top_block("topblock");
void* msg_source_proc (void *args)
{
        ...
        gr_message_sptr msg = gr_make_message_from_string(s, 0, 0, 0);
        x0->msgq()->insert_tail(msg);
        return NULL;
}
main()
{       pthread_t thd_src;
        pthread_attr_t  attr;
        pthread_attr_init(&attr);
        pthread_create(&thd_src, &attr, msg_source_proc, NULL);
        ...
        usrp_sink_c_sptr x6 = usrp_make_sink_c(which_board, interp_rate, nchan, -1, 0, 0);
        usrp_subdev_spec subdev_spec = x6->pick_tx_subdevice();
        db_base_sptr db = x6->selected_subdev(subdev_spec);
        ....
        usrp_tune_result r;
        x6->tune(db->which(), db, center_freq, &r);
        db->set_enable(true);

        tb->connect(x0,0,x1,0);//connect blocks
        tb->connect(x1,0,x2,0);
        tb->connect(x2,0,x3,0);
        tb->connect(x3,0,x4,0);
        tb->connect(x4,0,x5,0);
        tb->connect(x5,0,x6,0);
        tb->run();
        printf ("*******************\n");
        return 0;
}
    The result showned that it can send a pkt well but cannot shutdown usrp and  "printf ("*******************\n")" have not print;
    So I think the program doesn't jump out of "tb->run" . to say nothing of destsructor which is to shutdown usrp.
    what's wrong with this? I need you help.
    thank you very much
    best wishes!
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]