diff options
Diffstat (limited to 'gr-uhd/examples')
-rw-r--r-- | gr-uhd/examples/grc/uhd_msg_tune.grc | 1174 | ||||
-rwxr-xr-x | gr-uhd/examples/python/freq_hopping.py | 38 |
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) |