diff --git a/apps/fft-multi-decoder_fixed_hackrf.grc b/apps/fft-multi-decoder_fixed_hackrf.grc
index 3ac48ca..10fa067 100644
--- a/apps/fft-multi-decoder_fixed_hackrf.grc
+++ b/apps/fft-multi-decoder_fixed_hackrf.grc
@@ -1260,6 +1260,33 @@
counter_slider
+
+ variable
+
+ comment
+
+
+
+ _enabled
+ 0
+
+
+ _coordinate
+ (167, 183)
+
+
+ _rotation
+ 0
+
+
+ id
+ loop_bw
+
+
+ value
+ 470
+
+
variable_qtgui_range
@@ -1335,7 +1362,7 @@
_coordinate
- (23, 171)
+ (23, 187)
_rotation
diff --git a/apps/ifft-RDS-decoder_hier-block.grc b/apps/ifft-RDS-decoder_hier-block.grc
index c4d222e..2872749 100644
--- a/apps/ifft-RDS-decoder_hier-block.grc
+++ b/apps/ifft-RDS-decoder_hier-block.grc
@@ -482,15 +482,15 @@
_enabled
- 0
+ 1
file
- "/tmp/fm_dec_240k_"+str(cutpoint)
+ "/tmp/cr/fm_dec_240k_"+str(cutpoint)
_coordinate
- (750, 371)
+ (718, 355)
_rotation
diff --git a/apps/read_fmdec.grc b/apps/read_fmdec.grc
new file mode 100644
index 0000000..4186abc
--- /dev/null
+++ b/apps/read_fmdec.grc
@@ -0,0 +1,2223 @@
+
+
+
+ Fri Apr 28 11:07:37 2017
+
+ options
+
+ author
+
+
+
+ window_size
+
+
+
+ category
+ [GRC Hier Blocks]
+
+
+ comment
+
+
+
+ description
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (8, 8)
+
+
+ _rotation
+ 0
+
+
+ generate_options
+ qt_gui
+
+
+ hier_block_src_path
+ .:
+
+
+ id
+ top_block
+
+
+ max_nouts
+ 0
+
+
+ qt_qss_theme
+
+
+
+ realtime_scheduling
+
+
+
+ run_command
+ {python} -u {filename}
+
+
+ run_options
+ prompt
+
+
+ run
+ True
+
+
+ thread_safe_setters
+
+
+
+ title
+
+
+
+
+ variable
+
+ comment
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (1022, 11)
+
+
+ _rotation
+ 0
+
+
+ id
+ audio_decim
+
+
+ value
+ 5
+
+
+
+ variable
+
+ comment
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (878, 11)
+
+
+ _rotation
+ 0
+
+
+ id
+ audio_rate
+
+
+ value
+ 48000
+
+
+
+ variable
+
+ comment
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (702, 35)
+
+
+ _rotation
+ 0
+
+
+ id
+ baseband_rate
+
+
+ value
+ 240000
+
+
+
+ variable_qtgui_range
+
+ comment
+ SWR3
+
+
+ value
+ 922e5
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (511, 0)
+
+
+ gui_hint
+ tabs@0:0,1,1,1
+
+
+ _rotation
+ 0
+
+
+ id
+ freq1
+
+
+ label
+
+
+
+ min_len
+ 200
+
+
+ orient
+ Qt.Horizontal
+
+
+ start
+ 86e6
+
+
+ step
+ 1e5
+
+
+ stop
+ 108e6
+
+
+ rangeType
+ float
+
+
+ widget
+ counter_slider
+
+
+
+ variable_qtgui_range
+
+ comment
+
+
+
+ value
+ 98800000
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (375, 31)
+
+
+ gui_hint
+ tabs@0:0,0,1,1
+
+
+ _rotation
+ 0
+
+
+ id
+ freq_tune
+
+
+ label
+
+
+
+ min_len
+ 200
+
+
+ orient
+ Qt.Horizontal
+
+
+ start
+ 86e6
+
+
+ step
+ 1e5
+
+
+ stop
+ 108e6
+
+
+ rangeType
+ float
+
+
+ widget
+ counter_slider
+
+
+
+ variable
+
+ comment
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (1014, 115)
+
+
+ _rotation
+ 0
+
+
+ id
+ loop_bw
+
+
+ value
+ 470
+
+
+
+ variable_qtgui_range
+
+ comment
+
+
+
+ value
+ 0.1
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (335, 710)
+
+
+ gui_hint
+ tabs@0:0,2,1,1
+
+
+ _rotation
+ 0
+
+
+ id
+ volume
+
+
+ label
+
+
+
+ min_len
+ 200
+
+
+ orient
+ Qt.Horizontal
+
+
+ start
+ 0
+
+
+ step
+ 0.01
+
+
+ stop
+ 1
+
+
+ rangeType
+ float
+
+
+ widget
+ counter_slider
+
+
+
+ analog_fm_deemph
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (391, 611)
+
+
+ _rotation
+ 0
+
+
+ id
+ analog_fm_deemph_0_0_1
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ samp_rate
+ audio_rate
+
+
+ tau
+ 75e-6
+
+
+
+ audio_sink
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ device_name
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (734, 646)
+
+
+ _rotation
+ 0
+
+
+ id
+ audio_sink_0_0
+
+
+ num_inputs
+ 1
+
+
+ ok_to_block
+ True
+
+
+ samp_rate
+ audio_rate
+
+
+
+ blocks_complex_to_real
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (686, 207)
+
+
+ _rotation
+ 0
+
+
+ id
+ blocks_complex_to_real_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ vlen
+ 1
+
+
+
+ blocks_file_source
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ True
+
+
+ file
+ /user/wire2/richter/fm_dec_rec/fm_dec_240k_597.333333333
+
+
+ _coordinate
+ (55, 131)
+
+
+ _rotation
+ 0
+
+
+ id
+ blocks_file_source_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ type
+ float
+
+
+ repeat
+ True
+
+
+ vlen
+ 1
+
+
+
+ blocks_multiply_const_vxx
+
+ alias
+
+
+
+ comment
+
+
+
+ const
+ volume
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (567, 658)
+
+
+ _rotation
+ 0
+
+
+ id
+ blocks_multiply_const_vxx_0_1
+
+
+ type
+ float
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ vlen
+ 1
+
+
+
+ blocks_throttle
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (247, 115)
+
+
+ _rotation
+ 0
+
+
+ id
+ blocks_throttle_0
+
+
+ ignoretag
+ True
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ samples_per_second
+ baseband_rate
+
+
+ type
+ float
+
+
+ vlen
+ 1
+
+
+
+ digital_binary_slicer_fb
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (830, 343)
+
+
+ _rotation
+ 180
+
+
+ id
+ digital_binary_slicer_fb_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+
+ digital_diff_decoder_bb
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (631, 339)
+
+
+ _rotation
+ 180
+
+
+ id
+ digital_diff_decoder_bb_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ modulus
+ 2
+
+
+
+ digital_mpsk_receiver_cc
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (463, 139)
+
+
+ _rotation
+ 0
+
+
+ gain_mu
+ 0.05
+
+
+ gain_omega
+ 0.001
+
+
+ id
+ digital_mpsk_receiver_cc_0
+
+
+ w
+ loop_bw
+
+
+ M
+ 2
+
+
+ fmax
+ 0.06
+
+
+ maxoutbuf
+ 0
+
+
+ fmin
+ -0.06
+
+
+ minoutbuf
+ 0
+
+
+ mu
+ 0.5
+
+
+ omega_relative_limit
+ 0.005
+
+
+ omega
+ 48000 / 2375.0
+
+
+ theta
+ 0
+
+
+
+ epy_block
+
+ alias
+
+
+
+ _io_cache
+ ('freq-setter', 'blk', [('freqlist', '[92200000, 94700000, 101300000, 102300000, 105700000, 107700000]')], [], [('out', 'message', None)], 'Embedded Python Block example - a simple multiply const', ['freqlist'])
+
+
+ _source_code
+ """
+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 >2:
+ #self.time=now
+ #self.send_msg()
+ #return len(input_items[0])
+
+
+ comment
+
+
+
+ _enabled
+ True
+
+
+ freqlist
+ [freq1]
+
+
+ _coordinate
+ (638, 531)
+
+
+ _rotation
+ 0
+
+
+ id
+ epy_block_0
+
+
+
+ fir_filter_xxx
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ decim
+ audio_decim
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (159, 627)
+
+
+ _rotation
+ 0
+
+
+ id
+ fir_filter_xxx_0_0_1
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ samp_delay
+ 0
+
+
+ taps
+ firdes.low_pass(1.0,baseband_rate,13e3,3e3,firdes.WIN_HAMMING)
+
+
+ type
+ fff
+
+
+
+ freq_xlating_fir_filter_xxx
+
+ alias
+
+
+
+ center_freq
+ 57e3
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ decim
+ audio_decim
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (231, 271)
+
+
+ _rotation
+ 270
+
+
+ id
+ freq_xlating_fir_filter_xxx_1
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ samp_rate
+ baseband_rate
+
+
+ taps
+ firdes.low_pass(2500.0,baseband_rate,2.4e3,2e3,firdes.WIN_HAMMING)
+
+
+ type
+ fcc
+
+
+
+ multirds_rds_decoder_redsea
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ debug
+ True
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (631, 443)
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_rds_decoder_redsea_0
+
+
+ log
+ False
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+
+ multirds_rds_parser_table_qt
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ debug
+ False
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (878, 487)
+
+
+ gui_hint
+ tabs@1
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_rds_parser_table_qt_0
+
+
+ label
+
+
+
+ log
+ False
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ nPorts
+ 1
+
+
+ freq_tune
+ freq_tune
+
+
+ workdir
+ /user/wire2/richter/data/
+
+
+ writeDB
+ False
+
+
+
+ multirds_sync_decim
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (1006, 243)
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_sync_decim_0
+
+
+ log
+ False
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ threshold
+ 0.25
+
+
+ min_diff
+ 0.2
+
+
+
+ multirds_tmc_parser
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ debug
+ True
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (1102, 499)
+
+
+ gui_hint
+ tabs@1
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_tmc_parser_0
+
+
+ label
+
+
+
+ log
+ False
+
+
+ maxheight
+ 160
+
+
+ workdir
+ /user/wire2/richter/data/
+
+
+ writeDB
+ False
+
+
+
+ qtgui_const_sink_x
+
+ autoscale
+ False
+
+
+ axislabels
+ False
+
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (710, 131)
+
+
+ gui_hint
+ tabs@0
+
+
+ _rotation
+ 0
+
+
+ grid
+ False
+
+
+ id
+ qtgui_const_sink_x_0
+
+
+ legend
+ True
+
+
+ alpha1
+ 1.0
+
+
+ color1
+ "blue"
+
+
+ label1
+
+
+
+ marker1
+ 0
+
+
+ style1
+ 0
+
+
+ width1
+ 1
+
+
+ alpha10
+ 1.0
+
+
+ color10
+ "red"
+
+
+ label10
+
+
+
+ marker10
+ 0
+
+
+ style10
+ 0
+
+
+ width10
+ 1
+
+
+ alpha2
+ 1.0
+
+
+ color2
+ "red"
+
+
+ label2
+
+
+
+ marker2
+ 0
+
+
+ style2
+ 0
+
+
+ width2
+ 1
+
+
+ alpha3
+ 1.0
+
+
+ color3
+ "green"
+
+
+ label3
+
+
+
+ marker3
+ 0
+
+
+ style3
+ 0
+
+
+ width3
+ 1
+
+
+ alpha4
+ 1.0
+
+
+ color4
+ "black"
+
+
+ label4
+
+
+
+ marker4
+ 0
+
+
+ style4
+ 0
+
+
+ width4
+ 1
+
+
+ alpha5
+ 1.0
+
+
+ color5
+ "cyan"
+
+
+ label5
+
+
+
+ marker5
+ 0
+
+
+ style5
+ 0
+
+
+ width5
+ 1
+
+
+ alpha6
+ 1.0
+
+
+ color6
+ "magenta"
+
+
+ label6
+
+
+
+ marker6
+ 0
+
+
+ style6
+ 0
+
+
+ width6
+ 1
+
+
+ alpha7
+ 1.0
+
+
+ color7
+ "red"
+
+
+ label7
+
+
+
+ marker7
+ 0
+
+
+ style7
+ 0
+
+
+ width7
+ 1
+
+
+ alpha8
+ 1.0
+
+
+ color8
+ "red"
+
+
+ label8
+
+
+
+ marker8
+ 0
+
+
+ style8
+ 0
+
+
+ width8
+ 1
+
+
+ alpha9
+ 1.0
+
+
+ color9
+ "red"
+
+
+ label9
+
+
+
+ marker9
+ 0
+
+
+ style9
+ 0
+
+
+ width9
+ 1
+
+
+ name
+ ""
+
+
+ nconnections
+ 1
+
+
+ size
+ 1024
+
+
+ tr_chan
+ 0
+
+
+ tr_level
+ 0.0
+
+
+ tr_mode
+ qtgui.TRIG_MODE_FREE
+
+
+ tr_slope
+ qtgui.TRIG_SLOPE_POS
+
+
+ tr_tag
+ ""
+
+
+ type
+ complex
+
+
+ update_time
+ 0.01
+
+
+ xmax
+ 2
+
+
+ xmin
+ -2
+
+
+ ymax
+ 2
+
+
+ ymin
+ -2
+
+
+
+ qtgui_freq_sink_x
+
+ autoscale
+ False
+
+
+ average
+ 1.0
+
+
+ axislabels
+ False
+
+
+ bw
+ baseband_rate
+
+
+ alias
+
+
+
+ fc
+ 0
+
+
+ comment
+
+
+
+ ctrlpanel
+ False
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ fftsize
+ 1024
+
+
+ _coordinate
+ (399, 471)
+
+
+ gui_hint
+ tabs@0
+
+
+ _rotation
+ 0
+
+
+ grid
+ False
+
+
+ id
+ qtgui_freq_sink_x_0_0_1_2
+
+
+ legend
+ True
+
+
+ alpha1
+ 1.0
+
+
+ color1
+ "blue"
+
+
+ label1
+
+
+
+ width1
+ 1
+
+
+ alpha10
+ 1.0
+
+
+ color10
+ "dark blue"
+
+
+ label10
+
+
+
+ width10
+ 1
+
+
+ alpha2
+ 1.0
+
+
+ color2
+ "red"
+
+
+ label2
+
+
+
+ width2
+ 1
+
+
+ alpha3
+ 1.0
+
+
+ color3
+ "green"
+
+
+ label3
+
+
+
+ width3
+ 1
+
+
+ alpha4
+ 1.0
+
+
+ color4
+ "black"
+
+
+ label4
+
+
+
+ width4
+ 1
+
+
+ alpha5
+ 1.0
+
+
+ color5
+ "cyan"
+
+
+ label5
+
+
+
+ width5
+ 1
+
+
+ alpha6
+ 1.0
+
+
+ color6
+ "magenta"
+
+
+ label6
+
+
+
+ width6
+ 1
+
+
+ alpha7
+ 1.0
+
+
+ color7
+ "yellow"
+
+
+ label7
+
+
+
+ width7
+ 1
+
+
+ alpha8
+ 1.0
+
+
+ color8
+ "dark red"
+
+
+ label8
+
+
+
+ width8
+ 1
+
+
+ alpha9
+ 1.0
+
+
+ color9
+ "dark green"
+
+
+ label9
+
+
+
+ width9
+ 1
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ name
+
+
+
+ nconnections
+ 1
+
+
+ showports
+ True
+
+
+ freqhalf
+ True
+
+
+ tr_chan
+ 0
+
+
+ tr_level
+ 0.0
+
+
+ tr_mode
+ qtgui.TRIG_MODE_FREE
+
+
+ tr_tag
+ ""
+
+
+ type
+ float
+
+
+ update_time
+ 0.10
+
+
+ wintype
+ firdes.WIN_BLACKMAN_hARRIS
+
+
+ label
+ Relative Gain
+
+
+ ymax
+ 0
+
+
+ ymin
+ -120
+
+
+ units
+ dB
+
+
+
+ root_raised_cosine_filter
+
+ alpha
+ 1
+
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ decim
+ 1
+
+
+ _enabled
+ 1
+
+
+ type
+ fir_filter_ccf
+
+
+ _coordinate
+ (319, 279)
+
+
+ _rotation
+ 90
+
+
+ gain
+ 1
+
+
+ id
+ root_raised_cosine_filter_0
+
+
+ interp
+ 1
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ ntaps
+ 100
+
+
+ samp_rate
+ audio_rate
+
+
+ sym_rate
+ 2375
+
+
+
+ qtgui_tab_widget
+
+ alias
+
+
+
+ comment
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (0, 355)
+
+
+ gui_hint
+
+
+
+ _rotation
+ 0
+
+
+ id
+ tabs
+
+
+ label0
+ graphs
+
+
+ label1
+ table
+
+
+ label10
+ Tab 10
+
+
+ label11
+ Tab 11
+
+
+ label12
+ Tab 12
+
+
+ label13
+ Tab 13
+
+
+ label14
+ Tab 14
+
+
+ label15
+ Tab 15
+
+
+ label16
+ Tab 16
+
+
+ label17
+ Tab 17
+
+
+ label18
+ Tab 18
+
+
+ label19
+ Tab 19
+
+
+ label2
+ Tab 2
+
+
+ label3
+ Tab 3
+
+
+ label4
+ Tab 4
+
+
+ label5
+ Tab 5
+
+
+ label6
+ Tab 6
+
+
+ label7
+ Tab 7
+
+
+ label8
+ Tab 8
+
+
+ label9
+ Tab 9
+
+
+ num_tabs
+ 2
+
+
+
+ analog_fm_deemph_0_0_1
+ blocks_multiply_const_vxx_0_1
+ 0
+ 0
+
+
+ blocks_complex_to_real_0
+ multirds_sync_decim_0
+ 0
+ 0
+
+
+ blocks_file_source_0
+ blocks_throttle_0
+ 0
+ 0
+
+
+ blocks_multiply_const_vxx_0_1
+ audio_sink_0_0
+ 0
+ 0
+
+
+ blocks_throttle_0
+ fir_filter_xxx_0_0_1
+ 0
+ 0
+
+
+ blocks_throttle_0
+ freq_xlating_fir_filter_xxx_1
+ 0
+ 0
+
+
+ blocks_throttle_0
+ qtgui_freq_sink_x_0_0_1_2
+ 0
+ 0
+
+
+ digital_binary_slicer_fb_0
+ digital_diff_decoder_bb_0
+ 0
+ 0
+
+
+ digital_diff_decoder_bb_0
+ multirds_rds_decoder_redsea_0
+ 0
+ 0
+
+
+ digital_mpsk_receiver_cc_0
+ blocks_complex_to_real_0
+ 0
+ 0
+
+
+ digital_mpsk_receiver_cc_0
+ qtgui_const_sink_x_0
+ 0
+ 0
+
+
+ epy_block_0
+ multirds_rds_parser_table_qt_0
+ out
+ freq
+
+
+ fir_filter_xxx_0_0_1
+ analog_fm_deemph_0_0_1
+ 0
+ 0
+
+
+ freq_xlating_fir_filter_xxx_1
+ root_raised_cosine_filter_0
+ 0
+ 0
+
+
+ multirds_rds_decoder_redsea_0
+ multirds_rds_parser_table_qt_0
+ out
+ in
+
+
+ multirds_rds_decoder_redsea_0
+ multirds_sync_decim_0
+ out
+ ctrl
+
+
+ multirds_rds_parser_table_qt_0
+ multirds_tmc_parser_0
+ tmc_raw
+ in
+
+
+ multirds_sync_decim_0
+ digital_binary_slicer_fb_0
+ 0
+ 0
+
+
+ root_raised_cosine_filter_0
+ digital_mpsk_receiver_cc_0
+ 0
+ 0
+
+
diff --git a/apps/read_sync_decim.grc b/apps/read_sync_decim.grc
new file mode 100644
index 0000000..ace5beb
--- /dev/null
+++ b/apps/read_sync_decim.grc
@@ -0,0 +1,1005 @@
+
+
+
+ Fri Apr 28 11:07:37 2017
+
+ options
+
+ author
+
+
+
+ window_size
+
+
+
+ category
+ [GRC Hier Blocks]
+
+
+ comment
+
+
+
+ description
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (8, 8)
+
+
+ _rotation
+ 0
+
+
+ generate_options
+ qt_gui
+
+
+ hier_block_src_path
+ .:
+
+
+ id
+ top_block
+
+
+ max_nouts
+ 0
+
+
+ qt_qss_theme
+
+
+
+ realtime_scheduling
+
+
+
+ run_command
+ {python} -u {filename}
+
+
+ run_options
+ prompt
+
+
+ run
+ True
+
+
+ thread_safe_setters
+
+
+
+ title
+
+
+
+
+ variable_qtgui_range
+
+ comment
+ SWR3
+
+
+ value
+ 922e5
+
+
+ _enabled
+ 0
+
+
+ _coordinate
+ (479, 0)
+
+
+ gui_hint
+ tabs@0:0,1,1,1
+
+
+ _rotation
+ 0
+
+
+ id
+ freq1
+
+
+ label
+
+
+
+ min_len
+ 200
+
+
+ orient
+ Qt.Horizontal
+
+
+ start
+ 86e6
+
+
+ step
+ 1e5
+
+
+ stop
+ 108e6
+
+
+ rangeType
+ float
+
+
+ widget
+ counter_slider
+
+
+
+ variable
+
+ comment
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (846, 247)
+
+
+ _rotation
+ 0
+
+
+ id
+ freq1
+
+
+ value
+ 92.2e6
+
+
+
+ variable_qtgui_range
+
+ comment
+
+
+
+ value
+ 98800000
+
+
+ _enabled
+ 0
+
+
+ _coordinate
+ (343, 0)
+
+
+ gui_hint
+ tabs@0:0,0,1,1
+
+
+ _rotation
+ 0
+
+
+ id
+ freq_tune
+
+
+ label
+
+
+
+ min_len
+ 200
+
+
+ orient
+ Qt.Horizontal
+
+
+ start
+ 86e6
+
+
+ step
+ 1e5
+
+
+ stop
+ 108e6
+
+
+ rangeType
+ float
+
+
+ widget
+ counter_slider
+
+
+
+ variable
+
+ comment
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (822, 151)
+
+
+ _rotation
+ 0
+
+
+ id
+ freq_tune
+
+
+ value
+ 98.8e6
+
+
+
+ variable_qtgui_range
+
+ comment
+
+
+
+ value
+ 1200
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (718, 0)
+
+
+ gui_hint
+ tabs@0
+
+
+ _rotation
+ 0
+
+
+ id
+ samp_rate
+
+
+ label
+
+
+
+ min_len
+ 200
+
+
+ orient
+ Qt.Horizontal
+
+
+ start
+ 500
+
+
+ step
+ 100
+
+
+ stop
+ 20000
+
+
+ rangeType
+ float
+
+
+ widget
+ counter_slider
+
+
+
+ blocks_file_source
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ True
+
+
+ file
+ /tmp/cr/rds-rec_sync-decim_170324_weekend/sync_decim_out_11861
+
+
+ _coordinate
+ (63, 131)
+
+
+ _rotation
+ 0
+
+
+ id
+ blocks_file_source_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ type
+ float
+
+
+ repeat
+ True
+
+
+ vlen
+ 1
+
+
+
+ blocks_skiphead
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (287, 131)
+
+
+ _rotation
+ 0
+
+
+ id
+ blocks_skiphead_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ num_items
+ 100000
+
+
+ type
+ float
+
+
+ vlen
+ 1
+
+
+
+ blocks_throttle
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (455, 131)
+
+
+ _rotation
+ 0
+
+
+ id
+ blocks_throttle_0
+
+
+ ignoretag
+ True
+
+
+ maxoutbuf
+ 10
+
+
+ minoutbuf
+ 0
+
+
+ samples_per_second
+ samp_rate
+
+
+ type
+ float
+
+
+ vlen
+ 1
+
+
+
+ digital_binary_slicer_fb
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (455, 207)
+
+
+ _rotation
+ 180
+
+
+ id
+ digital_binary_slicer_fb_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+
+ digital_diff_decoder_bb
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (255, 203)
+
+
+ _rotation
+ 180
+
+
+ id
+ digital_diff_decoder_bb_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ modulus
+ 2
+
+
+
+ epy_block
+
+ alias
+
+
+
+ _io_cache
+ ('freq-setter', 'blk', [('freqlist', '[92200000, 94700000, 101300000, 102300000, 105700000, 107700000]')], [], [('out', 'message', None)], 'Embedded Python Block example - a simple multiply const', ['freqlist'])
+
+
+ _source_code
+ """
+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 >2:
+ #self.time=now
+ #self.send_msg()
+ #return len(input_items[0])
+
+
+ comment
+
+
+
+ _enabled
+ True
+
+
+ freqlist
+ [freq1]
+
+
+ _coordinate
+ (263, 395)
+
+
+ _rotation
+ 0
+
+
+ id
+ epy_block_0
+
+
+
+ multirds_rds_decoder_redsea
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ debug
+ True
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (255, 307)
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_rds_decoder_redsea_0
+
+
+ log
+ False
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+
+ multirds_rds_parser_table_qt
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ debug
+ False
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (503, 351)
+
+
+ gui_hint
+ tabs@0
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_rds_parser_table_qt_0
+
+
+ label
+
+
+
+ log
+ False
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ nPorts
+ 1
+
+
+ freq_tune
+ freq_tune
+
+
+ workdir
+ /user/wire2/richter/data/
+
+
+ writeDB
+ False
+
+
+
+ multirds_tmc_parser
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ debug
+ True
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (726, 363)
+
+
+ gui_hint
+ tabs@0
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_tmc_parser_0
+
+
+ label
+
+
+
+ log
+ False
+
+
+ maxheight
+ 0
+
+
+ workdir
+ /user/wire2/richter/data/
+
+
+ writeDB
+ False
+
+
+
+ qtgui_tab_widget
+
+ alias
+
+
+
+ comment
+
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (0, 355)
+
+
+ gui_hint
+
+
+
+ _rotation
+ 0
+
+
+ id
+ tabs
+
+
+ label0
+ table
+
+
+ label1
+ graphs
+
+
+ label10
+ Tab 10
+
+
+ label11
+ Tab 11
+
+
+ label12
+ Tab 12
+
+
+ label13
+ Tab 13
+
+
+ label14
+ Tab 14
+
+
+ label15
+ Tab 15
+
+
+ label16
+ Tab 16
+
+
+ label17
+ Tab 17
+
+
+ label18
+ Tab 18
+
+
+ label19
+ Tab 19
+
+
+ label2
+ Tab 2
+
+
+ label3
+ Tab 3
+
+
+ label4
+ Tab 4
+
+
+ label5
+ Tab 5
+
+
+ label6
+ Tab 6
+
+
+ label7
+ Tab 7
+
+
+ label8
+ Tab 8
+
+
+ label9
+ Tab 9
+
+
+ num_tabs
+ 2
+
+
+
+ blocks_file_source_0
+ blocks_skiphead_0
+ 0
+ 0
+
+
+ blocks_skiphead_0
+ blocks_throttle_0
+ 0
+ 0
+
+
+ blocks_throttle_0
+ digital_binary_slicer_fb_0
+ 0
+ 0
+
+
+ digital_binary_slicer_fb_0
+ digital_diff_decoder_bb_0
+ 0
+ 0
+
+
+ digital_diff_decoder_bb_0
+ multirds_rds_decoder_redsea_0
+ 0
+ 0
+
+
+ epy_block_0
+ multirds_rds_parser_table_qt_0
+ out
+ freq
+
+
+ multirds_rds_decoder_redsea_0
+ multirds_rds_parser_table_qt_0
+ out
+ in
+
+
+ multirds_rds_parser_table_qt_0
+ multirds_tmc_parser_0
+ tmc_raw
+ in
+
+