Skip to content

Instantly share code, notes, and snippets.

@zyphlar
Created May 22, 2019 03:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zyphlar/86c0755759d133eeebc02cd779c5c029 to your computer and use it in GitHub Desktop.
Save zyphlar/86c0755759d133eeebc02cd779c5c029 to your computer and use it in GitHub Desktop.
Trying to detect when there's a signal on a frequency
<?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.11'?>
<flow_graph>
<timestamp>Tue May 21 15:46:50 2019</timestamp>
<block>
<key>options</key>
<param>
<key>author</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value></value>
</param>
<param>
<key>category</key>
<value>[GRC Hier Blocks]</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(32, 52)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>generate_options</key>
<value>qt_gui</value>
</param>
<param>
<key>hier_block_src_path</key>
<value>.:</value>
</param>
<param>
<key>id</key>
<value>top_block</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>qt_qss_theme</key>
<value></value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>run_command</key>
<value>{python} -u {filename}</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></value>
</param>
</block>
<block>
<key>variable_qtgui_range</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>value</key>
<value>1</value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(56, 508)</value>
</param>
<param>
<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>0.1</value>
</param>
<param>
<key>stop</key>
<value>50</value>
</param>
<param>
<key>rangeType</key>
<value>float</value>
</param>
<param>
<key>widget</key>
<value>counter_slider</value>
</param>
</block>
<block>
<key>variable_qtgui_range</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>value</key>
<value>1920000</value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(248, 84)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>hw_samp_rate</value>
</param>
<param>
<key>label</key>
<value>Hardware Sample Rate</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>1</value>
</param>
<param>
<key>step</key>
<value>1000</value>
</param>
<param>
<key>stop</key>
<value>64000000</value>
</param>
<param>
<key>rangeType</key>
<value>int</value>
</param>
<param>
<key>widget</key>
<value>counter_slider</value>
</param>
</block>
<block>
<key>variable_qtgui_range</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>value</key>
<value>136025000</value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(456, 84)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>radio_frequency</value>
</param>
<param>
<key>label</key>
<value>Frequency</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>90000000</value>
</param>
<param>
<key>step</key>
<value>100000</value>
</param>
<param>
<key>stop</key>
<value>900000000</value>
</param>
<param>
<key>rangeType</key>
<value>int</value>
</param>
<param>
<key>widget</key>
<value>counter_slider</value>
</param>
</block>
<block>
<key>variable_qtgui_range</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>value</key>
<value>32000</value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(632, 92)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>label</key>
<value>Audio Sample Rate</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>1</value>
</param>
<param>
<key>step</key>
<value>100</value>
</param>
<param>
<key>stop</key>
<value>64000000</value>
</param>
<param>
<key>rangeType</key>
<value>int</value>
</param>
<param>
<key>widget</key>
<value>counter_slider</value>
</param>
</block>
<block>
<key>variable_function_probe</key>
<param>
<key>block_id</key>
<value>probe_signal_0_0</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>function_args</key>
<value></value>
</param>
<param>
<key>function_name</key>
<value>get_number</value>
</param>
<param>
<key>_coordinate</key>
<value>(792, 836)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>signal</value>
</param>
<param>
<key>value</key>
<value>0</value>
</param>
<param>
<key>poll_rate</key>
<value>10</value>
</param>
</block>
<block>
<key>variable_qtgui_range</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>value</key>
<value>1</value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(800, 92)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>squelch</value>
</param>
<param>
<key>label</key>
<value>Squelch</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>-100</value>
</param>
<param>
<key>step</key>
<value>1</value>
</param>
<param>
<key>stop</key>
<value>100</value>
</param>
<param>
<key>rangeType</key>
<value>float</value>
</param>
<param>
<key>widget</key>
<value>counter_slider</value>
</param>
</block>
<block>
<key>variable_qtgui_label</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>value</key>
<value>signal</value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>formatter</key>
<value>None</value>
</param>
<param>
<key>_coordinate</key>
<value>(944, 748)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>variable_qtgui_label_0</value>
</param>
<param>
<key>label</key>
<value></value>
</param>
<param>
<key>type</key>
<value>real</value>
</param>
</block>
<block>
<key>analog_dpll_bb</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(760, 652)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>gain</key>
<value>1</value>
</param>
<param>
<key>id</key>
<value>analog_dpll_bb_0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>period</key>
<value>1</value>
</param>
</block>
<block>
<key>analog_fmdet_cf</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(360, 460)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>freq_high</key>
<value>radio_frequency+1000</value>
</param>
<param>
<key>id</key>
<value>analog_fmdet_cf_0</value>
</param>
<param>
<key>freq_low</key>
<value>radio_frequency-1000</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>samplerate</key>
<value>hw_samp_rate</value>
</param>
<param>
<key>scl</key>
<value>100</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(328, 268)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>blocks_throttle_0</value>
</param>
<param>
<key>ignoretag</key>
<value>True</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
</block>
<block>
<key>digital_binary_slicer_fb</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(608, 664)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>digital_binary_slicer_fb_0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
</block>
<block>
<key>digital_mpsk_snr_est_cc</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>alpha</key>
<value>0.001</value>
</param>
<param>
<key>_coordinate</key>
<value>(360, 660)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>digital_mpsk_snr_est_cc_0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>tag_nsamples</key>
<value>10000</value>
</param>
<param>
<key>type</key>
<value>0</value>
</param>
</block>
<block>
<key>epy_block</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_io_cache</key>
<value>('Python: Alert on limit', 'blk', [('squelch', '0.1')], [('0', 'complex', 1)], [('0', 'complex', 1)], 'arguments to this function show up as parameters in GRC', ['squelch'])</value>
</param>
<param>
<key>_source_code</key>
<value>"""
Embedded Python Blocks:
Each time this file is saved, GRC will instantiate the first class it finds
to get ports and parameters of your block. The arguments to __init__ will
be the parameters. All of them are required to have default values!
"""
import numpy as np
from gnuradio import gr
class blk(gr.sync_block): # other base classes are basic_block, decim_block, interp_block
def __init__(self, squelch=0.1): # only default arguments here
"""arguments to this function show up as parameters in GRC"""
gr.sync_block.__init__(
self,
name='Python: Alert on limit', # will show up in GRC
in_sig=[np.complex64],
out_sig=[np.complex64]
)
# if an attribute with the same name as a parameter is found,
# a callback is registered (properties work, too).
self.squelch = squelch
def work(self, input_items, output_items):
in0 = input_items[0]
out = output_items[0]
threshold = self.squelch
for i in range(0, len(in0)):
sample = in0[i]
if sample &gt; threshold:
out[i] = 1
else:
out[i] = 0
return len(output_items[0])
</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(528, 268)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>epy_block_0</value>
</param>
<param>
<key>squelch</key>
<value>0.1</value>
</param>
</block>
<block>
<key>blocks_probe_signal_x</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(904, 664)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>probe_signal_0_0</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
</block>
<block>
<key>qtgui_waterfall_sink_x</key>
<param>
<key>axislabels</key>
<value>True</value>
</param>
<param>
<key>bw</key>
<value>samp_rate</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>fc</key>
<value>0</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>_coordinate</key>
<value>(528, 348)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>grid</key>
<value>False</value>
</param>
<param>
<key>id</key>
<value>qtgui_waterfall_sink_x_0</value>
</param>
<param>
<key>int_max</key>
<value>10</value>
</param>
<param>
<key>int_min</key>
<value>-140</value>
</param>
<param>
<key>legend</key>
<value>True</value>
</param>
<param>
<key>alpha1</key>
<value>1.0</value>
</param>
<param>
<key>color1</key>
<value>0</value>
</param>
<param>
<key>label1</key>
<value></value>
</param>
<param>
<key>alpha10</key>
<value>1.0</value>
</param>
<param>
<key>color10</key>
<value>0</value>
</param>
<param>
<key>label10</key>
<value></value>
</param>
<param>
<key>alpha2</key>
<value>1.0</value>
</param>
<param>
<key>color2</key>
<value>0</value>
</param>
<param>
<key>label2</key>
<value></value>
</param>
<param>
<key>alpha3</key>
<value>1.0</value>
</param>
<param>
<key>color3</key>
<value>0</value>
</param>
<param>
<key>label3</key>
<value></value>
</param>
<param>
<key>alpha4</key>
<value>1.0</value>
</param>
<param>
<key>color4</key>
<value>0</value>
</param>
<param>
<key>label4</key>
<value></value>
</param>
<param>
<key>alpha5</key>
<value>1.0</value>
</param>
<param>
<key>color5</key>
<value>0</value>
</param>
<param>
<key>label5</key>
<value></value>
</param>
<param>
<key>alpha6</key>
<value>1.0</value>
</param>
<param>
<key>color6</key>
<value>0</value>
</param>
<param>
<key>label6</key>
<value></value>
</param>
<param>
<key>alpha7</key>
<value>1.0</value>
</param>
<param>
<key>color7</key>
<value>0</value>
</param>
<param>
<key>label7</key>
<value></value>
</param>
<param>
<key>alpha8</key>
<value>1.0</value>
</param>
<param>
<key>color8</key>
<value>0</value>
</param>
<param>
<key>label8</key>
<value></value>
</param>
<param>
<key>alpha9</key>
<value>1.0</value>
</param>
<param>
<key>color9</key>
<value>0</value>
</param>
<param>
<key>label9</key>
<value></value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>name</key>
<value>""</value>
</param>
<param>
<key>nconnections</key>
<value>1</value>
</param>
<param>
<key>showports</key>
<value>True</value>
</param>
<param>
<key>freqhalf</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
</block>
<block>
<key>qtgui_waterfall_sink_x</key>
<param>
<key>axislabels</key>
<value>True</value>
</param>
<param>
<key>bw</key>
<value>samp_rate</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>fc</key>
<value>radio_frequency</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>_coordinate</key>
<value>(632, 468)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>grid</key>
<value>False</value>
</param>
<param>
<key>id</key>
<value>qtgui_waterfall_sink_x_0_0</value>
</param>
<param>
<key>int_max</key>
<value>200</value>
</param>
<param>
<key>int_min</key>
<value>-140</value>
</param>
<param>
<key>legend</key>
<value>True</value>
</param>
<param>
<key>alpha1</key>
<value>1.0</value>
</param>
<param>
<key>color1</key>
<value>0</value>
</param>
<param>
<key>label1</key>
<value></value>
</param>
<param>
<key>alpha10</key>
<value>1.0</value>
</param>
<param>
<key>color10</key>
<value>0</value>
</param>
<param>
<key>label10</key>
<value></value>
</param>
<param>
<key>alpha2</key>
<value>1.0</value>
</param>
<param>
<key>color2</key>
<value>0</value>
</param>
<param>
<key>label2</key>
<value></value>
</param>
<param>
<key>alpha3</key>
<value>1.0</value>
</param>
<param>
<key>color3</key>
<value>0</value>
</param>
<param>
<key>label3</key>
<value></value>
</param>
<param>
<key>alpha4</key>
<value>1.0</value>
</param>
<param>
<key>color4</key>
<value>0</value>
</param>
<param>
<key>label4</key>
<value></value>
</param>
<param>
<key>alpha5</key>
<value>1.0</value>
</param>
<param>
<key>color5</key>
<value>0</value>
</param>
<param>
<key>label5</key>
<value></value>
</param>
<param>
<key>alpha6</key>
<value>1.0</value>
</param>
<param>
<key>color6</key>
<value>0</value>
</param>
<param>
<key>label6</key>
<value></value>
</param>
<param>
<key>alpha7</key>
<value>1.0</value>
</param>
<param>
<key>color7</key>
<value>0</value>
</param>
<param>
<key>label7</key>
<value></value>
</param>
<param>
<key>alpha8</key>
<value>1.0</value>
</param>
<param>
<key>color8</key>
<value>0</value>
</param>
<param>
<key>label8</key>
<value></value>
</param>
<param>
<key>alpha9</key>
<value>1.0</value>
</param>
<param>
<key>color9</key>
<value>0</value>
</param>
<param>
<key>label9</key>
<value></value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>name</key>
<value>""</value>
</param>
<param>
<key>nconnections</key>
<value>1</value>
</param>
<param>
<key>showports</key>
<value>True</value>
</param>
<param>
<key>freqhalf</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
</block>
<block>
<key>qtgui_waterfall_sink_x</key>
<param>
<key>axislabels</key>
<value>True</value>
</param>
<param>
<key>bw</key>
<value>samp_rate</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>fc</key>
<value>radio_frequency</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>_coordinate</key>
<value>(368, 564)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>grid</key>
<value>False</value>
</param>
<param>
<key>id</key>
<value>qtgui_waterfall_sink_x_0_0_0</value>
</param>
<param>
<key>int_max</key>
<value>200</value>
</param>
<param>
<key>int_min</key>
<value>-140</value>
</param>
<param>
<key>legend</key>
<value>True</value>
</param>
<param>
<key>alpha1</key>
<value>1.0</value>
</param>
<param>
<key>color1</key>
<value>0</value>
</param>
<param>
<key>label1</key>
<value></value>
</param>
<param>
<key>alpha10</key>
<value>1.0</value>
</param>
<param>
<key>color10</key>
<value>0</value>
</param>
<param>
<key>label10</key>
<value></value>
</param>
<param>
<key>alpha2</key>
<value>1.0</value>
</param>
<param>
<key>color2</key>
<value>0</value>
</param>
<param>
<key>label2</key>
<value></value>
</param>
<param>
<key>alpha3</key>
<value>1.0</value>
</param>
<param>
<key>color3</key>
<value>0</value>
</param>
<param>
<key>label3</key>
<value></value>
</param>
<param>
<key>alpha4</key>
<value>1.0</value>
</param>
<param>
<key>color4</key>
<value>0</value>
</param>
<param>
<key>label4</key>
<value></value>
</param>
<param>
<key>alpha5</key>
<value>1.0</value>
</param>
<param>
<key>color5</key>
<value>0</value>
</param>
<param>
<key>label5</key>
<value></value>
</param>
<param>
<key>alpha6</key>
<value>1.0</value>
</param>
<param>
<key>color6</key>
<value>0</value>
</param>
<param>
<key>label6</key>
<value></value>
</param>
<param>
<key>alpha7</key>
<value>1.0</value>
</param>
<param>
<key>color7</key>
<value>0</value>
</param>
<param>
<key>label7</key>
<value></value>
</param>
<param>
<key>alpha8</key>
<value>1.0</value>
</param>
<param>
<key>color8</key>
<value>0</value>
</param>
<param>
<key>label8</key>
<value></value>
</param>
<param>
<key>alpha9</key>
<value>1.0</value>
</param>
<param>
<key>color9</key>
<value>0</value>
</param>
<param>
<key>label9</key>
<value></value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>name</key>
<value>""</value>
</param>
<param>
<key>nconnections</key>
<value>1</value>
</param>
<param>
<key>showports</key>
<value>True</value>
</param>
<param>
<key>freqhalf</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
</block>
<block>
<key>qtgui_waterfall_sink_x</key>
<param>
<key>axislabels</key>
<value>True</value>
</param>
<param>
<key>bw</key>
<value>samp_rate</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>fc</key>
<value>0</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>_coordinate</key>
<value>(736, 252)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>grid</key>
<value>False</value>
</param>
<param>
<key>id</key>
<value>qtgui_waterfall_sink_x_1</value>
</param>
<param>
<key>int_max</key>
<value>10</value>
</param>
<param>
<key>int_min</key>
<value>-140</value>
</param>
<param>
<key>legend</key>
<value>True</value>
</param>
<param>
<key>alpha1</key>
<value>1.0</value>
</param>
<param>
<key>color1</key>
<value>0</value>
</param>
<param>
<key>label1</key>
<value></value>
</param>
<param>
<key>alpha10</key>
<value>1.0</value>
</param>
<param>
<key>color10</key>
<value>0</value>
</param>
<param>
<key>label10</key>
<value></value>
</param>
<param>
<key>alpha2</key>
<value>1.0</value>
</param>
<param>
<key>color2</key>
<value>0</value>
</param>
<param>
<key>label2</key>
<value></value>
</param>
<param>
<key>alpha3</key>
<value>1.0</value>
</param>
<param>
<key>color3</key>
<value>0</value>
</param>
<param>
<key>label3</key>
<value></value>
</param>
<param>
<key>alpha4</key>
<value>1.0</value>
</param>
<param>
<key>color4</key>
<value>0</value>
</param>
<param>
<key>label4</key>
<value></value>
</param>
<param>
<key>alpha5</key>
<value>1.0</value>
</param>
<param>
<key>color5</key>
<value>0</value>
</param>
<param>
<key>label5</key>
<value></value>
</param>
<param>
<key>alpha6</key>
<value>1.0</value>
</param>
<param>
<key>color6</key>
<value>0</value>
</param>
<param>
<key>label6</key>
<value></value>
</param>
<param>
<key>alpha7</key>
<value>1.0</value>
</param>
<param>
<key>color7</key>
<value>0</value>
</param>
<param>
<key>label7</key>
<value></value>
</param>
<param>
<key>alpha8</key>
<value>1.0</value>
</param>
<param>
<key>color8</key>
<value>0</value>
</param>
<param>
<key>label8</key>
<value></value>
</param>
<param>
<key>alpha9</key>
<value>1.0</value>
</param>
<param>
<key>color9</key>
<value>0</value>
</param>
<param>
<key>label9</key>
<value></value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>name</key>
<value>""</value>
</param>
<param>
<key>nconnections</key>
<value>1</value>
</param>
<param>
<key>showports</key>
<value>True</value>
</param>
<param>
<key>freqhalf</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
</block>
<block>
<key>qtgui_waterfall_sink_x</key>
<param>
<key>axislabels</key>
<value>True</value>
</param>
<param>
<key>bw</key>
<value>samp_rate</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>fc</key>
<value>0</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>fftsize</key>
<value>1024</value>
</param>
<param>
<key>_coordinate</key>
<value>(584, 740)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>grid</key>
<value>False</value>
</param>
<param>
<key>id</key>
<value>qtgui_waterfall_sink_x_1_0</value>
</param>
<param>
<key>int_max</key>
<value>10</value>
</param>
<param>
<key>int_min</key>
<value>-140</value>
</param>
<param>
<key>legend</key>
<value>True</value>
</param>
<param>
<key>alpha1</key>
<value>1.0</value>
</param>
<param>
<key>color1</key>
<value>0</value>
</param>
<param>
<key>label1</key>
<value></value>
</param>
<param>
<key>alpha10</key>
<value>1.0</value>
</param>
<param>
<key>color10</key>
<value>0</value>
</param>
<param>
<key>label10</key>
<value></value>
</param>
<param>
<key>alpha2</key>
<value>1.0</value>
</param>
<param>
<key>color2</key>
<value>0</value>
</param>
<param>
<key>label2</key>
<value></value>
</param>
<param>
<key>alpha3</key>
<value>1.0</value>
</param>
<param>
<key>color3</key>
<value>0</value>
</param>
<param>
<key>label3</key>
<value></value>
</param>
<param>
<key>alpha4</key>
<value>1.0</value>
</param>
<param>
<key>color4</key>
<value>0</value>
</param>
<param>
<key>label4</key>
<value></value>
</param>
<param>
<key>alpha5</key>
<value>1.0</value>
</param>
<param>
<key>color5</key>
<value>0</value>
</param>
<param>
<key>label5</key>
<value></value>
</param>
<param>
<key>alpha6</key>
<value>1.0</value>
</param>
<param>
<key>color6</key>
<value>0</value>
</param>
<param>
<key>label6</key>
<value></value>
</param>
<param>
<key>alpha7</key>
<value>1.0</value>
</param>
<param>
<key>color7</key>
<value>0</value>
</param>
<param>
<key>label7</key>
<value></value>
</param>
<param>
<key>alpha8</key>
<value>1.0</value>
</param>
<param>
<key>color8</key>
<value>0</value>
</param>
<param>
<key>label8</key>
<value></value>
</param>
<param>
<key>alpha9</key>
<value>1.0</value>
</param>
<param>
<key>color9</key>
<value>0</value>
</param>
<param>
<key>label9</key>
<value></value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>name</key>
<value>""</value>
</param>
<param>
<key>nconnections</key>
<value>1</value>
</param>
<param>
<key>showports</key>
<value>True</value>
</param>
<param>
<key>freqhalf</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
</block>
<block>
<key>rtlsdr_source</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>ant0</key>
<value></value>
</param>
<param>
<key>bb_gain0</key>
<value>2</value>
</param>
<param>
<key>bw0</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode0</key>
<value>0</value>
</param>
<param>
<key>corr0</key>
<value>-100</value>
</param>
<param>
<key>freq0</key>
<value>radio_frequency+100</value>
</param>
<param>
<key>gain_mode0</key>
<value>True</value>
</param>
<param>
<key>if_gain0</key>
<value>2</value>
</param>
<param>
<key>iq_balance_mode0</key>
<value>0</value>
</param>
<param>
<key>gain0</key>
<value>gain</value>
</param>
<param>
<key>ant10</key>
<value></value>
</param>
<param>
<key>bb_gain10</key>
<value>20</value>
</param>
<param>
<key>bw10</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode10</key>
<value>0</value>
</param>
<param>
<key>corr10</key>
<value>0</value>
</param>
<param>
<key>freq10</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode10</key>
<value>False</value>
</param>
<param>
<key>if_gain10</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode10</key>
<value>0</value>
</param>
<param>
<key>gain10</key>
<value>10</value>
</param>
<param>
<key>ant11</key>
<value></value>
</param>
<param>
<key>bb_gain11</key>
<value>20</value>
</param>
<param>
<key>bw11</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode11</key>
<value>0</value>
</param>
<param>
<key>corr11</key>
<value>0</value>
</param>
<param>
<key>freq11</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode11</key>
<value>False</value>
</param>
<param>
<key>if_gain11</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode11</key>
<value>0</value>
</param>
<param>
<key>gain11</key>
<value>10</value>
</param>
<param>
<key>ant12</key>
<value></value>
</param>
<param>
<key>bb_gain12</key>
<value>20</value>
</param>
<param>
<key>bw12</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode12</key>
<value>0</value>
</param>
<param>
<key>corr12</key>
<value>0</value>
</param>
<param>
<key>freq12</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode12</key>
<value>False</value>
</param>
<param>
<key>if_gain12</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode12</key>
<value>0</value>
</param>
<param>
<key>gain12</key>
<value>10</value>
</param>
<param>
<key>ant13</key>
<value></value>
</param>
<param>
<key>bb_gain13</key>
<value>20</value>
</param>
<param>
<key>bw13</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode13</key>
<value>0</value>
</param>
<param>
<key>corr13</key>
<value>0</value>
</param>
<param>
<key>freq13</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode13</key>
<value>False</value>
</param>
<param>
<key>if_gain13</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode13</key>
<value>0</value>
</param>
<param>
<key>gain13</key>
<value>10</value>
</param>
<param>
<key>ant14</key>
<value></value>
</param>
<param>
<key>bb_gain14</key>
<value>20</value>
</param>
<param>
<key>bw14</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode14</key>
<value>0</value>
</param>
<param>
<key>corr14</key>
<value>0</value>
</param>
<param>
<key>freq14</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode14</key>
<value>False</value>
</param>
<param>
<key>if_gain14</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode14</key>
<value>0</value>
</param>
<param>
<key>gain14</key>
<value>10</value>
</param>
<param>
<key>ant15</key>
<value></value>
</param>
<param>
<key>bb_gain15</key>
<value>20</value>
</param>
<param>
<key>bw15</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode15</key>
<value>0</value>
</param>
<param>
<key>corr15</key>
<value>0</value>
</param>
<param>
<key>freq15</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode15</key>
<value>False</value>
</param>
<param>
<key>if_gain15</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode15</key>
<value>0</value>
</param>
<param>
<key>gain15</key>
<value>10</value>
</param>
<param>
<key>ant16</key>
<value></value>
</param>
<param>
<key>bb_gain16</key>
<value>20</value>
</param>
<param>
<key>bw16</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode16</key>
<value>0</value>
</param>
<param>
<key>corr16</key>
<value>0</value>
</param>
<param>
<key>freq16</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode16</key>
<value>False</value>
</param>
<param>
<key>if_gain16</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode16</key>
<value>0</value>
</param>
<param>
<key>gain16</key>
<value>10</value>
</param>
<param>
<key>ant17</key>
<value></value>
</param>
<param>
<key>bb_gain17</key>
<value>20</value>
</param>
<param>
<key>bw17</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode17</key>
<value>0</value>
</param>
<param>
<key>corr17</key>
<value>0</value>
</param>
<param>
<key>freq17</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode17</key>
<value>False</value>
</param>
<param>
<key>if_gain17</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode17</key>
<value>0</value>
</param>
<param>
<key>gain17</key>
<value>10</value>
</param>
<param>
<key>ant18</key>
<value></value>
</param>
<param>
<key>bb_gain18</key>
<value>20</value>
</param>
<param>
<key>bw18</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode18</key>
<value>0</value>
</param>
<param>
<key>corr18</key>
<value>0</value>
</param>
<param>
<key>freq18</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode18</key>
<value>False</value>
</param>
<param>
<key>if_gain18</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode18</key>
<value>0</value>
</param>
<param>
<key>gain18</key>
<value>10</value>
</param>
<param>
<key>ant19</key>
<value></value>
</param>
<param>
<key>bb_gain19</key>
<value>20</value>
</param>
<param>
<key>bw19</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode19</key>
<value>0</value>
</param>
<param>
<key>corr19</key>
<value>0</value>
</param>
<param>
<key>freq19</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode19</key>
<value>False</value>
</param>
<param>
<key>if_gain19</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode19</key>
<value>0</value>
</param>
<param>
<key>gain19</key>
<value>10</value>
</param>
<param>
<key>ant1</key>
<value></value>
</param>
<param>
<key>bb_gain1</key>
<value>20</value>
</param>
<param>
<key>bw1</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode1</key>
<value>0</value>
</param>
<param>
<key>corr1</key>
<value>0</value>
</param>
<param>
<key>freq1</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode1</key>
<value>False</value>
</param>
<param>
<key>if_gain1</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode1</key>
<value>0</value>
</param>
<param>
<key>gain1</key>
<value>10</value>
</param>
<param>
<key>ant20</key>
<value></value>
</param>
<param>
<key>bb_gain20</key>
<value>20</value>
</param>
<param>
<key>bw20</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode20</key>
<value>0</value>
</param>
<param>
<key>corr20</key>
<value>0</value>
</param>
<param>
<key>freq20</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode20</key>
<value>False</value>
</param>
<param>
<key>if_gain20</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode20</key>
<value>0</value>
</param>
<param>
<key>gain20</key>
<value>10</value>
</param>
<param>
<key>ant21</key>
<value></value>
</param>
<param>
<key>bb_gain21</key>
<value>20</value>
</param>
<param>
<key>bw21</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode21</key>
<value>0</value>
</param>
<param>
<key>corr21</key>
<value>0</value>
</param>
<param>
<key>freq21</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode21</key>
<value>False</value>
</param>
<param>
<key>if_gain21</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode21</key>
<value>0</value>
</param>
<param>
<key>gain21</key>
<value>10</value>
</param>
<param>
<key>ant22</key>
<value></value>
</param>
<param>
<key>bb_gain22</key>
<value>20</value>
</param>
<param>
<key>bw22</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode22</key>
<value>0</value>
</param>
<param>
<key>corr22</key>
<value>0</value>
</param>
<param>
<key>freq22</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode22</key>
<value>False</value>
</param>
<param>
<key>if_gain22</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode22</key>
<value>0</value>
</param>
<param>
<key>gain22</key>
<value>10</value>
</param>
<param>
<key>ant23</key>
<value></value>
</param>
<param>
<key>bb_gain23</key>
<value>20</value>
</param>
<param>
<key>bw23</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode23</key>
<value>0</value>
</param>
<param>
<key>corr23</key>
<value>0</value>
</param>
<param>
<key>freq23</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode23</key>
<value>False</value>
</param>
<param>
<key>if_gain23</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode23</key>
<value>0</value>
</param>
<param>
<key>gain23</key>
<value>10</value>
</param>
<param>
<key>ant24</key>
<value></value>
</param>
<param>
<key>bb_gain24</key>
<value>20</value>
</param>
<param>
<key>bw24</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode24</key>
<value>0</value>
</param>
<param>
<key>corr24</key>
<value>0</value>
</param>
<param>
<key>freq24</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode24</key>
<value>False</value>
</param>
<param>
<key>if_gain24</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode24</key>
<value>0</value>
</param>
<param>
<key>gain24</key>
<value>10</value>
</param>
<param>
<key>ant25</key>
<value></value>
</param>
<param>
<key>bb_gain25</key>
<value>20</value>
</param>
<param>
<key>bw25</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode25</key>
<value>0</value>
</param>
<param>
<key>corr25</key>
<value>0</value>
</param>
<param>
<key>freq25</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode25</key>
<value>False</value>
</param>
<param>
<key>if_gain25</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode25</key>
<value>0</value>
</param>
<param>
<key>gain25</key>
<value>10</value>
</param>
<param>
<key>ant26</key>
<value></value>
</param>
<param>
<key>bb_gain26</key>
<value>20</value>
</param>
<param>
<key>bw26</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode26</key>
<value>0</value>
</param>
<param>
<key>corr26</key>
<value>0</value>
</param>
<param>
<key>freq26</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode26</key>
<value>False</value>
</param>
<param>
<key>if_gain26</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode26</key>
<value>0</value>
</param>
<param>
<key>gain26</key>
<value>10</value>
</param>
<param>
<key>ant27</key>
<value></value>
</param>
<param>
<key>bb_gain27</key>
<value>20</value>
</param>
<param>
<key>bw27</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode27</key>
<value>0</value>
</param>
<param>
<key>corr27</key>
<value>0</value>
</param>
<param>
<key>freq27</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode27</key>
<value>False</value>
</param>
<param>
<key>if_gain27</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode27</key>
<value>0</value>
</param>
<param>
<key>gain27</key>
<value>10</value>
</param>
<param>
<key>ant28</key>
<value></value>
</param>
<param>
<key>bb_gain28</key>
<value>20</value>
</param>
<param>
<key>bw28</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode28</key>
<value>0</value>
</param>
<param>
<key>corr28</key>
<value>0</value>
</param>
<param>
<key>freq28</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode28</key>
<value>False</value>
</param>
<param>
<key>if_gain28</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode28</key>
<value>0</value>
</param>
<param>
<key>gain28</key>
<value>10</value>
</param>
<param>
<key>ant29</key>
<value></value>
</param>
<param>
<key>bb_gain29</key>
<value>20</value>
</param>
<param>
<key>bw29</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode29</key>
<value>0</value>
</param>
<param>
<key>corr29</key>
<value>0</value>
</param>
<param>
<key>freq29</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode29</key>
<value>False</value>
</param>
<param>
<key>if_gain29</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode29</key>
<value>0</value>
</param>
<param>
<key>gain29</key>
<value>10</value>
</param>
<param>
<key>ant2</key>
<value></value>
</param>
<param>
<key>bb_gain2</key>
<value>20</value>
</param>
<param>
<key>bw2</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode2</key>
<value>0</value>
</param>
<param>
<key>corr2</key>
<value>0</value>
</param>
<param>
<key>freq2</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode2</key>
<value>False</value>
</param>
<param>
<key>if_gain2</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode2</key>
<value>0</value>
</param>
<param>
<key>gain2</key>
<value>10</value>
</param>
<param>
<key>ant30</key>
<value></value>
</param>
<param>
<key>bb_gain30</key>
<value>20</value>
</param>
<param>
<key>bw30</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode30</key>
<value>0</value>
</param>
<param>
<key>corr30</key>
<value>0</value>
</param>
<param>
<key>freq30</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode30</key>
<value>False</value>
</param>
<param>
<key>if_gain30</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode30</key>
<value>0</value>
</param>
<param>
<key>gain30</key>
<value>10</value>
</param>
<param>
<key>ant31</key>
<value></value>
</param>
<param>
<key>bb_gain31</key>
<value>20</value>
</param>
<param>
<key>bw31</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode31</key>
<value>0</value>
</param>
<param>
<key>corr31</key>
<value>0</value>
</param>
<param>
<key>freq31</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode31</key>
<value>False</value>
</param>
<param>
<key>if_gain31</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode31</key>
<value>0</value>
</param>
<param>
<key>gain31</key>
<value>10</value>
</param>
<param>
<key>ant3</key>
<value></value>
</param>
<param>
<key>bb_gain3</key>
<value>20</value>
</param>
<param>
<key>bw3</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode3</key>
<value>0</value>
</param>
<param>
<key>corr3</key>
<value>0</value>
</param>
<param>
<key>freq3</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode3</key>
<value>False</value>
</param>
<param>
<key>if_gain3</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode3</key>
<value>0</value>
</param>
<param>
<key>gain3</key>
<value>10</value>
</param>
<param>
<key>ant4</key>
<value></value>
</param>
<param>
<key>bb_gain4</key>
<value>20</value>
</param>
<param>
<key>bw4</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode4</key>
<value>0</value>
</param>
<param>
<key>corr4</key>
<value>0</value>
</param>
<param>
<key>freq4</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode4</key>
<value>False</value>
</param>
<param>
<key>if_gain4</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode4</key>
<value>0</value>
</param>
<param>
<key>gain4</key>
<value>10</value>
</param>
<param>
<key>ant5</key>
<value></value>
</param>
<param>
<key>bb_gain5</key>
<value>20</value>
</param>
<param>
<key>bw5</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode5</key>
<value>0</value>
</param>
<param>
<key>corr5</key>
<value>0</value>
</param>
<param>
<key>freq5</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode5</key>
<value>False</value>
</param>
<param>
<key>if_gain5</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode5</key>
<value>0</value>
</param>
<param>
<key>gain5</key>
<value>10</value>
</param>
<param>
<key>ant6</key>
<value></value>
</param>
<param>
<key>bb_gain6</key>
<value>20</value>
</param>
<param>
<key>bw6</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode6</key>
<value>0</value>
</param>
<param>
<key>corr6</key>
<value>0</value>
</param>
<param>
<key>freq6</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode6</key>
<value>False</value>
</param>
<param>
<key>if_gain6</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode6</key>
<value>0</value>
</param>
<param>
<key>gain6</key>
<value>10</value>
</param>
<param>
<key>ant7</key>
<value></value>
</param>
<param>
<key>bb_gain7</key>
<value>20</value>
</param>
<param>
<key>bw7</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode7</key>
<value>0</value>
</param>
<param>
<key>corr7</key>
<value>0</value>
</param>
<param>
<key>freq7</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode7</key>
<value>False</value>
</param>
<param>
<key>if_gain7</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode7</key>
<value>0</value>
</param>
<param>
<key>gain7</key>
<value>10</value>
</param>
<param>
<key>ant8</key>
<value></value>
</param>
<param>
<key>bb_gain8</key>
<value>20</value>
</param>
<param>
<key>bw8</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode8</key>
<value>0</value>
</param>
<param>
<key>corr8</key>
<value>0</value>
</param>
<param>
<key>freq8</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode8</key>
<value>False</value>
</param>
<param>
<key>if_gain8</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode8</key>
<value>0</value>
</param>
<param>
<key>gain8</key>
<value>10</value>
</param>
<param>
<key>ant9</key>
<value></value>
</param>
<param>
<key>bb_gain9</key>
<value>20</value>
</param>
<param>
<key>bw9</key>
<value>0</value>
</param>
<param>
<key>dc_offset_mode9</key>
<value>0</value>
</param>
<param>
<key>corr9</key>
<value>0</value>
</param>
<param>
<key>freq9</key>
<value>100e6</value>
</param>
<param>
<key>gain_mode9</key>
<value>False</value>
</param>
<param>
<key>if_gain9</key>
<value>20</value>
</param>
<param>
<key>iq_balance_mode9</key>
<value>0</value>
</param>
<param>
<key>gain9</key>
<value>10</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>args</key>
<value>rtl=0</value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(24, 196)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>rtlsdr_source_0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>clock_source0</key>
<value></value>
</param>
<param>
<key>time_source0</key>
<value></value>
</param>
<param>
<key>clock_source1</key>
<value></value>
</param>
<param>
<key>time_source1</key>
<value></value>
</param>
<param>
<key>clock_source2</key>
<value></value>
</param>
<param>
<key>time_source2</key>
<value></value>
</param>
<param>
<key>clock_source3</key>
<value></value>
</param>
<param>
<key>time_source3</key>
<value></value>
</param>
<param>
<key>clock_source4</key>
<value></value>
</param>
<param>
<key>time_source4</key>
<value></value>
</param>
<param>
<key>clock_source5</key>
<value></value>
</param>
<param>
<key>time_source5</key>
<value></value>
</param>
<param>
<key>clock_source6</key>
<value></value>
</param>
<param>
<key>time_source6</key>
<value></value>
</param>
<param>
<key>clock_source7</key>
<value></value>
</param>
<param>
<key>time_source7</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>nchan</key>
<value>1</value>
</param>
<param>
<key>num_mboards</key>
<value>1</value>
</param>
<param>
<key>type</key>
<value>fc32</value>
</param>
<param>
<key>sample_rate</key>
<value>hw_samp_rate</value>
</param>
<param>
<key>sync</key>
<value></value>
</param>
</block>
<connection>
<source_block_id>analog_dpll_bb_0</source_block_id>
<sink_block_id>probe_signal_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>analog_fmdet_cf_0</source_block_id>
<sink_block_id>digital_binary_slicer_fb_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>analog_fmdet_cf_0</source_block_id>
<sink_block_id>qtgui_waterfall_sink_x_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_0</source_block_id>
<sink_block_id>epy_block_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_0</source_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>digital_binary_slicer_fb_0</source_block_id>
<sink_block_id>analog_dpll_bb_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>digital_mpsk_snr_est_cc_0</source_block_id>
<sink_block_id>qtgui_waterfall_sink_x_1_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>epy_block_0</source_block_id>
<sink_block_id>qtgui_waterfall_sink_x_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>rtlsdr_source_0</source_block_id>
<sink_block_id>analog_fmdet_cf_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>rtlsdr_source_0</source_block_id>
<sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>rtlsdr_source_0</source_block_id>
<sink_block_id>digital_mpsk_snr_est_cc_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>rtlsdr_source_0</source_block_id>
<sink_block_id>qtgui_waterfall_sink_x_0_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
"""
Embedded Python Blocks:
Each time this file is saved, GRC will instantiate the first class it finds
to get ports and parameters of your block. The arguments to __init__ will
be the parameters. All of them are required to have default values!
"""
import numpy as np
from gnuradio import gr
class blk(gr.sync_block): # other base classes are basic_block, decim_block, interp_block
def __init__(self, squelch=0.1): # only default arguments here
"""arguments to this function show up as parameters in GRC"""
gr.sync_block.__init__(
self,
name='Python: Alert on limit', # will show up in GRC
in_sig=[np.complex64],
out_sig=[np.complex64]
)
# if an attribute with the same name as a parameter is found,
# a callback is registered (properties work, too).
self.squelch = squelch
def work(self, input_items, output_items):
in0 = input_items[0]
out = output_items[0]
threshold = self.squelch
for i in range(0, len(in0)):
sample = in0[i]
if sample > threshold:
out[i] = 1
else:
out[i] = 0
return len(output_items[0])
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
##################################################
# GNU Radio Python Flow Graph
# Title: Top Block
# Generated: Tue May 21 20:18:23 2019
##################################################
from distutils.version import StrictVersion
if __name__ == '__main__':
import ctypes
import sys
if sys.platform.startswith('linux'):
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print "Warning: failed to XInitThreads()"
from PyQt5 import Qt
from PyQt5 import Qt, QtCore
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio import qtgui
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from gnuradio.qtgui import Range, RangeWidget
from optparse import OptionParser
import epy_block_0
import osmosdr
import sip
import sys
import time
from gnuradio import qtgui
class top_block(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Top Block")
Qt.QWidget.__init__(self)
self.setWindowTitle("Top Block")
qtgui.util.check_set_qss()
try:
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
except:
pass
self.top_scroll_layout = Qt.QVBoxLayout()
self.setLayout(self.top_scroll_layout)
self.top_scroll = Qt.QScrollArea()
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
self.top_scroll_layout.addWidget(self.top_scroll)
self.top_scroll.setWidgetResizable(True)
self.top_widget = Qt.QWidget()
self.top_scroll.setWidget(self.top_widget)
self.top_layout = Qt.QVBoxLayout(self.top_widget)
self.top_grid_layout = Qt.QGridLayout()
self.top_layout.addLayout(self.top_grid_layout)
self.settings = Qt.QSettings("GNU Radio", "top_block")
if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
self.restoreGeometry(self.settings.value("geometry").toByteArray())
else:
self.restoreGeometry(self.settings.value("geometry", type=QtCore.QByteArray))
##################################################
# Variables
##################################################
self.squelch = squelch = 1
self.samp_rate = samp_rate = 32000
self.radio_frequency = radio_frequency = 136025000
self.hw_samp_rate = hw_samp_rate = 1920000
self.gain = gain = 1
##################################################
# Blocks
##################################################
self._squelch_range = Range(-100, 100, 1, 1, 200)
self._squelch_win = RangeWidget(self._squelch_range, self.set_squelch, 'Squelch', "counter_slider", float)
self.top_layout.addWidget(self._squelch_win)
self._samp_rate_range = Range(1, 64000000, 100, 32000, 200)
self._samp_rate_win = RangeWidget(self._samp_rate_range, self.set_samp_rate, 'Audio Sample Rate', "counter_slider", int)
self.top_layout.addWidget(self._samp_rate_win)
self._radio_frequency_range = Range(90000000, 900000000, 100000, 136025000, 200)
self._radio_frequency_win = RangeWidget(self._radio_frequency_range, self.set_radio_frequency, 'Frequency', "counter_slider", int)
self.top_layout.addWidget(self._radio_frequency_win)
self._hw_samp_rate_range = Range(1, 64000000, 1000, 1920000, 200)
self._hw_samp_rate_win = RangeWidget(self._hw_samp_rate_range, self.set_hw_samp_rate, 'Hardware Sample Rate', "counter_slider", int)
self.top_layout.addWidget(self._hw_samp_rate_win)
self._gain_range = Range(0, 50, 0.1, 1, 200)
self._gain_win = RangeWidget(self._gain_range, self.set_gain, 'Gain', "counter_slider", float)
self.top_layout.addWidget(self._gain_win)
self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + 'rtl=0' )
self.rtlsdr_source_0.set_sample_rate(hw_samp_rate)
self.rtlsdr_source_0.set_center_freq(radio_frequency+100, 0)
self.rtlsdr_source_0.set_freq_corr(-100, 0)
self.rtlsdr_source_0.set_dc_offset_mode(0, 0)
self.rtlsdr_source_0.set_iq_balance_mode(0, 0)
self.rtlsdr_source_0.set_gain_mode(True, 0)
self.rtlsdr_source_0.set_gain(gain, 0)
self.rtlsdr_source_0.set_if_gain(2, 0)
self.rtlsdr_source_0.set_bb_gain(2, 0)
self.rtlsdr_source_0.set_antenna('', 0)
self.rtlsdr_source_0.set_bandwidth(0, 0)
self.qtgui_waterfall_sink_x_1 = qtgui.waterfall_sink_c(
1024, #size
firdes.WIN_BLACKMAN_hARRIS, #wintype
0, #fc
samp_rate, #bw
"", #name
1 #number of inputs
)
self.qtgui_waterfall_sink_x_1.set_update_time(0.10)
self.qtgui_waterfall_sink_x_1.enable_grid(False)
self.qtgui_waterfall_sink_x_1.enable_axis_labels(True)
if not True:
self.qtgui_waterfall_sink_x_1.disable_legend()
if "complex" == "float" or "complex" == "msg_float":
self.qtgui_waterfall_sink_x_1.set_plot_pos_half(not True)
labels = ['', '', '', '', '',
'', '', '', '', '']
colors = [0, 0, 0, 0, 0,
0, 0, 0, 0, 0]
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0]
for i in xrange(1):
if len(labels[i]) == 0:
self.qtgui_waterfall_sink_x_1.set_line_label(i, "Data {0}".format(i))
else:
self.qtgui_waterfall_sink_x_1.set_line_label(i, labels[i])
self.qtgui_waterfall_sink_x_1.set_color_map(i, colors[i])
self.qtgui_waterfall_sink_x_1.set_line_alpha(i, alphas[i])
self.qtgui_waterfall_sink_x_1.set_intensity_range(-140, 10)
self._qtgui_waterfall_sink_x_1_win = sip.wrapinstance(self.qtgui_waterfall_sink_x_1.pyqwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_waterfall_sink_x_1_win)
self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c(
1024, #size
firdes.WIN_BLACKMAN_hARRIS, #wintype
0, #fc
samp_rate, #bw
"", #name
1 #number of inputs
)
self.qtgui_waterfall_sink_x_0.set_update_time(0.10)
self.qtgui_waterfall_sink_x_0.enable_grid(False)
self.qtgui_waterfall_sink_x_0.enable_axis_labels(True)
if not True:
self.qtgui_waterfall_sink_x_0.disable_legend()
if "complex" == "float" or "complex" == "msg_float":
self.qtgui_waterfall_sink_x_0.set_plot_pos_half(not True)
labels = ['', '', '', '', '',
'', '', '', '', '']
colors = [0, 0, 0, 0, 0,
0, 0, 0, 0, 0]
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0]
for i in xrange(1):
if len(labels[i]) == 0:
self.qtgui_waterfall_sink_x_0.set_line_label(i, "Data {0}".format(i))
else:
self.qtgui_waterfall_sink_x_0.set_line_label(i, labels[i])
self.qtgui_waterfall_sink_x_0.set_color_map(i, colors[i])
self.qtgui_waterfall_sink_x_0.set_line_alpha(i, alphas[i])
self.qtgui_waterfall_sink_x_0.set_intensity_range(-140, 10)
self._qtgui_waterfall_sink_x_0_win = sip.wrapinstance(self.qtgui_waterfall_sink_x_0.pyqwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_waterfall_sink_x_0_win)
self.epy_block_0 = epy_block_0.blk(squelch=0.1)
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True)
##################################################
# Connections
##################################################
self.connect((self.blocks_throttle_0, 0), (self.epy_block_0, 0))
self.connect((self.blocks_throttle_0, 0), (self.qtgui_waterfall_sink_x_0, 0))
self.connect((self.epy_block_0, 0), (self.qtgui_waterfall_sink_x_1, 0))
self.connect((self.rtlsdr_source_0, 0), (self.blocks_throttle_0, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "top_block")
self.settings.setValue("geometry", self.saveGeometry())
event.accept()
def get_squelch(self):
return self.squelch
def set_squelch(self, squelch):
self.squelch = squelch
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.qtgui_waterfall_sink_x_1.set_frequency_range(0, self.samp_rate)
self.qtgui_waterfall_sink_x_0.set_frequency_range(0, self.samp_rate)
self.blocks_throttle_0.set_sample_rate(self.samp_rate)
def get_radio_frequency(self):
return self.radio_frequency
def set_radio_frequency(self, radio_frequency):
self.radio_frequency = radio_frequency
self.rtlsdr_source_0.set_center_freq(self.radio_frequency+100, 0)
def get_hw_samp_rate(self):
return self.hw_samp_rate
def set_hw_samp_rate(self, hw_samp_rate):
self.hw_samp_rate = hw_samp_rate
self.rtlsdr_source_0.set_sample_rate(self.hw_samp_rate)
def get_gain(self):
return self.gain
def set_gain(self, gain):
self.gain = gain
self.rtlsdr_source_0.set_gain(self.gain, 0)
def main(top_block_cls=top_block, options=None):
if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
style = gr.prefs().get_string('qtgui', 'style', 'raster')
Qt.QApplication.setGraphicsSystem(style)
qapp = Qt.QApplication(sys.argv)
tb = top_block_cls()
tb.start()
tb.show()
def quitting():
tb.stop()
tb.wait()
qapp.aboutToQuit.connect(quitting)
qapp.exec_()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment