diff --git a/CMakeLists.txt b/CMakeLists.txt
index 17edf04..4290062 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -127,7 +127,7 @@ find_package(Doxygen)
# caps such as FILTER or FFT) and change the version to the minimum
# API compatible version required.
set(GR_REQUIRED_COMPONENTS RUNTIME)
-find_package(Gnuradio "3.7.2" REQUIRED)
+find_package(Gnuradio "3.8" REQUIRED)
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
include(GrVersion)
diff --git a/apps/fft-multi-decoder_fixed_rtlsdr.grc b/apps/fft-multi-decoder_fixed_rtlsdr.grc
index d1a5b13..45904d5 100644
--- a/apps/fft-multi-decoder_fixed_rtlsdr.grc
+++ b/apps/fft-multi-decoder_fixed_rtlsdr.grc
@@ -2282,7 +2282,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
workdir
- /media/clemens/intdaten/uni_bulk/forschungsarbeit/data/
+ /media/clemens/teratemp/tmp/gr-multirds/data/
writeDB
@@ -2341,7 +2341,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
workdir
- /media/clemens/intdaten/uni_bulk/forschungsarbeit/data/
+ /media/clemens/teratemp/tmp/gr-multirds/data/
writeDB
diff --git a/apps/ifft-RDS-decoder_hier-block.grc b/apps/ifft-RDS-decoder_hier-block.grc
index e230bae..ebabfb3 100644
--- a/apps/ifft-RDS-decoder_hier-block.grc
+++ b/apps/ifft-RDS-decoder_hier-block.grc
@@ -1,3781 +1,732 @@
-
-
-
- Fri Feb 3 10:49:49 2017
-
- options
-
- author
-
-
-
- window_size
- 2000,2000
-
-
- category
- [GRC Hier Blocks]
-
-
- comment
-
-
-
- description
-
-
-
- _enabled
- True
-
-
- _coordinate
- (8, 8)
-
-
- _rotation
- 0
-
-
- generate_options
- hb
-
-
- hier_block_src_path
- .:
-
-
- id
- hier_ifft_decoder
-
-
- 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
- (646, 3)
-
-
- _rotation
- 0
-
-
- id
- audio_decim
-
-
- value
- 5
-
-
-
- variable
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (870, 3)
-
-
- _rotation
- 0
-
-
- id
- audio_rate
-
-
- value
- 48000
-
-
-
- variable
-
- comment
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (359, 347)
-
-
- _rotation
- 0
-
-
- id
- baseband_rate
-
-
- value
- audio_rate*audio_decim
-
-
-
- variable
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (766, 3)
-
-
- _rotation
- 0
-
-
- id
- bb_decim
-
-
- value
- 2
-
-
-
- variable
-
- comment
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (247, 395)
-
-
- _rotation
- 0
-
-
- id
- chan_rate
-
-
- value
- audio_rate*audio_decim*bb_decim
-
-
-
- variable
-
- comment
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (335, 419)
-
-
- _rotation
- 0
-
-
- id
- chan_rate
-
-
- value
- int(600e3)
-
-
-
- variable
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (1152, 132)
-
-
- _rotation
- 0
-
-
- id
- fft19k_len
-
-
- value
- 2048
-
-
-
- analog_wfm_rcv
-
- audio_decimation
- bb_decim
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (359, 155)
-
-
- _rotation
- 0
-
-
- id
- analog_wfm_rcv_0_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- quad_rate
- 2*baseband_rate
-
-
-
- blocks_complex_to_real
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (910, 223)
-
-
- _rotation
- 0
-
-
- id
- blocks_complex_to_real_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- vlen
- 1
-
-
-
- blocks_complex_to_real
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (623, 646)
-
-
- _rotation
- 0
-
-
- id
- blocks_complex_to_real_0_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- vlen
- 1
-
-
-
- blocks_complex_to_real
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (646, 910)
-
-
- _rotation
- 0
-
-
- id
- blocks_complex_to_real_0_1
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- vlen
- 1
-
-
-
- blocks_complex_to_real
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (638, 1150)
-
-
- _rotation
- 0
-
-
- id
- blocks_complex_to_real_0_1_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- vlen
- 1
-
-
-
- blocks_file_sink
-
- append
- False
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- file
- "/tmp/cr/fm_dec_240k_"+str(cutpoint)
-
-
- _coordinate
- (718, 355)
-
-
- _rotation
- 0
-
-
- id
- blocks_file_sink_0
-
-
- type
- float
-
-
- unbuffered
- False
-
-
- vlen
- 1
-
-
-
- blocks_file_sink
-
- append
- False
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- file
- "/tmp/cr/psk_out_2375_"+str(cutpoint)
-
-
- _coordinate
- (1030, 315)
-
-
- _rotation
- 0
-
-
- id
- blocks_file_sink_0_0
-
-
- type
- float
-
-
- unbuffered
- False
-
-
- vlen
- 1
-
-
-
- blocks_file_sink
-
- append
- False
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- file
- "/tmp/cr/symbol_combiner_out_"+str(cutpoint)
-
-
- _coordinate
- (1277, 435)
-
-
- _rotation
- 0
-
-
- id
- blocks_file_sink_0_0_0
-
-
- type
- float
-
-
- unbuffered
- False
-
-
- vlen
- 1
-
-
-
- blocks_keep_one_in_n
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (1206, 335)
-
-
- _rotation
- 0
-
-
- id
- blocks_keep_one_in_n_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- n
- 2
-
-
- type
- float
-
-
- vlen
- 1
-
-
-
- blocks_null_sink
-
- alias
-
-
-
- bus_conns
- [[0,],]
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (638, 543)
-
-
- _rotation
- 0
-
-
- id
- blocks_null_sink_0
-
-
- type
- complex
-
-
- num_inputs
- 1
-
-
- vlen
- 1
-
-
-
- blocks_null_source
-
- alias
-
-
-
- bus_conns
- [[0,],]
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (638, 599)
-
-
- _rotation
- 0
-
-
- id
- blocks_null_source_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- num_outputs
- 1
-
-
- type
- byte
-
-
- vlen
- 1
-
-
-
- blocks_vector_to_stream
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (31, 139)
-
-
- _rotation
- 0
-
-
- id
- blocks_vector_to_stream_0_0_1
-
-
- type
- complex
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- num_items
- chan_fft_len
-
-
- vlen
- 1
-
-
-
- parameter
-
- alias
-
-
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (343, 3)
-
-
- _rotation
- 0
-
-
- id
- chan_fft_len
-
-
- label
-
-
-
- short_id
-
-
-
- type
- intx
-
-
- value
- 512
-
-
-
- parameter
-
- alias
-
-
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (375, 67)
-
-
- _rotation
- 0
-
-
- id
- cutpoint
-
-
- label
-
-
-
- short_id
-
-
-
- type
- intx
-
-
- value
- 0
-
-
-
- digital_binary_slicer_fb
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (1062, 479)
-
-
- _rotation
- 180
-
-
- id
- digital_binary_slicer_fb_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- digital_binary_slicer_fb
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (854, 766)
-
-
- _rotation
- 180
-
-
- id
- digital_binary_slicer_fb_0_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- digital_binary_slicer_fb
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (846, 1030)
-
-
- _rotation
- 180
-
-
- id
- digital_binary_slicer_fb_0_1
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- digital_binary_slicer_fb
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (894, 1262)
-
-
- _rotation
- 180
-
-
- id
- digital_binary_slicer_fb_0_1_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- digital_clock_recovery_mm_xx
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (798, 279)
-
-
- _rotation
- 0
-
-
- gain_mu
- 0.050
-
-
- gain_omega
- 0.001
-
-
- id
- digital_clock_recovery_mm_xx_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- mu
- 0.5
-
-
- omega_relative_limit
- 0.005
-
-
- omega
- 16*(1+0.0)
-
-
- type
- complex
-
-
-
- digital_costas_loop_cc
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (543, 311)
-
-
- _rotation
- 0
-
-
- id
- digital_costas_loop_cc_0
-
-
- w
- loop_bw
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- order
- 2
-
-
- use_snr
- False
-
-
-
- digital_diff_decoder_bb
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (856, 468)
-
-
- _rotation
- 180
-
-
- id
- digital_diff_decoder_bb_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- modulus
- 2
-
-
-
- digital_diff_decoder_bb
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (631, 762)
-
-
- _rotation
- 180
-
-
- id
- digital_diff_decoder_bb_0_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- modulus
- 2
-
-
-
- digital_diff_decoder_bb
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (631, 1026)
-
-
- _rotation
- 180
-
-
- id
- digital_diff_decoder_bb_0_1
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- modulus
- 2
-
-
-
- digital_diff_decoder_bb
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (623, 1258)
-
-
- _rotation
- 180
-
-
- id
- digital_diff_decoder_bb_0_1_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- modulus
- 2
-
-
-
- digital_mpsk_receiver_cc
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (686, 155)
-
-
- _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
- audio_rate / 2375.0
-
-
- theta
- 0
-
-
-
- digital_mpsk_receiver_cc
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (415, 611)
-
-
- _rotation
- 0
-
-
- gain_mu
- 0.05
-
-
- gain_omega
- 0.001
-
-
- id
- digital_mpsk_receiver_cc_0_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
-
-
-
- digital_mpsk_receiver_cc
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (375, 898)
-
-
- _rotation
- 0
-
-
- gain_mu
- 0.05
-
-
- gain_omega
- 0.001
-
-
- id
- digital_mpsk_receiver_cc_0_1
-
-
- 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
-
-
-
- digital_mpsk_receiver_cc
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (367, 1130)
-
-
- _rotation
- 0
-
-
- gain_mu
- 0.05
-
-
- gain_omega
- 0.001
-
-
- id
- digital_mpsk_receiver_cc_0_1_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
-
-
-
- parameter
-
- alias
-
-
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (247, 3)
-
-
- _rotation
- 0
-
-
- id
- fft_len
-
-
- label
-
-
-
- short_id
-
-
-
- type
- intx
-
-
- value
- 1024*40
-
-
-
- fft_vxx
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- fft_size
- chan_fft_len
-
-
- forward
- False
-
-
- _coordinate
- (23, 183)
-
-
- _rotation
- 180
-
-
- id
- fft_vxx_1_1
-
-
- type
- complex
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- nthreads
- 1
-
-
- shift
- True
-
-
- window
- []
-
-
-
- freq_xlating_fir_filter_xxx
-
- alias
-
-
-
- center_freq
- 57e3
-
-
- comment
-
-
-
- affinity
-
-
-
- decim
- audio_decim
-
-
- _enabled
- 1
-
-
- _coordinate
- (463, 231)
-
-
- _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
-
-
-
- freq_xlating_fir_filter_xxx
-
- alias
-
-
-
- center_freq
- 66.5e3
-
-
- comment
-
-
-
- affinity
-
-
-
- decim
- audio_decim
-
-
- _enabled
- 0
-
-
- _coordinate
- (175, 615)
-
-
- _rotation
- 270
-
-
- id
- freq_xlating_fir_filter_xxx_1_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- samp_rate
- baseband_rate
-
-
- taps
- firdes.low_pass(2500.0,baseband_rate,2.4e3,2e3,firdes.WIN_HAMMING)
-
-
- type
- fcc
-
-
-
- freq_xlating_fir_filter_xxx
-
- alias
-
-
-
- center_freq
- 71.25e3
-
-
- comment
-
-
-
- affinity
-
-
-
- decim
- audio_decim
-
-
- _enabled
- 0
-
-
- _coordinate
- (87, 910)
-
-
- _rotation
- 270
-
-
- id
- freq_xlating_fir_filter_xxx_1_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
-
-
-
- freq_xlating_fir_filter_xxx
-
- alias
-
-
-
- center_freq
- 76e3
-
-
- comment
-
-
-
- affinity
-
-
-
- decim
- audio_decim
-
-
- _enabled
- 0
-
-
- _coordinate
- (79, 1150)
-
-
- _rotation
- 270
-
-
- id
- freq_xlating_fir_filter_xxx_1_1_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- samp_rate
- baseband_rate
-
-
- taps
- firdes.low_pass(2500.0,baseband_rate,2.4e3,2e3,firdes.WIN_HAMMING)
-
-
- type
- fcc
-
-
-
- parameter
-
- alias
-
-
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (1056, 100)
-
-
- _rotation
- 0
-
-
- id
- log
-
-
- label
-
-
-
- short_id
-
-
-
- type
-
-
-
- value
- False
-
-
-
- logpwrfft_x
-
- avg_alpha
- 1.0
-
-
- average
- False
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- True
-
-
- fft_size
- fft19k_len
-
-
- frame_rate
- 30
-
-
- _coordinate
- (1200, 8)
-
-
- _rotation
- 0
-
-
- id
- logpwrfft_x_0
-
-
- type
- float
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- ref_scale
- 2
-
-
- sample_rate
- baseband_rate
-
-
-
- parameter
-
- alias
-
-
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (742, 71)
-
-
- _rotation
- 0
-
-
- id
- loop_bw
-
-
- label
-
-
-
- short_id
-
-
-
- type
- eng_float
-
-
- value
- 3.14/150.0
-
-
-
- multirds_pilot_SNR
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- 1
-
-
- _coordinate
- (1384, 16)
-
-
- _rotation
- 0
-
-
- id
- multirds_pilot_SNR_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- carrier_freq
- 19e3
-
-
- fft_len
- fft19k_len
-
-
- gap_width
- 4e3
-
-
- msg_adr
- 3
-
-
- samp_rate
- baseband_rate
-
-
- update_period
- 0.4
-
-
-
- multirds_rds_decoder
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- 0
-
-
- _coordinate
- (918, 587)
-
-
- _rotation
- 0
-
-
- id
- multirds_rds_decoder_3
-
-
- log
- False
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- multirds_rds_decoder
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- 0
-
-
- _coordinate
- (670, 690)
-
-
- _rotation
- 0
-
-
- id
- multirds_rds_decoder_3_0
-
-
- log
- True
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- multirds_rds_decoder
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- 0
-
-
- _coordinate
- (638, 954)
-
-
- _rotation
- 0
-
-
- id
- multirds_rds_decoder_3_1
-
-
- log
- True
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- multirds_rds_decoder
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- 0
-
-
- _coordinate
- (631, 1186)
-
-
- _rotation
- 0
-
-
- id
- multirds_rds_decoder_3_1_0
-
-
- log
- True
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- multirds_rds_decoder_redsea
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- 1
-
-
- _coordinate
- (1032, 532)
-
-
- _rotation
- 0
-
-
- id
- multirds_rds_decoder_redsea_0
-
-
- log
- False
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
-
- multirds_symbol_combiner
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (1304, 260)
-
-
- _rotation
- 0
-
-
- id
- multirds_symbol_combiner_0
-
-
- log
- False
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- threshold
- 1
-
-
- min_diff
- 0.2
-
-
-
- multirds_symbol_combiner
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (878, 650)
-
-
- _rotation
- 0
-
-
- id
- multirds_symbol_combiner_0_0
-
-
- log
- log
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- threshold
- 0.25
-
-
- min_diff
- 0.2
-
-
-
- multirds_symbol_combiner
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (958, 914)
-
-
- _rotation
- 0
-
-
- id
- multirds_symbol_combiner_0_1
-
-
- log
- log
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- threshold
- 0.25
-
-
- min_diff
- 0.2
-
-
-
- multirds_symbol_combiner
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (950, 1146)
-
-
- _rotation
- 0
-
-
- id
- multirds_symbol_combiner_0_1_0
-
-
- log
- log
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- threshold
- 0.25
-
-
- min_diff
- 0.2
-
-
-
- multirds_vector_cutter
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- True
-
-
- _coordinate
- (39, 283)
-
-
- _rotation
- 0
-
-
- id
- multirds_vector_cutter_0_0
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- cutpoint
- cutpoint
-
-
- insize
- fft_len
-
-
- zero_len
- num_zeros
-
-
- outsize
- chan_fft_len
-
-
- pad_out
- False
-
-
-
- parameter
-
- alias
-
-
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (159, 467)
-
-
- _rotation
- 0
-
-
- id
- num_zeros
-
-
- label
-
-
-
- short_id
-
-
-
- type
- intx
-
-
- value
- 128
-
-
-
- pad_sink
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (544, 100)
-
-
- _rotation
- 0
-
-
- id
- pad_sink_0
-
-
- type
- float
-
-
- label
- audio
-
-
- num_streams
- 1
-
-
- optional
- True
-
-
- vlen
- 1
-
-
-
- pad_sink
-
- comment
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (1624, 516)
-
-
- _rotation
- 0
-
-
- id
- pad_sink_0_0
-
-
- type
- message
-
-
- label
- rds
-
-
- num_streams
- 1
-
-
- optional
- True
-
-
- vlen
- 1
-
-
-
- pad_sink
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (319, 243)
-
-
- _rotation
- 0
-
-
- id
- pad_sink_0_1
-
-
- type
- complex
-
-
- label
- out
-
-
- num_streams
- 1
-
-
- optional
- True
-
-
- vlen
- 1
-
-
-
- pad_sink
-
- comment
-
-
-
- _enabled
- 1
-
-
- _coordinate
- (934, 123)
-
-
- _rotation
- 0
-
-
- id
- pad_sink_1
-
-
- type
- complex
-
-
- label
- psk_out
-
-
- num_streams
- 1
-
-
- optional
- True
-
-
- vlen
- 1
-
-
-
- pad_source
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (15, 427)
-
-
- _rotation
- 0
-
-
- id
- pad_source_0
-
-
- label
- in
-
-
- num_streams
- 1
-
-
- optional
- False
-
-
- type
- complex
-
-
- vlen
- fft_len
-
-
-
- rational_resampler_xxx
-
- alias
-
-
-
- comment
- firdes.low_pass(1.0,chan_rate,250e3,50e3,firdes.WIN_HAMMING)
-
-
- affinity
-
-
-
- decim
- chan_rate/120000
-
-
- _enabled
- 2
-
-
- fbw
- 0
-
-
- _coordinate
- (167, 135)
-
-
- _rotation
- 0
-
-
- id
- rational_resampler_xxx_0
-
-
- interp
- baseband_rate*2/120000
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- taps
-
-
-
- type
- ccc
-
-
-
- root_raised_cosine_filter
-
- alpha
- 1
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- decim
- 1
-
-
- _enabled
- 1
-
-
- type
- fir_filter_ccf
-
-
- _coordinate
- (551, 207)
-
-
- _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
-
-
-
- root_raised_cosine_filter
-
- alpha
- 1
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- decim
- 1
-
-
- _enabled
- 0
-
-
- type
- fir_filter_ccf
-
-
- _coordinate
- (271, 607)
-
-
- _rotation
- 90
-
-
- gain
- 1
-
-
- id
- root_raised_cosine_filter_0_0
-
-
- interp
- 1
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- ntaps
- 100
-
-
- samp_rate
- audio_rate
-
-
- sym_rate
- 2375
-
-
-
- root_raised_cosine_filter
-
- alpha
- 1
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- decim
- 1
-
-
- _enabled
- 0
-
-
- type
- fir_filter_ccf
-
-
- _coordinate
- (199, 902)
-
-
- _rotation
- 90
-
-
- gain
- 1
-
-
- id
- root_raised_cosine_filter_0_1
-
-
- interp
- 1
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- ntaps
- 100
-
-
- samp_rate
- audio_rate
-
-
- sym_rate
- 2375
-
-
-
- root_raised_cosine_filter
-
- alpha
- 1
-
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- decim
- 1
-
-
- _enabled
- 0
-
-
- type
- fir_filter_ccf
-
-
- _coordinate
- (191, 1142)
-
-
- _rotation
- 90
-
-
- gain
- 1
-
-
- id
- root_raised_cosine_filter_0_1_0
-
-
- interp
- 1
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- ntaps
- 100
-
-
- samp_rate
- audio_rate
-
-
- sym_rate
- 2375
-
-
-
- parameter
-
- alias
-
-
-
- comment
-
-
-
- _enabled
- True
-
-
- _coordinate
- (239, 83)
-
-
- _rotation
- 0
-
-
- id
- samp_rate
-
-
- label
-
-
-
- short_id
-
-
-
- type
- intx
-
-
- value
- 19200000
-
-
-
- analog_wfm_rcv_0_0
- blocks_file_sink_0
- 0
- 0
-
-
- analog_wfm_rcv_0_0
- freq_xlating_fir_filter_xxx_1
- 0
- 0
-
-
- analog_wfm_rcv_0_0
- freq_xlating_fir_filter_xxx_1_0
- 0
- 0
-
-
- analog_wfm_rcv_0_0
- freq_xlating_fir_filter_xxx_1_1
- 0
- 0
-
-
- analog_wfm_rcv_0_0
- freq_xlating_fir_filter_xxx_1_1_0
- 0
- 0
-
-
- analog_wfm_rcv_0_0
- logpwrfft_x_0
- 0
- 0
-
-
- analog_wfm_rcv_0_0
- pad_sink_0
- 0
- 0
-
-
- blocks_complex_to_real_0
- blocks_file_sink_0_0
- 0
- 0
-
-
- blocks_complex_to_real_0
- blocks_keep_one_in_n_0
- 0
- 0
-
-
- blocks_complex_to_real_0
- multirds_symbol_combiner_0
- 0
- 0
-
-
- blocks_complex_to_real_0_0
- multirds_symbol_combiner_0_0
- 0
- 0
-
-
- blocks_complex_to_real_0_1
- multirds_symbol_combiner_0_1
- 0
- 0
-
-
- blocks_complex_to_real_0_1_0
- multirds_symbol_combiner_0_1_0
- 0
- 0
-
-
- blocks_keep_one_in_n_0
- blocks_file_sink_0_0_0
- 0
- 0
-
-
- blocks_keep_one_in_n_0
- digital_binary_slicer_fb_0
- 0
- 0
-
-
- blocks_null_source_0
- multirds_rds_decoder_3
- 0
- 0
-
-
- blocks_vector_to_stream_0_0_1
- rational_resampler_xxx_0
- 0
- 0
-
-
- digital_binary_slicer_fb_0
- digital_diff_decoder_bb_0
- 0
- 0
-
-
- digital_binary_slicer_fb_0_0
- digital_diff_decoder_bb_0_0
- 0
- 0
-
-
- digital_binary_slicer_fb_0_1
- digital_diff_decoder_bb_0_1
- 0
- 0
-
-
- digital_binary_slicer_fb_0_1_0
- digital_diff_decoder_bb_0_1_0
- 0
- 0
-
-
- digital_clock_recovery_mm_xx_0
- blocks_complex_to_real_0
- 0
- 0
-
-
- digital_clock_recovery_mm_xx_0
- pad_sink_1
- 0
- 0
-
-
- digital_costas_loop_cc_0
- digital_clock_recovery_mm_xx_0
- 0
- 0
-
-
- digital_diff_decoder_bb_0
- multirds_rds_decoder_3
- 0
- 0
-
-
- digital_diff_decoder_bb_0
- multirds_rds_decoder_redsea_0
- 0
- 0
-
-
- digital_diff_decoder_bb_0_0
- multirds_rds_decoder_3_0
- 0
- 0
-
-
- digital_diff_decoder_bb_0_1
- multirds_rds_decoder_3_1
- 0
- 0
-
-
- digital_diff_decoder_bb_0_1_0
- multirds_rds_decoder_3_1_0
- 0
- 0
-
-
- digital_mpsk_receiver_cc_0
- blocks_complex_to_real_0
- 0
- 0
-
-
- digital_mpsk_receiver_cc_0
- pad_sink_1
- 0
- 0
-
-
- digital_mpsk_receiver_cc_0_0
- blocks_complex_to_real_0_0
- 0
- 0
-
-
- digital_mpsk_receiver_cc_0_0
- blocks_null_sink_0
- 0
- 0
-
-
- digital_mpsk_receiver_cc_0_1
- blocks_complex_to_real_0_1
- 0
- 0
-
-
- digital_mpsk_receiver_cc_0_1_0
- blocks_complex_to_real_0_1_0
- 0
- 0
-
-
- fft_vxx_1_1
- blocks_vector_to_stream_0_0_1
- 0
- 0
-
-
- freq_xlating_fir_filter_xxx_1
- root_raised_cosine_filter_0
- 0
- 0
-
-
- freq_xlating_fir_filter_xxx_1_0
- root_raised_cosine_filter_0_0
- 0
- 0
-
-
- freq_xlating_fir_filter_xxx_1_1
- root_raised_cosine_filter_0_1
- 0
- 0
-
-
- freq_xlating_fir_filter_xxx_1_1_0
- root_raised_cosine_filter_0_1_0
- 0
- 0
-
-
- logpwrfft_x_0
- multirds_pilot_SNR_0
- 0
- 0
-
-
- multirds_pilot_SNR_0
- pad_sink_0_0
- out
- in
-
-
- multirds_rds_decoder_3
- multirds_symbol_combiner_0
- out
- ctrl
-
-
- multirds_rds_decoder_3
- pad_sink_0_0
- out
- in
-
-
- multirds_rds_decoder_3_0
- multirds_symbol_combiner_0_0
- out
- ctrl
-
-
- multirds_rds_decoder_3_1
- multirds_symbol_combiner_0_1
- out
- ctrl
-
-
- multirds_rds_decoder_3_1_0
- multirds_symbol_combiner_0_1_0
- out
- ctrl
-
-
- multirds_rds_decoder_redsea_0
- multirds_symbol_combiner_0
- out
- ctrl
-
-
- multirds_rds_decoder_redsea_0
- pad_sink_0_0
- out
- in
-
-
- multirds_symbol_combiner_0
- pad_sink_0_0
- ctrl
- in
-
-
- multirds_symbol_combiner_0
- blocks_file_sink_0_0_0
- 0
- 0
-
-
- multirds_symbol_combiner_0
- digital_binary_slicer_fb_0
- 0
- 0
-
-
- multirds_symbol_combiner_0_0
- digital_binary_slicer_fb_0_0
- 0
- 0
-
-
- multirds_symbol_combiner_0_1
- digital_binary_slicer_fb_0_1
- 0
- 0
-
-
- multirds_symbol_combiner_0_1_0
- digital_binary_slicer_fb_0_1_0
- 0
- 0
-
-
- multirds_vector_cutter_0_0
- fft_vxx_1_1
- 0
- 0
-
-
- pad_source_0
- multirds_vector_cutter_0_0
- 0
- 0
-
-
- rational_resampler_xxx_0
- analog_wfm_rcv_0_0
- 0
- 0
-
-
- rational_resampler_xxx_0
- pad_sink_0_1
- 0
- 0
-
-
- root_raised_cosine_filter_0
- digital_costas_loop_cc_0
- 0
- 0
-
-
- root_raised_cosine_filter_0
- digital_mpsk_receiver_cc_0
- 0
- 0
-
-
- root_raised_cosine_filter_0_0
- digital_mpsk_receiver_cc_0_0
- 0
- 0
-
-
- root_raised_cosine_filter_0_1
- digital_mpsk_receiver_cc_0_1
- 0
- 0
-
-
- root_raised_cosine_filter_0_1_0
- digital_mpsk_receiver_cc_0_1_0
- 0
- 0
-
-
+options:
+ parameters:
+ author: ''
+ category: '[GRC Hier Blocks]'
+ cmake_opt: ''
+ comment: ''
+ copyright: ''
+ description: ''
+ gen_cmake: 'On'
+ gen_linking: dynamic
+ generate_options: hb
+ hier_block_src_path: '.:'
+ id: hier_ifft_decoder
+ max_nouts: '0'
+ output_language: python
+ placement: (0,0)
+ qt_qss_theme: ''
+ realtime_scheduling: ''
+ run: 'True'
+ run_command: '{python} -u {filename}'
+ run_options: prompt
+ sizing_mode: fixed
+ thread_safe_setters: ''
+ title: ''
+ window_size: 2000,2000
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [8, 8]
+ rotation: 0
+ state: enabled
+
+blocks:
+- name: audio_decim
+ id: variable
+ parameters:
+ comment: ''
+ value: '5'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [646, 3]
+ rotation: 0
+ state: enabled
+- name: audio_rate
+ id: variable
+ parameters:
+ comment: ''
+ value: '48000'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [870, 3]
+ rotation: 0
+ state: enabled
+- name: baseband_rate
+ id: variable
+ parameters:
+ comment: ''
+ value: audio_rate*audio_decim
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [359, 347]
+ rotation: 0
+ state: enabled
+- name: bb_decim
+ id: variable
+ parameters:
+ comment: ''
+ value: '2'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [766, 3]
+ rotation: 0
+ state: enabled
+- name: chan_rate
+ id: variable
+ parameters:
+ comment: ''
+ value: audio_rate*audio_decim*bb_decim
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [247, 395]
+ rotation: 0
+ state: enabled
+- name: chan_rate
+ id: variable
+ parameters:
+ comment: ''
+ value: int(600e3)
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [335, 419]
+ rotation: 0
+ state: disabled
+- name: fft19k_len
+ id: variable
+ parameters:
+ comment: ''
+ value: '2048'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1152, 132]
+ rotation: 0
+ state: enabled
+- name: analog_wfm_rcv_0_0
+ id: analog_wfm_rcv
+ parameters:
+ affinity: ''
+ alias: ''
+ audio_decimation: bb_decim
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ quad_rate: 2*baseband_rate
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [359, 155]
+ rotation: 0
+ state: enabled
+- name: blocks_complex_to_real_0
+ id: blocks_complex_to_real
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1128, 240.0]
+ rotation: 0
+ state: disabled
+- name: blocks_file_sink_0
+ id: blocks_file_sink
+ parameters:
+ affinity: ''
+ alias: ''
+ append: 'False'
+ comment: ''
+ file: '"/tmp/cr/fm_dec_240k_"+str(cutpoint)'
+ type: float
+ unbuffered: 'False'
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [718, 355]
+ rotation: 0
+ state: disabled
+- name: blocks_file_sink_0_0
+ id: blocks_file_sink
+ parameters:
+ affinity: ''
+ alias: ''
+ append: 'False'
+ comment: ''
+ file: '"/tmp/cr/psk_out_2375_"+str(cutpoint)'
+ type: float
+ unbuffered: 'False'
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1152, 340.0]
+ rotation: 0
+ state: disabled
+- name: blocks_file_sink_0_0_0
+ id: blocks_file_sink
+ parameters:
+ affinity: ''
+ alias: ''
+ append: 'False'
+ comment: ''
+ file: '"/tmp/cr/symbol_combiner_out_"+str(cutpoint)'
+ type: float
+ unbuffered: 'False'
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1368, 444.0]
+ rotation: 0
+ state: disabled
+- name: blocks_keep_one_in_n_0
+ id: blocks_keep_one_in_n
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ n: '2'
+ type: float
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1376, 360.0]
+ rotation: 0
+ state: disabled
+- name: blocks_vector_to_stream_0_0_1
+ id: blocks_vector_to_stream
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ num_items: chan_fft_len
+ type: complex
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [31, 139]
+ rotation: 0
+ state: enabled
+- name: chan_fft_len
+ id: parameter
+ parameters:
+ alias: ''
+ comment: ''
+ hide: none
+ label: ''
+ short_id: ''
+ type: intx
+ value: '512'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [343, 3]
+ rotation: 0
+ state: enabled
+- name: cutpoint
+ id: parameter
+ parameters:
+ alias: ''
+ comment: ''
+ hide: none
+ label: ''
+ short_id: ''
+ type: intx
+ value: '0'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [408, 76.0]
+ rotation: 0
+ state: enabled
+- name: digital_binary_slicer_fb_0
+ id: digital_binary_slicer_fb
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1112, 480.0]
+ rotation: 180
+ state: disabled
+- name: digital_clock_recovery_mm_xx_0
+ id: digital_clock_recovery_mm_xx
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ gain_mu: '0.050'
+ gain_omega: '0.001'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ mu: '0.5'
+ omega: audio_rate / 2375.0
+ omega_relative_limit: '0.005'
+ type: complex
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [888, 204.0]
+ rotation: 0
+ state: disabled
+- name: digital_costas_loop_cc_0
+ id: digital_costas_loop_cc
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ order: '2'
+ use_snr: 'False'
+ w: loop_bw
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [704, 160.0]
+ rotation: 0
+ state: disabled
+- name: digital_diff_decoder_bb_0
+ id: digital_diff_decoder_bb
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ modulus: '2'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [920, 476.0]
+ rotation: 180
+ state: disabled
+- name: fft_len
+ id: parameter
+ parameters:
+ alias: ''
+ comment: ''
+ hide: none
+ label: ''
+ short_id: ''
+ type: intx
+ value: 1024*40
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [247, 3]
+ rotation: 0
+ state: enabled
+- name: fft_vxx_1_1
+ id: fft_vxx
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ fft_size: chan_fft_len
+ forward: 'False'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ nthreads: '1'
+ shift: 'True'
+ type: complex
+ window: '[]'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [64, 204.0]
+ rotation: 180
+ state: enabled
+- name: freq_xlating_fir_filter_xxx_1
+ id: freq_xlating_fir_filter_xxx
+ parameters:
+ affinity: ''
+ alias: ''
+ center_freq: 57e3
+ comment: ''
+ decim: audio_decim
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ samp_rate: baseband_rate
+ taps: firdes.low_pass(2500.0,baseband_rate,2.4e3,2e3,firdes.WIN_HAMMING)
+ type: fcc
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [463, 231]
+ rotation: 270
+ state: disabled
+- name: log
+ id: parameter
+ parameters:
+ alias: ''
+ comment: ''
+ hide: none
+ label: ''
+ short_id: ''
+ type: ''
+ value: 'False'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1056, 100]
+ rotation: 0
+ state: enabled
+- name: logpwrfft_x_0
+ id: logpwrfft_x
+ parameters:
+ affinity: ''
+ alias: ''
+ average: 'False'
+ avg_alpha: '1.0'
+ comment: ''
+ fft_size: fft19k_len
+ frame_rate: '30'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ ref_scale: '2'
+ sample_rate: baseband_rate
+ type: float
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1200, 8]
+ rotation: 0
+ state: enabled
+- name: loop_bw
+ id: parameter
+ parameters:
+ alias: ''
+ comment: ''
+ hide: none
+ label: ''
+ short_id: ''
+ type: eng_float
+ value: 3.14/150.0
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [742, 71]
+ rotation: 0
+ state: enabled
+- name: multirds_pilot_SNR_0
+ id: multirds_pilot_SNR
+ parameters:
+ affinity: ''
+ alias: ''
+ carrier_freq: 19e3
+ comment: ''
+ debug: 'False'
+ fft_len: fft19k_len
+ gap_width: 4e3
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ msg_adr: '3'
+ samp_rate: baseband_rate
+ update_period: '0.4'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1384, 16]
+ rotation: 0
+ state: enabled
+- name: multirds_rds_decoder_redsea_0
+ id: multirds_rds_decoder_redsea
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ debug: 'False'
+ log: 'False'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1136, 548.0]
+ rotation: 0
+ state: disabled
+- name: multirds_symbol_combiner_0
+ id: multirds_symbol_combiner
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ log: 'False'
+ maxoutbuf: '0'
+ min_diff: '0.2'
+ minoutbuf: '0'
+ threshold: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1376, 260.0]
+ rotation: 0
+ state: disabled
+- name: multirds_vector_cutter_0_0
+ id: multirds_vector_cutter
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ cutpoint: cutpoint
+ insize: fft_len
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ outsize: chan_fft_len
+ pad_out: 'False'
+ zero_len: num_zeros
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [160, 328.0]
+ rotation: 0
+ state: enabled
+- name: num_zeros
+ id: parameter
+ parameters:
+ alias: ''
+ comment: ''
+ hide: none
+ label: ''
+ short_id: ''
+ type: intx
+ value: '128'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [159, 467]
+ rotation: 0
+ state: enabled
+- name: pad_sink_0
+ id: pad_sink
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ label: audio
+ num_streams: '1'
+ optional: 'True'
+ type: float
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [600, 100.0]
+ rotation: 0
+ state: enabled
+- name: pad_sink_0_0
+ id: pad_sink
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ label: rds
+ num_streams: '1'
+ optional: 'True'
+ type: message
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1624, 516]
+ rotation: 0
+ state: enabled
+- name: pad_sink_0_1
+ id: pad_sink
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ label: out
+ num_streams: '1'
+ optional: 'True'
+ type: complex
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [336, 260.0]
+ rotation: 0
+ state: enabled
+- name: pad_sink_1
+ id: pad_sink
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ label: psk_out
+ num_streams: '1'
+ optional: 'True'
+ type: complex
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [934, 123]
+ rotation: 0
+ state: enabled
+- name: pad_source_0
+ id: pad_source
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ label: in
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ num_streams: '1'
+ optional: 'False'
+ type: complex
+ vlen: fft_len
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [16, 412.0]
+ rotation: 0
+ state: enabled
+- name: rational_resampler_xxx_0
+ id: rational_resampler_xxx
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: firdes.low_pass(1.0,chan_rate,250e3,50e3,firdes.WIN_HAMMING)
+ decim: int(chan_rate/120000)
+ fbw: '0'
+ interp: int(baseband_rate*2/120000)
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ taps: ''
+ type: ccc
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [184, 92.0]
+ rotation: 0
+ state: bypassed
+- name: root_raised_cosine_filter_0
+ id: root_raised_cosine_filter
+ parameters:
+ affinity: ''
+ alias: ''
+ alpha: '1'
+ comment: ''
+ decim: '1'
+ gain: '1'
+ interp: '1'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ ntaps: '100'
+ samp_rate: audio_rate
+ sym_rate: '2375'
+ type: fir_filter_ccf
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [551, 207]
+ rotation: 90
+ state: disabled
+- name: samp_rate
+ id: parameter
+ parameters:
+ alias: ''
+ comment: ''
+ hide: none
+ label: ''
+ short_id: ''
+ type: intx
+ value: '19200000'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [472, 4.0]
+ rotation: 0
+ state: enabled
+
+connections:
+- [analog_wfm_rcv_0_0, '0', blocks_file_sink_0, '0']
+- [analog_wfm_rcv_0_0, '0', freq_xlating_fir_filter_xxx_1, '0']
+- [analog_wfm_rcv_0_0, '0', logpwrfft_x_0, '0']
+- [analog_wfm_rcv_0_0, '0', pad_sink_0, '0']
+- [blocks_complex_to_real_0, '0', blocks_file_sink_0_0, '0']
+- [blocks_complex_to_real_0, '0', blocks_keep_one_in_n_0, '0']
+- [blocks_complex_to_real_0, '0', multirds_symbol_combiner_0, '0']
+- [blocks_keep_one_in_n_0, '0', blocks_file_sink_0_0_0, '0']
+- [blocks_keep_one_in_n_0, '0', digital_binary_slicer_fb_0, '0']
+- [blocks_vector_to_stream_0_0_1, '0', rational_resampler_xxx_0, '0']
+- [digital_binary_slicer_fb_0, '0', digital_diff_decoder_bb_0, '0']
+- [digital_clock_recovery_mm_xx_0, '0', blocks_complex_to_real_0, '0']
+- [digital_clock_recovery_mm_xx_0, '0', pad_sink_1, '0']
+- [digital_costas_loop_cc_0, '0', digital_clock_recovery_mm_xx_0, '0']
+- [digital_diff_decoder_bb_0, '0', multirds_rds_decoder_redsea_0, '0']
+- [fft_vxx_1_1, '0', blocks_vector_to_stream_0_0_1, '0']
+- [freq_xlating_fir_filter_xxx_1, '0', root_raised_cosine_filter_0, '0']
+- [logpwrfft_x_0, '0', multirds_pilot_SNR_0, '0']
+- [multirds_pilot_SNR_0, out, pad_sink_0_0, in]
+- [multirds_vector_cutter_0_0, '0', fft_vxx_1_1, '0']
+- [pad_source_0, '0', multirds_vector_cutter_0_0, '0']
+- [rational_resampler_xxx_0, '0', analog_wfm_rcv_0_0, '0']
+- [rational_resampler_xxx_0, '0', pad_sink_0_1, '0']
+- [root_raised_cosine_filter_0, '0', digital_costas_loop_cc_0, '0']
+
+metadata:
+ file_format: 1
diff --git a/apps/read_sync_decim.grc b/apps/read_sync_decim.grc
deleted file mode 100644
index 9700c04..0000000
--- a/apps/read_sync_decim.grc
+++ /dev/null
@@ -1,1005 +0,0 @@
-
-
-
- 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/symbol_combiner_out_25941
-
-
- _coordinate
- (63, 131)
-
-
- _rotation
- 0
-
-
- id
- blocks_file_source_0
-
-
- maxoutbuf
- 100000
-
-
- minoutbuf
- 10000
-
-
- type
- float
-
-
- repeat
- False
-
-
- 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
- False
-
-
- _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
- True
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- nPorts
- 1
-
-
- freq_tune
- freq_tune
-
-
- workdir
- /user/wire2/richter/data/
-
-
- writeDB
- True
-
-
-
- multirds_tmc_parser
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- 1
-
-
- _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
-
-
diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt
index 5a7c7a5..0c291d7 100644
--- a/grc/CMakeLists.txt
+++ b/grc/CMakeLists.txt
@@ -17,18 +17,18 @@
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
install(FILES
- multirds_rds_table_qt.xml
- multirds_rds_parser_table_qt.xml
- multirds_rds_decoder.xml
- multirds_station_search.xml
- multirds_stream_selector.xml
- multirds_vector_cutter.xml
- multirds_decoder_compare.xml
- multirds_symbol_combiner.xml
- multirds_rds_decoder_redsea.xml
- multirds_qtgui_range.xml
- multirds_variable_setter.xml
- multirds_tmc_parser.xml
- multirds_pilot_SNR.xml
- multirds_stream_router.xml DESTINATION share/gnuradio/grc/blocks
+ multirds_rds_table_qt.block.yml
+ multirds_rds_parser_table_qt.block.yml
+ multirds_rds_decoder.block.yml
+ multirds_station_search.block.yml
+ multirds_stream_selector.block.yml
+ multirds_vector_cutter.block.yml
+ multirds_decoder_compare.block.yml
+ multirds_symbol_combiner.block.yml
+ multirds_rds_decoder_redsea.block.yml
+ multirds_variable_setter.block.yml
+ multirds_tmc_parser.block.yml
+ multirds_pilot_SNR.block.yml
+ multirds_stream_router.block.yml
+ DESTINATION share/gnuradio/grc/blocks
)
diff --git a/grc/multirds_decoder_compare.block.yml b/grc/multirds_decoder_compare.block.yml
new file mode 100644
index 0000000..53045a9
--- /dev/null
+++ b/grc/multirds_decoder_compare.block.yml
@@ -0,0 +1,25 @@
+# auto-generated by grc.converter
+
+id: multirds_decoder_compare
+label: decoder_compare
+category: '[multirds]'
+
+parameters:
+- id: nPorts
+ label: Number of Ports
+ dtype: int
+ default: '2'
+ hide: part
+
+inputs:
+- domain: message
+ id: in
+ multiplicity: ${ nPorts }
+asserts:
+- ${ nPorts > 0 }
+
+templates:
+ imports: import multirds
+ make: multirds.decoder_compare(${nPorts})
+
+file_format: 1
diff --git a/grc/multirds_decoder_compare.xml b/grc/multirds_decoder_compare.xml
deleted file mode 100644
index 0d89b31..0000000
--- a/grc/multirds_decoder_compare.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- decoder_compare
- multirds_decoder_compare
- [multirds]
- import multirds
- multirds.decoder_compare($nPorts)
-
-
- Number of Ports
- nPorts
- 2
- int
- part
-
-
- $nPorts > 0
-
- in
- message
- $nPorts
-
-
-
diff --git a/grc/multirds_pilot_SNR.block.yml b/grc/multirds_pilot_SNR.block.yml
new file mode 100644
index 0000000..fec7ca3
--- /dev/null
+++ b/grc/multirds_pilot_SNR.block.yml
@@ -0,0 +1,57 @@
+# auto-generated by grc.converter
+
+id: multirds_pilot_SNR
+label: pilot_SNR
+category: '[multirds]'
+
+parameters:
+- id: debug
+ label: Debug
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enable, Disable]
+- id: carrier_freq
+ label: carrier_freq
+ dtype: float
+ default: 19e3
+- id: gap_width
+ label: gap_width
+ dtype: float
+ default: 4e3
+- id: update_period
+ label: update_period
+ dtype: float
+ default: '0.2'
+- id: samp_rate
+ label: samp_rate
+ dtype: int
+ default: '240000'
+- id: fft_len
+ label: fft_len
+ dtype: int
+ default: '2048'
+- id: msg_adr
+ label: msg_adr
+ dtype: int
+ default: '3'
+
+inputs:
+- domain: stream
+ dtype: float
+ vlen: ${ fft_len }
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: import multirds
+ make: multirds.pilot_SNR(${debug}, ${samp_rate}, ${fft_len}, ${carrier_freq},${gap_width},
+ ${msg_adr},${update_period})
+
+documentation: |-
+ outputs PMT pair of longs (msg_adr . SNR) SNR is calculated as difference (in dB) between the 19k carrier power and the average power between carrier_freq-gap_width and carrier_freq+gap_width \
+
+file_format: 1
diff --git a/grc/multirds_pilot_SNR.xml b/grc/multirds_pilot_SNR.xml
deleted file mode 100644
index 4831cc9..0000000
--- a/grc/multirds_pilot_SNR.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
- pilot_SNR
- multirds_pilot_SNR
- [multirds]
- import multirds
- multirds.pilot_SNR($debug, $samp_rate, $fft_len, $carrier_freq,$gap_width, $msg_adr,$update_period)
-
-
- Debug
- debug
- False
- bool
-
-
-
-
- carrier_freq
- carrier_freq
- 19e3
- float
-
-
- gap_width
- gap_width
- 4e3
- float
-
-
- update_period
- update_period
- 0.2
- float
-
-
- samp_rate
- samp_rate
- 240000
- int
-
-
- fft_len
- fft_len
- 2048
- int
-
-
- msg_adr
- msg_adr
- 3
- int
-
-
-
- in
- float
- $fft_len
-
-
- out
- message
- 1
-
- outputs PMT pair of longs (msg_adr . SNR) \
- SNR is calculated as difference (in dB)\
- between the 19k carrier power and the \
- average power between carrier_freq-gap_width and carrier_freq+gap_width \
-
-
-
diff --git a/grc/multirds_qtgui_range.xml b/grc/multirds_qtgui_range.xml
deleted file mode 100644
index 651333f..0000000
--- a/grc/multirds_qtgui_range.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
- qtgui_range (cr)
- variable_multirds_qtgui_range
- [multirds]
- import multirds
- from multirds.qtgui_range import qtgui_range, RangeWidget
- self.$(id) = $(id) = $value
- #set $win = 'self._%s_win'%$id
- #set $range = 'self.%s_range'%$id
-#if not $label()
- #set $label = '"%s"'%$id
-#end if
-$(range) = qtgui_range($start, $stop, $step, $value, $min_len)
-$(win) = RangeWidget($range, self.set_$(id), $label, "$widget", $rangeType)
-$(gui_hint()($win))
-
-
-
-
-
-
-
- Label
- label
-
- string
- #if $label() then 'none' else 'part'#
-
-
-
- Type
- rangeType
- "float"
- enum
- part
-
-
-
-
-
- Default Value
- value
- 50
- $rangeType.type
-
-
-
- Start
- start
- 0
- $rangeType.type
-
-
-
- Stop
- stop
- 100
- $rangeType.type
-
-
-
- Step
- step
- 1
- $rangeType.type
-
-
-
- Widget
- widget
- counter_slider
- enum
- part
-
-
-
-
-
-
-
- Orientation
- orient
- Qt.Horizontal
- enum
- #if $widget() == "slider" then 'part' else 'all'#
-
-
-
-
-
- Minimum Length
- min_len
- 200
- int
- part
-
-
-
-
- GUI Hint
- gui_hint
-
- gui_hint
- part
-
-
- $start <= $value <= $stop
- $start < $stop
-
-
- This block creates a variable with a slider. \
- Leave the label blank to use the variable id as the label. \
- The value must be a real number. \
- The value must be between the start and the stop.
-
- The GUI hint can be used to position the widget within the application. \
- The hint is of the form [tab_id@tab_index]: [row, col, row_span, col_span]. \
- Both the tab specification and the grid position are optional.
-
-
diff --git a/grc/multirds_rds_decoder.block.yml b/grc/multirds_rds_decoder.block.yml
new file mode 100644
index 0000000..770f34d
--- /dev/null
+++ b/grc/multirds_rds_decoder.block.yml
@@ -0,0 +1,23 @@
+# auto-generated by grc.converter
+
+id: multirds_rds_decoder
+label: Rds decoder
+category: '[MULTIRDS]'
+
+parameters:
+- id: log
+ label: Log
+ dtype: raw
+- id: debug
+ label: Debug
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: import multirds
+ make: multirds.rds_decoder(${log}, ${debug})
+
+file_format: 1
diff --git a/grc/multirds_rds_decoder.xml b/grc/multirds_rds_decoder.xml
deleted file mode 100644
index 08e355a..0000000
--- a/grc/multirds_rds_decoder.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
- RDS Decoder (cr)
- multirds_rds_decoder
- [multirds]
- import multirds
- multirds.rds_decoder($log, $debug)
-
- Log
- log
- False
- bool
-
-
-
-
- Debug
- debug
- False
- bool
-
-
-
-
- in
- byte
-
-
- out
- message
- 1
-
-
diff --git a/grc/multirds_rds_decoder_redsea.block.yml b/grc/multirds_rds_decoder_redsea.block.yml
new file mode 100644
index 0000000..e6c4c0c
--- /dev/null
+++ b/grc/multirds_rds_decoder_redsea.block.yml
@@ -0,0 +1,23 @@
+# auto-generated by grc.converter
+
+id: multirds_rds_decoder_redsea
+label: Rds decoder redsea
+category: '[MULTIRDS]'
+
+parameters:
+- id: log
+ label: Log
+ dtype: raw
+- id: debug
+ label: Debug
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: import multirds
+ make: multirds.rds_decoder_redsea(${log}, ${debug})
+
+file_format: 1
diff --git a/grc/multirds_rds_decoder_redsea.xml b/grc/multirds_rds_decoder_redsea.xml
deleted file mode 100644
index f766b6a..0000000
--- a/grc/multirds_rds_decoder_redsea.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
- RDS Decoder (redsea)
- multirds_rds_decoder_redsea
- [multirds]
- import multirds
- multirds.rds_decoder_redsea($log, $debug)
-
- Log
- log
- False
- bool
-
-
-
-
- Debug
- debug
- False
- bool
-
-
-
-
- in
- byte
-
-
- out
- message
- 1
-
-
diff --git a/grc/multirds_rds_parser_table_qt.block.yml b/grc/multirds_rds_parser_table_qt.block.yml
new file mode 100644
index 0000000..8a91fbf
--- /dev/null
+++ b/grc/multirds_rds_parser_table_qt.block.yml
@@ -0,0 +1,86 @@
+# auto-generated by grc.converter
+
+id: multirds_rds_parser_table_qt
+label: RDS Parser Table (qt)
+category: '[multirds]'
+
+parameters:
+- id: freq_tune
+ label: tuned frequency
+ dtype: float
+- id: label
+ label: Label
+ dtype: string
+ hide: ${ ('none' if label else 'part') }
+- id: workdir
+ label: work directory
+ dtype: string
+ hide: part
+- id: gui_hint
+ label: GUI Hint
+ dtype: gui_hint
+ hide: part
+- id: nPorts
+ label: Number of Ports
+ dtype: int
+ default: '2'
+ hide: part
+- id: log
+ label: Log
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enable, Disable]
+- id: debug
+ label: Debug
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enable, Disable]
+- id: writeDB
+ label: write Database
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enable, Disable]
+
+inputs:
+- domain: message
+ id: in
+ multiplicity: ${ nPorts }
+- domain: message
+ id: freq
+ optional: true
+
+outputs:
+- domain: message
+ id: ctrl
+ optional: true
+- domain: message
+ id: tmc_raw
+ optional: true
+asserts:
+- ${ open(workdir+"pty-list.csv").close() or True }
+- ${ open(workdir+"directory_writable","w").close() or True }
+- ${ nPorts > 0 }
+
+templates:
+ imports: |-
+ import multirds
+ from multirds.rds_parser_table_qt import rds_parser_table_qt, rds_parser_table_qt_Widget,rds_parser_table_qt_Signals
+ make: "<% win = 'self._%s_win'%id %>\n\t\t<% signals = 'self._%s_signals'%id %>\n\
+ % if not label:\n\t<% label = '\"%s\"'%id %>\n% endif\n${signals} = rds_parser_table_qt_Signals()\n\
+ self.${id} = multirds.rds_parser_table_qt(${signals},${nPorts},self.set_${freq_tune},${freq_tune},${log},\
+ \ ${debug},${workdir},${writeDB})\n${win} = rds_parser_table_qt_Widget(${signals},\
+ \ ${label},self.${id})\n${gui_hint(in)}"
+ callbacks:
+ - set_freq_tune(${freq_tune});
+
+documentation: "show RDS data from multiple stations in QT table input: raw group\
+ \ data (array of ints) 4x2 raw block data, 4x1 offset chars, 1x1 number of valid\
+ \ blocks (of last 50) [block1_upper,block1_lower,block2_upper,block2_lower,...,offset1,offset2,offset3,offset4,numerrors]\\\
+ \ \n The GUI hint can be used to position the widget within the application.\
+ \ The hint is of the form \"tab_id@tab_index: row, col, row_span, col_span\"\
+ \ Both the tab specification and the grid position are optional."
+
+file_format: 1
diff --git a/grc/multirds_rds_parser_table_qt.xml b/grc/multirds_rds_parser_table_qt.xml
deleted file mode 100644
index e41f884..0000000
--- a/grc/multirds_rds_parser_table_qt.xml
+++ /dev/null
@@ -1,141 +0,0 @@
-
-
- RDS Parser Table (qt)
- multirds_rds_parser_table_qt
- [multirds]
- import multirds
- from multirds.rds_parser_table_qt import rds_parser_table_qt, rds_parser_table_qt_Widget,rds_parser_table_qt_Signals
-
- #set $win = 'self._%s_win'%$id
- #set $signals = 'self._%s_signals'%$id
-#if not $label()
- #set $label = '"%s"'%$id
-#end if
-$(signals) = rds_parser_table_qt_Signals()
-self.$(id) = multirds.rds_parser_table_qt($(signals),$nPorts,self.set_$(freq_tune),$freq_tune,$log, $debug,$workdir,$writeDB)
-$(win) = rds_parser_table_qt_Widget($signals, $label,self.$(id))
-$(gui_hint()($win))
- set_freq_tune($freq_tune);
-
- tuned frequency
- freq_tune
-
- float
-
-
- Label
- label
-
- string
- #if $label() then 'none' else 'part'#
-
-
- work directory
- workdir
-
- string
- part
-
-
- GUI Hint
- gui_hint
-
- gui_hint
- part
-
-
- Number of Ports
- nPorts
- 2
- int
- part
-
-
- Log
- log
- False
- bool
-
-
-
-
- Debug
- debug
- False
- bool
-
-
-
-
- write Database
- writeDB
- False
- bool
-
-
-
-
-
-
- open($workdir+"pty-list.csv").close() or True
-
- open($workdir+"directory_writable","w").close() or True
- $nPorts > 0
-
- in
- message
- $nPorts
-
-
-
- freq
- message
- 1
-
-
- ctrl
- message
- 1
-
-
- tmc_raw
- message
- 1
-
- show RDS data from multiple stations in QT table \
- input: raw group data (array of ints) \
- 4x2 raw block data, 4x1 offset chars, 1x1 number of valid blocks (of last 50) \
- [block1_upper,block1_lower,block2_upper,block2_lower,...,offset1,offset2,offset3,offset4,numerrors]\\
-
- The GUI hint can be used to position the widget within the application. \
- The hint is of the form "tab_id@tab_index: row, col, row_span, col_span" \
- Both the tab specification and the grid position are optional.
-
-
-
diff --git a/grc/multirds_rds_table_qt.block.yml b/grc/multirds_rds_table_qt.block.yml
new file mode 100644
index 0000000..9983a75
--- /dev/null
+++ b/grc/multirds_rds_table_qt.block.yml
@@ -0,0 +1,37 @@
+# auto-generated by grc.converter
+
+id: multirds_rds_table_qt
+label: RDS Table (qt)
+category: '[multirds]'
+
+parameters:
+- id: label
+ label: Label
+ dtype: string
+ hide: ${ ('none' if label else 'part') }
+- id: gui_hint
+ label: GUI Hint
+ dtype: gui_hint
+ hide: part
+- id: nPorts
+ label: Number of Ports
+ dtype: int
+ default: '2'
+ hide: part
+
+inputs:
+- domain: message
+ id: in
+ multiplicity: ${ nPorts }
+
+templates:
+ imports: |-
+ import multirds
+ from multirds.rds_table_qt import rds_table_qt, rds_table_qt_Widget,rds_table_qt_Signals
+ var_make: self.${id} = ${id} = ${value}
+ make: "<% win = 'self._%s_win'%id %>\n\t\t<% signals = 'self._%s_signals'%id %>\n\
+ % if not label:\n\t<% label = '\"%s\"'%id %>\n% endif\n${signals} = rds_table_qt_Signals()\n\
+ self.${id} = multirds.rds_table_qt(${signals},${nPorts})\n${win} = rds_table_qt_Widget(${signals},\
+ \ ${label})\n${gui_hint(in)}"
+
+file_format: 1
diff --git a/grc/multirds_rds_table_qt.xml b/grc/multirds_rds_table_qt.xml
deleted file mode 100644
index 7cfc1d9..0000000
--- a/grc/multirds_rds_table_qt.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
- RDS Table (qt)
- multirds_rds_table_qt
- [multirds]
- import multirds
- from multirds.rds_table_qt import rds_table_qt, rds_table_qt_Widget,rds_table_qt_Signals
- self.$(id) = $(id) = $value
- #set $win = 'self._%s_win'%$id
- #set $signals = 'self._%s_signals'%$id
-#if not $label()
- #set $label = '"%s"'%$id
-#end if
-$(signals) = rds_table_qt_Signals()
-self.$(id) = multirds.rds_table_qt($(signals),$nPorts)
-$(win) = rds_table_qt_Widget($signals, $label)
-$(gui_hint()($win))
-
- Label
- label
-
- string
- #if $label() then 'none' else 'part'#
-
-
- GUI Hint
- gui_hint
-
- gui_hint
- part
-
-
- Number of Ports
- nPorts
- 2
- int
- part
-
-
- in
- message
- $nPorts
-
-
-
-
diff --git a/grc/multirds_station_search.block.yml b/grc/multirds_station_search.block.yml
new file mode 100644
index 0000000..805be7f
--- /dev/null
+++ b/grc/multirds_station_search.block.yml
@@ -0,0 +1,52 @@
+# auto-generated by grc.converter
+
+id: multirds_station_search
+label: station_search
+category: '[multirds]'
+
+parameters:
+- id: fft_len
+ label: fft lenngth
+ dtype: int
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: round_to
+ label: round to (in hz)
+ dtype: int
+- id: num_decoders
+ label: number of decoders
+ dtype: int
+ hide: part
+- id: center_freq
+ label: center frequency
+ dtype: float
+- id: samp_rate
+ label: sample rate
+ dtype: int
+- id: debug
+ label: Debug
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enable, Disable]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: float
+ vlen: ${ fft_len }
+- domain: message
+ id: ctrl
+ optional: true
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: import multirds
+ make: multirds.station_search(${fft_len}, ${num_decoders}, ${center_freq}, ${samp_rate},${round_to},${debug})
+ callbacks:
+ - set_center_freq(${center_freq});
+
+file_format: 1
diff --git a/grc/multirds_station_search.xml b/grc/multirds_station_search.xml
deleted file mode 100644
index aacb8fb..0000000
--- a/grc/multirds_station_search.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
- station_search
- multirds_station_search
- [multirds]
- import multirds
- multirds.station_search($fft_len, $num_decoders, $center_freq, $samp_rate,$round_to,$debug)
-
- set_center_freq($center_freq);
-
- fft lenngth
- fft_len
- int
-
-
- round to (in hz)
- round_to
- int
-
-
- number of decoders
- num_decoders
- int
- part
-
-
- center frequency
- center_freq
- float
-
-
- sample rate
- samp_rate
- int
-
-
- Debug
- debug
- False
- bool
- part
-
-
-
-
-
-
-
- in
- float
- $fft_len
-
-
- ctrl
- message
- 1
-
-
- out
- message
- 1
-
-
-
diff --git a/grc/multirds_stream_router.block.yml b/grc/multirds_stream_router.block.yml
new file mode 100644
index 0000000..7b54768
--- /dev/null
+++ b/grc/multirds_stream_router.block.yml
@@ -0,0 +1,29 @@
+# auto-generated by grc.converter
+
+id: multirds_stream_router
+label: Stream router
+category: '[MULTIRDS]'
+
+parameters:
+- id: ninputs
+ label: Ninputs
+ dtype: int
+- id: noutputs
+ label: Noutputs
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: float
+ multiplicity: '9'
+
+outputs:
+- domain: stream
+ dtype: float
+ multiplicity: '3'
+
+templates:
+ imports: import multirds
+ make: multirds.stream_router(${ninputs}, ${noutputs})
+
+file_format: 1
diff --git a/grc/multirds_stream_router.xml b/grc/multirds_stream_router.xml
deleted file mode 100644
index 3b29719..0000000
--- a/grc/multirds_stream_router.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
- stream_router
- multirds_stream_router
- [multirds]
- import multirds
- multirds.stream_router($ninputs, $noutputs)
-
-
- Type
- type
- float
- enum
-
-
-
-
- Number of inputs
- ninputs
- 9
- int
-
-
- Number of outputs
- noutputs
- 3
- int
-
-
-
-
- in
- $type
- $ninputs
-
-
- ctrl
- message
-
-
-
- out
- $type
- $noutputs
-
-
diff --git a/grc/multirds_stream_selector.block.yml b/grc/multirds_stream_selector.block.yml
new file mode 100644
index 0000000..ee2d527
--- /dev/null
+++ b/grc/multirds_stream_selector.block.yml
@@ -0,0 +1,30 @@
+# auto-generated by grc.converter
+
+id: multirds_stream_selector
+label: stream_selector
+category: '[multirds]'
+
+inputs:
+- label: in_re
+ domain: stream
+ dtype: float
+- label: in_arg
+ domain: stream
+ dtype: float
+- domain: message
+ id: rds_re
+ optional: true
+- domain: message
+ id: rds_arg
+ optional: true
+
+outputs:
+- domain: message
+ id: rds_out
+ optional: true
+
+templates:
+ imports: import multirds
+ make: multirds.stream_selector()
+
+file_format: 1
diff --git a/grc/multirds_stream_selector.xml b/grc/multirds_stream_selector.xml
deleted file mode 100644
index 4427e19..0000000
--- a/grc/multirds_stream_selector.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
- stream_selector
- multirds_stream_selector
- [multirds]
- import multirds
- multirds.stream_selector()
-
-
-
-
- in_re
- float
-
-
- in_arg
- float
-
-
- rds_re
- message
- 1
-
-
- rds_arg
- message
- 1
-
-
- rds_out
- message
- 1
-
-
diff --git a/grc/multirds_symbol_combiner.block.yml b/grc/multirds_symbol_combiner.block.yml
new file mode 100644
index 0000000..685a82c
--- /dev/null
+++ b/grc/multirds_symbol_combiner.block.yml
@@ -0,0 +1,30 @@
+# auto-generated by grc.converter
+
+id: multirds_symbol_combiner
+label: Symbol combiner
+category: '[MULTIRDS]'
+
+parameters:
+- id: threshold
+ label: Threshold
+ dtype: float
+- id: min_diff
+ label: Min_diff
+ dtype: float
+- id: log
+ label: Log
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: import multirds
+ make: multirds.symbol_combiner(${threshold}, ${min_diff}, ${log})
+
+file_format: 1
diff --git a/grc/multirds_symbol_combiner.xml b/grc/multirds_symbol_combiner.xml
deleted file mode 100644
index ae8400c..0000000
--- a/grc/multirds_symbol_combiner.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
- symbol_combiner
- multirds_symbol_combiner
- [multirds]
- import multirds
- multirds.symbol_combiner($threshold, $min_diff, $log)
-
-
- Log
- log
- False
- bool
-
-
-
-
- Threshold
- threshold
- 0.25
- float
-
-
- min_diff
- min_diff
- 0.2
- float
-
- 0 < $min_diff < 1
-
-
-
- in
- float
-
-
- ctrl
- message
- 1
-
-
-
-
- ctrl
- message
- 1
-
-
- out
- float
-
-
diff --git a/grc/multirds_tmc_parser.block.yml b/grc/multirds_tmc_parser.block.yml
new file mode 100644
index 0000000..2b9ead6
--- /dev/null
+++ b/grc/multirds_tmc_parser.block.yml
@@ -0,0 +1,62 @@
+# auto-generated by grc.converter
+
+id: multirds_tmc_parser
+label: tmc_parser
+category: '[multirds]'
+
+parameters:
+- id: maxheight
+ label: maxheight
+ dtype: int
+ default: '160'
+ hide: part
+- id: workdir
+ label: work directory
+ dtype: string
+ hide: part
+- id: label
+ label: Label
+ dtype: string
+ hide: ${ ('none' if label else 'part') }
+- id: log
+ label: Log
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enable, Disable]
+- id: debug
+ label: Debug
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enable, Disable]
+- id: writeDB
+ label: write Database
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enable, Disable]
+- id: gui_hint
+ label: GUI Hint
+ dtype: gui_hint
+ hide: part
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+asserts:
+- ${ open(workdir+"event-list_with_forecast_sort.csv").close() or True }
+- ${ open(workdir+"directory_writable","w").close() or True }
+
+templates:
+ imports: import multirds
+ make: "<% win = 'self._%s_win'%id %>\n <% parser = 'self.%s_parser'%id\
+ \ %>\n% if not label:\n\t<% label = '\"%s\"'%id %>\n% endif\n${parser} = multirds.tmc_parser(${workdir},\
+ \ ${log}, ${debug}, ${writeDB},${maxheight})\n${win} = ${parser}.getqtwidget()\n\
+ ${gui_hint(in)}\n "
+
+documentation: "maxheight = max height of widget in pixels\n\t maxheight == 0 ->\
+ \ no restriction"
+
+file_format: 1
diff --git a/grc/multirds_tmc_parser.xml b/grc/multirds_tmc_parser.xml
deleted file mode 100644
index ce2f26a..0000000
--- a/grc/multirds_tmc_parser.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
- tmc_parser
- multirds_tmc_parser
- [multirds]
- import multirds
- #set $win = 'self._%s_win'%$id
- #set $parser = 'self.%s_parser'%$id
-#if not $label()
- #set $label = '"%s"'%$id
-#end if
-$(parser) = multirds.tmc_parser($workdir, $log, $debug, $writeDB,$maxheight)
-$(win) = $(parser).getqtwidget()
-$(gui_hint()($win))
-
-
-
- maxheight
- maxheight
- 160
- int
- part
-
-
-
- work directory
- workdir
-
- string
- part
-
-
- Label
- label
-
- string
- #if $label() then 'none' else 'part'#
-
-
- Log
- log
- False
- bool
-
-
-
-
- Debug
- debug
- False
- bool
-
-
-
-
- write Database
- writeDB
- False
- bool
-
-
-
-
-
- GUI Hint
- gui_hint
-
- gui_hint
- part
-
-
- open($workdir+"event-list_with_forecast_sort.csv").close() or True
-
-
- open($workdir+"directory_writable","w").close() or True
-
-
- in
- message
- 1
-
-
- maxheight = max height of widget in pixels
- maxheight == 0 -> no restriction
-
-
diff --git a/grc/multirds_variable_setter.block.yml b/grc/multirds_variable_setter.block.yml
new file mode 100644
index 0000000..bb8f9c5
--- /dev/null
+++ b/grc/multirds_variable_setter.block.yml
@@ -0,0 +1,37 @@
+# auto-generated by grc.converter
+
+id: multirds_variable_setter
+label: variable_setter
+category: '[multirds]'
+
+parameters:
+- id: varname
+ label: varname
+ dtype: raw
+- id: is_pair
+ label: Pair Mode
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+- id: msgkey
+ label: Key
+ dtype: string
+ hide: ${ ('none' if is_pair == 'True' else 'all') }
+
+inputs:
+- domain: message
+ id: in
+
+templates:
+ imports: import multirds
+ make: |-
+ <% block = 'self.%s'%id %>
+ <% varsetter = 'self.set_%s'%varname %>
+ <% guiupdater = 'self._%s_win.update_gui'%varname %>
+ multirds.variable_setter("$varname",${varsetter},${guiupdater},${is_pair},${msgkey})
+
+documentation: |-
+ in pair mode this block only accepts PMT pairs that have a matching CAR
+ no pair mode: block accepts pmt symbols directly
+
+file_format: 1
diff --git a/grc/multirds_variable_setter.xml b/grc/multirds_variable_setter.xml
deleted file mode 100644
index 0c0f548..0000000
--- a/grc/multirds_variable_setter.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
- variable_setter
- multirds_variable_setter
- [multirds]
- import multirds
- #set $block = 'self.%s'%$id
- #set $varsetter = 'self.set_%s'%$varname
- #set $guiupdater = 'self._%s_win.update_gui'%$varname
- multirds.variable_setter("$varname",$varsetter,$guiupdater,$is_pair,$msgkey)
-
-
- varname
- varname
-
- raw
-
-
- Pair Mode
- is_pair
- False
- enum
-
-
-
-
- Key
- msgkey
-
- string
- #if $is_pair() == 'True' then 'none' else 'all'#
-
-
-
- in
- message
-
-
-
-
- in pair mode this block only accepts PMT pairs that have a matching CAR
- no pair mode: block accepts pmt symbols directly
-
-
-
diff --git a/grc/multirds_vector_cutter.block.yml b/grc/multirds_vector_cutter.block.yml
new file mode 100644
index 0000000..300c94f
--- /dev/null
+++ b/grc/multirds_vector_cutter.block.yml
@@ -0,0 +1,55 @@
+# auto-generated by grc.converter
+
+id: multirds_vector_cutter
+label: vector_cutter
+category: '[multirds]'
+
+parameters:
+- id: pad_out
+ label: padded output
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: part
+- id: zero_len
+ label: num-zeros
+ dtype: int
+ default: '0'
+- id: insize
+ label: insize
+ dtype: int
+ default: '2048'
+- id: outsize
+ label: outsize
+ dtype: int
+ default: '1024'
+- id: cutpoint
+ label: cutpoint
+ dtype: int
+ default: '512'
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ insize }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ outsize }
+- label: out_padded
+ domain: stream
+ dtype: complex
+ vlen: ${ insize }
+ optional: true
+ hide: ${ ('False' if pad_out == 'True' else 'True') }
+
+templates:
+ imports: import multirds
+ make: multirds.vector_cutter(${insize}, ${outsize}, ${cutpoint},${pad_out},${zero_len})
+ callbacks:
+ - set_cutpoint(${cutpoint});
+ - set_zero_len(${zero_len});
+
+file_format: 1
diff --git a/grc/multirds_vector_cutter.xml b/grc/multirds_vector_cutter.xml
deleted file mode 100644
index c4ad7d7..0000000
--- a/grc/multirds_vector_cutter.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
- vector_cutter
- multirds_vector_cutter
- [multirds]
- import multirds
- multirds.vector_cutter($insize, $outsize, $cutpoint,$pad_out,$zero_len)
-
- set_cutpoint($cutpoint);
- set_zero_len($zero_len);
-
-
- padded output
- pad_out
- False
- enum
- part
-
-
-
-
- num-zeros
- zero_len
- 0
- int
-
-
- insize
- insize
- 2048
- int
-
-
- outsize
- outsize
- 1024
- int
-
-
- cutpoint
- cutpoint
- 512
- int
-
-
-
- in
- complex
- $insize
-
-
- out
- complex
- $outsize
-
-
- out_padded
- complex
- $insize
- #if $pad_out() == 'True' then 'False' else 'True'#
-
- #if $pad_out() == 'True' then 'False' else 'True'#
-
-
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 605a5d6..d9dbd70 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -38,11 +38,11 @@ GR_PYTHON_INSTALL(
stream_selector.py
vector_cutter.py
decoder_compare.py
- qtgui_range.py
variable_setter.py
tmc_classes.py
tmc_parser.py
- pilot_SNR.py DESTINATION ${GR_PYTHON_DIR}/multirds
+ pilot_SNR.py
+ DESTINATION ${GR_PYTHON_DIR}/multirds
)
########################################################################
diff --git a/python/__init__.py b/python/__init__.py
index 4575e96..7d05617 100644
--- a/python/__init__.py
+++ b/python/__init__.py
@@ -33,16 +33,17 @@ except ImportError:
# import any pure python here
-from rds_table_qt import rds_table_qt
-from rds_parser_table_qt import rds_parser_table_qt
-from station_search import station_search
-
-from chart import Chart
-from stream_selector import stream_selector
-from vector_cutter import vector_cutter
-from decoder_compare import decoder_compare
-from qtgui_range import qtgui_range
-from variable_setter import variable_setter
-from tmc_parser import tmc_parser
-from pilot_SNR import pilot_SNR
+from .rds_table_qt import rds_table_qt
+from .rds_parser_table_qt import rds_parser_table_qt
+from .station_search import station_search
+
+from .chart import Chart
+from .stream_selector import stream_selector
+from .vector_cutter import vector_cutter
+from .decoder_compare import decoder_compare
+
+from .variable_setter import variable_setter
+from .tmc_parser import tmc_parser
+from .pilot_SNR import pilot_SNR
+
#
diff --git a/python/qtgui_range.py b/python/qtgui_range.py
deleted file mode 100644
index fb50237..0000000
--- a/python/qtgui_range.py
+++ /dev/null
@@ -1,279 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# Copyright 2015 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from PyQt4 import Qt, QtCore, QtGui
-import pmt
-from gnuradio import gr
-
-class qtgui_range(gr.basic_block):
- def set_test(self,value):
- print("test callback invoked")
- print(value)
- def __init__(self, minv, maxv, step, default, min_length):
- gr.basic_block.__init__(self,
- name="qtgui_range",
- in_sig=None,
- out_sig=None)
- self.min = float(minv)
- self.max = float(maxv)
- self.step = float(step)
- self.default = float(default)
- self.min_length = min_length
- self.find_precision()
- self.find_nsteps()
- def find_precision(self):
- # Get the decimal part of the step
- temp = str(float(self.step) - int(self.step))[2:]
- precision = len(temp) if temp is not '0' else 0
- precision = min(precision, 13)
-
- if precision == 0 and self.max < 100:
- self.precision = 1 # Always have a decimal in this case
- else:
- self.precision = (precision + 2) if precision > 0 else 0
-
- def find_nsteps(self):
- self.nsteps = (self.max + self.step - self.min)/self.step
-
- def demap_range(self, val):
- if val > self.max:
- val = self.max
- if val < self.min:
- val = self.min
- return ((val-self.min)/self.step)
-
- def map_range(self, val):
- if val > self.nsteps:
- val = self.max
- if val < 0:
- val = 0
- return (val*self.step+self.min)
-
-
-class RangeWidget(QtGui.QWidget):
- def update_gui(self,value):
- #print("update_gui called on widget %s"%self.label)
- #print(value)
- #self.d_widget.slider.setValue(value)
- if self.range.min < value < self.range.max:
- if self.style=="counter_slider":
- self.d_widget.counter.setValue(value)
- else:
- self.d_widget.setValue(value)
- else:
- print("value %i not in range %i...%i"%(value,self.range.min,self.range.max))
- #self.notifyChanged(self.rangeType(value))
- def __init__(self, ranges, slot, label, style, rangeType=float):
- """ Creates the QT Range widget """
- QtGui.QWidget.__init__(self)
-
- self.range = ranges
- self.style = style
- self.label=label
-
- # rangeType tells the block how to return the value as a standard
- self.rangeType = rangeType
-
- # Top-block function to call when any value changes
- # Some widgets call this directly when their value changes.
- # Others have intermediate functions to map the value into the right range.
- self.notifyChanged = slot
-
- layout = Qt.QHBoxLayout()
- label = Qt.QLabel(label)
- layout.addWidget(label)
-
- if style == "dial":
- self.d_widget = self.Dial(self, self.range, self.notifyChanged, rangeType)
- elif style == "slider":
- self.d_widget = self.Slider(self, self.range, self.notifyChanged, rangeType)
- elif style == "counter":
- # The counter widget can be directly wired to the notifyChanged slot
- self.d_widget = self.Counter(self, self.range, self.notifyChanged, rangeType)
- else:
- # The CounterSlider needs its own internal handlers before calling notifyChanged
- self.d_widget = self.CounterSlider(self, self.range, self.notifyChanged, rangeType)
-
- layout.addWidget(self.d_widget)
- self.setLayout(layout)
-
- class Dial(QtGui.QDial):
- """ Creates the range using a dial """
- def __init__(self, parent, ranges, slot, rangeType=float):
- QtGui.QDial.__init__(self, parent)
-
- self.rangeType = rangeType
-
- # Setup the dial
- self.setRange(0, ranges.nsteps-1)
- self.setSingleStep(1)
- self.setNotchesVisible(True)
- self.range = ranges
-
- # Round the initial value to the closest tick
- temp = int(round(ranges.demap_range(ranges.default), 0))
- self.setValue(temp)
-
- # Setup the slots
- self.valueChanged.connect(self.changed)
- self.notifyChanged = slot
-
- def changed(self, value):
- """ Handles maping the value to the right range before calling the slot. """
- val = self.range.map_range(value)
- self.notifyChanged(self.rangeType(val))
-
- class Slider(QtGui.QSlider):
- """ Creates the range using a slider """
- def __init__(self, parent, ranges, slot, rangeType=float):
- QtGui.QSlider.__init__(self, QtCore.Qt.Horizontal, parent)
-
- self.rangeType = rangeType
-
- # Setup the slider
- #self.setFocusPolicy(QtCore.Qt.NoFocus)
- self.setRange(0, ranges.nsteps - 1)
- self.setTickPosition(2)
- self.setSingleStep(1)
- self.range = ranges
-
- # Round the initial value to the closest tick
- temp = int(round(ranges.demap_range(ranges.default), 0))
- self.setValue(temp)
-
- if ranges.nsteps > ranges.min_length:
- interval = int(ranges.nsteps/ranges.min_length)
- self.setTickInterval(interval)
- self.setPageStep(interval)
- else:
- self.setTickInterval(1)
- self.setPageStep(1)
-
- # Setup the handler function
- self.valueChanged.connect(self.changed)
- self.notifyChanged = slot
-
- def changed(self, value):
- """ Handle the valueChanged signal and map the value into the correct range """
- val = self.range.map_range(value)
- self.notifyChanged(self.rangeType(val))
-
- def mousePressEvent(self, event):
- if((event.button() == QtCore.Qt.LeftButton)):
- new = self.minimum() + ((self.maximum()-self.minimum()) * event.x()) / self.width()
- self.setValue(new)
- event.accept()
- # Use repaint rather than calling the super mousePressEvent.
- # Calling super causes issue where slider jumps to wrong value.
- QtGui.QSlider.repaint(self)
-
- def mouseMoveEvent(self, event):
- new = self.minimum() + ((self.maximum()-self.minimum()) * event.x()) / self.width()
- self.setValue(new)
- event.accept()
- QtGui.QSlider.repaint(self)
-
- class Counter(QtGui.QDoubleSpinBox):
- """ Creates the range using a counter """
- def __init__(self, parent, ranges, slot, rangeType=float):
- QtGui.QDoubleSpinBox.__init__(self, parent)
-
- self.rangeType = rangeType
-
- # Setup the counter
- self.setRange(ranges.min, ranges.max)
- self.setValue(ranges.default)
- self.setSingleStep(ranges.step)
- self.setKeyboardTracking(False)
- self.setDecimals(ranges.precision)
-
- # The counter already handles floats and can be connected directly.
- self.valueChanged.connect(self.changed)
- self.notifyChanged = slot
-
- def changed(self, value):
- """ Handle the valueChanged signal by converting to the right type """
- self.notifyChanged(self.rangeType(value))
-
- class CounterSlider(QtGui.QWidget):
- """ Creates the range using a counter and slider """
- def __init__(self, parent, ranges, slot, rangeType=float):
- QtGui.QWidget.__init__(self, parent)
-
- self.rangeType = rangeType
-
- # Slot to call in the parent
- self.notifyChanged = slot
-
- self.slider = RangeWidget.Slider(parent, ranges, self.sliderChanged, rangeType)
- self.counter = RangeWidget.Counter(parent, ranges, self.counterChanged, rangeType)
-
- # Need another horizontal layout to wrap the other widgets.
- layout = Qt.QHBoxLayout()
- layout.addWidget(self.slider)
- layout.addWidget(self.counter)
- self.setLayout(layout)
-
- # Flag to ignore the slider event caused by a change to the counter.
- self.ignoreSlider = False
- self.range = ranges
-
- def sliderChanged(self, value):
- """ Handles changing the counter when the slider is updated """
- # If the counter was changed, ignore any of these events
- if not self.ignoreSlider:
- # Value is already float. Just set the counter
- self.counter.setValue(self.rangeType(value))
- self.notifyChanged(self.rangeType(value))
- self.ignoreSlider = False
-
- def counterChanged(self, value):
- """ Handles changing the slider when the counter is updated """
- # Get the current slider value and check to see if the new value changes it
- current = self.slider.value()
- new = int(round(self.range.demap_range(value), 0))
-
- # If it needs to change, ignore the slider event
- # Otherwise, the slider will cause the counter to round to the nearest tick
- if current != new:
- self.ignoreSlider = True
- self.slider.setValue(new)
-
- self.notifyChanged(self.rangeType(value))
-
-
-if __name__ == "__main__":
- from PyQt4 import Qt
- import sys
-
- def valueChanged(frequency):
- print("Value updated - " + str(frequency))
-
- app = Qt.QApplication(sys.argv)
- widget = RangeWidget(qtgui_range(0, 100, 10, 1, 100), valueChanged, "Test", "counter_slider", int)
-
- widget.show()
- widget.setWindowTitle("Test Qt Range")
- app.exec_()
-
- widget = None