Attached are some custom GRC blocks that might be of interest:
rtl2832-cfile.grc is
http://sdr.osmocom.org/trac/attachment/wiki/rtl-sdr/rtl2832-cfile.grc
updated for the GR 3.7 block locations. Additional changes are setting
Repeat to no on the file source, eliminating the GUI, and adjusting the
bias and divisor to match those used in the current gr-osmosdr RTLSDR
source block.
rtlsdr_file_source.grc is a hierarchical block that combines a File Sink
with the same translation as in rtl2832-cfile.grc so rtl_sdr capture
files can be used without cluttering the layout.
Since grcc has limited support for Parameter block types, for best
results you need to edit the generated rtlsdr_file_source.py.xml to set
the type to file_open. Similarly, edits to both the Python and XML
files are necessary to hook up the file source Repeat parameter.
Examples of these modifications are also attached.
Hope these are useful. If there's a repository they should be
contributed to let me I'd be happy to do that.
Peter
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Tue Jul 15 20:46:59 2014</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
<value>rtlsdr_file_source</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value>RTLSDR File Source</value>
</param>
<param>
<key>author</key>
<value>Peter A. Bigot</value>
</param>
<param>
<key>description</key>
<value>Read rtl_sdr 8-bit I/Q file and generate CF stream</value>
</param>
<param>
<key>window_size</key>
<value>1280, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>hb</value>
</param>
<param>
<key>category</key>
<value>File Operators</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 10)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
<value>im_scale</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>1.0/128</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(642, 286)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
<value>re_scale</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>1.0/128</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(644, 179)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_add_const_vxx</key>
<param>
<key>id</key>
<value>im_bias_shift</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>-127.4</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(458, 286)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_uchar_to_float</key>
<param>
<key>id</key>
<value>im_uchar_to_float</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(269, 290)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_deinterleave</key>
<param>
<key>id</key>
<value>deinterleave</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>blocksize</key>
<value>1</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(77, 256)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_uchar_to_float</key>
<param>
<key>id</key>
<value>re_uchar_to_float</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(267, 183)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_add_const_vxx</key>
<param>
<key>id</key>
<value>re_bias_shift</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>-127.4</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(456, 179)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>float_to_complex</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(853, 222)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>pad_sink</key>
<param>
<key>id</key>
<value>sink</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value>out</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>num_streams</key>
<value>1</value>
</param>
<param>
<key>optional</key>
<value>False</value>
</param>
<param>
<key>_coordinate</key>
<value>(1048, 235)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>parameter</key>
<param>
<key>id</key>
<value>source_path</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value>File</value>
</param>
<param>
<key>value</key>
<value></value>
</param>
<param>
<key>type</key>
<value>string</value>
</param>
<param>
<key>short_id</key>
<value></value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(234, 24)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>file_source</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>source_path</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
<param>
<key>repeat</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(66, 168)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>parameter</key>
<param>
<key>id</key>
<value>repeat</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value>Repeat</value>
</param>
<param>
<key>value</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>intx</value>
</param>
<param>
<key>short_id</key>
<value></value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(360, 22)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>deinterleave</source_block_id>
<sink_block_id>re_uchar_to_float</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>re_bias_shift</source_block_id>
<sink_block_id>re_scale</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>re_uchar_to_float</source_block_id>
<sink_block_id>re_bias_shift</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>im_uchar_to_float</source_block_id>
<sink_block_id>im_bias_shift</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>im_bias_shift</source_block_id>
<sink_block_id>im_scale</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>im_scale</source_block_id>
<sink_block_id>float_to_complex</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>re_scale</source_block_id>
<sink_block_id>float_to_complex</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>file_source</source_block_id>
<sink_block_id>deinterleave</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>deinterleave</source_block_id>
<sink_block_id>im_uchar_to_float</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>float_to_complex</source_block_id>
<sink_block_id>sink</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
<?xml version='1.0'?>
<block>
<name>RTLSDR File Source</name>
<key>rtlsdr_file_source</key>
<category>File Operators</category>
<import>import gr_pab.rtlsdr_file_source</import>
<make>gr_pab.rtlsdr_file_source.rtlsdr_file_source(
source_path=$source_path,
repeat=$repeat,
)</make>
<callback>set_source_path($source_path)</callback>
<param>
<name>File</name>
<key>source_path</key>
<value></value>
<type>file_open</type>
</param>
<param>
<name>Repeat</name>
<key>repeat</key>
<value>True</value>
<type>enum</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<source>
<name>out</name>
<type>complex</type>
<vlen>1</vlen>
</source>
<doc>Peter A. Bigot
Read rtl_sdr 8-bit I/Q file and generate CF stream</doc>
<grc_source>rtlsdr_file_source.grc</grc_source>
</block>
#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: RTLSDR File Source
# Author: Peter A. Bigot
# Description: Read rtl_sdr 8-bit I/Q file and generate CF stream
# Generated: Tue Jul 15 20:46:59 2014
##################################################
from gnuradio import blocks
from gnuradio import gr
from gnuradio.filter import firdes
class rtlsdr_file_source(gr.hier_block2):
def __init__(self, source_path="", repeat=True):
gr.hier_block2.__init__(
self, "RTLSDR File Source",
gr.io_signature(0, 0, 0),
gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
)
##################################################
# Parameters
##################################################
self.source_path = source_path
self.repeat = repeat
##################################################
# Blocks
##################################################
self.re_uchar_to_float = blocks.uchar_to_float()
self.re_scale = blocks.multiply_const_vff((1.0/128, ))
self.re_bias_shift = blocks.add_const_vff((-127.4, ))
self.im_uchar_to_float = blocks.uchar_to_float()
self.im_scale = blocks.multiply_const_vff((1.0/128, ))
self.im_bias_shift = blocks.add_const_vff((-127.4, ))
self.float_to_complex = blocks.float_to_complex(1)
self.file_source = blocks.file_source(gr.sizeof_char*1, source_path, repeat)
self.deinterleave = blocks.deinterleave(gr.sizeof_char*1, 1)
##################################################
# Connections
##################################################
self.connect((self.deinterleave, 0), (self.re_uchar_to_float, 0))
self.connect((self.re_bias_shift, 0), (self.re_scale, 0))
self.connect((self.re_uchar_to_float, 0), (self.re_bias_shift, 0))
self.connect((self.im_uchar_to_float, 0), (self.im_bias_shift, 0))
self.connect((self.im_bias_shift, 0), (self.im_scale, 0))
self.connect((self.im_scale, 0), (self.float_to_complex, 1))
self.connect((self.re_scale, 0), (self.float_to_complex, 0))
self.connect((self.file_source, 0), (self.deinterleave, 0))
self.connect((self.deinterleave, 1), (self.im_uchar_to_float, 0))
self.connect((self.float_to_complex, 0), (self, 0))
def get_source_path(self):
return self.source_path
def set_source_path(self, source_path):
self.source_path = source_path
self.file_source.open(self.source_path, self.repeat)
def get_repeat(self):
return self.repeat
def set_repeat(self, repeat):
self.repeat = repeat
self.file_source.open(self.source_path, self.repeat)
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Tue Jul 15 20:56:58 2014</timestamp>
<block>
<key>blocks_deinterleave</key>
<param>
<key>id</key>
<value>blocks_deinterleave_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
<param>
<key>num_streams</key>
<value>2</value>
</param>
<param>
<key>blocksize</key>
<value>1</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(88, 164)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_uchar_to_float</key>
<param>
<key>id</key>
<value>blocks_uchar_to_float_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(278, 91)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_file_source</key>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/tmp/capture.bin</value>
</param>
<param>
<key>type</key>
<value>byte</value>
</param>
<param>
<key>repeat</key>
<value>False</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(58, 83)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_uchar_to_float</key>
<param>
<key>id</key>
<value>blocks_uchar_to_float_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(280, 198)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_add_const_vxx</key>
<param>
<key>id</key>
<value>blocks_add_const_vxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>-127.4</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(467, 87)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
<value>blocks_multiply_const_vxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>1.0/128</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(655, 87)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_float_to_complex</key>
<param>
<key>id</key>
<value>blocks_float_to_complex_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(866, 91)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_file_sink</key>
<param>
<key>id</key>
<value>blocks_file_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>file</key>
<value>/tmp/capture.cfile</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>unbuffered</key>
<value>False</value>
</param>
<param>
<key>append</key>
<value>False</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(872, 191)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_add_const_vxx</key>
<param>
<key>id</key>
<value>blocks_add_const_vxx_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>-127.4</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(469, 194)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
<value>blocks_multiply_const_vxx_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>const</key>
<value>1.0/128</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(653, 194)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>options</key>
<param>
<key>id</key>
<value>top_block</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value></value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>1280, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>no_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>run</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(7, 0)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>blocks_deinterleave_0</source_block_id>
<sink_block_id>blocks_uchar_to_float_0_0</sink_block_id>
<source_key>1</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_deinterleave_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_float_to_complex_0</source_block_id>
<sink_block_id>blocks_file_sink_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0_0</source_block_id>
<sink_block_id>blocks_float_to_complex_0</sink_block_id>
<source_key>0</source_key>
<sink_key>1</sink_key>
</connection>
<connection>
<source_block_id>blocks_add_const_vxx_0_0</source_block_id>
<sink_block_id>blocks_multiply_const_vxx_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_uchar_to_float_0_0</source_block_id>
<sink_block_id>blocks_add_const_vxx_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_uchar_to_float_0</source_block_id>
<sink_block_id>blocks_add_const_vxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_add_const_vxx_0</source_block_id>
<sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_deinterleave_0</source_block_id>
<sink_block_id>blocks_uchar_to_float_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>