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
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio