diff options
Diffstat (limited to 'gr-uhd')
-rw-r--r-- | gr-uhd/doc/uhd.dox | 56 | ||||
-rw-r--r-- | gr-uhd/examples/grc/uhd_const_wave.grc | 468 | ||||
-rw-r--r-- | gr-uhd/examples/grc/uhd_dpsk_mod.grc | 2173 | ||||
-rw-r--r-- | gr-uhd/examples/grc/uhd_fft.grc | 1433 | ||||
-rw-r--r-- | gr-uhd/examples/grc/uhd_msg_tune.grc | 1132 | ||||
-rw-r--r-- | gr-uhd/examples/grc/uhd_rx_dpsk.grc | 907 | ||||
-rw-r--r-- | gr-uhd/examples/grc/uhd_two_tone_loopback.grc | 940 | ||||
-rw-r--r-- | gr-uhd/examples/grc/uhd_tx_dpsk.grc | 562 | ||||
-rw-r--r-- | gr-uhd/examples/grc/uhd_wbfm_receive.grc | 784 | ||||
-rwxr-xr-x | gr-uhd/examples/python/freq_hopping.py | 6 | ||||
-rw-r--r-- | gr-uhd/grc/gen_uhd_usrp_blocks.py | 5 | ||||
-rw-r--r-- | gr-uhd/include/gnuradio/uhd/usrp_sink.h | 46 | ||||
-rw-r--r-- | gr-uhd/include/gnuradio/uhd/usrp_source.h | 42 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_common.h | 198 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_sink_impl.cc | 233 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_sink_impl.h | 26 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_source_impl.cc | 94 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_source_impl.h | 31 |
18 files changed, 6841 insertions, 2295 deletions
diff --git a/gr-uhd/doc/uhd.dox b/gr-uhd/doc/uhd.dox index 538c98c438..7a71b240b4 100644 --- a/gr-uhd/doc/uhd.dox +++ b/gr-uhd/doc/uhd.dox @@ -1,4 +1,3 @@ -// vim: set ft=doxygen: /*! \page page_uhd UHD Interface \section Introduction @@ -22,15 +21,61 @@ by using: \endcode -\section External Documentation +\section uhd_external_docs External Documentation -Ettus Research keeps the comprehensive documentation to the underlying UHD driver, which can be found: +Ettus Research maintains the comprehensive documentation to the underlying UHD driver, which can be found at: - http://files.ettus.com/uhd_docs/manual/html/ +http://files.ettus.com/uhd_docs/manual/html/ The UHD Doxygen page is located at: - http://files.ettus.com/uhd_docs/doxygen/html/index.html +http://files.ettus.com/uhd_docs/doxygen/html/index.html + + +\section uhd_command_syntax Command Syntax + +The UHD sink and source can be controlled by a message port. These message ports +take commands, which are PMTs formatted as such: + + (command, value, [channel]) + +A command PMT is either a pair or a tuple. If it's a tuple, it must have either 2 or 3 elements. +Any other type of PMT will throw an error. + +The `command` part is a string, which defines the command. `value` is a PMT whose format depends +on the command issued. Finally, `channel` is an integer PMT value that specifies which channel +this command shall be specified on. If this value is omitted, then it either applies this command +to all channels or channel zero, depending on which command is used. + +Example: +\code{.cpp} +pmt::pmt_t command = pmt::cons( // We make a pair, but pmt::make_tuple() is also valid! + pmt::mp("freq"), // Use the 'freq' command, which sets the frequency + pmt::mp(1.1e9) // Set the frequency to 1.1 GHz +); +\endcode + +This PMT would set the frequency to 1.1 GHz on all channels. We make use of the pmt::mp() function +which automatically sets the PMT types. Assume we only want to set the frequency on channel 1 +(i.e. the second channel). In this case, we must construct a tuple: +\code{.cpp} +pmt::pmt_t command = pmt::make_tuple( + pmt::mp("freq"), // Use the 'freq' command, which sets the frequency + pmt::mp(1.1e9) // Set the frequency to 1.1 GHz + pmt::mp(1) // Select channel 1 +); +\endcode + + +\subsection uhd_command_syntax_cmds Common commands + +The following commands are understood by both UHD Source and Sink: + +Command name | Value Type | Description +-------------|------------|------------------------------------------------------------- +`freq` | double | Sets the Tx or Rx frequency. Defaults to all channels. +`lo_offset` | double | Sets an LO offset. Defaults to all channels. +`gain` | double | Sets the Tx or Rx gain (in dB). Defaults to all channels. \section Configuring a UHD object @@ -100,3 +145,4 @@ resampler to take care of the difference. \endcode */ +// vim: set ft=doxygen: diff --git a/gr-uhd/examples/grc/uhd_const_wave.grc b/gr-uhd/examples/grc/uhd_const_wave.grc index 46596109de..dfbbea6e88 100644 --- a/gr-uhd/examples/grc/uhd_const_wave.grc +++ b/gr-uhd/examples/grc/uhd_const_wave.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon Mar 18 11:04:05 2013</timestamp> + <timestamp>Sat Jul 12 14:52:24 2014</timestamp> <block> <key>options</key> <param> @@ -29,7 +29,7 @@ </param> <param> <key>generate_options</key> - <value>wx_gui</value> + <value>qt_gui</value> </param> <param> <key>category</key> @@ -52,208 +52,12 @@ <value></value> </param> <param> - <key>_coordinate</key> - <value>(10, 10)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>ampl</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Amplitude</value> - </param> - <param> - <key>value</key> - <value>.1</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(174, 313)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tun_gain</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>UHD Gain</value> - </param> - <param> - <key>value</key> - <value>gain</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>20</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(318, 314)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tun_freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>UHD Freq (Hz)</value> - </param> - <param> - <key>value</key> - <value>freq</value> - </param> - <param> - <key>min</key> - <value>2.4e9</value> - </param> - <param> - <key>max</key> - <value>2.5e9</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> - <value></value> - </param> - <param> - <key>_coordinate</key> - <value>(24, 315)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>parameter</key> - <param> - <key>id</key> - <value>address</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>IP Address</value> - </param> - <param> - <key>value</key> - <value>addr=192.168.11.2</value> - </param> - <param> - <key>type</key> - <value>string</value> - </param> - <param> - <key>short_id</key> - <value>a</value> - </param> - <param> - <key>_coordinate</key> - <value>(188, 12)</value> + <value>(10, 9)</value> </param> <param> <key>_rotation</key> @@ -287,6 +91,10 @@ <value>s</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> <value>(342, 14)</value> </param> @@ -322,6 +130,10 @@ <value>f</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> <value>(468, 14)</value> </param> @@ -357,6 +169,10 @@ <value>g</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> <value>(616, 13)</value> </param> @@ -388,10 +204,18 @@ <value></value> </param> <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> <key>dev_addr</key> <value>address</value> </param> <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> <key>sync</key> <value></value> </param> @@ -1020,6 +844,18 @@ <value>0</value> </param> <param> + <key>len_tag_name</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> <key>_coordinate</key> <value>(308, 169)</value> </param> @@ -1047,6 +883,22 @@ <value>ampl</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> <value>(74, 193)</value> </param> @@ -1055,6 +907,222 @@ <value>0</value> </param> </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>id</key> + <value>ampl</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Amplitude</value> + </param> + <param> + <key>value</key> + <value>0.1</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>stop</key> + <value>1</value> + </param> + <param> + <key>step</key> + <value>0.01</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(170, 314)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>id</key> + <value>tun_freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>UHD Freq (Hz)</value> + </param> + <param> + <key>value</key> + <value>2.45e9</value> + </param> + <param> + <key>start</key> + <value>2.4e9</value> + </param> + <param> + <key>stop</key> + <value>2.5e9</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(31, 317)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>id</key> + <value>tun_gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>UHD Gain</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>stop</key> + <value>20</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(302, 307)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>address</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>IP Address</value> + </param> + <param> + <key>value</key> + <value>addr=192.168.10.2</value> + </param> + <param> + <key>type</key> + <value>string</value> + </param> + <param> + <key>short_id</key> + <value>a</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(188, 12)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> <connection> <source_block_id>analog_const_source_x_0</source_block_id> <sink_block_id>uhd_usrp_sink_0</sink_block_id> diff --git a/gr-uhd/examples/grc/uhd_dpsk_mod.grc b/gr-uhd/examples/grc/uhd_dpsk_mod.grc index 1e5bfd5ddb..be6ec55b01 100644 --- a/gr-uhd/examples/grc/uhd_dpsk_mod.grc +++ b/gr-uhd/examples/grc/uhd_dpsk_mod.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sat Oct 8 14:44:48 2011</timestamp> + <timestamp>Sat Jul 12 15:58:18 2014</timestamp> <block> <key>options</key> <param> @@ -29,7 +29,7 @@ </param> <param> <key>generate_options</key> - <value>wx_gui</value> + <value>qt_gui</value> </param> <param> <key>category</key> @@ -44,12 +44,20 @@ <value>True</value> </param> <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> <key>realtime_scheduling</key> <value></value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(-5, -2)</value> </param> <param> <key>_rotation</key> @@ -71,8 +79,12 @@ <value>8</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(33, 280)</value> + <value>(743, 124)</value> </param> <param> <key>_rotation</key> @@ -80,86 +92,92 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>variable</key> <param> <key>id</key> - <value>wxgui_fftsink2_0</value> + <value>rolloff</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>value</key> + <value>.35</value> </param> <param> - <key>title</key> - <value>FFT Plot</value> + <key>alias</key> + <value></value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>_coordinate</key> + <value>(566, 548)</value> </param> <param> - <key>baseband_freq</key> - <value>tun_freq</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>variable</key> <param> - <key>y_per_div</key> - <value>10</value> + <key>id</key> + <value>nfilts</value> </param> <param> - <key>y_divs</key> - <value>10</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>ref_level</key> - <value>10</value> + <key>value</key> + <value>32</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>alias</key> + <value></value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>_coordinate</key> + <value>(653, 548)</value> </param> <param> - <key>fft_rate</key> - <value>30</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>parameter</key> <param> - <key>peak_hold</key> - <value>False</value> + <key>id</key> + <value>tx_gain</value> </param> <param> - <key>average</key> - <value>False</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>label</key> + <value>Default TX Gain</value> </param> <param> - <key>win</key> - <value>None</value> + <key>value</key> + <value>0</value> </param> <param> - <key>win_size</key> - <value></value> + <key>type</key> + <value>eng_float</value> </param> <param> - <key>grid_pos</key> + <key>short_id</key> <value></value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(697, 248)</value> + <value>(968, 0)</value> </param> <param> <key>_rotation</key> @@ -167,74 +185,77 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>parameter</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>freq</value> </param> <param> <key>_enabled</key> - <value>False</value> + <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>label</key> + <value>Default Frequency</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>value</key> + <value>2.45e9</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>type</key> + <value>eng_float</value> </param> <param> - <key>v_scale</key> - <value>0</value> + <key>short_id</key> + <value>f</value> </param> <param> - <key>v_offset</key> - <value>0</value> + <key>alias</key> + <value></value> </param> <param> - <key>t_scale</key> - <value>1e-6</value> + <key>_coordinate</key> + <value>(634, 0)</value> </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>parameter</key> <param> - <key>xy_mode</key> - <value>True</value> + <key>id</key> + <value>samp_rate</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>win_size</key> - <value></value> + <key>label</key> + <value>Sample Rate</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>value</key> + <value>1e6</value> </param> <param> - <key>notebook</key> - <value></value> + <key>type</key> + <value>eng_float</value> </param> <param> - <key>trig_mode</key> - <value>wxgui.TRIG_MODE_AUTO</value> + <key>short_id</key> + <value>s</value> </param> <param> - <key>y_axis_label</key> - <value>Counts</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(469, 355)</value> + <value>(508, 0)</value> </param> <param> <key>_rotation</key> @@ -242,38 +263,38 @@ </param> </block> <block> - <key>analog_random_source_x</key> + <key>parameter</key> <param> <key>id</key> - <value>analog_random_source_x_0</value> + <value>address0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>label</key> + <value>IP Address, Dev 0</value> </param> <param> - <key>min</key> - <value>0</value> + <key>value</key> + <value>addr=192.168.10.2</value> </param> <param> - <key>max</key> - <value>256</value> + <key>type</key> + <value>string</value> </param> <param> - <key>num_samps</key> - <value>1000</value> + <key>short_id</key> + <value></value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(245, 139)</value> + <value>(162, 0)</value> </param> <param> <key>_rotation</key> @@ -281,30 +302,38 @@ </param> </block> <block> - <key>blocks_multiply_const_vxx</key> + <key>parameter</key> <param> <key>id</key> - <value>blocks_multiply_const_vxx_0</value> + <value>freq_offset</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> + <key>label</key> + <value>Rx Frequency Offset</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> <key>type</key> - <value>complex</value> + <value>eng_float</value> </param> <param> - <key>const</key> - <value>ampl</value> + <key>short_id</key> + <value>o</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(647, 163)</value> + <value>(789, 0)</value> </param> <param> <key>_rotation</key> @@ -312,10 +341,10 @@ </param> </block> <block> - <key>variable_slider</key> + <key>parameter</key> <param> <key>id</key> - <value>tun_rx_gain</value> + <value>rx_gain</value> </param> <param> <key>_enabled</key> @@ -323,43 +352,27 @@ </param> <param> <key>label</key> - <value>UHD RX Gain</value> + <value>Default RX Gain</value> </param> <param> <key>value</key> - <value>rx_gain</value> - </param> - <param> - <key>min</key> <value>0</value> </param> <param> - <key>max</key> - <value>20</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> + <key>type</key> + <value>eng_float</value> </param> <param> - <key>grid_pos</key> + <key>short_id</key> <value></value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(477, 509)</value> + <value>(1102, 0)</value> </param> <param> <key>_rotation</key> @@ -367,54 +380,73 @@ </param> </block> <block> - <key>variable_slider</key> + <key>import</key> <param> <key>id</key> - <value>rx_freq_off</value> + <value>import_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>RX Freq Offset (Hz)</value> + <key>import</key> + <value>from gnuradio import digital</value> </param> <param> - <key>value</key> - <value>freq_offset</value> + <key>alias</key> + <value></value> </param> <param> - <key>min</key> - <value>-50e3</value> + <key>_coordinate</key> + <value>(169, 93)</value> </param> <param> - <key>max</key> - <value>+50e3</value> + <key>_rotation</key> + <value>0</value> </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> <param> - <key>num_steps</key> - <value>100</value> + <key>id</key> + <value>blocks_multiply_const_vxx_0</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>grid_pos</key> + <key>const</key> + <value>ampl</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> - <key>notebook</key> + <key>affinity</key> <value></value> </param> <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(190, 507)</value> + <value>(396, 161)</value> </param> <param> <key>_rotation</key> @@ -422,10 +454,10 @@ </param> </block> <block> - <key>parameter</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>rx_gain</value> + <value>ampl</value> </param> <param> <key>_enabled</key> @@ -433,23 +465,47 @@ </param> <param> <key>label</key> - <value>Default RX Gain</value> + <value>Amplitude</value> </param> <param> <key>value</key> + <value>0.1</value> + </param> + <param> + <key>start</key> <value>0</value> </param> <param> - <key>type</key> - <value>eng_float</value> + <key>stop</key> + <value>1</value> </param> <param> - <key>short_id</key> + <key>step</key> + <value>0.01</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(1137, 8)</value> + <value>(916, 115)</value> </param> <param> <key>_rotation</key> @@ -460,7 +516,7 @@ <key>parameter</key> <param> <key>id</key> - <value>freq_offset</value> + <value>address1</value> </param> <param> <key>_enabled</key> @@ -468,23 +524,27 @@ </param> <param> <key>label</key> - <value>Rx Frequency Offset</value> + <value>IP Address, Dev 1</value> </param> <param> <key>value</key> - <value>0</value> + <value>addr=192.168.10.2</value> </param> <param> <key>type</key> - <value>eng_float</value> + <value>string</value> </param> <param> <key>short_id</key> - <value>o</value> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(824, 8)</value> + <value>(322, 0)</value> </param> <param> <key>_rotation</key> @@ -492,10 +552,10 @@ </param> </block> <block> - <key>uhd_usrp_source</key> + <key>uhd_usrp_sink</key> <param> <key>id</key> - <value>uhd_usrp_source_0</value> + <value>uhd_usrp_sink_0</value> </param> <param> <key>_enabled</key> @@ -503,11 +563,27 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>fc32</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + <param> + <key>stream_args</key> + <value></value> + </param> + <param> + <key>stream_chans</key> + <value>[]</value> </param> <param> <key>dev_addr</key> - <value>address1</value> + <value>address0</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> </param> <param> <key>sync</key> @@ -522,15 +598,23 @@ <value>1</value> </param> <param> - <key>ref_source0</key> + <key>clock_source0</key> + <value></value> + </param> + <param> + <key>time_source0</key> <value></value> </param> <param> <key>sd_spec0</key> + <value>B:0</value> + </param> + <param> + <key>clock_source1</key> <value></value> </param> <param> - <key>ref_source1</key> + <key>time_source1</key> <value></value> </param> <param> @@ -538,7 +622,11 @@ <value></value> </param> <param> - <key>ref_source2</key> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>time_source2</key> <value></value> </param> <param> @@ -546,7 +634,11 @@ <value></value> </param> <param> - <key>ref_source3</key> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>time_source3</key> <value></value> </param> <param> @@ -554,7 +646,11 @@ <value></value> </param> <param> - <key>ref_source4</key> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>time_source4</key> <value></value> </param> <param> @@ -562,7 +658,11 @@ <value></value> </param> <param> - <key>ref_source5</key> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>time_source5</key> <value></value> </param> <param> @@ -570,7 +670,11 @@ <value></value> </param> <param> - <key>ref_source6</key> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>time_source6</key> <value></value> </param> <param> @@ -578,7 +682,11 @@ <value></value> </param> <param> - <key>ref_source7</key> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>time_source7</key> <value></value> </param> <param> @@ -595,7 +703,7 @@ </param> <param> <key>center_freq0</key> - <value>tun_freq+rx_freq_off</value> + <value>tun_freq</value> </param> <param> <key>gain0</key> @@ -1106,8 +1214,20 @@ <value>0</value> </param> <param> + <key>len_tag_name</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(216, 288)</value> + <value>(576, 131)</value> </param> <param> <key>_rotation</key> @@ -1115,187 +1235,341 @@ </param> </block> <block> - <key>wxgui_constellationsink2</key> + <key>qtgui_const_sink_x</key> <param> <key>id</key> - <value>wxgui_constellationsink2_0</value> + <value>qtgui_const_sink_x_0</value> </param> <param> <key>_enabled</key> - <value>True</value> + <value>False</value> </param> <param> - <key>title</key> - <value>Constellation Plot</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>name</key> + <value>""</value> </param> <param> - <key>frame_rate</key> - <value>5</value> + <key>size</key> + <value>1024</value> </param> <param> - <key>const_size</key> - <value>2048</value> + <key>autoscale</key> + <value>False</value> </param> <param> - <key>M</key> - <value>4</value> + <key>ymin</key> + <value>-2</value> </param> <param> - <key>theta</key> + <key>ymax</key> + <value>2</value> + </param> + <param> + <key>xmin</key> + <value>-2</value> + </param> + <param> + <key>xmax</key> + <value>2</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_chan</key> <value>0</value> </param> <param> - <key>loop_bw</key> - <value>6.28/100.0</value> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>style1</key> + <value>0</value> + </param> + <param> + <key>marker1</key> + <value>0</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>style2</key> + <value>0</value> + </param> + <param> + <key>marker2</key> + <value>0</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> </param> <param> - <key>fmax</key> - <value>0.06</value> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> </param> <param> - <key>mu</key> - <value>0.5</value> + <key>color3</key> + <value>"red"</value> </param> <param> - <key>gain_mu</key> - <value>0.005</value> + <key>style3</key> + <value>0</value> </param> <param> - <key>symbol_rate</key> - <value>samp_rate/samps_per_sym</value> + <key>marker3</key> + <value>0</value> </param> <param> - <key>omega_limit</key> - <value>0.005</value> + <key>alpha3</key> + <value>1.0</value> </param> <param> - <key>win_size</key> + <key>label4</key> <value></value> </param> <param> - <key>grid_pos</key> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"red"</value> + </param> + <param> + <key>style4</key> + <value>0</value> + </param> + <param> + <key>marker4</key> + <value>0</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> <value></value> </param> <param> - <key>notebook</key> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"red"</value> + </param> + <param> + <key>style5</key> + <value>0</value> + </param> + <param> + <key>marker5</key> + <value>0</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(862, 336)</value> + <key>width6</key> + <value>1</value> </param> <param> - <key>_rotation</key> + <key>color6</key> + <value>"red"</value> + </param> + <param> + <key>style6</key> <value>0</value> </param> - </block> - <block> - <key>digital_dxpsk_mod</key> <param> - <key>id</key> - <value>digital_dxpsk_mod_0</value> + <key>marker6</key> + <value>0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>alpha6</key> + <value>1.0</value> </param> <param> - <key>type</key> - <value>dqpsk</value> + <key>label7</key> + <value></value> </param> <param> - <key>samples_per_symbol</key> - <value>samps_per_sym</value> + <key>width7</key> + <value>1</value> </param> <param> - <key>excess_bw</key> - <value>0.35</value> + <key>color7</key> + <value>"red"</value> </param> <param> - <key>gray_coded</key> - <value>True</value> + <key>style7</key> + <value>0</value> </param> <param> - <key>verbose</key> - <value>False</value> + <key>marker7</key> + <value>0</value> </param> <param> - <key>log</key> - <value>False</value> + <key>alpha7</key> + <value>1.0</value> </param> <param> - <key>_coordinate</key> - <value>(426, 139)</value> + <key>label8</key> + <value></value> </param> <param> - <key>_rotation</key> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"red"</value> + </param> + <param> + <key>style8</key> <value>0</value> </param> - </block> - <block> - <key>variable_slider</key> <param> - <key>id</key> - <value>ampl</value> + <key>marker8</key> + <value>0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>alpha8</key> + <value>1.0</value> </param> <param> - <key>label</key> - <value>Amplitude</value> + <key>label9</key> + <value></value> </param> <param> - <key>value</key> - <value>.1</value> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"red"</value> + </param> + <param> + <key>style9</key> + <value>0</value> </param> <param> - <key>min</key> + <key>marker9</key> <value>0</value> </param> <param> - <key>max</key> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> <value>1</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>color10</key> + <value>"red"</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>style10</key> + <value>0</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>marker10</key> + <value>0</value> </param> <param> - <key>grid_pos</key> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> - <key>notebook</key> + <key>affinity</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(33, 353)</value> + <value>(1, 367)</value> </param> <param> <key>_rotation</key> - <value>0</value> + <value>180</value> </param> </block> <block> - <key>uhd_usrp_sink</key> + <key>uhd_usrp_source</key> <param> <key>id</key> - <value>uhd_usrp_sink_0</value> + <value>uhd_usrp_source_0</value> </param> <param> <key>_enabled</key> @@ -1303,11 +1577,27 @@ </param> <param> <key>type</key> - <value>complex</value> + <value>fc32</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + <param> + <key>stream_args</key> + <value></value> + </param> + <param> + <key>stream_chans</key> + <value>[]</value> </param> <param> <key>dev_addr</key> - <value>address0</value> + <value>address1</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> </param> <param> <key>sync</key> @@ -1322,15 +1612,23 @@ <value>1</value> </param> <param> - <key>ref_source0</key> + <key>clock_source0</key> + <value></value> + </param> + <param> + <key>time_source0</key> <value></value> </param> <param> <key>sd_spec0</key> + <value>A:0</value> + </param> + <param> + <key>clock_source1</key> <value></value> </param> <param> - <key>ref_source1</key> + <key>time_source1</key> <value></value> </param> <param> @@ -1338,7 +1636,11 @@ <value></value> </param> <param> - <key>ref_source2</key> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>time_source2</key> <value></value> </param> <param> @@ -1346,7 +1648,11 @@ <value></value> </param> <param> - <key>ref_source3</key> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>time_source3</key> <value></value> </param> <param> @@ -1354,7 +1660,11 @@ <value></value> </param> <param> - <key>ref_source4</key> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>time_source4</key> <value></value> </param> <param> @@ -1362,7 +1672,11 @@ <value></value> </param> <param> - <key>ref_source5</key> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>time_source5</key> <value></value> </param> <param> @@ -1370,7 +1684,11 @@ <value></value> </param> <param> - <key>ref_source6</key> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>time_source6</key> <value></value> </param> <param> @@ -1378,7 +1696,11 @@ <value></value> </param> <param> - <key>ref_source7</key> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>time_source7</key> <value></value> </param> <param> @@ -1395,7 +1717,7 @@ </param> <param> <key>center_freq0</key> - <value>tun_freq</value> + <value>tun_freq+rx_freq_off</value> </param> <param> <key>gain0</key> @@ -1906,8 +2228,24 @@ <value>0</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(838, 139)</value> + <value>(-1, 242)</value> </param> <param> <key>_rotation</key> @@ -1915,54 +2253,113 @@ </param> </block> <block> - <key>variable_slider</key> + <key>digital_dxpsk_mod</key> <param> <key>id</key> - <value>tun_tx_gain</value> + <value>digital_dxpsk_mod_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>UHD TX Gain</value> + <key>type</key> + <value>dqpsk</value> </param> <param> - <key>value</key> - <value>tx_gain</value> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> </param> <param> - <key>min</key> + <key>mod_code</key> + <value>"gray"</value> + </param> + <param> + <key>verbose</key> + <value>False</value> + </param> + <param> + <key>log</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(204, 138)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>blocks_vector_source_x</key> <param> - <key>max</key> - <value>20</value> + <key>id</key> + <value>blocks_vector_source_x_0</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>vector</key> + <value>range(256)</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>tags</key> + <value>[]</value> </param> <param> - <key>grid_pos</key> + <key>repeat</key> + <value>True</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> - <key>notebook</key> + <key>affinity</key> <value></value> </param> <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(351, 508)</value> + <value>(6, 142)</value> </param> <param> <key>_rotation</key> @@ -1970,10 +2367,345 @@ </param> </block> <block> - <key>parameter</key> + <key>qtgui_time_sink_x</key> <param> <key>id</key> - <value>address0</value> + <value>qtgui_time_sink_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>name</key> + <value>Rx Time Signal</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>True</value> + </param> + <param> + <key>ymin</key> + <value>-1</value> + </param> + <param> + <key>ymax</key> + <value>1</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(294, 265)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>id</key> + <value>tun_freq</value> </param> <param> <key>_enabled</key> @@ -1981,23 +2713,47 @@ </param> <param> <key>label</key> - <value>IP Address, Dev 0</value> + <value>UHD Freq (Hz)</value> </param> <param> <key>value</key> - <value>addr=192.168.10.2</value> + <value>1.982e9</value> </param> <param> - <key>type</key> - <value>string</value> + <key>start</key> + <value>1.9e9</value> </param> <param> - <key>short_id</key> + <key>stop</key> + <value>2.5e9</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(197, 11)</value> + <value>(5, 545)</value> </param> <param> <key>_rotation</key> @@ -2005,10 +2761,10 @@ </param> </block> <block> - <key>parameter</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>address1</value> + <value>tun_rx_gain</value> </param> <param> <key>_enabled</key> @@ -2016,23 +2772,47 @@ </param> <param> <key>label</key> - <value>IP Address, Dev 1</value> + <value>UHD Rx Gain</value> </param> <param> <key>value</key> - <value>addr=192.168.11.2</value> + <value>0</value> </param> <param> - <key>type</key> - <value>string</value> + <key>start</key> + <value>0</value> </param> <param> - <key>short_id</key> + <key>stop</key> + <value>30</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(357, 11)</value> + <value>(391, 546)</value> </param> <param> <key>_rotation</key> @@ -2040,10 +2820,10 @@ </param> </block> <block> - <key>parameter</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>samp_rate</value> + <value>tun_tx_gain</value> </param> <param> <key>_enabled</key> @@ -2051,23 +2831,47 @@ </param> <param> <key>label</key> - <value>Sample Rate</value> + <value>UHD Tx Gain</value> </param> <param> <key>value</key> - <value>1e6</value> + <value>0</value> </param> <param> - <key>type</key> - <value>eng_float</value> + <key>start</key> + <value>0</value> </param> <param> - <key>short_id</key> - <value>s</value> + <key>stop</key> + <value>30</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(543, 8)</value> + <value>(277, 546)</value> </param> <param> <key>_rotation</key> @@ -2075,10 +2879,10 @@ </param> </block> <block> - <key>parameter</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>freq</value> + <value>rx_freq_off</value> </param> <param> <key>_enabled</key> @@ -2086,23 +2890,122 @@ </param> <param> <key>label</key> - <value>Default Frequency</value> + <value>Rx Freq Offset (Hz)</value> </param> <param> <key>value</key> - <value>2.45e9</value> + <value>0</value> + </param> + <param> + <key>start</key> + <value>-50e3</value> + </param> + <param> + <key>stop</key> + <value>50e3</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(130, 547)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_dxpsk_demod</key> + <param> + <key>id</key> + <value>digital_dxpsk_demod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> </param> <param> <key>type</key> - <value>eng_float</value> + <value>dqpsk</value> </param> <param> - <key>short_id</key> - <value>f</value> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> + </param> + <param> + <key>freq_bw</key> + <value>6.28/100.0</value> + </param> + <param> + <key>phase_bw</key> + <value>6.28/100.0</value> + </param> + <param> + <key>timing_bw</key> + <value>6.28/100.0</value> + </param> + <param> + <key>mod_code</key> + <value>"gray"</value> + </param> + <param> + <key>verbose</key> + <value>False</value> + </param> + <param> + <key>log</key> + <value>False</value> + </param> + <param> + <key>sync_out</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(669, 8)</value> + <value>(294, 375)</value> </param> <param> <key>_rotation</key> @@ -2110,34 +3013,420 @@ </param> </block> <block> - <key>parameter</key> + <key>blocks_unpacked_to_packed_xx</key> <param> <key>id</key> - <value>tx_gain</value> + <value>blocks_unpacked_to_packed_xx_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Default TX Gain</value> + <key>type</key> + <value>byte</value> </param> <param> - <key>value</key> + <key>bits_per_chunk</key> + <value>1</value> + </param> + <param> + <key>endianness</key> + <value>gr.GR_LSB_FIRST</value> + </param> + <param> + <key>num_ports</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> <value>0</value> </param> <param> + <key>_coordinate</key> + <value>(542, 420)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_uchar_to_float</key> + <param> + <key>id</key> + <value>blocks_uchar_to_float_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(747, 431)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_time_sink_x</key> + <param> + <key>id</key> + <value>qtgui_time_sink_x_1</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> <key>type</key> - <value>eng_float</value> + <value>float</value> </param> <param> - <key>short_id</key> + <key>name</key> + <value>Received Data</value> + </param> + <param> + <key>size</key> + <value>1024</value> + </param> + <param> + <key>srate</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>True</value> + </param> + <param> + <key>ymin</key> + <value>-1</value> + </param> + <param> + <key>ymax</key> + <value>1</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>entags</key> + <value>True</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> + </param> + <param> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> + </param> + <param> + <key>tr_level</key> + <value>0.0</value> + </param> + <param> + <key>tr_delay</key> + <value>0</value> + </param> + <param> + <key>tr_chan</key> + <value>0</value> + </param> + <param> + <key>tr_tag</key> + <value>""</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>style1</key> + <value>1</value> + </param> + <param> + <key>marker1</key> + <value>-1</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>style2</key> + <value>1</value> + </param> + <param> + <key>marker2</key> + <value>-1</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>style3</key> + <value>1</value> + </param> + <param> + <key>marker3</key> + <value>-1</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>style4</key> + <value>1</value> + </param> + <param> + <key>marker4</key> + <value>-1</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>style5</key> + <value>1</value> + </param> + <param> + <key>marker5</key> + <value>-1</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>style6</key> + <value>1</value> + </param> + <param> + <key>marker6</key> + <value>-1</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>style7</key> + <value>1</value> + </param> + <param> + <key>marker7</key> + <value>-1</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>style8</key> + <value>1</value> + </param> + <param> + <key>marker8</key> + <value>-1</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>style9</key> + <value>1</value> + </param> + <param> + <key>marker9</key> + <value>-1</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"blue"</value> + </param> + <param> + <key>style10</key> + <value>1</value> + </param> + <param> + <key>marker10</key> + <value>-1</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(1003, 8)</value> + <value>(923, 405)</value> </param> <param> <key>_rotation</key> @@ -2145,54 +3434,238 @@ </param> </block> <block> - <key>variable_slider</key> + <key>qtgui_freq_sink_x</key> <param> <key>id</key> - <value>tun_freq</value> + <value>qtgui_freq_sink_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Freq (Hz)</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> - <value>freq</value> + <key>name</key> + <value>Received Spectrum</value> </param> <param> - <key>min</key> - <value>2.4e9</value> + <key>fftsize</key> + <value>1024</value> </param> <param> - <key>max</key> - <value>2.5e9</value> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>fc</key> + <value>tun_freq+rx_freq_off</value> + </param> + <param> + <key>bw</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>label1</key> + <value>Received Spectrum</value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>width2</key> + <value>1</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>color2</key> + <value>"red"</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>alpha2</key> + <value>1.0</value> </param> <param> - <key>grid_pos</key> + <key>label3</key> <value></value> </param> <param> - <key>notebook</key> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(35, 506)</value> + <value>(610, 254)</value> </param> <param> <key>_rotation</key> @@ -2201,19 +3674,19 @@ </block> <connection> <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <sink_block_id>qtgui_const_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>wxgui_constellationsink2_0</sink_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <source_block_id>digital_dxpsk_mod_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> @@ -2224,14 +3697,38 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>analog_random_source_x_0</source_block_id> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>digital_dxpsk_demod_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_vector_source_x_0</source_block_id> <sink_block_id>digital_dxpsk_mod_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_dxpsk_mod_0</source_block_id> - <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_block_id>digital_dxpsk_demod_0</source_block_id> + <sink_block_id>blocks_unpacked_to_packed_xx_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_unpacked_to_packed_xx_0</source_block_id> + <sink_block_id>blocks_uchar_to_float_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>blocks_uchar_to_float_0</source_block_id> + <sink_block_id>qtgui_time_sink_x_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-uhd/examples/grc/uhd_fft.grc b/gr-uhd/examples/grc/uhd_fft.grc index 08e5f70edb..13271cae74 100644 --- a/gr-uhd/examples/grc/uhd_fft.grc +++ b/gr-uhd/examples/grc/uhd_fft.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon Mar 18 15:42:27 2013</timestamp> + <timestamp>Sat Jul 12 16:12:28 2014</timestamp> <block> <key>options</key> <param> @@ -29,7 +29,7 @@ </param> <param> <key>generate_options</key> - <value>wx_gui</value> + <value>qt_gui</value> </param> <param> <key>category</key> @@ -52,8 +52,12 @@ <value></value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(15, 15)</value> + <value>(-1, -3)</value> </param> <param> <key>_rotation</key> @@ -61,22 +65,38 @@ </param> </block> <block> - <key>import</key> + <key>parameter</key> <param> <key>id</key> - <value>import_0</value> + <value>param_gain</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>import</key> - <value>import numpy</value> + <key>label</key> + <value>Default Gain</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>short_id</key> + <value>g</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(15, 121)</value> + <value>(642, 0)</value> </param> <param> <key>_rotation</key> @@ -110,8 +130,12 @@ <value>s</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(358, 14)</value> + <value>(328, 0)</value> </param> <param> <key>_rotation</key> @@ -145,8 +169,39 @@ <value>f</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(478, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>import</key> + <param> + <key>id</key> + <value>import_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>import</key> + <value>import numpy</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(508, 14)</value> + <value>(4, 105)</value> </param> <param> <key>_rotation</key> @@ -157,7 +212,7 @@ <key>parameter</key> <param> <key>id</key> - <value>param_gain</value> + <value>address</value> </param> <param> <key>_enabled</key> @@ -165,23 +220,78 @@ </param> <param> <key>label</key> - <value>Default Gain</value> + <value>IP Address</value> </param> <param> <key>value</key> - <value>0</value> + <value>addr=192.168.10.2</value> </param> <param> <key>type</key> - <value>eng_float</value> + <value>string</value> </param> <param> <key>short_id</key> - <value>g</value> + <value>a</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(160, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_tab_widget</key> + <param> + <key>id</key> + <value>display</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>num_tabs</key> + <value>3</value> + </param> + <param> + <key>label0</key> + <value>Spectrum</value> + </param> + <param> + <key>label1</key> + <value>Waterfall</value> + </param> + <param> + <key>label2</key> + <value>Scope</value> + </param> + <param> + <key>label3</key> + <value>Tab 3</value> + </param> + <param> + <key>label4</key> + <value>Tab 4</value> + </param> + <param> + <key>gui_hint</key> + <value>2,0,1,4</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(672, 13)</value> + <value>(6, 178)</value> </param> <param> <key>_rotation</key> @@ -189,10 +299,348 @@ </param> </block> <block> - <key>wxgui_scopesink2</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>wxgui_scopesink2_0</value> + <value>gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>RX Gain</value> + </param> + <param> + <key>value</key> + <value>15</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>stop</key> + <value>31.5</value> + </param> + <param> + <key>step</key> + <value>.5</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value>1,2,1,2</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(694, 216)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>id</key> + <value>freq</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>RX Tune Frequency</value> + </param> + <param> + <key>value</key> + <value>2.45e9</value> + </param> + <param> + <key>start</key> + <value>50e6</value> + </param> + <param> + <key>stop</key> + <value>6e9</value> + </param> + <param> + <key>step</key> + <value>100e3</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value>1,0,1,2</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(538, 214)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_chooser</key> + <param> + <key>id</key> + <value>ant</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Antenna</value> + </param> + <param> + <key>type</key> + <value>string</value> + </param> + <param> + <key>num_opts</key> + <value>4</value> + </param> + <param> + <key>value</key> + <value>RX2</value> + </param> + <param> + <key>options</key> + <value>[0, 1, 2]</value> + </param> + <param> + <key>labels</key> + <value>[]</value> + </param> + <param> + <key>option0</key> + <value>RX2</value> + </param> + <param> + <key>label0</key> + <value>RX2</value> + </param> + <param> + <key>option1</key> + <value>TX/RX</value> + </param> + <param> + <key>label1</key> + <value>TX/RX</value> + </param> + <param> + <key>option2</key> + <value>J1</value> + </param> + <param> + <key>label2</key> + <value>J1</value> + </param> + <param> + <key>option3</key> + <value>J2</value> + </param> + <param> + <key>label3</key> + <value>J2</value> + </param> + <param> + <key>option4</key> + <value>4</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>widget</key> + <value>combo_box</value> + </param> + <param> + <key>orient</key> + <value>Qt.QVBoxLayout</value> + </param> + <param> + <key>gui_hint</key> + <value>0,2,1,2</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(810, 124)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_label</key> + <param> + <key>id</key> + <value>lo_locked_probe</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>LO locked</value> + </param> + <param> + <key>type</key> + <value>bool</value> + </param> + <param> + <key>value</key> + <value>chan0_lo_locked.to_bool()</value> + </param> + <param> + <key>gui_hint</key> + <value>0,1,1,1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(662, 127)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_label</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Sample Rate</value> + </param> + <param> + <key>type</key> + <value>real</value> + </param> + <param> + <key>value</key> + <value>1e6</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(543, 128)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_function_probe</key> + <param> + <key>id</key> + <value>chan0_lo_locked</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>uhd.sensor_value("", False, "")</value> + </param> + <param> + <key>block_id</key> + <value>uhd_usrp_source_0</value> + </param> + <param> + <key>function_name</key> + <value>get_sensor</value> + </param> + <param> + <key>function_args</key> + <value>"'lo_locked'"</value> + </param> + <param> + <key>poll_rate</key> + <value>10</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(1014, 164)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_waterfall_sink_x</key> + <param> + <key>id</key> + <value>qtgui_waterfall_sink_x_0</value> </param> <param> <key>_enabled</key> @@ -203,60 +651,407 @@ <value>complex</value> </param> <param> - <key>title</key> - <value>Scope Plot</value> + <key>name</key> + <value>Scope</value> </param> <param> - <key>samp_rate</key> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>fc</key> + <value>freq</value> + </param> + <param> + <key>bw</key> <value>samp_rate</value> </param> <param> - <key>v_scale</key> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>gui_hint</key> + <value>display@1:3,0,1,4</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>color1</key> + <value>0</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>color2</key> + <value>0</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>color3</key> + <value>0</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>color4</key> + <value>0</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>color5</key> + <value>0</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>color6</key> + <value>0</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>color7</key> + <value>0</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>color8</key> + <value>0</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>color9</key> <value>0</value> </param> <param> - <key>v_offset</key> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>color10</key> <value>0</value> </param> <param> - <key>t_scale</key> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(325, 328)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>name</key> + <value>Spectrum</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>fc</key> + <value>freq</value> + </param> + <param> + <key>bw</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>True</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>gui_hint</key> + <value>display@0:3,0,1,4</value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> <param> - <key>ac_couple</key> - <value>False</value> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> </param> <param> - <key>xy_mode</key> - <value>False</value> + <key>label5</key> + <value></value> </param> <param> - <key>num_inputs</key> + <key>width5</key> <value>1</value> </param> <param> - <key>win_size</key> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> <value></value> </param> <param> - <key>grid_pos</key> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> <value></value> </param> <param> - <key>notebook</key> - <value>nb0, 2</value> + <key>width7</key> + <value>1</value> </param> <param> - <key>trig_mode</key> - <value>wxgui.TRIG_MODE_AUTO</value> + <key>color7</key> + <value>"yellow"</value> </param> <param> - <key>y_axis_label</key> - <value>Counts</value> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(314, 250)</value> + <value>(311, 217)</value> </param> <param> <key>_rotation</key> @@ -286,10 +1081,18 @@ <value></value> </param> <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> <key>dev_addr</key> <value>address</value> </param> <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> <key>sync</key> <value></value> </param> @@ -918,176 +1721,24 @@ <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(37, 394)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_function_probe</key> - <param> - <key>id</key> - <value>chan0_lo_locked</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>uhd.sensor_value("", False, "")</value> - </param> - <param> - <key>block_id</key> - <value>uhd_usrp_source_0</value> - </param> - <param> - <key>function_name</key> - <value>get_sensor</value> - </param> - <param> - <key>function_args</key> - <value>"'lo_locked'"</value> - </param> - <param> - <key>poll_rate</key> - <value>10</value> - </param> - <param> - <key>_coordinate</key> - <value>(583, 432)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>notebook</key> - <param> - <key>id</key> - <value>nb0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>style</key> - <value>wx.NB_TOP</value> - </param> - <param> - <key>labels</key> - <value>['FFT', 'Waterfall', 'Scope']</value> - </param> - <param> - <key>grid_pos</key> - <value>0, 0, 1, 8</value> - </param> - <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(15, 172)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_chooser</key> - <param> - <key>id</key> - <value>ant_xcvr</value> - </param> - <param> - <key>_enabled</key> - <value>False</value> - </param> - <param> - <key>label</key> - <value>Antenna</value> - </param> - <param> - <key>value</key> - <value>"J2"</value> - </param> - <param> - <key>choices</key> - <value>["J2","J1"]</value> - </param> - <param> - <key>labels</key> - <value>["J2","J1"]</value> - </param> - <param> - <key>type</key> - <value>radio_buttons</value> - </param> - <param> - <key>style</key> - <value>wx.RA_HORIZONTAL</value> - </param> - <param> - <key>grid_pos</key> - <value></value> - </param> - <param> - <key>notebook</key> + <key>affinity</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(830, 278)</value> - </param> - <param> - <key>_rotation</key> + <key>minoutbuf</key> <value>0</value> </param> - </block> - <block> - <key>variable_static_text</key> - <param> - <key>id</key> - <value>lo_locked_probe</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>LO Locked</value> - </param> <param> - <key>value</key> - <value>chan0_lo_locked.to_bool()</value> - </param> - <param> - <key>converver</key> - <value>str_converter</value> - </param> - <param> - <key>formatter</key> - <value>lambda x: x and "True" or "False"</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 7, 1, 1</value> - </param> - <param> - <key>notebook</key> - <value></value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(583, 314)</value> + <value>(33, 295)</value> </param> <param> <key>_rotation</key> @@ -1095,412 +1746,334 @@ </param> </block> <block> - <key>variable_chooser</key> + <key>qtgui_time_sink_x</key> <param> <key>id</key> - <value>ant</value> + <value>qtgui_time_sink_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Antenna</value> - </param> - <param> - <key>value</key> - <value>"RX2"</value> - </param> - <param> - <key>choices</key> - <value>["RX2","TX/RX"]</value> - </param> - <param> - <key>labels</key> - <value>["RX2","TX/RX"]</value> - </param> - <param> <key>type</key> - <value>radio_buttons</value> - </param> - <param> - <key>style</key> - <value>wx.RA_HORIZONTAL</value> - </param> - <param> - <key>grid_pos</key> - <value>1, 4, 1, 2</value> - </param> - <param> - <key>notebook</key> - <value></value> + <value>complex</value> </param> <param> - <key>_coordinate</key> - <value>(830, 130)</value> + <key>name</key> + <value>QT GUI Plot</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>size</key> + <value>1024</value> </param> - </block> - <block> - <key>wxgui_fftsink2</key> <param> - <key>id</key> - <value>fft</value> + <key>srate</key> + <value>samp_rate</value> </param> <param> - <key>_enabled</key> + <key>autoscale</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>ymin</key> + <value>-1</value> </param> <param> - <key>baseband_freq</key> - <value>freq</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> + <key>ymax</key> + <value>1</value> </param> <param> - <key>y_divs</key> - <value>15</value> + <key>nconnections</key> + <value>1</value> </param> <param> - <key>ref_level</key> - <value>0</value> + <key>update_time</key> + <value>0.10</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>entags</key> + <value>True</value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>gui_hint</key> + <value>display@2:3,0,1,4</value> </param> <param> - <key>fft_rate</key> - <value>15</value> + <key>tr_mode</key> + <value>qtgui.TRIG_MODE_FREE</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>tr_slope</key> + <value>qtgui.TRIG_SLOPE_POS</value> </param> <param> - <key>average</key> - <value>False</value> + <key>tr_level</key> + <value>0.0</value> </param> <param> - <key>avg_alpha</key> + <key>tr_delay</key> <value>0</value> </param> <param> - <key>win</key> - <value>None</value> + <key>tr_chan</key> + <value>0</value> </param> <param> - <key>win_size</key> - <value>(-1, 400)</value> + <key>tr_tag</key> + <value>""</value> </param> <param> - <key>grid_pos</key> + <key>label1</key> <value></value> </param> <param> - <key>notebook</key> - <value>nb0, 0</value> - </param> - <param> - <key>freqvar</key> - <value>None</value> - </param> - <param> - <key>_coordinate</key> - <value>(314, 359)</value> + <key>width1</key> + <value>1</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>color1</key> + <value>"blue"</value> </param> - </block> - <block> - <key>wxgui_waterfallsink2</key> <param> - <key>id</key> - <value>wxgui_waterfallsink2_0</value> + <key>style1</key> + <value>1</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>marker1</key> + <value>-1</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>alpha1</key> + <value>1.0</value> </param> <param> - <key>title</key> - <value>Waterfall Plot</value> + <key>label2</key> + <value></value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>width2</key> + <value>1</value> </param> <param> - <key>baseband_freq</key> - <value>0</value> + <key>color2</key> + <value>"red"</value> </param> <param> - <key>dynamic_range</key> - <value>100</value> + <key>style2</key> + <value>1</value> </param> <param> - <key>ref_level</key> - <value>0</value> + <key>marker2</key> + <value>-1</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>alpha2</key> + <value>1.0</value> </param> <param> - <key>fft_size</key> - <value>512</value> + <key>label3</key> + <value></value> </param> <param> - <key>fft_rate</key> - <value>15</value> + <key>width3</key> + <value>1</value> </param> <param> - <key>average</key> - <value>False</value> + <key>color3</key> + <value>"green"</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>style3</key> + <value>1</value> </param> <param> - <key>win</key> - <value>None</value> + <key>marker3</key> + <value>-1</value> </param> <param> - <key>win_size</key> - <value>(-1, 400)</value> + <key>alpha3</key> + <value>1.0</value> </param> <param> - <key>grid_pos</key> + <key>label4</key> <value></value> </param> <param> - <key>notebook</key> - <value>nb0, 1</value> + <key>width4</key> + <value>1</value> </param> <param> - <key>freqvar</key> - <value>None</value> + <key>color4</key> + <value>"black"</value> </param> <param> - <key>_coordinate</key> - <value>(313, 573)</value> + <key>style4</key> + <value>1</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>marker4</key> + <value>-1</value> </param> - </block> - <block> - <key>variable_text_box</key> <param> - <key>id</key> - <value>samp_rate</value> + <key>alpha4</key> + <value>1.0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>label5</key> + <value></value> </param> <param> - <key>label</key> - <value>Sample Rate</value> + <key>width5</key> + <value>1</value> </param> <param> - <key>value</key> - <value>param_samp_rate</value> + <key>color5</key> + <value>"cyan"</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>style5</key> + <value>1</value> </param> <param> - <key>formatter</key> - <value>None</value> + <key>marker5</key> + <value>-1</value> </param> <param> - <key>grid_pos</key> - <value>1, 0, 1, 3</value> + <key>alpha5</key> + <value>1.0</value> </param> <param> - <key>notebook</key> + <key>label6</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(358, 129)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> + <key>width6</key> + <value>1</value> </param> - </block> - <block> - <key>variable_slider</key> <param> - <key>id</key> - <value>freq</value> + <key>color6</key> + <value>"magenta"</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>style6</key> + <value>1</value> </param> <param> - <key>label</key> - <value>RX Tune Frequency</value> + <key>marker6</key> + <value>-1</value> </param> <param> - <key>value</key> - <value>param_freq</value> + <key>alpha6</key> + <value>1.0</value> </param> <param> - <key>min</key> - <value>50e6</value> + <key>label7</key> + <value></value> </param> <param> - <key>max</key> - <value>6e9</value> + <key>width7</key> + <value>1</value> </param> <param> - <key>num_steps</key> - <value>1000</value> + <key>color7</key> + <value>"yellow"</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>style7</key> + <value>1</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>marker7</key> + <value>-1</value> </param> <param> - <key>grid_pos</key> - <value>3, 0, 1, 8</value> + <key>alpha7</key> + <value>1.0</value> </param> <param> - <key>notebook</key> + <key>label8</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(510, 128)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> + <key>width8</key> + <value>1</value> </param> - </block> - <block> - <key>variable_slider</key> <param> - <key>id</key> - <value>gain</value> + <key>color8</key> + <value>"dark red"</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>style8</key> + <value>1</value> </param> <param> - <key>label</key> - <value>RX Gain</value> + <key>marker8</key> + <value>-1</value> </param> <param> - <key>value</key> - <value>param_gain</value> + <key>alpha8</key> + <value>1.0</value> </param> <param> - <key>min</key> - <value>0</value> + <key>label9</key> + <value></value> </param> <param> - <key>max</key> - <value>31.5</value> + <key>width9</key> + <value>1</value> </param> <param> - <key>num_steps</key> - <value>63</value> + <key>color9</key> + <value>"dark green"</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>style9</key> + <value>1</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>marker9</key> + <value>-1</value> </param> <param> - <key>grid_pos</key> - <value>2, 0, 1, 8</value> + <key>alpha9</key> + <value>1.0</value> </param> <param> - <key>notebook</key> + <key>label10</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(679, 130)</value> + <key>width10</key> + <value>1</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>color10</key> + <value>"blue"</value> </param> - </block> - <block> - <key>parameter</key> <param> - <key>id</key> - <value>address</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> + <key>style10</key> + <value>1</value> </param> <param> - <key>label</key> - <value>IP Address</value> + <key>marker10</key> + <value>-1</value> </param> <param> - <key>value</key> - <value>addr=192.168.11.2</value> + <key>alpha10</key> + <value>1.0</value> </param> <param> - <key>type</key> - <value>string</value> + <key>alias</key> + <value></value> </param> <param> - <key>short_id</key> - <value>a</value> + <key>affinity</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(190, 15)</value> + <value>(333, 436)</value> </param> <param> <key>_rotation</key> @@ -1509,19 +2082,19 @@ </block> <connection> <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>wxgui_scopesink2_0</sink_block_id> + <sink_block_id>qtgui_time_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>wxgui_waterfallsink2_0</sink_block_id> + <sink_block_id>qtgui_waterfall_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>fft</sink_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-uhd/examples/grc/uhd_msg_tune.grc b/gr-uhd/examples/grc/uhd_msg_tune.grc new file mode 100644 index 0000000000..89022278be --- /dev/null +++ b/gr-uhd/examples/grc/uhd_msg_tune.grc @@ -0,0 +1,1132 @@ +<?xml version='1.0' encoding='ASCII'?> +<flow_graph> + <timestamp>Tue Jul 8 12:08:19 2014</timestamp> + <block> + <key>options</key> + <param> + <key>id</key> + <value>uhd_tune_msg</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>title</key> + <value>UHD Message Tuner</value> + </param> + <param> + <key>author</key> + <value></value> + </param> + <param> + <key>description</key> + <value>Tune a UHD source from a QT sink via messages.</value> + </param> + <param> + <key>window_size</key> + <value>1280, 1024</value> + </param> + <param> + <key>generate_options</key> + <value>qt_gui</value> + </param> + <param> + <key>category</key> + <value>Custom</value> + </param> + <param> + <key>run_options</key> + <value>prompt</value> + </param> + <param> + <key>run</key> + <value>True</value> + </param> + <param> + <key>max_nouts</key> + <value>0</value> + </param> + <param> + <key>realtime_scheduling</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(-1, -2)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>initial_fc</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>100e6</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(-2, 172)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>2e6</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(1, 102)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>id</key> + <value>gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value></value> + </param> + <param> + <key>value</key> + <value>20</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>stop</key> + <value>60</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(103, 99)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>uhd_usrp_source</key> + <param> + <key>id</key> + <value>uhd_usrp_source_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>fc32</value> + </param> + <param> + <key>otw</key> + <value></value> + </param> + <param> + <key>stream_args</key> + <value></value> + </param> + <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> + <key>dev_addr</key> + <value>""</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> + <key>sync</key> + <value></value> + </param> + <param> + <key>clock_rate</key> + <value>0.0</value> + </param> + <param> + <key>num_mboards</key> + <value>1</value> + </param> + <param> + <key>clock_source0</key> + <value></value> + </param> + <param> + <key>time_source0</key> + <value></value> + </param> + <param> + <key>sd_spec0</key> + <value></value> + </param> + <param> + <key>clock_source1</key> + <value></value> + </param> + <param> + <key>time_source1</key> + <value></value> + </param> + <param> + <key>sd_spec1</key> + <value></value> + </param> + <param> + <key>clock_source2</key> + <value></value> + </param> + <param> + <key>time_source2</key> + <value></value> + </param> + <param> + <key>sd_spec2</key> + <value></value> + </param> + <param> + <key>clock_source3</key> + <value></value> + </param> + <param> + <key>time_source3</key> + <value></value> + </param> + <param> + <key>sd_spec3</key> + <value></value> + </param> + <param> + <key>clock_source4</key> + <value></value> + </param> + <param> + <key>time_source4</key> + <value></value> + </param> + <param> + <key>sd_spec4</key> + <value></value> + </param> + <param> + <key>clock_source5</key> + <value></value> + </param> + <param> + <key>time_source5</key> + <value></value> + </param> + <param> + <key>sd_spec5</key> + <value></value> + </param> + <param> + <key>clock_source6</key> + <value></value> + </param> + <param> + <key>time_source6</key> + <value></value> + </param> + <param> + <key>sd_spec6</key> + <value></value> + </param> + <param> + <key>clock_source7</key> + <value></value> + </param> + <param> + <key>time_source7</key> + <value></value> + </param> + <param> + <key>sd_spec7</key> + <value></value> + </param> + <param> + <key>nchan</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>center_freq0</key> + <value>initial_fc</value> + </param> + <param> + <key>gain0</key> + <value>gain</value> + </param> + <param> + <key>ant0</key> + <value></value> + </param> + <param> + <key>bw0</key> + <value>0</value> + </param> + <param> + <key>center_freq1</key> + <value>0</value> + </param> + <param> + <key>gain1</key> + <value>0</value> + </param> + <param> + <key>ant1</key> + <value></value> + </param> + <param> + <key>bw1</key> + <value>0</value> + </param> + <param> + <key>center_freq2</key> + <value>0</value> + </param> + <param> + <key>gain2</key> + <value>0</value> + </param> + <param> + <key>ant2</key> + <value></value> + </param> + <param> + <key>bw2</key> + <value>0</value> + </param> + <param> + <key>center_freq3</key> + <value>0</value> + </param> + <param> + <key>gain3</key> + <value>0</value> + </param> + <param> + <key>ant3</key> + <value></value> + </param> + <param> + <key>bw3</key> + <value>0</value> + </param> + <param> + <key>center_freq4</key> + <value>0</value> + </param> + <param> + <key>gain4</key> + <value>0</value> + </param> + <param> + <key>ant4</key> + <value></value> + </param> + <param> + <key>bw4</key> + <value>0</value> + </param> + <param> + <key>center_freq5</key> + <value>0</value> + </param> + <param> + <key>gain5</key> + <value>0</value> + </param> + <param> + <key>ant5</key> + <value></value> + </param> + <param> + <key>bw5</key> + <value>0</value> + </param> + <param> + <key>center_freq6</key> + <value>0</value> + </param> + <param> + <key>gain6</key> + <value>0</value> + </param> + <param> + <key>ant6</key> + <value></value> + </param> + <param> + <key>bw6</key> + <value>0</value> + </param> + <param> + <key>center_freq7</key> + <value>0</value> + </param> + <param> + <key>gain7</key> + <value>0</value> + </param> + <param> + <key>ant7</key> + <value></value> + </param> + <param> + <key>bw7</key> + <value>0</value> + </param> + <param> + <key>center_freq8</key> + <value>0</value> + </param> + <param> + <key>gain8</key> + <value>0</value> + </param> + <param> + <key>ant8</key> + <value></value> + </param> + <param> + <key>bw8</key> + <value>0</value> + </param> + <param> + <key>center_freq9</key> + <value>0</value> + </param> + <param> + <key>gain9</key> + <value>0</value> + </param> + <param> + <key>ant9</key> + <value></value> + </param> + <param> + <key>bw9</key> + <value>0</value> + </param> + <param> + <key>center_freq10</key> + <value>0</value> + </param> + <param> + <key>gain10</key> + <value>0</value> + </param> + <param> + <key>ant10</key> + <value></value> + </param> + <param> + <key>bw10</key> + <value>0</value> + </param> + <param> + <key>center_freq11</key> + <value>0</value> + </param> + <param> + <key>gain11</key> + <value>0</value> + </param> + <param> + <key>ant11</key> + <value></value> + </param> + <param> + <key>bw11</key> + <value>0</value> + </param> + <param> + <key>center_freq12</key> + <value>0</value> + </param> + <param> + <key>gain12</key> + <value>0</value> + </param> + <param> + <key>ant12</key> + <value></value> + </param> + <param> + <key>bw12</key> + <value>0</value> + </param> + <param> + <key>center_freq13</key> + <value>0</value> + </param> + <param> + <key>gain13</key> + <value>0</value> + </param> + <param> + <key>ant13</key> + <value></value> + </param> + <param> + <key>bw13</key> + <value>0</value> + </param> + <param> + <key>center_freq14</key> + <value>0</value> + </param> + <param> + <key>gain14</key> + <value>0</value> + </param> + <param> + <key>ant14</key> + <value></value> + </param> + <param> + <key>bw14</key> + <value>0</value> + </param> + <param> + <key>center_freq15</key> + <value>0</value> + </param> + <param> + <key>gain15</key> + <value>0</value> + </param> + <param> + <key>ant15</key> + <value></value> + </param> + <param> + <key>bw15</key> + <value>0</value> + </param> + <param> + <key>center_freq16</key> + <value>0</value> + </param> + <param> + <key>gain16</key> + <value>0</value> + </param> + <param> + <key>ant16</key> + <value></value> + </param> + <param> + <key>bw16</key> + <value>0</value> + </param> + <param> + <key>center_freq17</key> + <value>0</value> + </param> + <param> + <key>gain17</key> + <value>0</value> + </param> + <param> + <key>ant17</key> + <value></value> + </param> + <param> + <key>bw17</key> + <value>0</value> + </param> + <param> + <key>center_freq18</key> + <value>0</value> + </param> + <param> + <key>gain18</key> + <value>0</value> + </param> + <param> + <key>ant18</key> + <value></value> + </param> + <param> + <key>bw18</key> + <value>0</value> + </param> + <param> + <key>center_freq19</key> + <value>0</value> + </param> + <param> + <key>gain19</key> + <value>0</value> + </param> + <param> + <key>ant19</key> + <value></value> + </param> + <param> + <key>bw19</key> + <value>0</value> + </param> + <param> + <key>center_freq20</key> + <value>0</value> + </param> + <param> + <key>gain20</key> + <value>0</value> + </param> + <param> + <key>ant20</key> + <value></value> + </param> + <param> + <key>bw20</key> + <value>0</value> + </param> + <param> + <key>center_freq21</key> + <value>0</value> + </param> + <param> + <key>gain21</key> + <value>0</value> + </param> + <param> + <key>ant21</key> + <value></value> + </param> + <param> + <key>bw21</key> + <value>0</value> + </param> + <param> + <key>center_freq22</key> + <value>0</value> + </param> + <param> + <key>gain22</key> + <value>0</value> + </param> + <param> + <key>ant22</key> + <value></value> + </param> + <param> + <key>bw22</key> + <value>0</value> + </param> + <param> + <key>center_freq23</key> + <value>0</value> + </param> + <param> + <key>gain23</key> + <value>0</value> + </param> + <param> + <key>ant23</key> + <value></value> + </param> + <param> + <key>bw23</key> + <value>0</value> + </param> + <param> + <key>center_freq24</key> + <value>0</value> + </param> + <param> + <key>gain24</key> + <value>0</value> + </param> + <param> + <key>ant24</key> + <value></value> + </param> + <param> + <key>bw24</key> + <value>0</value> + </param> + <param> + <key>center_freq25</key> + <value>0</value> + </param> + <param> + <key>gain25</key> + <value>0</value> + </param> + <param> + <key>ant25</key> + <value></value> + </param> + <param> + <key>bw25</key> + <value>0</value> + </param> + <param> + <key>center_freq26</key> + <value>0</value> + </param> + <param> + <key>gain26</key> + <value>0</value> + </param> + <param> + <key>ant26</key> + <value></value> + </param> + <param> + <key>bw26</key> + <value>0</value> + </param> + <param> + <key>center_freq27</key> + <value>0</value> + </param> + <param> + <key>gain27</key> + <value>0</value> + </param> + <param> + <key>ant27</key> + <value></value> + </param> + <param> + <key>bw27</key> + <value>0</value> + </param> + <param> + <key>center_freq28</key> + <value>0</value> + </param> + <param> + <key>gain28</key> + <value>0</value> + </param> + <param> + <key>ant28</key> + <value></value> + </param> + <param> + <key>bw28</key> + <value>0</value> + </param> + <param> + <key>center_freq29</key> + <value>0</value> + </param> + <param> + <key>gain29</key> + <value>0</value> + </param> + <param> + <key>ant29</key> + <value></value> + </param> + <param> + <key>bw29</key> + <value>0</value> + </param> + <param> + <key>center_freq30</key> + <value>0</value> + </param> + <param> + <key>gain30</key> + <value>0</value> + </param> + <param> + <key>ant30</key> + <value></value> + </param> + <param> + <key>bw30</key> + <value>0</value> + </param> + <param> + <key>center_freq31</key> + <value>0</value> + </param> + <param> + <key>gain31</key> + <value>0</value> + </param> + <param> + <key>ant31</key> + <value></value> + </param> + <param> + <key>bw31</key> + <value>0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(336, 8)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>name</key> + <value>QT GUI Plot</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>fc</key> + <value>initial_fc</value> + </param> + <param> + <key>bw</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(330, 104)</value> + </param> + <param> + <key>_rotation</key> + <value>180</value> + </param> + </block> + <connection> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> + <connection> + <source_block_id>qtgui_freq_sink_x_0</source_block_id> + <sink_block_id>uhd_usrp_source_0</sink_block_id> + <source_key>freq</source_key> + <sink_key>command</sink_key> + </connection> + <connection> + <source_block_id>qtgui_freq_sink_x_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> + <source_key>freq</source_key> + <sink_key>freq</sink_key> + </connection> +</flow_graph> diff --git a/gr-uhd/examples/grc/uhd_rx_dpsk.grc b/gr-uhd/examples/grc/uhd_rx_dpsk.grc index 8a9faa4b73..96b92c4484 100644 --- a/gr-uhd/examples/grc/uhd_rx_dpsk.grc +++ b/gr-uhd/examples/grc/uhd_rx_dpsk.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon Mar 18 11:10:25 2013</timestamp> + <timestamp>Sat Jul 12 15:58:45 2014</timestamp> <block> <key>options</key> <param> @@ -29,7 +29,7 @@ </param> <param> <key>generate_options</key> - <value>wx_gui</value> + <value>qt_gui</value> </param> <param> <key>category</key> @@ -52,31 +52,12 @@ <value></value> </param> <param> - <key>_coordinate</key> - <value>(12, 9)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable</key> - <param> - <key>id</key> - <value>samps_per_sym</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>value</key> - <value>4</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(12, 88)</value> + <value>(-1, 0)</value> </param> <param> <key>_rotation</key> @@ -84,34 +65,26 @@ </param> </block> <block> - <key>parameter</key> + <key>variable</key> <param> <key>id</key> - <value>samp_rate</value> + <value>rolloff</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Sample Rate</value> - </param> - <param> <key>value</key> - <value>1e6</value> + <value>.35</value> </param> <param> - <key>type</key> - <value>eng_float</value> - </param> - <param> - <key>short_id</key> - <value>s</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(339, 11)</value> + <value>(570, 579)</value> </param> <param> <key>_rotation</key> @@ -119,34 +92,26 @@ </param> </block> <block> - <key>parameter</key> + <key>variable</key> <param> <key>id</key> - <value>freq</value> + <value>samps_per_sym</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Default Frequency</value> - </param> - <param> <key>value</key> - <value>2.45e9</value> - </param> - <param> - <key>type</key> - <value>eng_float</value> + <value>4</value> </param> <param> - <key>short_id</key> - <value>f</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(466, 11)</value> + <value>(881, -1)</value> </param> <param> <key>_rotation</key> @@ -154,34 +119,26 @@ </param> </block> <block> - <key>parameter</key> + <key>variable</key> <param> <key>id</key> - <value>gain</value> + <value>nfilts</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Default Gain</value> - </param> - <param> <key>value</key> - <value>0</value> - </param> - <param> - <key>type</key> - <value>eng_float</value> + <value>32</value> </param> <param> - <key>short_id</key> - <value>g</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(624, 14)</value> + <value>(657, 579)</value> </param> <param> <key>_rotation</key> @@ -215,8 +172,12 @@ <value>a</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(186, 10)</value> + <value>(158, 0)</value> </param> <param> <key>_rotation</key> @@ -227,7 +188,7 @@ <key>parameter</key> <param> <key>id</key> - <value>freq_offset</value> + <value>gain</value> </param> <param> <key>_enabled</key> @@ -235,7 +196,7 @@ </param> <param> <key>label</key> - <value>Rx Frequency Offset</value> + <value>Default Gain</value> </param> <param> <key>value</key> @@ -247,93 +208,15 @@ </param> <param> <key>short_id</key> - <value>o</value> - </param> - <param> - <key>_coordinate</key> - <value>(748, 15)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> - <param> - <key>id</key> - <value>tun_freq</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Freq (Hz)</value> - </param> - <param> - <key>value</key> - <value>freq</value> - </param> - <param> - <key>min</key> - <value>2.4e9</value> - </param> - <param> - <key>max</key> - <value>2.5e9</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> - </param> - <param> - <key>converver</key> - <value>float_converter</value> - </param> - <param> - <key>grid_pos</key> - <value></value> + <value>g</value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(12, 436)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>blocks_null_sink</key> - <param> - <key>id</key> - <value>blocks_null_sink_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>byte</value> - </param> - <param> - <key>vlen</key> - <value>1</value> - </param> - <param> - <key>_coordinate</key> - <value>(615, 144)</value> + <value>(596, 0)</value> </param> <param> <key>_rotation</key> @@ -341,10 +224,10 @@ </param> </block> <block> - <key>variable_slider</key> + <key>parameter</key> <param> <key>id</key> - <value>timing_bw</value> + <value>freq</value> </param> <param> <key>_enabled</key> @@ -352,43 +235,27 @@ </param> <param> <key>label</key> - <value>Timing Loop BW</value> + <value>Default Frequency</value> </param> <param> <key>value</key> - <value>6.28/100.0</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <value>2.45e9</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>type</key> + <value>eng_float</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>short_id</key> + <value>f</value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(604, 436)</value> + <value>(438, 0)</value> </param> <param> <key>_rotation</key> @@ -396,10 +263,10 @@ </param> </block> <block> - <key>variable_slider</key> + <key>parameter</key> <param> <key>id</key> - <value>phase_bw</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> @@ -407,43 +274,27 @@ </param> <param> <key>label</key> - <value>Phase Loop BW</value> + <value>Sample Rate</value> </param> <param> <key>value</key> - <value>6.28/100.0</value> - </param> - <param> - <key>min</key> - <value>0</value> - </param> - <param> - <key>max</key> - <value>1.0</value> - </param> - <param> - <key>num_steps</key> - <value>100</value> - </param> - <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <value>1e6</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>type</key> + <value>eng_float</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>short_id</key> + <value>s</value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(461, 436)</value> + <value>(311, 0)</value> </param> <param> <key>_rotation</key> @@ -451,78 +302,38 @@ </param> </block> <block> - <key>wxgui_constellationsink2</key> + <key>parameter</key> <param> <key>id</key> - <value>wxgui_constellationsink2_0</value> + <value>freq_offset</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>title</key> - <value>Constellation Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>frame_rate</key> - <value>5</value> - </param> - <param> - <key>const_size</key> - <value>2048</value> - </param> - <param> - <key>M</key> - <value>4</value> + <key>label</key> + <value>Rx Frequency Offset</value> </param> <param> - <key>theta</key> + <key>value</key> <value>0</value> </param> <param> - <key>loop_bw</key> - <value>6.28/100.0</value> - </param> - <param> - <key>fmax</key> - <value>0.06</value> - </param> - <param> - <key>mu</key> - <value>0.5</value> - </param> - <param> - <key>gain_mu</key> - <value>0.005</value> - </param> - <param> - <key>symbol_rate</key> - <value>samp_rate/samps_per_sym</value> - </param> - <param> - <key>omega_limit</key> - <value>0.005</value> - </param> - <param> - <key>win_size</key> - <value></value> + <key>type</key> + <value>eng_float</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>short_id</key> + <value>o</value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(931, 313)</value> + <value>(720, 0)</value> </param> <param> <key>_rotation</key> @@ -530,90 +341,58 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>wxgui_fftsink2_0</value> + <value>tun_freq</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> - </param> - <param> - <key>samp_rate</key> - <value>samp_rate</value> - </param> - <param> - <key>baseband_freq</key> - <value>tun_freq</value> - </param> - <param> - <key>y_per_div</key> - <value>10</value> - </param> - <param> - <key>y_divs</key> - <value>10</value> - </param> - <param> - <key>ref_level</key> - <value>10</value> - </param> - <param> - <key>ref_scale</key> - <value>2.0</value> + <key>label</key> + <value>UHD Freq (Hz)</value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>value</key> + <value>2.45e9</value> </param> <param> - <key>fft_rate</key> - <value>30</value> + <key>start</key> + <value>2.4e9</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>stop</key> + <value>2.5e9</value> </param> <param> - <key>average</key> - <value>False</value> + <key>step</key> + <value>1</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>win</key> - <value>None</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>win_size</key> - <value></value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> + <key>gui_hint</key> <value></value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> - <key>freqvar</key> - <value>None</value> - </param> - <param> <key>_coordinate</key> - <value>(710, 236)</value> + <value>(6, 448)</value> </param> <param> <key>_rotation</key> @@ -621,66 +400,7 @@ </param> </block> <block> - <key>digital_dxpsk_demod</key> - <param> - <key>id</key> - <value>digital_dxpsk_demod_0</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>type</key> - <value>dqpsk</value> - </param> - <param> - <key>samples_per_symbol</key> - <value>samps_per_sym</value> - </param> - <param> - <key>excess_bw</key> - <value>0.35</value> - </param> - <param> - <key>freq_bw</key> - <value>6.28/100.0</value> - </param> - <param> - <key>phase_bw</key> - <value>6.28/100.0</value> - </param> - <param> - <key>timing_bw</key> - <value>6.28/100.0</value> - </param> - <param> - <key>mod_code</key> - <value>"gray"</value> - </param> - <param> - <key>verbose</key> - <value>False</value> - </param> - <param> - <key>log</key> - <value>False</value> - </param> - <param> - <key>sync_out</key> - <value>False</value> - </param> - <param> - <key>_coordinate</key> - <value>(303, 154)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>variable_slider</key> + <key>variable_qtgui_range</key> <param> <key>id</key> <value>rx_freq_off</value> @@ -691,43 +411,47 @@ </param> <param> <key>label</key> - <value>RX Freq Offset (Hz)</value> + <value>Rx Freq Offset (Hz)</value> </param> <param> <key>value</key> - <value>freq_offset</value> + <value>0</value> </param> <param> - <key>min</key> + <key>start</key> <value>-100e3</value> </param> <param> - <key>max</key> - <value>+100e3</value> + <key>stop</key> + <value>100e3</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> + <key>gui_hint</key> <value></value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(149, 437)</value> + <value>(134, 448)</value> </param> <param> <key>_rotation</key> @@ -735,7 +459,7 @@ </param> </block> <block> - <key>variable_slider</key> + <key>variable_qtgui_range</key> <param> <key>id</key> <value>tun_gain</value> @@ -746,43 +470,47 @@ </param> <param> <key>label</key> - <value>UHD Gain</value> + <value>UHD Tx Gain</value> </param> <param> <key>value</key> - <value>gain</value> + <value>0</value> </param> <param> - <key>min</key> + <key>start</key> <value>0</value> </param> <param> - <key>max</key> + <key>stop</key> <value>20</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> + <key>gui_hint</key> <value></value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(306, 438)</value> + <value>(286, 447)</value> </param> <param> <key>_rotation</key> @@ -812,10 +540,18 @@ <value></value> </param> <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> <key>dev_addr</key> <value>address</value> </param> <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> <key>sync</key> <value></value> </param> @@ -1444,8 +1180,381 @@ <value>0</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(0, 143)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>blocks_null_sink</key> + <param> + <key>id</key> + <value>blocks_null_sink_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>byte</value> + </param> + <param> + <key>vlen</key> + <value>1</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>bus_conns</key> + <value>[[0,],]</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(620, 168)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>digital_dxpsk_demod</key> + <param> + <key>id</key> + <value>digital_dxpsk_demod_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>dqpsk</value> + </param> + <param> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> + </param> + <param> + <key>excess_bw</key> + <value>0.35</value> + </param> + <param> + <key>freq_bw</key> + <value>6.28/100.0</value> + </param> + <param> + <key>phase_bw</key> + <value>6.28/100.0</value> + </param> + <param> + <key>timing_bw</key> + <value>6.28/100.0</value> + </param> + <param> + <key>mod_code</key> + <value>"gray"</value> + </param> + <param> + <key>verbose</key> + <value>False</value> + </param> + <param> + <key>log</key> + <value>False</value> + </param> + <param> + <key>sync_out</key> + <value>False</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> + <key>_coordinate</key> + <value>(325, 112)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>qtgui_freq_sink_x</key> + <param> + <key>id</key> + <value>qtgui_freq_sink_x_0</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>type</key> + <value>complex</value> + </param> + <param> + <key>name</key> + <value>""</value> + </param> + <param> + <key>fftsize</key> + <value>1024</value> + </param> + <param> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>fc</key> + <value>tun_freq</value> + </param> + <param> + <key>bw</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> + </param> + <param> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> + </param> + <param> + <key>update_time</key> + <value>0.10</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>label1</key> + <value></value> + </param> + <param> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> + </param> + <param> + <key>alpha2</key> + <value>1.0</value> + </param> + <param> + <key>label3</key> + <value></value> + </param> + <param> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> + <value></value> + </param> + <param> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(18, 276)</value> + <value>(340, 283)</value> </param> <param> <key>_rotation</key> @@ -1466,13 +1575,7 @@ </connection> <connection> <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>wxgui_constellationsink2_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> - <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-uhd/examples/grc/uhd_two_tone_loopback.grc b/gr-uhd/examples/grc/uhd_two_tone_loopback.grc index 1884dd3ebf..f164d8522a 100644 --- a/gr-uhd/examples/grc/uhd_two_tone_loopback.grc +++ b/gr-uhd/examples/grc/uhd_two_tone_loopback.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Sat Nov 10 14:55:26 2012</timestamp> + <timestamp>Sat Jul 12 14:48:02 2014</timestamp> <block> <key>options</key> <param> @@ -29,7 +29,7 @@ </param> <param> <key>generate_options</key> - <value>wx_gui</value> + <value>qt_gui</value> </param> <param> <key>category</key> @@ -52,8 +52,12 @@ <value></value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(1, 0)</value> </param> <param> <key>_rotation</key> @@ -64,7 +68,7 @@ <key>parameter</key> <param> <key>id</key> - <value>tx_gain</value> + <value>samp_rate</value> </param> <param> <key>_enabled</key> @@ -72,7 +76,46 @@ </param> <param> <key>label</key> - <value>Default TX Gain</value> + <value>Sample Rate</value> + </param> + <param> + <key>value</key> + <value>500e3</value> + </param> + <param> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>short_id</key> + <value>s</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(523, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>rx_gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Default RX Gain</value> </param> <param> <key>value</key> @@ -87,8 +130,51 @@ <value></value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(999, 11)</value> + <value>(1123, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>freq_offset</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Rx Frequency Offset</value> + </param> + <param> + <key>value</key> + <value>0</value> + </param> + <param> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>short_id</key> + <value>o</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(804, 0)</value> </param> <param> <key>_rotation</key> @@ -122,8 +208,12 @@ <value>f</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(665, 11)</value> + <value>(649, 0)</value> </param> <param> <key>_rotation</key> @@ -134,7 +224,7 @@ <key>parameter</key> <param> <key>id</key> - <value>freq_offset</value> + <value>tx_gain</value> </param> <param> <key>_enabled</key> @@ -142,7 +232,7 @@ </param> <param> <key>label</key> - <value>Rx Frequency Offset</value> + <value>Default TX Gain</value> </param> <param> <key>value</key> @@ -154,11 +244,15 @@ </param> <param> <key>short_id</key> - <value>o</value> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(820, 11)</value> + <value>(983, 0)</value> </param> <param> <key>_rotation</key> @@ -169,7 +263,7 @@ <key>parameter</key> <param> <key>id</key> - <value>address1</value> + <value>address0</value> </param> <param> <key>_enabled</key> @@ -177,11 +271,11 @@ </param> <param> <key>label</key> - <value>IP Address, Dev 1</value> + <value>IP Address, Dev 0</value> </param> <param> <key>value</key> - <value>addr=192.168.11.2</value> + <value>addr=192.168.10.2</value> </param> <param> <key>type</key> @@ -192,8 +286,12 @@ <value></value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(353, 14)</value> + <value>(177, 0)</value> </param> <param> <key>_rotation</key> @@ -204,7 +302,7 @@ <key>parameter</key> <param> <key>id</key> - <value>address0</value> + <value>address1</value> </param> <param> <key>_enabled</key> @@ -212,7 +310,7 @@ </param> <param> <key>label</key> - <value>IP Address, Dev 0</value> + <value>IP Address, Dev 1</value> </param> <param> <key>value</key> @@ -227,8 +325,12 @@ <value></value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(193, 14)</value> + <value>(337, 0)</value> </param> <param> <key>_rotation</key> @@ -236,10 +338,10 @@ </param> </block> <block> - <key>uhd_usrp_sink</key> + <key>uhd_usrp_source</key> <param> <key>id</key> - <value>uhd_usrp_sink_0</value> + <value>uhd_usrp_source_0</value> </param> <param> <key>_enabled</key> @@ -258,8 +360,16 @@ <value></value> </param> <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> <key>dev_addr</key> - <value>address0</value> + <value>address1</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> </param> <param> <key>sync</key> @@ -283,7 +393,7 @@ </param> <param> <key>sd_spec0</key> - <value></value> + <value>B:0</value> </param> <param> <key>clock_source1</key> @@ -890,8 +1000,24 @@ <value>0</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(669, 178)</value> + <value>(813, 281)</value> </param> <param> <key>_rotation</key> @@ -899,34 +1025,50 @@ </param> </block> <block> - <key>parameter</key> + <key>analog_noise_source_x</key> <param> <key>id</key> - <value>rx_gain</value> + <value>analog_noise_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Default RX Gain</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> - <value>0</value> + <key>noise_type</key> + <value>analog.GR_GAUSSIAN</value> </param> <param> - <key>type</key> - <value>eng_float</value> + <key>amp</key> + <value>noise_ampl</value> </param> <param> - <key>short_id</key> + <key>seed</key> + <value>-42</value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(1139, 12)</value> + <value>(551, 324)</value> </param> <param> <key>_rotation</key> @@ -934,54 +1076,58 @@ </param> </block> <block> - <key>variable_slider</key> + <key>analog_sig_source_x</key> <param> <key>id</key> - <value>tone1</value> + <value>analog_sig_source_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Tone 1</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> - <value>50e3</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>min</key> - <value>-samp_rate/2</value> + <key>waveform</key> + <value>analog.GR_COS_WAVE</value> </param> <param> - <key>max</key> - <value>samp_rate/2</value> + <key>freq</key> + <value>tone1</value> + </param> + <param> + <key>amp</key> + <value>tone_ampl</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>offset</key> + <value>0</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>alias</key> + <value></value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>affinity</key> + <value></value> </param> <param> - <key>grid_pos</key> - <value>0, 0, 1, 4</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>notebook</key> - <value></value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(161, 484)</value> + <value>(541, 98)</value> </param> <param> <key>_rotation</key> @@ -989,54 +1135,58 @@ </param> </block> <block> - <key>variable_slider</key> + <key>analog_sig_source_x</key> <param> <key>id</key> - <value>tone2</value> + <value>analog_sig_source_x_1</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Tone 2</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> - <value>75e3</value> + <key>samp_rate</key> + <value>samp_rate</value> </param> <param> - <key>min</key> - <value>-samp_rate/2</value> + <key>waveform</key> + <value>analog.GR_COS_WAVE</value> </param> <param> - <key>max</key> - <value>samp_rate/2</value> + <key>freq</key> + <value>tone2</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>amp</key> + <value>tone_ampl</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>offset</key> + <value>0</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>alias</key> + <value></value> </param> <param> - <key>grid_pos</key> - <value>0, 4, 1, 4</value> + <key>affinity</key> + <value></value> </param> <param> - <key>notebook</key> - <value></value> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(308, 483)</value> + <value>(542, 209)</value> </param> <param> <key>_rotation</key> @@ -1044,54 +1194,46 @@ </param> </block> <block> - <key>variable_slider</key> + <key>blocks_add_xx</key> <param> <key>id</key> - <value>tun_tx_gain</value> + <value>blocks_add_xx</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>UHD TX Gain</value> - </param> - <param> - <key>value</key> - <value>tx_gain</value> - </param> - <param> - <key>min</key> - <value>0</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>max</key> - <value>20</value> + <key>num_inputs</key> + <value>3</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>alias</key> + <value></value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>affinity</key> + <value></value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>notebook</key> - <value></value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(655, 486)</value> + <value>(806, 134)</value> </param> <param> <key>_rotation</key> @@ -1099,109 +1241,238 @@ </param> </block> <block> - <key>variable_slider</key> + <key>qtgui_freq_sink_x</key> <param> <key>id</key> - <value>tun_freq</value> + <value>qtgui_freq_sink_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Freq (Hz)</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> - <value>freq</value> + <key>name</key> + <value>""</value> </param> <param> - <key>min</key> - <value>2.4e9</value> + <key>fftsize</key> + <value>1024</value> </param> <param> - <key>max</key> - <value>2.5e9</value> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>fc</key> + <value>0</value> + </param> + <param> + <key>bw</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>False</value> + </param> + <param> + <key>average</key> + <value>1.0</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>ymin</key> + <value>-140</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>ymax</key> + <value>10</value> + </param> + <param> + <key>nconnections</key> + <value>1</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>update_time</key> + <value>0.10</value> </param> <param> - <key>grid_pos</key> + <key>gui_hint</key> + <value>2,0,1,4</value> + </param> + <param> + <key>label1</key> <value></value> </param> <param> - <key>notebook</key> + <key>width1</key> + <value>1</value> + </param> + <param> + <key>color1</key> + <value>"blue"</value> + </param> + <param> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> <value></value> </param> <param> - <key>_coordinate</key> - <value>(514, 487)</value> + <key>width2</key> + <value>1</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>color2</key> + <value>"red"</value> </param> - </block> - <block> - <key>variable_slider</key> <param> - <key>id</key> - <value>tun_rx_gain</value> + <key>alpha2</key> + <value>1.0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>label3</key> + <value></value> </param> <param> - <key>label</key> - <value>UHD RX Gain</value> + <key>width3</key> + <value>1</value> </param> <param> - <key>value</key> - <value>rx_gain</value> + <key>color3</key> + <value>"green"</value> </param> <param> - <key>min</key> - <value>0</value> + <key>alpha3</key> + <value>1.0</value> </param> <param> - <key>max</key> - <value>20</value> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> + <value></value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> + <value></value> + </param> + <param> + <key>width7</key> + <value>1</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>color7</key> + <value>"yellow"</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>alpha7</key> + <value>1.0</value> </param> <param> - <key>grid_pos</key> + <key>label8</key> <value></value> </param> <param> - <key>notebook</key> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(781, 487)</value> + <value>(1086, 281)</value> </param> <param> <key>_rotation</key> @@ -1209,10 +1480,10 @@ </param> </block> <block> - <key>uhd_usrp_source</key> + <key>uhd_usrp_sink</key> <param> <key>id</key> - <value>uhd_usrp_source_0</value> + <value>uhd_usrp_sink_0</value> </param> <param> <key>_enabled</key> @@ -1231,8 +1502,16 @@ <value></value> </param> <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> <key>dev_addr</key> - <value>address1</value> + <value>address0</value> + </param> + <param> + <key>dev_args</key> + <value>""</value> </param> <param> <key>sync</key> @@ -1256,7 +1535,7 @@ </param> <param> <key>sd_spec0</key> - <value></value> + <value>A:0</value> </param> <param> <key>clock_source1</key> @@ -1863,8 +2142,20 @@ <value>0</value> </param> <param> + <key>len_tag_name</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(672, 320)</value> + <value>(949, 140)</value> </param> <param> <key>_rotation</key> @@ -1872,10 +2163,10 @@ </param> </block> <block> - <key>variable_slider</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>tone_ampl</value> + <value>tun_freq</value> </param> <param> <key>_enabled</key> @@ -1883,43 +2174,47 @@ </param> <param> <key>label</key> - <value>Tone Ampl</value> + <value>UHD Freq (Hz)</value> </param> <param> <key>value</key> - <value>0.15</value> + <value>2.45e9</value> </param> <param> - <key>min</key> - <value>0</value> + <key>start</key> + <value>2.4e9</value> + </param> + <param> + <key>stop</key> + <value>2.5e9</value> </param> <param> - <key>max</key> + <key>step</key> <value>1</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>style</key> - <value>wx.SL_VERTICAL</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> - <value>1, 0, 2, 1</value> + <key>gui_hint</key> + <value>3,0,1,4</value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(14, 485)</value> + <value>(80, 431)</value> </param> <param> <key>_rotation</key> @@ -1927,10 +2222,10 @@ </param> </block> <block> - <key>variable_slider</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>noise_ampl</value> + <value>tone1</value> </param> <param> <key>_enabled</key> @@ -1938,43 +2233,47 @@ </param> <param> <key>label</key> - <value>Noise Ampl</value> + <value>Tone 1</value> </param> <param> <key>value</key> - <value>0.1</value> + <value>samp_rate/4</value> </param> <param> - <key>min</key> - <value>0</value> + <key>start</key> + <value>-samp_rate/2</value> + </param> + <param> + <key>stop</key> + <value>samp_rate/2</value> </param> <param> - <key>max</key> + <key>step</key> <value>1</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>style</key> - <value>wx.SL_VERTICAL</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> - <value>1, 1, 2, 1</value> + <key>gui_hint</key> + <value>0,0,1,2</value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(15, 335)</value> + <value>(1, 131)</value> </param> <param> <key>_rotation</key> @@ -1982,125 +2281,117 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>wxgui_fftsink2</value> + <value>noise_ampl</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>title</key> - <value>FFT Plot</value> + <key>label</key> + <value>Noise Amplitude</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>value</key> + <value>0.1</value> </param> <param> - <key>baseband_freq</key> + <key>start</key> <value>0</value> </param> <param> - <key>y_per_div</key> - <value>10</value> + <key>stop</key> + <value>1</value> </param> <param> - <key>y_divs</key> - <value>10</value> + <key>step</key> + <value>.001</value> </param> <param> - <key>ref_level</key> - <value>0</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>fft_size</key> - <value>512*2</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>fft_rate</key> - <value>15</value> + <key>gui_hint</key> + <value>1,0,1,2</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>alias</key> + <value></value> </param> <param> - <key>average</key> - <value>False</value> + <key>_coordinate</key> + <value>(0, 283)</value> </param> <param> - <key>avg_alpha</key> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>variable_qtgui_range</key> <param> - <key>win</key> - <value>window.blackmanharris</value> - </param> - <param> - <key>win_size</key> - <value></value> + <key>id</key> + <value>tun_tx_gain</value> </param> <param> - <key>grid_pos</key> - <value>1, 2, 2, 4</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>notebook</key> - <value></value> + <key>label</key> + <value>UHD Tx Gain</value> </param> <param> - <key>freqvar</key> - <value>None</value> + <key>value</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(1114, 264)</value> + <key>start</key> + <value>0</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>stop</key> + <value>20</value> </param> - </block> - <block> - <key>parameter</key> <param> - <key>id</key> - <value>samp_rate</value> + <key>step</key> + <value>1</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>label</key> - <value>Sample Rate</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>value</key> - <value>500e3</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>type</key> - <value>eng_float</value> + <key>gui_hint</key> + <value>4,0,1,2</value> </param> <param> - <key>short_id</key> - <value>s</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(539, 11)</value> + <value>(-1, 573)</value> </param> <param> <key>_rotation</key> @@ -2108,42 +2399,58 @@ </param> </block> <block> - <key>analog_sig_source_x</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>analog_sig_source_x_0</value> + <value>tone2</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>label</key> + <value>Tone 2</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>value</key> + <value>samp_rate/5</value> </param> <param> - <key>waveform</key> - <value>analog.GR_COS_WAVE</value> + <key>start</key> + <value>-samp_rate/2</value> </param> <param> - <key>freq</key> - <value>tone1</value> + <key>stop</key> + <value>samp_rate/2</value> </param> <param> - <key>amp</key> - <value>tone_ampl</value> + <key>step</key> + <value>1</value> </param> <param> - <key>offset</key> - <value>0</value> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value>0,2,1,2</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(264, 136)</value> + <value>(126, 132)</value> </param> <param> <key>_rotation</key> @@ -2151,42 +2458,58 @@ </param> </block> <block> - <key>analog_sig_source_x</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>analog_sig_source_x_1</value> + <value>tone_ampl</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>label</key> + <value>Tone Amplitude</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>value</key> + <value>0.15</value> </param> <param> - <key>waveform</key> - <value>analog.GR_COS_WAVE</value> + <key>start</key> + <value>0</value> </param> <param> - <key>freq</key> - <value>tone2</value> + <key>stop</key> + <value>1</value> </param> <param> - <key>amp</key> - <value>tone_ampl</value> + <key>step</key> + <value>.001</value> </param> <param> - <key>offset</key> - <value>0</value> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value>1,2,1,2</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(265, 247)</value> + <value>(152, 286)</value> </param> <param> <key>_rotation</key> @@ -2194,65 +2517,58 @@ </param> </block> <block> - <key>blocks_add_xx</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>blocks_add_xx</value> + <value>tun_rx_gain</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>complex</value> - </param> - <param> - <key>num_inputs</key> - <value>3</value> + <key>label</key> + <value>UHD Rx Gain</value> </param> <param> - <key>vlen</key> - <value>1</value> + <key>value</key> + <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(529, 172)</value> + <key>start</key> + <value>0</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>stop</key> + <value>20</value> </param> - </block> - <block> - <key>analog_noise_source_x</key> <param> - <key>id</key> - <value>analog_noise_source_x_0</value> + <key>step</key> + <value>1</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>type</key> - <value>complex</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>noise_type</key> - <value>analog.GR_GAUSSIAN</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>amp</key> - <value>noise_ampl</value> + <key>gui_hint</key> + <value>4,2,1,2</value> </param> <param> - <key>seed</key> - <value>-42</value> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(288, 359)</value> + <value>(120, 571)</value> </param> <param> <key>_rotation</key> @@ -2260,14 +2576,8 @@ </param> </block> <connection> - <source_block_id>blocks_add_xx</source_block_id> - <sink_block_id>uhd_usrp_sink_0</sink_block_id> - <source_key>0</source_key> - <sink_key>0</sink_key> - </connection> - <connection> <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>wxgui_fftsink2</sink_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> @@ -2289,4 +2599,10 @@ <source_key>0</source_key> <sink_key>2</sink_key> </connection> + <connection> + <source_block_id>blocks_add_xx</source_block_id> + <sink_block_id>uhd_usrp_sink_0</sink_block_id> + <source_key>0</source_key> + <sink_key>0</sink_key> + </connection> </flow_graph> diff --git a/gr-uhd/examples/grc/uhd_tx_dpsk.grc b/gr-uhd/examples/grc/uhd_tx_dpsk.grc index 5d57617673..815d87b742 100644 --- a/gr-uhd/examples/grc/uhd_tx_dpsk.grc +++ b/gr-uhd/examples/grc/uhd_tx_dpsk.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon Mar 18 11:11:06 2013</timestamp> + <timestamp>Sat Jul 12 14:07:03 2014</timestamp> <block> <key>options</key> <param> @@ -29,7 +29,7 @@ </param> <param> <key>generate_options</key> - <value>wx_gui</value> + <value>qt_gui</value> </param> <param> <key>category</key> @@ -52,8 +52,12 @@ <value></value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(-1, 0)</value> </param> <param> <key>_rotation</key> @@ -75,8 +79,12 @@ <value>4</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(10, 100)</value> + <value>(-1, 84)</value> </param> <param> <key>_rotation</key> @@ -84,10 +92,10 @@ </param> </block> <block> - <key>variable_slider</key> + <key>parameter</key> <param> <key>id</key> - <value>ampl</value> + <value>gain</value> </param> <param> <key>_enabled</key> @@ -95,43 +103,66 @@ </param> <param> <key>label</key> - <value>Amplitude</value> + <value>Default Gain</value> </param> <param> <key>value</key> - <value>.1</value> + <value>0</value> </param> <param> - <key>min</key> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>short_id</key> + <value>g</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(589, 0)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>parameter</key> <param> - <key>max</key> - <value>1</value> + <key>id</key> + <value>freq</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>label</key> + <value>Default Frequency</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>value</key> + <value>2.45e9</value> </param> <param> - <key>grid_pos</key> - <value></value> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>short_id</key> + <value>f</value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(7, 299)</value> + <value>(433, 1)</value> </param> <param> <key>_rotation</key> @@ -165,8 +196,12 @@ <value>s</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(334, 15)</value> + <value>(304, 0)</value> </param> <param> <key>_rotation</key> @@ -177,7 +212,7 @@ <key>parameter</key> <param> <key>id</key> - <value>freq</value> + <value>address</value> </param> <param> <key>_enabled</key> @@ -185,23 +220,27 @@ </param> <param> <key>label</key> - <value>Default Frequency</value> + <value>IP Address</value> </param> <param> <key>value</key> - <value>2.45e9</value> + <value>addr=192.168.10.2</value> </param> <param> <key>type</key> - <value>eng_float</value> + <value>string</value> </param> <param> <key>short_id</key> - <value>f</value> + <value>a</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(463, 17)</value> + <value>(147, 0)</value> </param> <param> <key>_rotation</key> @@ -209,10 +248,10 @@ </param> </block> <block> - <key>variable_slider</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>tun_gain</value> + <value>ampl</value> </param> <param> <key>_enabled</key> @@ -220,43 +259,47 @@ </param> <param> <key>label</key> - <value>UHD Gain</value> + <value>Amplitude</value> </param> <param> <key>value</key> - <value>gain</value> + <value>0.1</value> </param> <param> - <key>min</key> + <key>start</key> <value>0</value> </param> <param> - <key>max</key> - <value>20</value> + <key>stop</key> + <value>1</value> + </param> + <param> + <key>step</key> + <value>0.01</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> + <key>gui_hint</key> <value></value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(151, 441)</value> + <value>(-1, 307)</value> </param> <param> <key>_rotation</key> @@ -264,7 +307,7 @@ </param> </block> <block> - <key>variable_slider</key> + <key>variable_qtgui_range</key> <param> <key>id</key> <value>tun_freq</value> @@ -275,43 +318,47 @@ </param> <param> <key>label</key> - <value>Freq (Hz)</value> + <value>UHD Freq (Hz)</value> </param> <param> <key>value</key> - <value>freq</value> + <value>2.45e9</value> </param> <param> - <key>min</key> + <key>start</key> <value>2.4e9</value> </param> <param> - <key>max</key> + <key>stop</key> <value>2.5e9</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> + <key>gui_hint</key> <value></value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(7, 441)</value> + <value>(0, 436)</value> </param> <param> <key>_rotation</key> @@ -319,38 +366,58 @@ </param> </block> <block> - <key>analog_random_source_x</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>analog_random_source_x_0</value> + <value>tun_gain</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>byte</value> + <key>label</key> + <value>UHD Tx Gain</value> </param> <param> - <key>min</key> + <key>value</key> <value>0</value> </param> <param> - <key>max</key> - <value>2**8</value> + <key>start</key> + <value>0</value> </param> <param> - <key>num_samps</key> - <value>1000</value> + <key>stop</key> + <value>20</value> </param> <param> - <key>repeat</key> - <value>True</value> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(177, 162)</value> + <value>(137, 435)</value> </param> <param> <key>_rotation</key> @@ -358,10 +425,10 @@ </param> </block> <block> - <key>digital_dxpsk_mod</key> + <key>analog_random_source_x</key> <param> <key>id</key> - <value>digital_dxpsk_mod_0</value> + <value>analog_random_source_x_0</value> </param> <param> <key>_enabled</key> @@ -369,31 +436,43 @@ </param> <param> <key>type</key> - <value>dqpsk</value> + <value>byte</value> </param> <param> - <key>samples_per_symbol</key> - <value>samps_per_sym</value> + <key>min</key> + <value>0</value> </param> <param> - <key>excess_bw</key> - <value>0.35</value> + <key>max</key> + <value>2**8</value> </param> <param> - <key>mod_code</key> - <value>"gray"</value> + <key>num_samps</key> + <value>1000</value> </param> <param> - <key>verbose</key> - <value>False</value> + <key>repeat</key> + <value>True</value> </param> <param> - <key>log</key> - <value>False</value> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(366, 162)</value> + <value>(-1, 171)</value> </param> <param> <key>_rotation</key> @@ -401,69 +480,58 @@ </param> </block> <block> - <key>parameter</key> + <key>digital_dxpsk_mod</key> <param> <key>id</key> - <value>gain</value> + <value>digital_dxpsk_mod_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Default Gain</value> - </param> - <param> - <key>value</key> - <value>0</value> - </param> - <param> <key>type</key> - <value>eng_float</value> + <value>dqpsk</value> </param> <param> - <key>short_id</key> - <value>g</value> + <key>samples_per_symbol</key> + <value>samps_per_sym</value> </param> <param> - <key>_coordinate</key> - <value>(619, 15)</value> + <key>excess_bw</key> + <value>0.35</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>mod_code</key> + <value>"gray"</value> </param> - </block> - <block> - <key>parameter</key> <param> - <key>id</key> - <value>address</value> + <key>verbose</key> + <value>False</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>log</key> + <value>False</value> </param> <param> - <key>label</key> - <value>IP Address</value> + <key>alias</key> + <value></value> </param> <param> - <key>value</key> - <value>addr=192.168.10.2</value> + <key>affinity</key> + <value></value> </param> <param> - <key>type</key> - <value>string</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>short_id</key> - <value>a</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(177, 14)</value> + <value>(190, 171)</value> </param> <param> <key>_rotation</key> @@ -493,10 +561,18 @@ <value></value> </param> <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> <key>dev_addr</key> <value>address</value> </param> <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> <key>sync</key> <value></value> </param> @@ -1125,8 +1201,20 @@ <value>0</value> </param> <param> + <key>len_tag_name</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(783, 162)</value> + <value>(617, 163)</value> </param> <param> <key>_rotation</key> @@ -1156,8 +1244,24 @@ <value>1</value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(566, 186)</value> + <value>(388, 193)</value> </param> <param> <key>_rotation</key> @@ -1165,10 +1269,10 @@ </param> </block> <block> - <key>wxgui_fftsink2</key> + <key>qtgui_freq_sink_x</key> <param> <key>id</key> - <value>wxgui_fftsink2_0</value> + <value>qtgui_freq_sink_x_0</value> </param> <param> <key>_enabled</key> @@ -1179,76 +1283,224 @@ <value>complex</value> </param> <param> - <key>title</key> + <key>name</key> <value>Transmit Spectrum</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>fftsize</key> + <value>1024</value> </param> <param> - <key>baseband_freq</key> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> + </param> + <param> + <key>fc</key> <value>tun_freq</value> </param> <param> - <key>y_per_div</key> - <value>10</value> + <key>bw</key> + <value>samp_rate</value> + </param> + <param> + <key>autoscale</key> + <value>True</value> + </param> + <param> + <key>average</key> + <value>1.0</value> </param> <param> - <key>y_divs</key> + <key>ymin</key> + <value>-140</value> + </param> + <param> + <key>ymax</key> <value>10</value> </param> <param> - <key>ref_level</key> - <value>0</value> + <key>nconnections</key> + <value>1</value> </param> <param> - <key>ref_scale</key> - <value>2</value> + <key>update_time</key> + <value>0.10</value> </param> <param> - <key>fft_size</key> - <value>1024</value> + <key>gui_hint</key> + <value></value> </param> <param> - <key>fft_rate</key> - <value>20</value> + <key>label1</key> + <value></value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>width1</key> + <value>1</value> </param> <param> - <key>average</key> - <value>False</value> + <key>color1</key> + <value>"blue"</value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>alpha1</key> + <value>1.0</value> + </param> + <param> + <key>label2</key> + <value></value> + </param> + <param> + <key>width2</key> + <value>1</value> + </param> + <param> + <key>color2</key> + <value>"red"</value> </param> <param> - <key>win</key> - <value>None</value> + <key>alpha2</key> + <value>1.0</value> </param> <param> - <key>win_size</key> + <key>label3</key> <value></value> </param> <param> - <key>grid_pos</key> + <key>width3</key> + <value>1</value> + </param> + <param> + <key>color3</key> + <value>"green"</value> + </param> + <param> + <key>alpha3</key> + <value>1.0</value> + </param> + <param> + <key>label4</key> + <value></value> + </param> + <param> + <key>width4</key> + <value>1</value> + </param> + <param> + <key>color4</key> + <value>"black"</value> + </param> + <param> + <key>alpha4</key> + <value>1.0</value> + </param> + <param> + <key>label5</key> + <value></value> + </param> + <param> + <key>width5</key> + <value>1</value> + </param> + <param> + <key>color5</key> + <value>"cyan"</value> + </param> + <param> + <key>alpha5</key> + <value>1.0</value> + </param> + <param> + <key>label6</key> <value></value> </param> <param> - <key>notebook</key> + <key>width6</key> + <value>1</value> + </param> + <param> + <key>color6</key> + <value>"magenta"</value> + </param> + <param> + <key>alpha6</key> + <value>1.0</value> + </param> + <param> + <key>label7</key> <value></value> </param> <param> - <key>freqvar</key> - <value>None</value> + <key>width7</key> + <value>1</value> + </param> + <param> + <key>color7</key> + <value>"yellow"</value> + </param> + <param> + <key>alpha7</key> + <value>1.0</value> + </param> + <param> + <key>label8</key> + <value></value> + </param> + <param> + <key>width8</key> + <value>1</value> + </param> + <param> + <key>color8</key> + <value>"dark red"</value> + </param> + <param> + <key>alpha8</key> + <value>1.0</value> + </param> + <param> + <key>label9</key> + <value></value> + </param> + <param> + <key>width9</key> + <value>1</value> + </param> + <param> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> + </param> + <param> + <key>label10</key> + <value></value> + </param> + <param> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> + </param> + <param> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(827, 299)</value> + <value>(619, 285)</value> </param> <param> <key>_rotation</key> @@ -1263,19 +1515,19 @@ </connection> <connection> <source_block_id>blocks_multiply_const_vxx_0</source_block_id> - <sink_block_id>wxgui_fftsink2_0</sink_block_id> + <sink_block_id>uhd_usrp_sink_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>blocks_multiply_const_vxx_0</source_block_id> - <sink_block_id>uhd_usrp_sink_0</sink_block_id> + <source_block_id>digital_dxpsk_mod_0</source_block_id> + <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>digital_dxpsk_mod_0</source_block_id> - <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> + <source_block_id>blocks_multiply_const_vxx_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-uhd/examples/grc/uhd_wbfm_receive.grc b/gr-uhd/examples/grc/uhd_wbfm_receive.grc index e19015a790..153dbd94f3 100644 --- a/gr-uhd/examples/grc/uhd_wbfm_receive.grc +++ b/gr-uhd/examples/grc/uhd_wbfm_receive.grc @@ -1,6 +1,6 @@ <?xml version='1.0' encoding='ASCII'?> <flow_graph> - <timestamp>Mon Mar 18 11:13:02 2013</timestamp> + <timestamp>Sat Jul 12 14:40:24 2014</timestamp> <block> <key>options</key> <param> @@ -29,7 +29,7 @@ </param> <param> <key>generate_options</key> - <value>wx_gui</value> + <value>qt_gui</value> </param> <param> <key>category</key> @@ -52,8 +52,39 @@ <value></value> </param> <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(-2, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable</key> + <param> + <key>id</key> + <value>audio_decim</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>value</key> + <value>10</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(10, 10)</value> + <value>(607, 192)</value> </param> <param> <key>_rotation</key> @@ -64,7 +95,7 @@ <key>parameter</key> <param> <key>id</key> - <value>gain</value> + <value>address</value> </param> <param> <key>_enabled</key> @@ -72,23 +103,66 @@ </param> <param> <key>label</key> - <value>Default Gain</value> + <value>IP Address</value> </param> <param> <key>value</key> + <value>addr=192.168.10.2</value> + </param> + <param> + <key>type</key> + <value>string</value> + </param> + <param> + <key>short_id</key> + <value>a</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(162, 0)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>parameter</key> + <param> + <key>id</key> + <value>samp_rate</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>Sample Rate</value> + </param> + <param> + <key>value</key> + <value>400e3</value> + </param> <param> <key>type</key> <value>eng_float</value> </param> <param> <key>short_id</key> - <value>g</value> + <value>s</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(631, 15)</value> + <value>(315, 0)</value> </param> <param> <key>_rotation</key> @@ -99,7 +173,7 @@ <key>parameter</key> <param> <key>id</key> - <value>freq</value> + <value>gain</value> </param> <param> <key>_enabled</key> @@ -107,11 +181,11 @@ </param> <param> <key>label</key> - <value>Default Frequency</value> + <value>Default Gain</value> </param> <param> <key>value</key> - <value>93.3e6</value> + <value>0</value> </param> <param> <key>type</key> @@ -119,11 +193,15 @@ </param> <param> <key>short_id</key> - <value>f</value> + <value>g</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(479, 15)</value> + <value>(594, 0)</value> </param> <param> <key>_rotation</key> @@ -131,10 +209,10 @@ </param> </block> <block> - <key>variable_slider</key> + <key>parameter</key> <param> <key>id</key> - <value>tun_freq</value> + <value>audio_output</value> </param> <param> <key>_enabled</key> @@ -142,43 +220,70 @@ </param> <param> <key>label</key> - <value>Freq (Hz)</value> + <value>Audio Output Device</value> </param> <param> <key>value</key> - <value>freq</value> + <value></value> </param> <param> - <key>min</key> - <value>87.9e6</value> + <key>type</key> + <value>string</value> </param> <param> - <key>max</key> - <value>108.1e6</value> + <key>short_id</key> + <value>O</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>alias</key> + <value></value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>_coordinate</key> + <value>(732, 0)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>analog_wfm_rcv</key> + <param> + <key>id</key> + <value>analog_wfm_rcv</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>grid_pos</key> + <key>quad_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>audio_decimation</key> + <value>audio_decim</value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> - <key>notebook</key> + <key>affinity</key> <value></value> </param> <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(15, 441)</value> + <value>(597, 127)</value> </param> <param> <key>_rotation</key> @@ -186,54 +291,89 @@ </param> </block> <block> - <key>variable_slider</key> + <key>audio_sink</key> <param> <key>id</key> - <value>fine</value> + <value>audio_sink</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Fine Freq (MHz)</value> + <key>samp_rate</key> + <value>int(samp_rate/audio_decim)</value> </param> <param> - <key>value</key> + <key>device_name</key> + <value>audio_output</value> + </param> + <param> + <key>ok_to_block</key> + <value>True</value> + </param> + <param> + <key>num_inputs</key> + <value>1</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>affinity</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(995, 135)</value> + </param> + <param> + <key>_rotation</key> <value>0</value> </param> + </block> + <block> + <key>blocks_multiply_const_vxx</key> <param> - <key>min</key> - <value>-.1</value> + <key>id</key> + <value>blocks_multiply_const_vxx</value> </param> <param> - <key>max</key> - <value>.1</value> + <key>_enabled</key> + <value>True</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>type</key> + <value>float</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>const</key> + <value>volume</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>vlen</key> + <value>1</value> </param> <param> - <key>grid_pos</key> - <value>0, 2, 1, 2</value> + <key>alias</key> + <value></value> </param> <param> - <key>notebook</key> + <key>affinity</key> <value></value> </param> <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(277, 444)</value> + <value>(808, 135)</value> </param> <param> <key>_rotation</key> @@ -241,54 +381,70 @@ </param> </block> <block> - <key>variable_slider</key> + <key>low_pass_filter</key> <param> <key>id</key> - <value>tun_gain</value> + <value>low_pass_filter_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>UHD Gain</value> + <key>type</key> + <value>fir_filter_ccf</value> </param> <param> - <key>value</key> - <value>gain</value> + <key>decim</key> + <value>1</value> </param> <param> - <key>min</key> - <value>0</value> + <key>interp</key> + <value>1</value> </param> <param> - <key>max</key> - <value>20</value> + <key>gain</key> + <value>1</value> + </param> + <param> + <key>samp_rate</key> + <value>samp_rate</value> + </param> + <param> + <key>cutoff_freq</key> + <value>115e3</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>width</key> + <value>30e3</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>win</key> + <value>firdes.WIN_HANN</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>beta</key> + <value>6.76</value> </param> <param> - <key>grid_pos</key> + <key>alias</key> <value></value> </param> <param> - <key>notebook</key> + <key>affinity</key> <value></value> </param> <param> + <key>minoutbuf</key> + <value>0</value> + </param> + <param> + <key>maxoutbuf</key> + <value>0</value> + </param> + <param> <key>_coordinate</key> - <value>(158, 440)</value> + <value>(261, 116)</value> </param> <param> <key>_rotation</key> @@ -296,7 +452,7 @@ </param> </block> <block> - <key>variable_slider</key> + <key>variable_qtgui_range</key> <param> <key>id</key> <value>volume</value> @@ -314,36 +470,40 @@ <value>1</value> </param> <param> - <key>min</key> + <key>start</key> <value>0</value> </param> <param> - <key>max</key> + <key>stop</key> <value>10</value> </param> <param> - <key>num_steps</key> - <value>100</value> + <key>step</key> + <value>0.1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> </param> <param> - <key>style</key> - <value>wx.SL_HORIZONTAL</value> + <key>orient</key> + <value>Qt.Horizontal</value> </param> <param> - <key>converver</key> - <value>float_converter</value> + <key>min_len</key> + <value>200</value> </param> <param> - <key>grid_pos</key> + <key>gui_hint</key> <value>1, 0, 1, 4</value> </param> <param> - <key>notebook</key> + <key>alias</key> <value></value> </param> <param> <key>_coordinate</key> - <value>(436, 446)</value> + <value>(802, 188)</value> </param> <param> <key>_rotation</key> @@ -351,30 +511,117 @@ </param> </block> <block> - <key>blocks_multiply_const_vxx</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>blocks_multiply_const_vxx</value> + <value>fine</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>type</key> - <value>float</value> + <key>label</key> + <value>Fine Freq (MHz)</value> </param> <param> - <key>const</key> - <value>volume</value> + <key>value</key> + <value>0</value> </param> <param> - <key>vlen</key> + <key>start</key> + <value>-.1</value> + </param> + <param> + <key>stop</key> + <value>.1</value> + </param> + <param> + <key>step</key> + <value>.01</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value>0,2,1,2</value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> + <key>_coordinate</key> + <value>(253, 277)</value> + </param> + <param> + <key>_rotation</key> + <value>0</value> + </param> + </block> + <block> + <key>variable_qtgui_range</key> + <param> + <key>id</key> + <value>tun_gain</value> + </param> + <param> + <key>_enabled</key> + <value>True</value> + </param> + <param> + <key>label</key> + <value>UHD Gain</value> + </param> + <param> + <key>value</key> + <value>10</value> + </param> + <param> + <key>start</key> + <value>0</value> + </param> + <param> + <key>stop</key> + <value>20</value> + </param> + <param> + <key>step</key> <value>1</value> </param> <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value></value> + </param> + <param> + <key>alias</key> + <value></value> + </param> + <param> <key>_coordinate</key> - <value>(836, 161)</value> + <value>(141, 275)</value> </param> <param> <key>_rotation</key> @@ -404,10 +651,18 @@ <value></value> </param> <param> + <key>stream_chans</key> + <value>[]</value> + </param> + <param> <key>dev_addr</key> <value>address</value> </param> <param> + <key>dev_args</key> + <value>""</value> + </param> + <param> <key>sync</key> <value></value> </param> @@ -525,7 +780,7 @@ </param> <param> <key>center_freq0</key> - <value>tun_freq+fine</value> + <value>(tun_freq+fine)*1e6</value> </param> <param> <key>gain0</key> @@ -1036,43 +1291,24 @@ <value>0</value> </param> <param> - <key>_coordinate</key> - <value>(14, 165)</value> - </param> - <param> - <key>_rotation</key> - <value>0</value> - </param> - </block> - <block> - <key>parameter</key> - <param> - <key>id</key> - <value>samp_rate</value> - </param> - <param> - <key>_enabled</key> - <value>True</value> - </param> - <param> - <key>label</key> - <value>Sample Rate</value> + <key>alias</key> + <value></value> </param> <param> - <key>value</key> - <value>400e3</value> + <key>affinity</key> + <value></value> </param> <param> - <key>type</key> - <value>eng_float</value> + <key>minoutbuf</key> + <value>0</value> </param> <param> - <key>short_id</key> - <value>s</value> + <key>maxoutbuf</key> + <value>0</value> </param> <param> <key>_coordinate</key> - <value>(352, 15)</value> + <value>(0, 139)</value> </param> <param> <key>_rotation</key> @@ -1080,238 +1316,238 @@ </param> </block> <block> - <key>parameter</key> + <key>qtgui_freq_sink_x</key> <param> <key>id</key> - <value>audio_output</value> + <value>qtgui_freq_sink_x_0</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>label</key> - <value>Audio Output Device</value> + <key>type</key> + <value>complex</value> </param> <param> - <key>value</key> - <value></value> + <key>name</key> + <value>FFT Plot</value> </param> <param> - <key>type</key> - <value>string</value> + <key>fftsize</key> + <value>512</value> </param> <param> - <key>short_id</key> - <value>O</value> + <key>wintype</key> + <value>firdes.WIN_BLACKMAN_hARRIS</value> </param> <param> - <key>_coordinate</key> - <value>(769, 13)</value> + <key>fc</key> + <value>(tun_freq+fine)*1e6</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>bw</key> + <value>samp_rate</value> </param> - </block> - <block> - <key>audio_sink</key> <param> - <key>id</key> - <value>audio_sink</value> + <key>autoscale</key> + <value>False</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>average</key> + <value>1.0</value> </param> <param> - <key>samp_rate</key> - <value>int(samp_rate/audio_decim)</value> + <key>ymin</key> + <value>-140</value> </param> <param> - <key>device_name</key> - <value>audio_output</value> + <key>ymax</key> + <value>10</value> </param> <param> - <key>ok_to_block</key> - <value>True</value> + <key>nconnections</key> + <value>1</value> </param> <param> - <key>num_inputs</key> - <value>1</value> + <key>update_time</key> + <value>0.10</value> </param> <param> - <key>_coordinate</key> - <value>(1023, 161)</value> + <key>gui_hint</key> + <value>2,0,2,4</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>label1</key> + <value></value> </param> - </block> - <block> - <key>low_pass_filter</key> <param> - <key>id</key> - <value>low_pass_filter_0</value> + <key>width1</key> + <value>1</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>color1</key> + <value>"blue"</value> </param> <param> - <key>type</key> - <value>fir_filter_ccf</value> + <key>alpha1</key> + <value>1.0</value> </param> <param> - <key>decim</key> - <value>1</value> + <key>label2</key> + <value></value> </param> <param> - <key>interp</key> + <key>width2</key> <value>1</value> </param> <param> - <key>gain</key> - <value>1</value> + <key>color2</key> + <value>"red"</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>alpha2</key> + <value>1.0</value> </param> <param> - <key>cutoff_freq</key> - <value>115e3</value> + <key>label3</key> + <value></value> </param> <param> - <key>width</key> - <value>30e3</value> + <key>width3</key> + <value>1</value> </param> <param> - <key>win</key> - <value>firdes.WIN_HANN</value> + <key>color3</key> + <value>"green"</value> </param> <param> - <key>beta</key> - <value>6.76</value> + <key>alpha3</key> + <value>1.0</value> </param> <param> - <key>_coordinate</key> - <value>(326, 141)</value> + <key>label4</key> + <value></value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>width4</key> + <value>1</value> </param> - </block> - <block> - <key>variable</key> <param> - <key>id</key> - <value>audio_decim</value> + <key>color4</key> + <value>"black"</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>alpha4</key> + <value>1.0</value> </param> <param> - <key>value</key> - <value>10</value> + <key>label5</key> + <value></value> </param> <param> - <key>_coordinate</key> - <value>(19, 351)</value> + <key>width5</key> + <value>1</value> </param> <param> - <key>_rotation</key> - <value>0</value> + <key>color5</key> + <value>"cyan"</value> </param> - </block> - <block> - <key>wxgui_fftsink2</key> <param> - <key>id</key> - <value>wxgui_fftsink2</value> + <key>alpha5</key> + <value>1.0</value> </param> <param> - <key>_enabled</key> - <value>True</value> + <key>label6</key> + <value></value> </param> <param> - <key>type</key> - <value>complex</value> + <key>width6</key> + <value>1</value> </param> <param> - <key>title</key> - <value>FFT Plot</value> + <key>color6</key> + <value>"magenta"</value> </param> <param> - <key>samp_rate</key> - <value>samp_rate</value> + <key>alpha6</key> + <value>1.0</value> </param> <param> - <key>baseband_freq</key> - <value>(freq+fine)</value> + <key>label7</key> + <value></value> </param> <param> - <key>y_per_div</key> - <value>10</value> + <key>width7</key> + <value>1</value> </param> <param> - <key>y_divs</key> - <value>10</value> + <key>color7</key> + <value>"yellow"</value> </param> <param> - <key>ref_level</key> - <value>0</value> + <key>alpha7</key> + <value>1.0</value> </param> <param> - <key>ref_scale</key> - <value>2.0</value> + <key>label8</key> + <value></value> </param> <param> - <key>fft_size</key> - <value>512</value> + <key>width8</key> + <value>1</value> </param> <param> - <key>fft_rate</key> - <value>15</value> + <key>color8</key> + <value>"dark red"</value> </param> <param> - <key>peak_hold</key> - <value>False</value> + <key>alpha8</key> + <value>1.0</value> </param> <param> - <key>average</key> - <value>False</value> + <key>label9</key> + <value></value> </param> <param> - <key>avg_alpha</key> - <value>0</value> + <key>width9</key> + <value>1</value> </param> <param> - <key>win</key> - <value>None</value> + <key>color9</key> + <value>"dark green"</value> + </param> + <param> + <key>alpha9</key> + <value>1.0</value> </param> <param> - <key>win_size</key> + <key>label10</key> <value></value> </param> <param> - <key>grid_pos</key> - <value>2, 0, 2, 4</value> + <key>width10</key> + <value>1</value> + </param> + <param> + <key>color10</key> + <value>"dark blue"</value> </param> <param> - <key>notebook</key> + <key>alpha10</key> + <value>1.0</value> + </param> + <param> + <key>alias</key> <value></value> </param> <param> - <key>freqvar</key> - <value>None</value> + <key>affinity</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(624, 278)</value> + <value>(598, 272)</value> </param> <param> <key>_rotation</key> @@ -1319,26 +1555,38 @@ </param> </block> <block> - <key>analog_wfm_rcv</key> + <key>parameter</key> <param> <key>id</key> - <value>analog_wfm_rcv</value> + <value>freq</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> - <key>quad_rate</key> - <value>samp_rate</value> + <key>label</key> + <value>Default Frequency</value> </param> <param> - <key>audio_decimation</key> - <value>audio_decim</value> + <key>value</key> + <value>93.3e6</value> + </param> + <param> + <key>type</key> + <value>eng_float</value> + </param> + <param> + <key>short_id</key> + <value>f</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(625, 153)</value> + <value>(442, 0)</value> </param> <param> <key>_rotation</key> @@ -1346,10 +1594,10 @@ </param> </block> <block> - <key>parameter</key> + <key>variable_qtgui_range</key> <param> <key>id</key> - <value>address</value> + <value>tun_freq</value> </param> <param> <key>_enabled</key> @@ -1357,23 +1605,47 @@ </param> <param> <key>label</key> - <value>IP Address</value> + <value>UHD Freq (MHz)</value> </param> <param> <key>value</key> - <value>addr=192.168.10.2</value> + <value>freq/1e6</value> </param> <param> - <key>type</key> - <value>string</value> + <key>start</key> + <value>87.9</value> </param> <param> - <key>short_id</key> - <value>a</value> + <key>stop</key> + <value>108.1</value> + </param> + <param> + <key>step</key> + <value>1</value> + </param> + <param> + <key>widget</key> + <value>counter_slider</value> + </param> + <param> + <key>orient</key> + <value>Qt.Horizontal</value> + </param> + <param> + <key>min_len</key> + <value>200</value> + </param> + <param> + <key>gui_hint</key> + <value>0,0,1,2</value> + </param> + <param> + <key>alias</key> + <value></value> </param> <param> <key>_coordinate</key> - <value>(199, 14)</value> + <value>(6, 276)</value> </param> <param> <key>_rotation</key> @@ -1381,14 +1653,14 @@ </param> </block> <connection> - <source_block_id>blocks_multiply_const_vxx</source_block_id> - <sink_block_id>audio_sink</sink_block_id> + <source_block_id>low_pass_filter_0</source_block_id> + <sink_block_id>qtgui_freq_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>analog_wfm_rcv</source_block_id> - <sink_block_id>blocks_multiply_const_vxx</sink_block_id> + <source_block_id>uhd_usrp_source_0</source_block_id> + <sink_block_id>low_pass_filter_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> @@ -1399,14 +1671,14 @@ <sink_key>0</sink_key> </connection> <connection> - <source_block_id>uhd_usrp_source_0</source_block_id> - <sink_block_id>low_pass_filter_0</sink_block_id> + <source_block_id>analog_wfm_rcv</source_block_id> + <sink_block_id>blocks_multiply_const_vxx</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> - <source_block_id>low_pass_filter_0</source_block_id> - <sink_block_id>wxgui_fftsink2</sink_block_id> + <source_block_id>blocks_multiply_const_vxx</source_block_id> + <sink_block_id>audio_sink</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> diff --git a/gr-uhd/examples/python/freq_hopping.py b/gr-uhd/examples/python/freq_hopping.py index 903b0b23d4..5da5efa241 100755 --- a/gr-uhd/examples/python/freq_hopping.py +++ b/gr-uhd/examples/python/freq_hopping.py @@ -105,7 +105,9 @@ class FrequencyHopperSrc(gr.hier_block2): gain_tag.key = pmt.string_to_symbol('tx_command') gain_tag.value = pmt.cons( pmt.intern("gain"), - pmt.to_pmt((0, tx_gain)) + # These are both valid: + #pmt.from_double(tx_gain) + pmt.cons(pmt.to_pmt(0), pmt.to_pmt(tx_gain)) ) tag_list = [gain_tag,] for i in xrange(n_bursts): @@ -114,7 +116,7 @@ class FrequencyHopperSrc(gr.hier_block2): if i > 0 and post_tuning: tune_tag.offset -= 1 # Move it to last sample of previous burst tune_tag.key = pmt.string_to_symbol('tx_freq') - tune_tag.value = pmt.to_pmt((0, self.hop_sequence[i])) + tune_tag.value = pmt.to_pmt(self.hop_sequence[i]) tag_list.append(tune_tag) length_tag = gr.tag_t() length_tag.offset = i * burst_length diff --git a/gr-uhd/grc/gen_uhd_usrp_blocks.py b/gr-uhd/grc/gen_uhd_usrp_blocks.py index 6490723589..c31ee1325e 100644 --- a/gr-uhd/grc/gen_uhd_usrp_blocks.py +++ b/gr-uhd/grc/gen_uhd_usrp_blocks.py @@ -312,6 +312,11 @@ self.\$(id).set_bandwidth(\$bw$(n), $n) <check>\$num_mboards > 0</check> <check>\$nchan >= \$num_mboards</check> <check>(not \$stream_chans()) or (\$nchan == len(\$stream_chans))</check> + <sink> + <name>command</name> + <type>message</type> + <optional>1</optional> + </sink> <$sourk> <name>$direction</name> <type>\$type.type</type> diff --git a/gr-uhd/include/gnuradio/uhd/usrp_sink.h b/gr-uhd/include/gnuradio/uhd/usrp_sink.h index d3e732cc30..ce8b18ba44 100644 --- a/gr-uhd/include/gnuradio/uhd/usrp_sink.h +++ b/gr-uhd/include/gnuradio/uhd/usrp_sink.h @@ -62,18 +62,17 @@ namespace gr { /*! * \brief DEPRECATED Make a new USRP sink block using the deprecated io_type_t. + * \ingroup uhd_blk * * This function will be removed in the future. Please use the other make function, - * gr::uhd::make(const ::uhd::device_addr_t, const ::uhd::stream_args_t, const std::string). - * - * \ingroup uhd_blk + * gr::uhd::usrp_sink::make(const ::uhd::device_addr_t, const ::uhd::stream_args_t, const std::string). */ static sptr make(const ::uhd::device_addr_t &device_addr, const ::uhd::io_type_t &io_type, size_t num_channels); /*! - * \brief Make a new USRP sink block. + * \brief Make a new USRP sink block (usually a radio transmitter). * * The USRP sink block reads a stream and transmits the samples. * The sink block also provides API calls for transmitter settings. @@ -86,60 +85,55 @@ namespace gr { * - pmt::string_to_symbol("tx_time") * - pmt::string_to_symbol("tx_freq") * - pmt::string_to_symbol("tx_command") - * - pmt::string_to_symbol(length_tag_name) + * - pmt::string_to_symbol(tsb_tag_name) * * Any other tag will be ignored. * * The sob and eob (start and end of burst) tag values are pmt booleans. * When present, burst tags should be set to true (pmt::PMT_T). * - * If length_tag_name is not an empty string, all "tx_sob" and "tx_eob" + * If `tsb_tag_name` is not an empty string, all "tx_sob" and "tx_eob" * tags will be ignored, and the input is assumed to a tagged stream, * as described in \ref page_tagged_stream_blocks. - * The length tag value should be a PMT long specifying the number - * of samples contained in the corresponding tagged stream. * * If sob/eob tags or length tags are used, this block understands that * the data is bursty, and will configure the USRP to make sure there's - * no underruns etc. + * no underruns after transmitting the final sample of a burst. * * The timestamp tag value is a PMT tuple of the following: - * (uint64 seconds, and double fractional seconds). + * (uint64 seconds, double fractional seconds). * - * The tx_freq tag has to be a double, and will issue a tune command to the USRP + * The tx_freq tag has to be a double or a pair of form (channel, frequency), + * with frequency being a double and channel being an integer. + * This tag will trigger a tune command to the USRP * to the given frequency, if possible. Note that oscillators need some time * to stabilize after this! Don't expect clean data to be sent immediately after this command. + * If channel is omitted, and only a double is given, it will set this frequency to all + * channels. * * The command tag can carry a PMT command. See the following section. * - * \section uhd_commands Command interface + * \section uhd_tx_commands Command interface * * There are two ways of passing commands to this block: - * 1) tx_command tag. The command is attached to a sample, and will executed + * 1. tx_command tag. The command is attached to a sample, and will executed * before the sample is transmitted, and after the previous sample. - * 2) The 'command' message port. The command is executed asynchronously, + * 2. The 'command' message port. The command is executed asynchronously, * as soon as possible. * - * In both cases, the payload of the command is a PMT pair, with the first - * item ('car') being the command name, and second ('cdr') the command value. - * - * Command name | Command value - * -------------|-------------------------------------------------------------------------- - * `freq` | Tuple: (chan, new_freq). Requests a tune to `new_freq` on channel `chan`. - * `lo_offset` | Tuple: (chan, lo_offset). Adds a LO offset on channel `chan`. - * `gain` | Tuple: (chan, gain). Requests a gain change to `gain` on channel `chan`. + * In both cases, the payload of the command is a PMT command, as described + * in Section \ref uhd_command_syntax. * - * See the UHD manual for more detailed documentation: - * http://code.ettus.com/redmine/ettus/projects/uhd/wiki + * For a more general description of the gr-uhd components, see \ref page_uhd. * * \param device_addr the address to identify the hardware * \param stream_args the IO format and channel specification - * \param length_tag_name the name of the tag identifying tagged stream length + * \param tsb_tag_name the name of the tag identifying tagged stream length * \return a new USRP sink block object */ static sptr make(const ::uhd::device_addr_t &device_addr, const ::uhd::stream_args_t &stream_args, - const std::string &length_tag_name = ""); + const std::string &tsb_tag_name = ""); /*! * Set the start time for outgoing samples. diff --git a/gr-uhd/include/gnuradio/uhd/usrp_source.h b/gr-uhd/include/gnuradio/uhd/usrp_source.h index 2e165cf771..75e8f8b844 100644 --- a/gr-uhd/include/gnuradio/uhd/usrp_source.h +++ b/gr-uhd/include/gnuradio/uhd/usrp_source.h @@ -27,6 +27,7 @@ #include <gnuradio/sync_block.h> #include <uhd/usrp/multi_usrp.hpp> +// TODO In 3.8, UHD 3.4 will be required and we can remove all these ifdefs #ifndef INCLUDED_UHD_STREAM_HPP namespace uhd { struct GR_UHD_API stream_args_t @@ -60,41 +61,18 @@ namespace gr { typedef boost::shared_ptr<usrp_source> sptr; /*! - * \brief Make a new USRP source block. + * \brief DEPRECATED Make a new USRP source block using the deprecated io_type_t. * \ingroup uhd_blk * - * The USRP source block receives samples and writes to a stream. - * The source block also provides API calls for receiver settings. - * - * RX Stream tagging: - * - * The following tag keys will be produced by the work function: - * - pmt::string_to_symbol("rx_time") - * - pmt::string_to_symbol("rx_rate") - * - pmt::string_to_symbol("rx_freq") - * - * The timstamp tag value is a pmt tuple of the following: - * (uint64 seconds, and double fractional seconds). - * A timestamp tag is produced at start() and after overflows. - * - * The sample rate and center frequency tags are doubles, - * representing the sample rate in Sps and frequency in Hz. - * These tags are produced upon the user changing parameters. - * - * See the UHD manual for more detailed documentation: - * http://code.ettus.com/redmine/ettus/projects/uhd/wiki - * - * \param device_addr the address to identify the hardware - * \param io_type the desired output data type - * \param num_channels number of stream from the device - * \return a new USRP source block object + * This function will be removed in the future. Please use the other make function, + * gr::uhd::make(const ::uhd::device_addr_t, const ::uhd::stream_args_t, const std::string). */ static sptr make(const ::uhd::device_addr_t &device_addr, const ::uhd::io_type_t &io_type, size_t num_channels); /*! - * \brief Make a new USRP source block. + * \brief Make a new USRP source block (usually a radio receiver). * * The USRP source block receives samples and writes to a stream. * The source block also provides API calls for receiver settings. @@ -104,12 +82,16 @@ namespace gr { * The following tag keys will be produced by the work function: * - pmt::string_to_symbol("rx_time") * - * The timstamp tag value is a pmt tuple of the following: + * The timestamp tag value is a pmt tuple of the following: * (uint64 seconds, and double fractional seconds). * A timestamp tag is produced at start() and after overflows. * - * See the UHD manual for more detailed documentation: - * http://code.ettus.com/redmine/ettus/projects/uhd/wiki + * \section uhd_rx_command_iface Command interface + * + * This block has a message port, which consumes UHD PMT commands. + * For a description of the command syntax, see Section \ref uhd_command_syntax. + * + * For a more general description of the gr-uhd components, see \ref page_uhd. * * \param device_addr the address to identify the hardware * \param stream_args the IO format and channel specification diff --git a/gr-uhd/lib/usrp_common.h b/gr-uhd/lib/usrp_common.h new file mode 100644 index 0000000000..29caa585cf --- /dev/null +++ b/gr-uhd/lib/usrp_common.h @@ -0,0 +1,198 @@ +/* -*- c++ -*- */ +/* + * Copyright 2014 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_GR_UHD_USRP_COMMON_H +#define INCLUDED_GR_UHD_USRP_COMMON_H + +#include <pmt/pmt.h> +#include <boost/dynamic_bitset.hpp> +#include <boost/make_shared.hpp> +#include <boost/bind.hpp> +#include <boost/thread.hpp> +#include <uhd/usrp/multi_usrp.hpp> +#include <uhd/convert.hpp> +#include <iostream> + +namespace gr { + namespace uhd { + typedef boost::function< ::uhd::sensor_value_t (const std::string&)> get_sensor_fn_t; + + static const double LOCK_TIMEOUT = 1.5; // s + + //! Helper function for msg_handler_command: + // - Extracts command and the command value from the command PMT + // - Returns true if the command PMT is well formed + // - If a channel is given, return that as well, otherwise set the channel to -1 + static bool _unpack_chan_command( + std::string &command, + pmt::pmt_t &cmd_val, + int &chan, + const pmt::pmt_t &cmd_pmt + ) { + try { + chan = -1; // Default value + if (pmt::is_tuple(cmd_pmt) and (pmt::length(cmd_pmt) == 2 or pmt::length(cmd_pmt) == 3)) { + command = pmt::symbol_to_string(pmt::tuple_ref(cmd_pmt, 0)); + cmd_val = pmt::tuple_ref(cmd_pmt, 1); + if (pmt::length(cmd_pmt) == 3) { + chan = pmt::to_long(pmt::tuple_ref(cmd_pmt, 2)); + } + } + else if (pmt::is_pair(cmd_pmt)) { + command = pmt::symbol_to_string(pmt::car(cmd_pmt)); + cmd_val = pmt::cdr(cmd_pmt); + if (pmt::is_pair(cmd_val)) { + chan = pmt::to_long(pmt::car(cmd_val)); + cmd_val = pmt::cdr(cmd_val); + } + } + else { + return false; + } + } catch (pmt::wrong_type w) { + return false; + } + return true; + } + + //! Helper function for msg_handler_command: + // - Sets a value in vector_to_update to cmd_val, depending on chan + // - If chan is a positive integer, it will set vector_to_update[chan] + // - If chan is -1, it depends on minus_one_updates_all: + // - Either set vector_to_update[0] or + // - Set *all* entries in vector_to_update + // - Returns a dynamic_bitset, all indexes that where changed in + // vector_to_update are set to 1 + template <typename T> + static boost::dynamic_bitset<> _update_vector_from_cmd_val( + std::vector<T> &vector_to_update, + int chan, + const T cmd_val, + bool minus_one_updates_all = false + ) { + boost::dynamic_bitset<> vals_updated(vector_to_update.size()); + if (chan == -1) { + if (minus_one_updates_all) { + for (size_t i = 0; i < vector_to_update.size(); i++) { + if (vector_to_update[i] != cmd_val) { + vals_updated[i] = true; + vector_to_update[i] = cmd_val; + } + } + return vals_updated; + } + chan = 0; + } + if (vector_to_update[chan] != cmd_val) { + vector_to_update[chan] = cmd_val; + vals_updated[chan] = true; + } + + return vals_updated; + } + + + /*! \brief Components common to USRP sink and source. + * + * \param device_addr Device address + options + * \param stream_args Stream args (cpu format, otw format...) + * \param ts_tag_name If this block produces or consumes stream tags, enter the corresponding tag name here + */ + class usrp_common_impl + { + public: + usrp_common_impl( + const ::uhd::device_addr_t &device_addr, + const ::uhd::stream_args_t &stream_args, + const std::string &ts_tag_name + ) : + _stream_args(stream_args), + _nchan(stream_args.channels.size()), + _stream_now(_nchan == 1 and ts_tag_name.empty()), + _start_time_set(false) + { + if(stream_args.cpu_format == "fc32") + _type = boost::make_shared< ::uhd::io_type_t >(::uhd::io_type_t::COMPLEX_FLOAT32); + if(stream_args.cpu_format == "sc16") + _type = boost::make_shared< ::uhd::io_type_t >(::uhd::io_type_t::COMPLEX_INT16); + _dev = ::uhd::usrp::multi_usrp::make(device_addr); + }; + + ~usrp_common_impl() {}; + + protected: + /*! \brief Wait until a timeout or a sensor returns 'locked'. + * + * If a given sensor is not found, this still returns 'true', so we don't throw + * errors or warnings if a sensor wasn't implemented. + */ + bool _wait_for_locked_sensor( + std::vector<std::string> sensor_names, + const std::string &sensor_name, + get_sensor_fn_t get_sensor_fn + ){ + if (std::find(sensor_names.begin(), sensor_names.end(), sensor_name) == sensor_names.end()) + return true; + + boost::system_time start = boost::get_system_time(); + boost::system_time first_lock_time; + + while (true) { + if ((not first_lock_time.is_not_a_date_time()) and + (boost::get_system_time() > (first_lock_time + boost::posix_time::seconds(LOCK_TIMEOUT)))) { + break; + } + + if (get_sensor_fn(sensor_name).to_bool()) { + if (first_lock_time.is_not_a_date_time()) + first_lock_time = boost::get_system_time(); + } + else { + first_lock_time = boost::system_time(); //reset to 'not a date time' + + if (boost::get_system_time() > (start + boost::posix_time::seconds(LOCK_TIMEOUT))){ + return false; + } + } + + boost::this_thread::sleep(boost::posix_time::milliseconds(100)); + } + + return true; + } + + //! Shared pointer to the underlying multi_usrp object + ::uhd::usrp::multi_usrp::sptr _dev; + const ::uhd::stream_args_t _stream_args; + boost::shared_ptr< ::uhd::io_type_t > _type; + //! Number of channels (i.e. number of in- or outputs) + size_t _nchan; + bool _stream_now; + ::uhd::time_spec_t _start_time; + bool _start_time_set; + }; + + } /* namespace uhd */ +} /* namespace gr */ + +#endif /* INCLUDED_GR_UHD_USRP_COMMON_H */ + diff --git a/gr-uhd/lib/usrp_sink_impl.cc b/gr-uhd/lib/usrp_sink_impl.cc index f05d90e26a..20f6fd6237 100644 --- a/gr-uhd/lib/usrp_sink_impl.cc +++ b/gr-uhd/lib/usrp_sink_impl.cc @@ -25,11 +25,12 @@ #include "usrp_sink_impl.h" #include "gr_uhd_common.h" #include <gnuradio/io_signature.h> -#include <boost/make_shared.hpp> namespace gr { namespace uhd { + static const size_t ALL_CHANS = ::uhd::usrp::multi_usrp::ALL_CHANS; + usrp_sink::sptr usrp_sink::make(const ::uhd::device_addr_t &device_addr, const ::uhd::io_type_t &io_type, @@ -66,36 +67,63 @@ namespace gr { : sync_block("gr uhd usrp sink", args_to_io_sig(stream_args), io_signature::make(0, 0, 0)), - _stream_args(stream_args), - _nchan(stream_args.channels.size()), - _stream_now(_nchan == 1 and length_tag_name.empty()), - _start_time_set(false), + usrp_common_impl(device_addr, stream_args, length_tag_name), _length_tag_key(length_tag_name.empty() ? pmt::PMT_NIL : pmt::string_to_symbol(length_tag_name)), _nitems_to_send(0), - _curr_freq(stream_args.channels.size(), 0.0), - _curr_lo_offset(stream_args.channels.size(), 0.0), - _curr_gain(stream_args.channels.size(), 0.0), - _chans_to_tune(stream_args.channels.size(), false), - _call_tune(false) - { - if(stream_args.cpu_format == "fc32") - _type = boost::make_shared< ::uhd::io_type_t >(::uhd::io_type_t::COMPLEX_FLOAT32); - if(stream_args.cpu_format == "sc16") - _type = boost::make_shared< ::uhd::io_type_t >(::uhd::io_type_t::COMPLEX_INT16); - _dev = ::uhd::usrp::multi_usrp::make(device_addr); - + _curr_freq(stream_args.channels.size(), 0.0), + _curr_lo_offset(stream_args.channels.size(), 0.0), + _curr_gain(stream_args.channels.size(), 0.0), + _chans_to_tune(stream_args.channels.size()) + { message_port_register_in(pmt::mp("command")); set_msg_handler( - pmt::mp("command"), - boost::bind(&usrp_sink_impl::msg_handler_command, this, _1) + pmt::mp("command"), + boost::bind(&usrp_sink_impl::msg_handler_command, this, _1) ); - //message_port_register_in(pmt::mp("query")); - //set_msg_handler( - //pmt::mp("query"), - //boost::bind(&usrp_sink_impl::msg_handler_query, this, _1) - //); + + _check_sensors_locked(); } + bool usrp_sink_impl::_check_sensors_locked() + { + bool clocks_locked = true; + + // 1) Check ref lock for all mboards + for (size_t mboard_index = 0; mboard_index < _dev->get_num_mboards(); mboard_index++) { + std::string sensor_name = "ref_locked"; + if (_dev->get_clock_source(mboard_index) == "internal") { + continue; + } + else if (_dev->get_clock_source(mboard_index) == "mimo") { + sensor_name = "mimo_locked"; + } + if (not _wait_for_locked_sensor( + get_mboard_sensor_names(mboard_index), + sensor_name, + boost::bind(&usrp_sink_impl::get_mboard_sensor, this, _1, mboard_index) + )) { + GR_LOG_WARN(d_logger, boost::format("Sensor '%s' failed to lock within timeout on motherboard %d.") % sensor_name % mboard_index); + clocks_locked = false; + } + } + + // 2) Check LO for all channels + for (size_t i = 0; i < _nchan; i++) { + size_t chan_index = _stream_args.channels[i]; + if (not _wait_for_locked_sensor( + get_sensor_names(chan_index), + "lo_locked", + boost::bind(&usrp_sink_impl::get_sensor, this, _1, chan_index) + )) { + GR_LOG_WARN(d_logger, boost::format("Sensor 'lo_locked' failed to lock within timeout on channel %d.") % chan_index); + clocks_locked = false; + } + } + + return clocks_locked; + } + + usrp_sink_impl::~usrp_sink_impl() { } @@ -569,9 +597,12 @@ namespace gr { _metadata.time_spec += ::uhd::time_spec_t(0, num_sent, _sample_rate); // Some post-processing tasks if we actually transmitted the entire burst - if (_call_tune and num_sent == size_t(ninput_items)) { - _set_center_freq_from_internals_allchans(); - _call_tune = false; + if (not _pending_cmds.empty() and num_sent == size_t(ninput_items)) { + GR_LOG_DEBUG(d_debug_logger, boost::format("Executing %d pending commands.") % _pending_cmds.size()); + BOOST_FOREACH(const pmt::pmt_t &cmd_pmt, _pending_cmds) { + msg_handler_command(cmd_pmt); + } + _pending_cmds.clear(); } return num_sent; @@ -593,10 +624,9 @@ namespace gr { // Go through tag list until something indicates the end of a burst. bool found_time_tag = false; bool found_eob = false; - bool found_freq_tag_in_burst = false; - uint64_t freq_cmd_offset = 0; - double freq_cmd_freq; - int freq_cmd_chan; + // For commands that are in the middle in the burst: + std::vector<pmt::pmt_t> commands_in_burst; // Store the command + uint64_t in_burst_cmd_offset = 0; // Store its position BOOST_FOREACH(const tag_t &my_tag, _tags) { const uint64_t my_tag_count = my_tag.offset; const pmt::pmt_t &key = my_tag.key; @@ -606,7 +636,7 @@ namespace gr { break; } - /* I. Bursts that can only be on the first sample of burst + /* I. Tags that can only be on the first sample of a burst * * This includes: * - tx_time @@ -631,7 +661,7 @@ namespace gr { max_count = my_tag_count; break; } - found_time_tag = true; + found_time_tag = true; _metadata.has_time_spec = true; _metadata.time_spec = ::uhd::time_spec_t (pmt::to_uint64(pmt::tuple_ref(value, 0)), @@ -644,8 +674,8 @@ namespace gr { max_count = my_tag_count; break; } - // Bursty tx will not use time specs, unless a tx_time tag is also given. - _metadata.has_time_spec = false; + // Bursty tx will not use time specs, unless a tx_time tag is also given. + _metadata.has_time_spec = false; _metadata.start_of_burst = pmt::to_bool(value); } @@ -653,49 +683,41 @@ namespace gr { else if(not pmt::is_null(_length_tag_key) and pmt::equal(key, _length_tag_key)) { if (my_tag_count != samp0_count) { max_count = my_tag_count; - break; + break; } //If there are still items left to send, the current burst has been preempted. //Set the items remaining counter to the new burst length. Notify the user of //the tag preemption. - else if(_nitems_to_send > 0) { + else if(_nitems_to_send > 0) { std::cerr << "tP" << std::flush; } _nitems_to_send = pmt::to_long(value); _metadata.start_of_burst = true; } - /* II. Bursts that can be on the first OR last sample of a burst + /* II. Tags that can be on the first OR last sample of a burst * * This includes: - * - tx_freq (tags that don't actually change the frequency are ignored) + * - tx_freq * * With these tags, we check if they're at the start of a burst, and do * the appropriate action. Otherwise, make sure the corresponding sample * is the last one. */ - else if (pmt::equal(key, FREQ_KEY) and my_tag_count == samp0_count) { - int chan = pmt::to_long(pmt::tuple_ref(value, 0)); - double new_freq = pmt::to_double(pmt::tuple_ref(value, 1)); - if (new_freq != _curr_freq[chan]) { - _curr_freq[chan] = new_freq; - _set_center_freq_from_internals(chan); - } - } - - else if(pmt::equal(key, FREQ_KEY) and not found_freq_tag_in_burst) { - int chan = pmt::to_long(pmt::tuple_ref(value, 0)); - double new_freq = pmt::to_double(pmt::tuple_ref(value, 1)); - if (new_freq != _curr_freq[chan]) { - freq_cmd_freq = new_freq; - freq_cmd_chan = chan; - freq_cmd_offset = my_tag_count; - max_count = my_tag_count + 1; - found_freq_tag_in_burst = true; - } + else if (pmt::equal(key, FREQ_KEY) and my_tag_count == samp0_count) { + // If it's on the first sample, immediately do the tune: + GR_LOG_DEBUG(d_debug_logger, boost::format("Received tx_freq on start of burst.")); + msg_handler_command(pmt::cons(pmt::mp("freq"), value)); + } + else if(pmt::equal(key, FREQ_KEY)) { + // If it's not on the first sample, queue this command and only tx until here: + GR_LOG_DEBUG(d_debug_logger, boost::format("Received tx_freq mid-burst.")); + commands_in_burst.push_back(pmt::cons(pmt::mp("freq"), value)); + max_count = my_tag_count + 1; + in_burst_cmd_offset = my_tag_count; } - /* III. Bursts that can only be on the last sample of a burst + /* III. Tags that can only be on the last sample of a burst * * This includes: * - tx_eob @@ -713,20 +735,25 @@ namespace gr { found_eob = true; } - if (found_freq_tag_in_burst) { + // If a command was found in-burst that may appear at the end of burst, + // there's two options: + // 1) The command was actually on the last sample (eob). Then, stash the + // commands for running after work(). + // 2) The command was not on the last sample. In this case, only send() + // until before the tag, so it will be on the first sample of the next run. + if (not commands_in_burst.empty()) { if (not found_eob) { // If it's in the middle of a burst, only send() until before the tag - max_count = freq_cmd_offset; - } else if (freq_cmd_offset < max_count) { - // Otherwise, tune after work() - _curr_freq[freq_cmd_chan] = freq_cmd_freq; - _chans_to_tune[freq_cmd_chan] = true; - _call_tune = true; + max_count = in_burst_cmd_offset; + } else if (in_burst_cmd_offset < max_count) { + BOOST_FOREACH(const pmt::pmt_t &cmd_pmt, commands_in_burst) { + _pending_cmds.push_back(cmd_pmt); + } } } if (found_time_tag) { - _metadata.has_time_spec = true; + _metadata.has_time_spec = true; } // Only transmit up to and including end of burst, @@ -798,46 +825,44 @@ namespace gr { /************** External interfaces (RPC + Message passing) ********************/ - // Helper function for msg_handler_command: Extracts chan and command value from - // the 2-tuple in cmd_val, updates the value in vector_to_update[chan] and returns - // true if it was different from the old value. - bool _unpack_chan_command(pmt::pmt_t &cmd_val, int &chan, std::vector<double> &vector_to_update) - { - chan = pmt::to_long(pmt::tuple_ref(cmd_val, 0)); - double new_value = pmt::to_double(pmt::tuple_ref(cmd_val, 1)); - if (new_value == vector_to_update[chan]) { - return false; - } else { - vector_to_update[chan] = new_value; - return true; - } - } - void usrp_sink_impl::msg_handler_command(pmt::pmt_t msg) { - const std::string command(pmt::symbol_to_string(pmt::car(msg))); - pmt::pmt_t value(pmt::cdr(msg)); - int chan = 0; - if (command == "freq") { - if (_unpack_chan_command(value, chan, _curr_freq)) { - _set_center_freq_from_internals(chan); - } - } else if (command == "lo_offset") { - if (_unpack_chan_command(value, chan, _curr_lo_offset)) { - _set_center_freq_from_internals(chan); - } - } else if (command == "gain") { - if (_unpack_chan_command(value, chan, _curr_gain)) { - set_gain(_curr_gain[chan], chan); - } - } else { - GR_LOG_ALERT(d_logger, boost::format("Received unknown command: %s") % command); + std::string command; + pmt::pmt_t cmd_value; + int chan = -1; + if (not _unpack_chan_command(command, cmd_value, chan, msg)) { + GR_LOG_ALERT(d_logger, boost::format("Error while unpacking command PMT: %s") % msg); + return; + } + GR_LOG_DEBUG(d_debug_logger, boost::format("Received command: %s") % command); + try { + if (command == "freq") { + _chans_to_tune = _update_vector_from_cmd_val<double>( + _curr_freq, chan, pmt::to_double(cmd_value), true + ); + _set_center_freq_from_internals_allchans(); + } else if (command == "lo_offset") { + _chans_to_tune = _update_vector_from_cmd_val<double>( + _curr_lo_offset, chan, pmt::to_double(cmd_value), true + ); + _set_center_freq_from_internals_allchans(); + } else if (command == "gain") { + boost::dynamic_bitset<> chans_to_change = _update_vector_from_cmd_val<double>( + _curr_gain, chan, pmt::to_double(cmd_value), true + ); + if (chans_to_change.any()) { + for (size_t i = 0; i < chans_to_change.size(); i++) { + if (chans_to_change[i]) { + set_gain(_curr_gain[i], i); + } + } + } + } else { + GR_LOG_ALERT(d_logger, boost::format("Received unknown command: %s") % command); + } + } catch (pmt::wrong_type &e) { + GR_LOG_ALERT(d_logger, boost::format("Received command '%s' with invalid command value: %s") % command % cmd_value); } - } - - void usrp_sink_impl::msg_handler_query(pmt::pmt_t msg) - { - //tbi } void diff --git a/gr-uhd/lib/usrp_sink_impl.h b/gr-uhd/lib/usrp_sink_impl.h index 12a25658e3..21bb991b92 100644 --- a/gr-uhd/lib/usrp_sink_impl.h +++ b/gr-uhd/lib/usrp_sink_impl.h @@ -22,6 +22,7 @@ #include <gnuradio/uhd/usrp_sink.h> #include <uhd/convert.hpp> +#include "usrp_common.h" static const pmt::pmt_t SOB_KEY = pmt::string_to_symbol("tx_sob"); static const pmt::pmt_t EOB_KEY = pmt::string_to_symbol("tx_eob"); @@ -51,7 +52,7 @@ namespace gr { /*********************************************************************** * UHD Multi USRP Sink Impl **********************************************************************/ - class usrp_sink_impl : public usrp_sink + class usrp_sink_impl : public usrp_sink, public usrp_common_impl { public: usrp_sink_impl(const ::uhd::device_addr_t &device_addr, @@ -122,34 +123,32 @@ namespace gr { inline void tag_work(int &ninput_items); private: + /*! \brief Run through all 'lock' sensors and make sure they are actually locked. + */ + bool _check_sensors_locked(); + //! Like set_center_freq(), but uses _curr_freq and _curr_lo_offset ::uhd::tune_result_t _set_center_freq_from_internals(size_t chan); //! Calls _set_center_freq_from_internals() on all channels void _set_center_freq_from_internals_allchans(); - //! Receives commands and handles them - void msg_handler_command(pmt::pmt_t msg); - //! Receives queries and posts a response - void msg_handler_query(pmt::pmt_t msg); - ::uhd::usrp::multi_usrp::sptr _dev; - const ::uhd::stream_args_t _stream_args; - boost::shared_ptr< ::uhd::io_type_t > _type; #ifdef GR_UHD_USE_STREAM_API ::uhd::tx_streamer::sptr _tx_stream; #endif - size_t _nchan; - bool _stream_now; ::uhd::tx_metadata_t _metadata; double _sample_rate; - ::uhd::time_spec_t _start_time; - bool _start_time_set; //stream tags related stuff std::vector<tag_t> _tags; const pmt::pmt_t _length_tag_key; long _nitems_to_send; + /****** Command interface related **********/ + //! Stores a list of commands for later execution + std::vector<pmt::pmt_t> _pending_cmds; + //! Receives commands and handles them + void msg_handler_command(pmt::pmt_t msg); //! Stores the last value we told the USRP to tune to for every channel // (this is not necessarily the true value the USRP is currently tuned to!). // We could theoretically ask the device, but during streaming, we want to minimize @@ -159,8 +158,7 @@ namespace gr { std::vector<double> _curr_lo_offset; //! Stores the last gain value we told the USRP to have for every channel. std::vector<double> _curr_gain; - std::vector<bool> _chans_to_tune; - bool _call_tune; + boost::dynamic_bitset<> _chans_to_tune; }; } /* namespace uhd */ diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc index e57db13a0b..53038bf202 100644 --- a/gr-uhd/lib/usrp_source_impl.cc +++ b/gr-uhd/lib/usrp_source_impl.cc @@ -20,6 +20,7 @@ * Boston, MA 02110-1301, USA. */ +#include "usrp_common.h" #include "usrp_source_impl.h" #include "gr_uhd_common.h" #include <gnuradio/io_signature.h> @@ -66,20 +67,59 @@ namespace gr { sync_block("gr uhd usrp source", io_signature::make(0, 0, 0), args_to_io_sig(stream_args)), - _stream_args(stream_args), - _nchan(stream_args.channels.size()), - _stream_now(_nchan == 1), - _tag_now(false), - _start_time_set(false) - { - if(stream_args.cpu_format == "fc32") - _type = boost::make_shared< ::uhd::io_type_t >(::uhd::io_type_t::COMPLEX_FLOAT32); - if(stream_args.cpu_format == "sc16") - _type = boost::make_shared< ::uhd::io_type_t >(::uhd::io_type_t::COMPLEX_INT16); + usrp_common_impl(device_addr, stream_args, ""), + _tag_now(false) + { std::stringstream str; str << name() << unique_id(); _id = pmt::string_to_symbol(str.str()); - _dev = ::uhd::usrp::multi_usrp::make(device_addr); + + message_port_register_in(pmt::mp("command")); + set_msg_handler( + pmt::mp("command"), + boost::bind(&usrp_source_impl::msg_handler_command, this, _1) + ); + + _check_sensors_locked(); + } + + bool usrp_source_impl::_check_sensors_locked() + { + bool clocks_locked = true; + + // 1) Check ref lock for all mboards + for (size_t mboard_index = 0; mboard_index < _dev->get_num_mboards(); mboard_index++) { + std::string sensor_name = "ref_locked"; + if (_dev->get_clock_source(mboard_index) == "internal") { + continue; + } + else if (_dev->get_clock_source(mboard_index) == "mimo") { + sensor_name = "mimo_locked"; + } + if (not _wait_for_locked_sensor( + get_mboard_sensor_names(mboard_index), + sensor_name, + boost::bind(&usrp_source_impl::get_mboard_sensor, this, _1, mboard_index) + )) { + GR_LOG_WARN(d_logger, boost::format("Sensor '%s' failed to lock within timeout on motherboard %d.") % sensor_name % mboard_index); + clocks_locked = false; + } + } + + // 2) Check LO for all channels + for (size_t i = 0; i < _nchan; i++) { + size_t chan_index = _stream_args.channels[i]; + if (not _wait_for_locked_sensor( + get_sensor_names(chan_index), + "lo_locked", + boost::bind(&usrp_source_impl::get_sensor, this, _1, chan_index) + )) { + GR_LOG_WARN(d_logger, boost::format("Sensor 'lo_locked' failed to lock within timeout on channel %d.") % chan_index); + clocks_locked = false; + } + } + + return clocks_locked; } usrp_source_impl::~usrp_source_impl() @@ -670,6 +710,38 @@ namespace gr { return num_samps; } + + /************** External interfaces (RPC + Message passing) ********************/ + void usrp_source_impl::msg_handler_command(pmt::pmt_t msg) + { + std::string command; + pmt::pmt_t cmd_value; + int chan = -1; + if (not _unpack_chan_command(command, cmd_value, chan, msg)) { + GR_LOG_ALERT(d_logger, "Error while unpacking command PMT."); + } + if (command == "freq") { + double freq = pmt::to_double(cmd_value); + for (size_t i = 0; i < _nchan; i++) { + if (chan == -1 or chan == int(i)) { + set_center_freq(freq, i); + } + } + // TODO: implement + //} else if (command == "lo_offset") { + //; + } else if (command == "gain") { + double gain = pmt::to_double(cmd_value); + for (size_t i = 0; i < _nchan; i++) { + if (chan == -1 or chan == int(i)) { + set_gain(gain, i); + } + } + } else { + GR_LOG_ALERT(d_logger, boost::format("Received unknown command: %s") % command); + } + } + void usrp_source_impl::setup_rpc() { diff --git a/gr-uhd/lib/usrp_source_impl.h b/gr-uhd/lib/usrp_source_impl.h index 3cfa1aad35..6de4c9c6a3 100644 --- a/gr-uhd/lib/usrp_source_impl.h +++ b/gr-uhd/lib/usrp_source_impl.h @@ -23,6 +23,7 @@ #include <gnuradio/uhd/usrp_source.h> #include <uhd/convert.hpp> #include <boost/thread/mutex.hpp> +#include "usrp_common.h" static const pmt::pmt_t TIME_KEY = pmt::string_to_symbol("rx_time"); static const pmt::pmt_t RATE_KEY = pmt::string_to_symbol("rx_rate"); @@ -50,7 +51,7 @@ namespace gr { /*********************************************************************** * UHD Multi USRP Source Impl **********************************************************************/ - class usrp_source_impl : public usrp_source + class usrp_source_impl : public usrp_source, public usrp_common_impl { public: usrp_source_impl(const ::uhd::device_addr_t &device_addr, @@ -124,27 +125,37 @@ namespace gr { gr_vector_void_star &output_items); private: - ::uhd::usrp::multi_usrp::sptr _dev; - const ::uhd::stream_args_t _stream_args; - boost::shared_ptr< ::uhd::io_type_t > _type; - + /*! \brief Run through all 'lock' sensors and make sure they are actually locked. + */ + bool _check_sensors_locked(); #ifdef GR_UHD_USE_STREAM_API ::uhd::rx_streamer::sptr _rx_stream; size_t _samps_per_packet; #endif - size_t _nchan; - bool _stream_now, _tag_now; + bool _tag_now; ::uhd::rx_metadata_t _metadata; pmt::pmt_t _id; - ::uhd::time_spec_t _start_time; - bool _start_time_set; - //tag shadows double _samp_rate; double _center_freq; boost::recursive_mutex d_mutex; + + /****** Command interface related **********/ + //! Receives commands and handles them + void msg_handler_command(pmt::pmt_t msg); + //! Stores the last value we told the USRP to tune to for every channel + // (this is not necessarily the true value the USRP is currently tuned to!). + // We could theoretically ask the device, but during streaming, we want to minimize + // communication with the USRP. + std::vector<double> _curr_freq; + //! Stores the last value we told the USRP to have the LO offset for every channel. + std::vector<double> _curr_lo_offset; + //! Stores the last gain value we told the USRP to have for every channel. + std::vector<double> _curr_gain; + boost::dynamic_bitset<> _chans_to_tune; + bool _call_tune; }; } /* namespace uhd */ |