RDS decoder module for GNU Radio, that decodes multiple stations simultaneously
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1005 lines
21 KiB

<?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.9'?>
<flow_graph>
<timestamp>Fri Apr 28 11:07:37 2017</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>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(8, 8)</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>SWR3</value>
</param>
<param>
<key>value</key>
<value>922e5</value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(479, 0)</value>
</param>
<param>
<key>gui_hint</key>
<value>tabs@0:0,1,1,1</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>freq1</value>
</param>
<param>
<key>label</key>
<value></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>86e6</value>
</param>
<param>
<key>step</key>
<value>1e5</value>
</param>
<param>
<key>stop</key>
<value>108e6</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>(846, 247)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>freq1</value>
</param>
<param>
<key>value</key>
<value>92.2e6</value>
</param>
</block>
<block>
<key>variable_qtgui_range</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>value</key>
<value>98800000</value>
</param>
<param>
<key>_enabled</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(343, 0)</value>
</param>
<param>
<key>gui_hint</key>
<value>tabs@0:0,0,1,1</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>freq_tune</value>
</param>
<param>
<key>label</key>
<value></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>86e6</value>
</param>
<param>
<key>step</key>
<value>1e5</value>
</param>
<param>
<key>stop</key>
<value>108e6</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>(822, 151)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>freq_tune</value>
</param>
<param>
<key>value</key>
<value>98.8e6</value>
</param>
</block>
<block>
<key>variable_qtgui_range</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>value</key>
<value>1200</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(718, 0)</value>
</param>
<param>
<key>gui_hint</key>
<value>tabs@0</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>label</key>
<value></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>500</value>
</param>
<param>
<key>step</key>
<value>100</value>
</param>
<param>
<key>stop</key>
<value>20000</value>
</param>
<param>
<key>rangeType</key>
<value>float</value>
</param>
<param>
<key>widget</key>
<value>counter_slider</value>
</param>
</block>
<block>
<key>blocks_file_source</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>True</value>
</param>
<param>
<key>file</key>
<value>/home/clemens/forschungsarbeit/abgabe/crash-examples/tmc decoder crash/sync_decim_out_11221</value>
</param>
<param>
<key>_coordinate</key>
<value>(63, 131)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>blocks_file_source_0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>repeat</key>
<value>True</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
</block>
<block>
<key>blocks_skiphead</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>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(287, 131)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>blocks_skiphead_0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>num_items</key>
<value>100000</value>
</param>
<param>
<key>type</key>
<value>float</value>
</param>
<param>
<key>vlen</key>
<value>1</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>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(455, 131)</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>10</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>float</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>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(455, 207)</value>
</param>
<param>
<key>_rotation</key>
<value>180</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_diff_decoder_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>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(255, 203)</value>
</param>
<param>
<key>_rotation</key>
<value>180</value>
</param>
<param>
<key>id</key>
<value>digital_diff_decoder_bb_0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>modulus</key>
<value>2</value>
</param>
</block>
<block>
<key>epy_block</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_io_cache</key>
<value>('freq-setter', 'blk', [('freqlist', '[92200000, 94700000, 101300000, 102300000, 105700000, 107700000]')], [], [('out', 'message', None)], 'Embedded Python Block example - a simple multiply const', ['freqlist'])</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
import pmt
from threading import Timer
#import time
class blk(gr.sync_block): # other base classes are basic_block, decim_block, interp_block
"""Embedded Python Block example - a simple multiply const"""
def __init__(self, freqlist=[92200000,94700000,101300000,102300000,105700000,107700000]): # only default arguments here
"""arguments to this function show up as parameters in GRC"""
gr.sync_block.__init__(
self,
name='freq-setter', # will show up in GRC
in_sig=None,
out_sig=None
)
# if an attribute with the same name as a parameter is found,
# a callback is registered (properties work, too).
self._freqlist=freqlist
self.message_port_register_out(pmt.intern('out'))
self.send_msg()
Timer(3, self.send_msg).start() #after 3 seconds (when table initialized)
#self.time=time.time()
@property
def freqlist(self):
"""I'm the 'freqlist' property."""
return self._freqlist
@freqlist.setter
def freqlist(self, value):
self._freqlist = value
self.send_msg()
@freqlist.deleter
def freqlist(self):
del self._freqlist
def send_msg(self):
#print(self.freqlist)
for i,freq in enumerate(self.freqlist):
send_string=str(i+1)+" "+str(freq)
send_pmt = pmt.string_to_symbol(send_string)
self.message_port_pub(pmt.intern('out'), send_pmt)
#def work(self, input_items, output_items):
#print("work")
#now=time.time()
#if now-self.time &gt;2:
#self.time=now
#self.send_msg()
#return len(input_items[0])</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>freqlist</key>
<value>[freq1]</value>
</param>
<param>
<key>_coordinate</key>
<value>(263, 395)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>epy_block_0</value>
</param>
</block>
<block>
<key>multirds_rds_decoder_redsea</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>debug</key>
<value>True</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(255, 307)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>multirds_rds_decoder_redsea_0</value>
</param>
<param>
<key>log</key>
<value>False</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
</block>
<block>
<key>multirds_rds_parser_table_qt</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>debug</key>
<value>False</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(503, 351)</value>
</param>
<param>
<key>gui_hint</key>
<value>tabs@0</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>multirds_rds_parser_table_qt_0</value>
</param>
<param>
<key>label</key>
<value></value>
</param>
<param>
<key>log</key>
<value>False</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>nPorts</key>
<value>1</value>
</param>
<param>
<key>freq_tune</key>
<value>freq_tune</value>
</param>
<param>
<key>workdir</key>
<value>/home/clemens/forschungsarbeit/data/</value>
</param>
<param>
<key>writeDB</key>
<value>False</value>
</param>
</block>
<block>
<key>multirds_tmc_parser</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>debug</key>
<value>True</value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(726, 363)</value>
</param>
<param>
<key>gui_hint</key>
<value>tabs@0</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>multirds_tmc_parser_0</value>
</param>
<param>
<key>label</key>
<value></value>
</param>
<param>
<key>log</key>
<value>False</value>
</param>
<param>
<key>maxheight</key>
<value>0</value>
</param>
<param>
<key>workdir</key>
<value>/home/clemens/forschungsarbeit/data/</value>
</param>
<param>
<key>writeDB</key>
<value>False</value>
</param>
</block>
<block>
<key>qtgui_tab_widget</key>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
<value>(0, 355)</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>tabs</value>
</param>
<param>
<key>label0</key>
<value>table</value>
</param>
<param>
<key>label1</key>
<value>graphs</value>
</param>
<param>
<key>label10</key>
<value>Tab 10</value>
</param>
<param>
<key>label11</key>
<value>Tab 11</value>
</param>
<param>
<key>label12</key>
<value>Tab 12</value>
</param>
<param>
<key>label13</key>
<value>Tab 13</value>
</param>
<param>
<key>label14</key>
<value>Tab 14</value>
</param>
<param>
<key>label15</key>
<value>Tab 15</value>
</param>
<param>
<key>label16</key>
<value>Tab 16</value>
</param>
<param>
<key>label17</key>
<value>Tab 17</value>
</param>
<param>
<key>label18</key>
<value>Tab 18</value>
</param>
<param>
<key>label19</key>
<value>Tab 19</value>
</param>
<param>
<key>label2</key>
<value>Tab 2</value>
</param>
<param>
<key>label3</key>
<value>Tab 3</value>
</param>
<param>
<key>label4</key>
<value>Tab 4</value>
</param>
<param>
<key>label5</key>
<value>Tab 5</value>
</param>
<param>
<key>label6</key>
<value>Tab 6</value>
</param>
<param>
<key>label7</key>
<value>Tab 7</value>
</param>
<param>
<key>label8</key>
<value>Tab 8</value>
</param>
<param>
<key>label9</key>
<value>Tab 9</value>
</param>
<param>
<key>num_tabs</key>
<value>2</value>
</param>
</block>
<connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>blocks_skiphead_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_skiphead_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>blocks_throttle_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>digital_binary_slicer_fb_0</source_block_id>
<sink_block_id>digital_diff_decoder_bb_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>digital_diff_decoder_bb_0</source_block_id>
<sink_block_id>multirds_rds_decoder_redsea_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>multirds_rds_parser_table_qt_0</sink_block_id>
<source_key>out</source_key>
<sink_key>freq</sink_key>
</connection>
<connection>
<source_block_id>multirds_rds_decoder_redsea_0</source_block_id>
<sink_block_id>multirds_rds_parser_table_qt_0</sink_block_id>
<source_key>out</source_key>
<sink_key>in</sink_key>
</connection>
<connection>
<source_block_id>multirds_rds_parser_table_qt_0</source_block_id>
<sink_block_id>multirds_tmc_parser_0</sink_block_id>
<source_key>tmc_raw</source_key>
<sink_key>in</sink_key>
</connection>
</flow_graph>