summaryrefslogtreecommitdiff
path: root/gr-uhd/examples
diff options
context:
space:
mode:
Diffstat (limited to 'gr-uhd/examples')
-rw-r--r--gr-uhd/examples/grc/uhd_msg_tune.grc1174
-rwxr-xr-xgr-uhd/examples/python/freq_hopping.py38
2 files changed, 647 insertions, 565 deletions
diff --git a/gr-uhd/examples/grc/uhd_msg_tune.grc b/gr-uhd/examples/grc/uhd_msg_tune.grc
index 1d0a953bfb..0111142757 100644
--- a/gr-uhd/examples/grc/uhd_msg_tune.grc
+++ b/gr-uhd/examples/grc/uhd_msg_tune.grc
@@ -3,59 +3,189 @@
<flow_graph>
<timestamp>Tue Jul 8 12:08:19 2014</timestamp>
<block>
- <key>variable</key>
+ <key>options</key>
<param>
- <key>id</key>
- <value>samp_rate</value>
+ <key>author</key>
+ <value></value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>category</key>
+ <value>Custom</value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>description</key>
+ <value>Tune a UHD source from a QT sink via messages (double-click a frequency to tune)</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>2e6</value>
+ <key>_coordinate</key>
+ <value>(-1, -2)</value>
</param>
<param>
- <key>alias</key>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>generate_options</key>
+ <value>qt_gui</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>uhd_tune_msg</value>
+ </param>
+ <param>
+ <key>max_nouts</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>realtime_scheduling</key>
+ <value></value>
+ </param>
+ <param>
+ <key>run_options</key>
+ <value>prompt</value>
+ </param>
+ <param>
+ <key>run</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>thread_safe_setters</key>
<value></value>
</param>
<param>
+ <key>title</key>
+ <value>UHD Message Tuner</value>
+ </param>
+ <param>
+ <key>window_size</key>
+ <value>1280, 1024</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_qtgui_entry</key>
+ <param>
<key>comment</key>
<value></value>
</param>
<param>
+ <key>value</key>
+ <value>pmt.to_pmt({'antenna': 'TX/RX', 'gain': 23.0, 'chan': 0})</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(1, 102)</value>
+ <value>(112, 347)</value>
+ </param>
+ <param>
+ <key>gui_hint</key>
+ <value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
+ <param>
+ <key>id</key>
+ <value>cmd_msg</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Command Message</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>raw</value>
+ </param>
</block>
<block>
- <key>variable</key>
+ <key>variable_qtgui_range</key>
<param>
- <key>id</key>
- <value>initial_fc</value>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>.8</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>100e6</value>
+ <key>_coordinate</key>
+ <value>(103, 99)</value>
</param>
<param>
- <key>alias</key>
+ <key>gui_hint</key>
<value></value>
</param>
<param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>gain</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Gain</value>
+ </param>
+ <param>
+ <key>min_len</key>
+ <value>200</value>
+ </param>
+ <param>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
+ </param>
+ <param>
+ <key>start</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>step</key>
+ <value>.01</value>
+ </param>
+ <param>
+ <key>stop</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>rangeType</key>
+ <value>float</value>
+ </param>
+ <param>
+ <key>widget</key>
+ <value>counter_slider</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
<key>comment</key>
<value></value>
</param>
<param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
<key>_coordinate</key>
<value>(-2, 172)</value>
</param>
@@ -63,368 +193,401 @@
<key>_rotation</key>
<value>0</value>
</param>
+ <param>
+ <key>id</key>
+ <value>initial_fc</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>100e6</value>
+ </param>
</block>
<block>
- <key>uhd_usrp_source</key>
+ <key>variable</key>
<param>
- <key>id</key>
- <value>uhd_usrp_source_0</value>
+ <key>comment</key>
+ <value></value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>fc32</value>
+ <key>_coordinate</key>
+ <value>(1, 102)</value>
</param>
<param>
- <key>otw</key>
- <value></value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
<param>
- <key>stream_args</key>
- <value></value>
+ <key>id</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>stream_chans</key>
- <value>[]</value>
+ <key>value</key>
+ <value>2e6</value>
</param>
+ </block>
+ <block>
+ <key>blocks_message_strobe</key>
<param>
- <key>dev_addr</key>
- <value>""</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>dev_args</key>
- <value>""</value>
+ <key>comment</key>
+ <value></value>
</param>
<param>
- <key>sync</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>clock_rate</key>
- <value>0.0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>num_mboards</key>
- <value>1</value>
+ <key>_coordinate</key>
+ <value>(96, 275)</value>
</param>
<param>
- <key>clock_source0</key>
- <value></value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
<param>
- <key>time_source0</key>
- <value></value>
+ <key>id</key>
+ <value>blocks_message_strobe_0</value>
</param>
<param>
- <key>sd_spec0</key>
- <value></value>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>clock_source1</key>
- <value></value>
+ <key>msg</key>
+ <value>cmd_msg</value>
</param>
<param>
- <key>time_source1</key>
- <value></value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>sd_spec1</key>
- <value></value>
+ <key>period</key>
+ <value>2000</value>
</param>
+ </block>
+ <block>
+ <key>qtgui_freq_sink_x</key>
<param>
- <key>clock_source2</key>
- <value></value>
+ <key>autoscale</key>
+ <value>False</value>
</param>
<param>
- <key>time_source2</key>
- <value></value>
+ <key>average</key>
+ <value>0.1</value>
</param>
<param>
- <key>sd_spec2</key>
- <value></value>
+ <key>bw</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>clock_source3</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>time_source3</key>
- <value></value>
+ <key>fc</key>
+ <value>initial_fc</value>
</param>
<param>
- <key>sd_spec3</key>
+ <key>comment</key>
<value></value>
</param>
<param>
- <key>clock_source4</key>
- <value></value>
+ <key>ctrlpanel</key>
+ <value>False</value>
</param>
<param>
- <key>time_source4</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>sd_spec4</key>
- <value></value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>clock_source5</key>
- <value></value>
+ <key>fftsize</key>
+ <value>1024</value>
</param>
<param>
- <key>time_source5</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(536, 251)</value>
</param>
<param>
- <key>sd_spec5</key>
+ <key>gui_hint</key>
<value></value>
</param>
<param>
- <key>clock_source6</key>
- <value></value>
+ <key>_rotation</key>
+ <value>180</value>
</param>
<param>
- <key>time_source6</key>
- <value></value>
+ <key>grid</key>
+ <value>True</value>
</param>
<param>
- <key>sd_spec6</key>
- <value></value>
+ <key>id</key>
+ <value>qtgui_freq_sink_x_0</value>
</param>
<param>
- <key>clock_source7</key>
- <value></value>
+ <key>legend</key>
+ <value>True</value>
</param>
<param>
- <key>time_source7</key>
- <value></value>
+ <key>alpha1</key>
+ <value>1.0</value>
</param>
<param>
- <key>sd_spec7</key>
+ <key>color1</key>
+ <value>"blue"</value>
+ </param>
+ <param>
+ <key>label1</key>
<value></value>
</param>
<param>
- <key>nchan</key>
+ <key>width1</key>
<value>1</value>
</param>
<param>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <key>alpha10</key>
+ <value>1.0</value>
</param>
<param>
- <key>center_freq0</key>
- <value>initial_fc</value>
+ <key>color10</key>
+ <value>"dark blue"</value>
</param>
<param>
- <key>gain0</key>
- <value>gain</value>
+ <key>label10</key>
+ <value></value>
</param>
<param>
- <key>norm_gain0</key>
- <value>True</value>
+ <key>width10</key>
+ <value>1</value>
</param>
<param>
- <key>ant0</key>
- <value></value>
+ <key>alpha2</key>
+ <value>1.0</value>
</param>
<param>
- <key>bw0</key>
- <value>0</value>
+ <key>color2</key>
+ <value>"red"</value>
</param>
<param>
- <key>center_freq1</key>
- <value>0</value>
+ <key>label2</key>
+ <value></value>
</param>
<param>
- <key>gain1</key>
- <value>0</value>
+ <key>width2</key>
+ <value>1</value>
</param>
<param>
- <key>norm_gain1</key>
- <value>False</value>
+ <key>alpha3</key>
+ <value>1.0</value>
</param>
<param>
- <key>ant1</key>
- <value></value>
+ <key>color3</key>
+ <value>"green"</value>
</param>
<param>
- <key>bw1</key>
- <value>0</value>
+ <key>label3</key>
+ <value></value>
</param>
<param>
- <key>center_freq2</key>
- <value>0</value>
+ <key>width3</key>
+ <value>1</value>
</param>
<param>
- <key>gain2</key>
- <value>0</value>
+ <key>alpha4</key>
+ <value>1.0</value>
</param>
<param>
- <key>norm_gain2</key>
- <value>False</value>
+ <key>color4</key>
+ <value>"black"</value>
</param>
<param>
- <key>ant2</key>
+ <key>label4</key>
<value></value>
</param>
<param>
- <key>bw2</key>
- <value>0</value>
+ <key>width4</key>
+ <value>1</value>
</param>
<param>
- <key>center_freq3</key>
- <value>0</value>
+ <key>alpha5</key>
+ <value>1.0</value>
</param>
<param>
- <key>gain3</key>
- <value>0</value>
+ <key>color5</key>
+ <value>"cyan"</value>
</param>
<param>
- <key>norm_gain3</key>
- <value>False</value>
+ <key>label5</key>
+ <value></value>
</param>
<param>
- <key>ant3</key>
- <value></value>
+ <key>width5</key>
+ <value>1</value>
</param>
<param>
- <key>bw3</key>
- <value>0</value>
+ <key>alpha6</key>
+ <value>1.0</value>
</param>
<param>
- <key>center_freq4</key>
- <value>0</value>
+ <key>color6</key>
+ <value>"magenta"</value>
</param>
<param>
- <key>gain4</key>
- <value>0</value>
+ <key>label6</key>
+ <value></value>
</param>
<param>
- <key>norm_gain4</key>
- <value>False</value>
+ <key>width6</key>
+ <value>1</value>
</param>
<param>
- <key>ant4</key>
- <value></value>
+ <key>alpha7</key>
+ <value>1.0</value>
</param>
<param>
- <key>bw4</key>
- <value>0</value>
+ <key>color7</key>
+ <value>"yellow"</value>
</param>
<param>
- <key>center_freq5</key>
- <value>0</value>
+ <key>label7</key>
+ <value></value>
</param>
<param>
- <key>gain5</key>
- <value>0</value>
+ <key>width7</key>
+ <value>1</value>
</param>
<param>
- <key>norm_gain5</key>
- <value>False</value>
+ <key>alpha8</key>
+ <value>1.0</value>
</param>
<param>
- <key>ant5</key>
- <value></value>
+ <key>color8</key>
+ <value>"dark red"</value>
</param>
<param>
- <key>bw5</key>
- <value>0</value>
+ <key>label8</key>
+ <value></value>
</param>
<param>
- <key>center_freq6</key>
- <value>0</value>
+ <key>width8</key>
+ <value>1</value>
</param>
<param>
- <key>gain6</key>
- <value>0</value>
+ <key>alpha9</key>
+ <value>1.0</value>
</param>
<param>
- <key>norm_gain6</key>
- <value>False</value>
+ <key>color9</key>
+ <value>"dark green"</value>
</param>
<param>
- <key>ant6</key>
+ <key>label9</key>
<value></value>
</param>
<param>
- <key>bw6</key>
- <value>0</value>
+ <key>width9</key>
+ <value>1</value>
</param>
<param>
- <key>center_freq7</key>
+ <key>maxoutbuf</key>
<value>0</value>
</param>
<param>
- <key>gain7</key>
+ <key>minoutbuf</key>
<value>0</value>
</param>
<param>
- <key>norm_gain7</key>
+ <key>name</key>
+ <value>QT GUI Plot</value>
+ </param>
+ <param>
+ <key>nconnections</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>showports</key>
<value>False</value>
</param>
<param>
- <key>ant7</key>
- <value></value>
+ <key>freqhalf</key>
+ <value>True</value>
</param>
<param>
- <key>bw7</key>
+ <key>tr_chan</key>
<value>0</value>
</param>
<param>
- <key>center_freq8</key>
- <value>0</value>
+ <key>tr_level</key>
+ <value>0.0</value>
</param>
<param>
- <key>gain8</key>
- <value>0</value>
+ <key>tr_mode</key>
+ <value>qtgui.TRIG_MODE_FREE</value>
</param>
<param>
- <key>norm_gain8</key>
- <value>False</value>
+ <key>tr_tag</key>
+ <value>""</value>
</param>
<param>
- <key>ant8</key>
- <value></value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>bw8</key>
- <value>0</value>
+ <key>update_time</key>
+ <value>0.10</value>
</param>
<param>
- <key>center_freq9</key>
- <value>0</value>
+ <key>wintype</key>
+ <value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
<param>
- <key>gain9</key>
- <value>0</value>
+ <key>ymax</key>
+ <value>-40</value>
</param>
<param>
- <key>norm_gain9</key>
- <value>False</value>
+ <key>ymin</key>
+ <value>-120</value>
</param>
+ </block>
+ <block>
+ <key>uhd_usrp_source</key>
<param>
- <key>ant9</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>bw9</key>
- <value>0</value>
+ <key>ant0</key>
+ <value></value>
</param>
<param>
- <key>center_freq10</key>
+ <key>bw0</key>
<value>0</value>
</param>
<param>
- <key>gain10</key>
- <value>0</value>
+ <key>center_freq0</key>
+ <value>initial_fc</value>
</param>
<param>
- <key>norm_gain10</key>
- <value>False</value>
+ <key>norm_gain0</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>gain0</key>
+ <value>gain</value>
</param>
<param>
<key>ant10</key>
@@ -435,16 +598,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq11</key>
+ <key>center_freq10</key>
<value>0</value>
</param>
<param>
- <key>gain11</key>
- <value>0</value>
+ <key>norm_gain10</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain11</key>
- <value>False</value>
+ <key>gain10</key>
+ <value>0</value>
</param>
<param>
<key>ant11</key>
@@ -455,16 +618,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq12</key>
+ <key>center_freq11</key>
<value>0</value>
</param>
<param>
- <key>gain12</key>
- <value>0</value>
+ <key>norm_gain11</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain12</key>
- <value>False</value>
+ <key>gain11</key>
+ <value>0</value>
</param>
<param>
<key>ant12</key>
@@ -475,16 +638,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq13</key>
+ <key>center_freq12</key>
<value>0</value>
</param>
<param>
- <key>gain13</key>
- <value>0</value>
+ <key>norm_gain12</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain13</key>
- <value>False</value>
+ <key>gain12</key>
+ <value>0</value>
</param>
<param>
<key>ant13</key>
@@ -495,16 +658,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq14</key>
+ <key>center_freq13</key>
<value>0</value>
</param>
<param>
- <key>gain14</key>
- <value>0</value>
+ <key>norm_gain13</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain14</key>
- <value>False</value>
+ <key>gain13</key>
+ <value>0</value>
</param>
<param>
<key>ant14</key>
@@ -515,16 +678,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq15</key>
+ <key>center_freq14</key>
<value>0</value>
</param>
<param>
- <key>gain15</key>
- <value>0</value>
+ <key>norm_gain14</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain15</key>
- <value>False</value>
+ <key>gain14</key>
+ <value>0</value>
</param>
<param>
<key>ant15</key>
@@ -535,16 +698,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq16</key>
+ <key>center_freq15</key>
<value>0</value>
</param>
<param>
- <key>gain16</key>
- <value>0</value>
+ <key>norm_gain15</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain16</key>
- <value>False</value>
+ <key>gain15</key>
+ <value>0</value>
</param>
<param>
<key>ant16</key>
@@ -555,16 +718,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq17</key>
+ <key>center_freq16</key>
<value>0</value>
</param>
<param>
- <key>gain17</key>
- <value>0</value>
+ <key>norm_gain16</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain17</key>
- <value>False</value>
+ <key>gain16</key>
+ <value>0</value>
</param>
<param>
<key>ant17</key>
@@ -575,16 +738,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq18</key>
+ <key>center_freq17</key>
<value>0</value>
</param>
<param>
- <key>gain18</key>
- <value>0</value>
+ <key>norm_gain17</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain18</key>
- <value>False</value>
+ <key>gain17</key>
+ <value>0</value>
</param>
<param>
<key>ant18</key>
@@ -595,16 +758,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq19</key>
+ <key>center_freq18</key>
<value>0</value>
</param>
<param>
- <key>gain19</key>
- <value>0</value>
+ <key>norm_gain18</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain19</key>
- <value>False</value>
+ <key>gain18</key>
+ <value>0</value>
</param>
<param>
<key>ant19</key>
@@ -615,18 +778,38 @@
<value>0</value>
</param>
<param>
- <key>center_freq20</key>
+ <key>center_freq19</key>
<value>0</value>
</param>
<param>
- <key>gain20</key>
+ <key>norm_gain19</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>gain19</key>
<value>0</value>
</param>
<param>
- <key>norm_gain20</key>
+ <key>ant1</key>
+ <value></value>
+ </param>
+ <param>
+ <key>bw1</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>center_freq1</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>norm_gain1</key>
<value>False</value>
</param>
<param>
+ <key>gain1</key>
+ <value>0</value>
+ </param>
+ <param>
<key>ant20</key>
<value></value>
</param>
@@ -635,16 +818,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq21</key>
+ <key>center_freq20</key>
<value>0</value>
</param>
<param>
- <key>gain21</key>
- <value>0</value>
+ <key>norm_gain20</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain21</key>
- <value>False</value>
+ <key>gain20</key>
+ <value>0</value>
</param>
<param>
<key>ant21</key>
@@ -655,16 +838,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq22</key>
+ <key>center_freq21</key>
<value>0</value>
</param>
<param>
- <key>gain22</key>
- <value>0</value>
+ <key>norm_gain21</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain22</key>
- <value>False</value>
+ <key>gain21</key>
+ <value>0</value>
</param>
<param>
<key>ant22</key>
@@ -675,16 +858,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq23</key>
+ <key>center_freq22</key>
<value>0</value>
</param>
<param>
- <key>gain23</key>
- <value>0</value>
+ <key>norm_gain22</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain23</key>
- <value>False</value>
+ <key>gain22</key>
+ <value>0</value>
</param>
<param>
<key>ant23</key>
@@ -695,16 +878,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq24</key>
+ <key>center_freq23</key>
<value>0</value>
</param>
<param>
- <key>gain24</key>
- <value>0</value>
+ <key>norm_gain23</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain24</key>
- <value>False</value>
+ <key>gain23</key>
+ <value>0</value>
</param>
<param>
<key>ant24</key>
@@ -715,16 +898,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq25</key>
+ <key>center_freq24</key>
<value>0</value>
</param>
<param>
- <key>gain25</key>
- <value>0</value>
+ <key>norm_gain24</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain25</key>
- <value>False</value>
+ <key>gain24</key>
+ <value>0</value>
</param>
<param>
<key>ant25</key>
@@ -735,16 +918,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq26</key>
+ <key>center_freq25</key>
<value>0</value>
</param>
<param>
- <key>gain26</key>
- <value>0</value>
+ <key>norm_gain25</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain26</key>
- <value>False</value>
+ <key>gain25</key>
+ <value>0</value>
</param>
<param>
<key>ant26</key>
@@ -755,16 +938,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq27</key>
+ <key>center_freq26</key>
<value>0</value>
</param>
<param>
- <key>gain27</key>
- <value>0</value>
+ <key>norm_gain26</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain27</key>
- <value>False</value>
+ <key>gain26</key>
+ <value>0</value>
</param>
<param>
<key>ant27</key>
@@ -775,16 +958,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq28</key>
+ <key>center_freq27</key>
<value>0</value>
</param>
<param>
- <key>gain28</key>
- <value>0</value>
+ <key>norm_gain27</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain28</key>
- <value>False</value>
+ <key>gain27</key>
+ <value>0</value>
</param>
<param>
<key>ant28</key>
@@ -795,16 +978,16 @@
<value>0</value>
</param>
<param>
- <key>center_freq29</key>
+ <key>center_freq28</key>
<value>0</value>
</param>
<param>
- <key>gain29</key>
- <value>0</value>
+ <key>norm_gain28</key>
+ <value>False</value>
</param>
<param>
- <key>norm_gain29</key>
- <value>False</value>
+ <key>gain28</key>
+ <value>0</value>
</param>
<param>
<key>ant29</key>
@@ -815,504 +998,401 @@
<value>0</value>
</param>
<param>
- <key>center_freq30</key>
- <value>0</value>
- </param>
- <param>
- <key>gain30</key>
+ <key>center_freq29</key>
<value>0</value>
</param>
<param>
- <key>norm_gain30</key>
+ <key>norm_gain29</key>
<value>False</value>
</param>
<param>
- <key>ant30</key>
- <value></value>
+ <key>gain29</key>
+ <value>0</value>
</param>
<param>
- <key>bw30</key>
- <value>0</value>
+ <key>ant2</key>
+ <value></value>
</param>
<param>
- <key>center_freq31</key>
+ <key>bw2</key>
<value>0</value>
</param>
<param>
- <key>gain31</key>
+ <key>center_freq2</key>
<value>0</value>
</param>
<param>
- <key>norm_gain31</key>
+ <key>norm_gain2</key>
<value>False</value>
</param>
<param>
- <key>ant31</key>
- <value></value>
- </param>
- <param>
- <key>bw31</key>
+ <key>gain2</key>
<value>0</value>
</param>
<param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
+ <key>ant30</key>
<value></value>
</param>
<param>
- <key>minoutbuf</key>
+ <key>bw30</key>
<value>0</value>
</param>
<param>
- <key>maxoutbuf</key>
+ <key>center_freq30</key>
<value>0</value>
</param>
<param>
- <key>comment</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(336, 8)</value>
+ <key>norm_gain30</key>
+ <value>False</value>
</param>
<param>
- <key>_rotation</key>
+ <key>gain30</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>
+ <key>ant31</key>
+ <value></value>
</param>
<param>
- <key>name</key>
- <value>QT GUI Plot</value>
+ <key>bw31</key>
+ <value>0</value>
</param>
<param>
- <key>fftsize</key>
- <value>1024</value>
+ <key>center_freq31</key>
+ <value>0</value>
</param>
<param>
- <key>freqhalf</key>
- <value>True</value>
+ <key>norm_gain31</key>
+ <value>False</value>
</param>
<param>
- <key>wintype</key>
- <value>firdes.WIN_BLACKMAN_hARRIS</value>
+ <key>gain31</key>
+ <value>0</value>
</param>
<param>
- <key>fc</key>
- <value>initial_fc</value>
+ <key>ant3</key>
+ <value></value>
</param>
<param>
- <key>bw</key>
- <value>samp_rate</value>
+ <key>bw3</key>
+ <value>0</value>
</param>
<param>
- <key>grid</key>
- <value>True</value>
+ <key>center_freq3</key>
+ <value>0</value>
</param>
<param>
- <key>autoscale</key>
+ <key>norm_gain3</key>
<value>False</value>
</param>
<param>
- <key>average</key>
- <value>0.1</value>
- </param>
- <param>
- <key>ymin</key>
- <value>-120</value>
- </param>
- <param>
- <key>ymax</key>
- <value>-40</value>
+ <key>gain3</key>
+ <value>0</value>
</param>
<param>
- <key>nconnections</key>
- <value>1</value>
+ <key>ant4</key>
+ <value></value>
</param>
<param>
- <key>update_time</key>
- <value>0.10</value>
+ <key>bw4</key>
+ <value>0</value>
</param>
<param>
- <key>gui_hint</key>
- <value></value>
+ <key>center_freq4</key>
+ <value>0</value>
</param>
<param>
- <key>showports</key>
+ <key>norm_gain4</key>
<value>False</value>
</param>
<param>
- <key>tr_mode</key>
- <value>qtgui.TRIG_MODE_FREE</value>
+ <key>gain4</key>
+ <value>0</value>
</param>
<param>
- <key>tr_level</key>
- <value>0.0</value>
+ <key>ant5</key>
+ <value></value>
</param>
<param>
- <key>tr_chan</key>
+ <key>bw5</key>
<value>0</value>
</param>
<param>
- <key>tr_tag</key>
- <value>""</value>
+ <key>center_freq5</key>
+ <value>0</value>
</param>
<param>
- <key>ctrlpanel</key>
+ <key>norm_gain5</key>
<value>False</value>
</param>
<param>
- <key>legend</key>
- <value>True</value>
+ <key>gain5</key>
+ <value>0</value>
</param>
<param>
- <key>label1</key>
+ <key>ant6</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>
+ <key>bw6</key>
+ <value>0</value>
</param>
<param>
- <key>width2</key>
- <value>1</value>
+ <key>center_freq6</key>
+ <value>0</value>
</param>
<param>
- <key>color2</key>
- <value>"red"</value>
+ <key>norm_gain6</key>
+ <value>False</value>
</param>
<param>
- <key>alpha2</key>
- <value>1.0</value>
+ <key>gain6</key>
+ <value>0</value>
</param>
<param>
- <key>label3</key>
+ <key>ant7</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>
+ <key>bw7</key>
+ <value>0</value>
</param>
<param>
- <key>width4</key>
- <value>1</value>
+ <key>center_freq7</key>
+ <value>0</value>
</param>
<param>
- <key>color4</key>
- <value>"black"</value>
+ <key>norm_gain7</key>
+ <value>False</value>
</param>
<param>
- <key>alpha4</key>
- <value>1.0</value>
+ <key>gain7</key>
+ <value>0</value>
</param>
<param>
- <key>label5</key>
+ <key>ant8</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>
+ <key>bw8</key>
+ <value>0</value>
</param>
<param>
- <key>width6</key>
- <value>1</value>
+ <key>center_freq8</key>
+ <value>0</value>
</param>
<param>
- <key>color6</key>
- <value>"magenta"</value>
+ <key>norm_gain8</key>
+ <value>False</value>
</param>
<param>
- <key>alpha6</key>
- <value>1.0</value>
+ <key>gain8</key>
+ <value>0</value>
</param>
<param>
- <key>label7</key>
+ <key>ant9</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>
+ <key>bw9</key>
+ <value>0</value>
</param>
<param>
- <key>label8</key>
- <value></value>
+ <key>center_freq9</key>
+ <value>0</value>
</param>
<param>
- <key>width8</key>
- <value>1</value>
+ <key>norm_gain9</key>
+ <value>False</value>
</param>
<param>
- <key>color8</key>
- <value>"dark red"</value>
+ <key>gain9</key>
+ <value>0</value>
</param>
<param>
- <key>alpha8</key>
- <value>1.0</value>
+ <key>clock_rate</key>
+ <value>0.0</value>
</param>
<param>
- <key>label9</key>
+ <key>comment</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>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>width10</key>
- <value>1</value>
+ <key>dev_addr</key>
+ <value>""</value>
</param>
<param>
- <key>color10</key>
- <value>"dark blue"</value>
+ <key>dev_args</key>
+ <value>""</value>
</param>
<param>
- <key>alpha10</key>
- <value>1.0</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>_coordinate</key>
+ <value>(528, 123)</value>
</param>
<param>
- <key>affinity</key>
- <value></value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>id</key>
+ <value>uhd_usrp_source_0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
- <key>comment</key>
+ <key>clock_source0</key>
<value></value>
</param>
<param>
- <key>_coordinate</key>
- <value>(344, 139)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>180</value>
+ <key>sd_spec0</key>
+ <value></value>
</param>
- </block>
- <block>
- <key>variable_qtgui_range</key>
<param>
- <key>id</key>
- <value>gain</value>
+ <key>time_source0</key>
+ <value></value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>clock_source1</key>
+ <value></value>
</param>
<param>
- <key>label</key>
- <value>Gain</value>
+ <key>sd_spec1</key>
+ <value></value>
</param>
<param>
- <key>rangeType</key>
- <value>float</value>
+ <key>time_source1</key>
+ <value></value>
</param>
<param>
- <key>value</key>
- <value>.8</value>
+ <key>clock_source2</key>
+ <value></value>
</param>
<param>
- <key>start</key>
- <value>0</value>
+ <key>sd_spec2</key>
+ <value></value>
</param>
<param>
- <key>stop</key>
- <value>1</value>
+ <key>time_source2</key>
+ <value></value>
</param>
<param>
- <key>step</key>
- <value>.01</value>
+ <key>clock_source3</key>
+ <value></value>
</param>
<param>
- <key>widget</key>
- <value>counter_slider</value>
+ <key>sd_spec3</key>
+ <value></value>
</param>
<param>
- <key>orient</key>
- <value>Qt.Horizontal</value>
+ <key>time_source3</key>
+ <value></value>
</param>
<param>
- <key>min_len</key>
- <value>200</value>
+ <key>clock_source4</key>
+ <value></value>
</param>
<param>
- <key>gui_hint</key>
+ <key>sd_spec4</key>
<value></value>
</param>
<param>
- <key>alias</key>
+ <key>time_source4</key>
<value></value>
</param>
<param>
- <key>comment</key>
+ <key>clock_source5</key>
<value></value>
</param>
<param>
- <key>_coordinate</key>
- <value>(103, 99)</value>
+ <key>sd_spec5</key>
+ <value></value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
+ <key>time_source5</key>
+ <value></value>
</param>
- </block>
- <block>
- <key>options</key>
<param>
- <key>id</key>
- <value>uhd_tune_msg</value>
+ <key>clock_source6</key>
+ <value></value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>sd_spec6</key>
+ <value></value>
</param>
<param>
- <key>title</key>
- <value>UHD Message Tuner</value>
+ <key>time_source6</key>
+ <value></value>
</param>
<param>
- <key>author</key>
+ <key>clock_source7</key>
<value></value>
</param>
<param>
- <key>description</key>
- <value>Tune a UHD source from a QT sink via messages (double-click a frequency to tune)</value>
+ <key>sd_spec7</key>
+ <value></value>
</param>
<param>
- <key>window_size</key>
- <value>1280, 1024</value>
+ <key>time_source7</key>
+ <value></value>
</param>
<param>
- <key>generate_options</key>
- <value>qt_gui</value>
+ <key>minoutbuf</key>
+ <value>0</value>
</param>
<param>
- <key>category</key>
- <value>Custom</value>
+ <key>nchan</key>
+ <value>1</value>
</param>
<param>
- <key>run_options</key>
- <value>prompt</value>
+ <key>num_mboards</key>
+ <value>1</value>
</param>
<param>
- <key>run</key>
- <value>True</value>
+ <key>type</key>
+ <value>fc32</value>
</param>
<param>
- <key>max_nouts</key>
- <value>0</value>
+ <key>samp_rate</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>realtime_scheduling</key>
+ <key>stream_args</key>
<value></value>
</param>
<param>
- <key>thread_safe_setters</key>
- <value></value>
+ <key>stream_chans</key>
+ <value>[]</value>
</param>
<param>
- <key>alias</key>
+ <key>sync</key>
<value></value>
</param>
<param>
- <key>comment</key>
+ <key>otw</key>
<value></value>
</param>
- <param>
- <key>_coordinate</key>
- <value>(-1, -2)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
</block>
<connection>
- <source_block_id>uhd_usrp_source_0</source_block_id>
+ <source_block_id>blocks_message_strobe_0</source_block_id>
+ <sink_block_id>uhd_usrp_source_0</sink_block_id>
+ <source_key>strobe</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>0</source_key>
- <sink_key>0</sink_key>
+ <source_key>freq</source_key>
+ <sink_key>freq</sink_key>
</connection>
<connection>
<source_block_id>qtgui_freq_sink_x_0</source_block_id>
@@ -1321,9 +1401,9 @@
<sink_key>command</sink_key>
</connection>
<connection>
- <source_block_id>qtgui_freq_sink_x_0</source_block_id>
+ <source_block_id>uhd_usrp_source_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>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
</connection>
</flow_graph>
diff --git a/gr-uhd/examples/python/freq_hopping.py b/gr-uhd/examples/python/freq_hopping.py
index 5da5efa241..ce33a92a51 100755
--- a/gr-uhd/examples/python/freq_hopping.py
+++ b/gr-uhd/examples/python/freq_hopping.py
@@ -24,7 +24,6 @@
TXs a waveform (either from a file, or a sinusoid) in a frequency-hopping manner.
"""
-import time
import numpy
import argparse
import pmt
@@ -35,7 +34,7 @@ from gnuradio import uhd
def setup_parser():
""" Setup the parser for the frequency hopper. """
parser = argparse.ArgumentParser(
- description="Transmit a signal in a frequency-hopping manner, using tx_freq tags."
+ description="Transmit a signal in a frequency-hopping manner, using tx_freq tags."
)
parser.add_argument('-i', '--input-file', type=file, default=None,
help="File with samples to transmit. If left out, will transmit a sinusoid.")
@@ -54,7 +53,9 @@ def setup_parser():
parser.add_argument("-t", "--hop-time", type=float, default=1000,
help="Time between hops in milliseconds. This must be larger than or equal to the burst duration as set by --samp-per-burst")
parser.add_argument("-f", "--freq", type=float, default=2.45e9,
- help="Base frequency. This is the lowest frequency at which the USRP will Tx.")
+ help="Base frequency. This is the middle channel frequency at which the USRP will Tx.")
+ parser.add_argument("--dsp", action='store_true',
+ help="DSP tuning only.")
parser.add_argument("-d", "--freq-delta", type=float, default=1e6,
help="Channel spacing.")
parser.add_argument("-c", "--num-channels", type=int, default=5,
@@ -64,7 +65,7 @@ def setup_parser():
parser.add_argument("-p", "--post-tuning", action='count',
help="Tune after transmitting. Default is to tune immediately before transmitting.")
parser.add_argument("-v", "--verbose", action='count',
- help="Print more information.")
+ help="Print more information. The morer the printier.")
return parser
@@ -73,7 +74,7 @@ class FrequencyHopperSrc(gr.hier_block2):
def __init__(
self,
n_bursts, n_channels,
- freq_delta, base_freq,
+ freq_delta, base_freq, dsp_tuning,
burst_length, base_time, hop_time,
post_tuning=False,
tx_gain=0,
@@ -85,8 +86,10 @@ class FrequencyHopperSrc(gr.hier_block2):
gr.io_signature(1, 1, gr.sizeof_gr_complex),
)
n_samples_total = n_bursts * burst_length
- self.hop_sequence = numpy.arange(base_freq, base_freq + n_channels * freq_delta, freq_delta)
+ lowest_frequency = base_freq - numpy.floor(n_channels/2) * freq_delta
+ self.hop_sequence = [lowest_frequency + n * freq_delta for n in xrange(n_channels)]
numpy.random.shuffle(self.hop_sequence)
+ # Repeat that:
self.hop_sequence = [self.hop_sequence[x % n_channels] for x in xrange(n_bursts)]
if verbose:
print "Hop Frequencies | Hop Pattern"
@@ -103,20 +106,19 @@ class FrequencyHopperSrc(gr.hier_block2):
gain_tag = gr.tag_t()
gain_tag.offset = 0
gain_tag.key = pmt.string_to_symbol('tx_command')
- gain_tag.value = pmt.cons(
- pmt.intern("gain"),
- # These are both valid:
- #pmt.from_double(tx_gain)
- pmt.cons(pmt.to_pmt(0), pmt.to_pmt(tx_gain))
- )
+ gain_tag.value = pmt.to_pmt({'gain': tx_gain})
tag_list = [gain_tag,]
- for i in xrange(n_bursts):
+ for i in xrange(len(self.hop_sequence)):
tune_tag = gr.tag_t()
tune_tag.offset = i * burst_length
- if i > 0 and post_tuning:
+ if i > 0 and post_tuning and not dsp_tuning: # TODO dsp_tuning should also be able to do 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(self.hop_sequence[i])
+ if dsp_tuning:
+ tune_tag.key = pmt.string_to_symbol('tx_command')
+ tune_tag.value = pmt.to_pmt({'lo_freq': base_freq, 'dsp_freq': base_freq - self.hop_sequence[i]})
+ else:
+ tune_tag.key = pmt.string_to_symbol('tx_freq')
+ 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
@@ -164,7 +166,7 @@ class FlowGraph(gr.top_block):
raise SystemExit, 1
hopper_block = FrequencyHopperSrc(
options.num_bursts, options.num_channels,
- options.freq_delta, options.freq,
+ options.freq_delta, options.freq, options.dsp,
options.samp_per_burst, 1.0, options.hop_time / 1000.,
options.post_tuning,
options.gain,
@@ -202,7 +204,7 @@ def main():
args = setup_parser().parse_args()
if (1.0 * args.samp_per_burst / args.rate) > args.hop_time * 1e-3:
print "Burst duration must be smaller than hop time."
- raise SystemExit, 1
+ exit(1)
if args.verbose:
print_hopper_stats(args)
top_block = FlowGraph(args)