// Send a receiver timed command - motherboard 0
d_rxCommand = pmt::make_dict();
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("mboard"),
pmt::mp(0));
pmt::pmt_t timeStamp = pmt::cons(pmt::from_long(1),
pmt::from_double(1));
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("time"),
timeStamp);
message_port_pub(pmt::mp("rx_freq_msg"), d_rxCommand );
// Send a receiver timed command - motherboard 1
d_rxCommand = pmt::make_dict();
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("mboard"),
pmt::mp(1));
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("time"),
timeStamp);
message_port_pub(pmt::mp("rx_freq_msg"), d_rxCommand );
// Tune receiver channel 0
d_rxCommand = pmt::make_dict();
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("freq"),
pmt::mp(d_txFrequency));
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("chan"),
pmt::mp(0));
message_port_pub(pmt::mp("rx_freq_msg"), d_rxCommand );
// Tune receiver channel 1
d_rxCommand = pmt::make_dict();
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("freq"),
pmt::mp(d_txFrequency));
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("chan"),
pmt::mp(1));
message_port_pub(pmt::mp("rx_freq_msg"), d_rxCommand );
// Tune transmitter
d_txCommand = pmt::make_dict();
d_txCommand = pmt::dict_add(d_txCommand, pmt::mp("freq"),
pmt::mp(d_txFrequency));
d_txCommand = pmt::dict_add(d_txCommand, pmt::mp("chan"),
pmt::mp(0));
message_port_pub(pmt::mp("tx_freq_msg"), d_txCommand );
// Clear the receiver command time - motherboard 0
d_rxCommand = pmt::make_dict();
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("mboard"),
pmt::mp(0));
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("time"),
pmt::PMT_NIL);
message_port_pub(pmt::mp("rx_freq_msg"), d_rxCommand );
// Clear the receiver command time - motherboard 0
d_rxCommand = pmt::make_dict();
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("mboard"),
pmt::mp(1));
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("time"),
pmt::PMT_NIL);
message_port_pub(pmt::mp("rx_freq_msg"), d_rxCommand );
-----Original Message-----
From: Marcus Müller [mailto:address@hidden
Sent: 04 March 2016 10:44
To: Nigel Steed <address@hidden>; address@hidden
Subject: Re: [Discuss-gnuradio] gr-uhd timed command messages
Hi Nigel,
from_long(1), from_double(1)
implies that your timestamp is at 1 [full second] + 1 [fraction of second] =
2s; usually you'd do from_long(2), from_double(0) for that :)
Do you think it maybe better for me to modify UHD Source and implement the
timed command in the set_center_freq function in the usrp_source_impl.cc (UHD
Source Block) ? As I am successfully stepping the UHD Source using the message
port successfully and I just need to add a timed command so both channels
re-tune together.
Not quite sure. As far as I can tell, the usrp_source does exactly the timed
command tuning when you issue these commands; however, I've to admit I haven't
read up on your discussion with Martin, so there might be a bug and it doesn't?
Best regards,
Marcus
On 04.03.2016 11:35, Nigel Steed wrote:
Thanks Marcus,
The UHD Source finally understand the following:
pmt::pmt_t timeStamp = pmt::cons(pmt::from_long(1),
pmt::from_double(1)); d_rxCommand = pmt::dict_add(d_rxCommand,
pmt::mp("time"), timeStamp);
Although UHD Source reports processing the message, I eventually get a packet
loss error and the N210 disconnects (no control response error).
Do you think it maybe better for me to modify UHD Source and implement the
timed command in the set_center_freq function in the usrp_source_impl.cc (UHD
Source Block) ? As I am successfully stepping the UHD Source using the message
port successfully and I just need to add a timed command so both channels
re-tune together.
Thanks,
Nigel
-----Original Message-----
From: address@hidden
[mailto:address@hidden On
Behalf Of Marcus Müller
Sent: 04 March 2016 08:35
To: address@hidden
Subject: Re: [Discuss-gnuradio] gr-uhd timed command messages
Hi Nigel,
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("time"),
pmt::mp(0.5));
Timestamps aren't just doubles for UHD; they ought to be [1]
timestamp: A pair composed of (long full_secs, double frac_secs).
Similar to uhd::time_spec_t.
So your timestamp needs to be a pair of long, double
pmt_t timestamp = pmt::make_pair(pmt::from_long(0),
pmt::from_double(0.5)); d_rxCommand = pmt::dict_add(d_rxCommand,
pmt::mp("time"), timestamp);
if I'm not mistaken.
Best regards,
Marcus
[1]
https://gnuradio.org/doc/doxygen/page_uhd.html#uhd_command_syntax_cmds
On 04.03.2016 01:39, Nigel Steed wrote:
Hi Martin,
I have put the following code into my block.
d_rxCommand = pmt::make_dict();
d_rxCommand = pmt::dict_add(d_rxCommand, pmt::mp("time"),
pmt::mp(0.5));
message_port_pub(pmt::mp("rx_freq_msg"), d_rxCommand );
It sends the message to the UHD Sink. But I get this error at run time:
thread[thread-per-block[5]: <block gr uhd usrp source (1)>]: pmt_cdr:
wrong_type : 1
Any ideas ? I am trying to auto step the frequencies, and currently have my own
block to generate frequency messages which works fine. I am now trying to
implement the time commands. Is there any other way to do it ?
Thanks,
Nigel
-----Original Message-----
From: address@hidden
[mailto:address@hidden On
Behalf Of Martin Braun
Sent: Wednesday, March 2, 2016 9:24 PM
To: address@hidden
Subject: Re: [Discuss-gnuradio] gr-uhd timed command messages
When using messages, simply add a 'time' key to the command dictionary, and it
will be set for the command you're calling. The time stamp value, is a
long/double pair, for full and fractional time. Example:
{'freq': 1e9, 'time': (100, 0.1)}
If this is your message, it will set the frequency to 1 GHz at time 100.1.
Cheers,
Martin
On 03/02/2016 05:46 AM, Nigel Steed wrote:
Hi,
Anyone know or managed to implement the time command using a message
port to the UHD Source Block ?
I believe time commands are not implemented in the latest GNURadio
gr-uhd ? Is that correct ?
Thanks,
Nigel
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio