Hi there, I've been playing around with message passing and stream tags as a beginner and am trying to allow the centre frequency of my USRP be changed via message passing command based on some basic if statements.
I made a conceptual system where when my custom sink block receives a propagated stream tag (rx_freq from the USRP). It enters the IF statement which then passes a message to USRP source to change its frequency. It looks something like this: std::vector<tag_t> tags; get_tags_in_range( tags, 0, abs_N, end_N, pmt::intern("rx_freq") ); pmt::pmt_t command = pmt::cons( // Make a pair pmt::mp("freq"), // Key is 'freq' => sets the frequency pmt::mp(98.8e6)); // Set the frequency to 1.1 GHz if (tags.size()>0) { message_port_pub(pmt::mp("freq"),command); double b = pmt::to_double(tags[0].value); cout << b << endl; } When I first start the flow graph, even if my default frequency is something arbitrary e.g. 200mhz, the stream tag on startup sends the command and the USRP recentres to 98.8MHz. So far so good... I also have QT gui variable which allows me to change the frequency of USRP using a slider. What I anticipated for this loop to do is when the slider is moved, it causes USRP to change frequency which triggers its stream tag to propagate. Which then causes it tune back to 98.8. Now the strange thing is when my sink block receives this message. It goes into the if loop, and sends the command. But it is completely ignored!! Could anyone tell me why this might be? Many thanks, Ngai
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio