diff --git a/apps/fft-multi-decoder_auto_freqs_slider-update.grc b/apps/fft-multi-decoder_auto_freqs_slider-update.grc
index 23b3101..285974c 100644
--- a/apps/fft-multi-decoder_auto_freqs_slider-update.grc
+++ b/apps/fft-multi-decoder_auto_freqs_slider-update.grc
@@ -1382,7 +1382,7 @@
label
-
+ volumeLR
min_len
@@ -1445,7 +1445,7 @@
label
-
+ volumeC
min_len
@@ -1496,7 +1496,7 @@
_coordinate
- (1333, 27)
+ (1637, 1385)
_rotation
@@ -1504,7 +1504,7 @@
id
- analog_fm_deemph_0_0
+ analog_fm_deemph_0_0_0_0_0
maxoutbuf
@@ -1543,7 +1543,7 @@
_coordinate
- (1333, 83)
+ (1637, 1441)
_rotation
@@ -1551,7 +1551,7 @@
id
- analog_fm_deemph_0_0_0
+ analog_fm_deemph_0_0_0_1
maxoutbuf
@@ -1590,7 +1590,7 @@
_coordinate
- (1333, 139)
+ (1637, 1329)
_rotation
@@ -1598,7 +1598,7 @@
id
- analog_fm_deemph_0_0_0_0
+ analog_fm_deemph_0_0_1
maxoutbuf
@@ -1641,7 +1641,7 @@
_coordinate
- (1837, 39)
+ (2140, 1349)
_rotation
@@ -1649,7 +1649,7 @@
id
- audio_sink_0
+ audio_sink_0_0
num_inputs
@@ -1684,7 +1684,7 @@
_coordinate
- (1725, 87)
+ (2028, 1333)
_rotation
@@ -1692,7 +1692,7 @@
id
- blocks_add_xx_0
+ blocks_add_xx_0_0_0
type
@@ -1735,7 +1735,7 @@
_coordinate
- (1701, 15)
+ (2028, 1397)
_rotation
@@ -1743,7 +1743,7 @@
id
- blocks_add_xx_0_0
+ blocks_add_xx_0_1
type
@@ -1934,7 +1934,7 @@
const
- volume
+ volume2/2
affinity
@@ -1946,7 +1946,7 @@
_coordinate
- (1493, 35)
+ (1821, 1401)
_rotation
@@ -1954,7 +1954,7 @@
id
- blocks_multiply_const_vxx_0
+ blocks_multiply_const_vxx_0_0_0_0
type
@@ -1997,7 +1997,7 @@
_coordinate
- (1517, 99)
+ (1821, 1449)
_rotation
@@ -2005,7 +2005,7 @@
id
- blocks_multiply_const_vxx_0_0
+ blocks_multiply_const_vxx_0_0_1
type
@@ -2036,7 +2036,7 @@
const
- volume2/2
+ volume
affinity
@@ -2048,7 +2048,7 @@
_coordinate
- (1517, 155)
+ (1821, 1337)
_rotation
@@ -2056,7 +2056,7 @@
id
- blocks_multiply_const_vxx_0_0_0
+ blocks_multiply_const_vxx_0_1
type
@@ -2320,7 +2320,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
_coordinate
- (1094, 67)
+ (1397, 1385)
_rotation
@@ -2328,7 +2328,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
id
- fir_filter_xxx_0_0
+ fir_filter_xxx_0_0_0_0_0
maxoutbuf
@@ -2375,7 +2375,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
_coordinate
- (1094, 123)
+ (1397, 1441)
_rotation
@@ -2383,7 +2383,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
id
- fir_filter_xxx_0_0_0
+ fir_filter_xxx_0_0_0_1
maxoutbuf
@@ -2430,7 +2430,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
_coordinate
- (1094, 179)
+ (1397, 1329)
_rotation
@@ -2438,7 +2438,7 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
id
- fir_filter_xxx_0_0_0_0
+ fir_filter_xxx_0_0_1
maxoutbuf
@@ -3064,41 +3064,6 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
samp_rate
-
- multirds_decoder_compare
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (1757, 231)
-
-
- _rotation
- 0
-
-
- id
- multirds_decoder_compare_0
-
-
- nPorts
- 6
-
-
multirds_max_freq
@@ -3233,6 +3198,57 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
True
+
+ multirds_stream_router
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (1198, 1254)
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_stream_router_0
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ ninputs
+ 9
+
+
+ noutputs
+ 3
+
+
+ type
+ float
+
+
multirds_tmc_parser
@@ -6809,34 +6825,34 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
- analog_fm_deemph_0_0
- blocks_multiply_const_vxx_0
+ analog_fm_deemph_0_0_0_0_0
+ blocks_multiply_const_vxx_0_0_0_0
0
0
- analog_fm_deemph_0_0_0
- blocks_multiply_const_vxx_0_0
+ analog_fm_deemph_0_0_0_1
+ blocks_multiply_const_vxx_0_0_1
0
0
- analog_fm_deemph_0_0_0_0
- blocks_multiply_const_vxx_0_0_0
+ analog_fm_deemph_0_0_1
+ blocks_multiply_const_vxx_0_1
0
0
- blocks_add_xx_0
- audio_sink_0
+ blocks_add_xx_0_0_0
+ audio_sink_0_0
0
- 1
+ 0
- blocks_add_xx_0_0
- audio_sink_0
+ blocks_add_xx_0_1
+ audio_sink_0_0
0
- 0
+ 1
blocks_complex_to_mag_squared_0
@@ -6851,29 +6867,29 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
0
- blocks_multiply_const_vxx_0
- blocks_add_xx_0_0
- 0
- 0
-
-
- blocks_multiply_const_vxx_0_0
- blocks_add_xx_0
+ blocks_multiply_const_vxx_0_0_0_0
+ blocks_add_xx_0_0_0
0
1
- blocks_multiply_const_vxx_0_0_0
- blocks_add_xx_0
+ blocks_multiply_const_vxx_0_0_0_0
+ blocks_add_xx_0_1
0
0
- blocks_multiply_const_vxx_0_0_0
- blocks_add_xx_0_0
+ blocks_multiply_const_vxx_0_0_1
+ blocks_add_xx_0_1
0
1
+
+ blocks_multiply_const_vxx_0_1
+ blocks_add_xx_0_0_0
+ 0
+ 0
+
blocks_stream_to_vector_0
fft_vxx_0
@@ -6947,26 +6963,26 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
0
- fir_filter_xxx_0_0
- analog_fm_deemph_0_0
+ fir_filter_xxx_0_0_0_0_0
+ analog_fm_deemph_0_0_0_0_0
0
0
- fir_filter_xxx_0_0_0
- analog_fm_deemph_0_0_0
+ fir_filter_xxx_0_0_0_1
+ analog_fm_deemph_0_0_0_1
0
0
- fir_filter_xxx_0_0_0_0
- analog_fm_deemph_0_0_0_0
+ fir_filter_xxx_0_0_1
+ analog_fm_deemph_0_0_1
0
0
hier_ifft_decoder_0
- fir_filter_xxx_0_0
+ multirds_stream_router_0
0
0
@@ -6988,12 +7004,6 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
2
0
-
- hier_ifft_decoder_0
- multirds_decoder_compare_0
- rds
- in0
-
hier_ifft_decoder_0
multirds_rds_parser_table_qt_0_0
@@ -7002,9 +7012,9 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
hier_ifft_decoder_0_0
- fir_filter_xxx_0_0_0
+ multirds_stream_router_0
0
- 0
+ 1
hier_ifft_decoder_0_0
@@ -7024,12 +7034,6 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
2
1
-
- hier_ifft_decoder_0_0
- multirds_decoder_compare_0
- rds
- in1
-
hier_ifft_decoder_0_0
multirds_rds_parser_table_qt_0_0
@@ -7038,9 +7042,9 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
hier_ifft_decoder_0_1
- fir_filter_xxx_0_0_0_0
+ multirds_stream_router_0
0
- 0
+ 2
hier_ifft_decoder_0_1
@@ -7062,15 +7066,15 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
hier_ifft_decoder_0_1
- multirds_decoder_compare_0
+ multirds_rds_parser_table_qt_0_0
rds
in2
- hier_ifft_decoder_0_1
- multirds_rds_parser_table_qt_0_0
- rds
- in2
+ hier_ifft_decoder_0_1_0
+ multirds_stream_router_0
+ 0
+ 3
hier_ifft_decoder_0_1_0
@@ -7092,15 +7096,15 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
hier_ifft_decoder_0_1_0
- multirds_decoder_compare_0
+ multirds_rds_parser_table_qt_0_0
rds
in3
- hier_ifft_decoder_0_1_0
- multirds_rds_parser_table_qt_0_0
- rds
- in3
+ hier_ifft_decoder_0_1_1
+ multirds_stream_router_0
+ 0
+ 4
hier_ifft_decoder_0_1_1
@@ -7122,15 +7126,15 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
hier_ifft_decoder_0_1_1
- multirds_decoder_compare_0
+ multirds_rds_parser_table_qt_0_0
rds
in4
- hier_ifft_decoder_0_1_1
- multirds_rds_parser_table_qt_0_0
- rds
- in4
+ hier_ifft_decoder_0_1_2
+ multirds_stream_router_0
+ 0
+ 5
hier_ifft_decoder_0_1_2
@@ -7152,15 +7156,15 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
hier_ifft_decoder_0_1_2
- multirds_decoder_compare_0
+ multirds_rds_parser_table_qt_0_0
rds
in5
- hier_ifft_decoder_0_1_2
- multirds_rds_parser_table_qt_0_0
- rds
- in5
+ hier_ifft_decoder_0_1_2_0
+ multirds_stream_router_0
+ 0
+ 6
hier_ifft_decoder_0_1_2_0
@@ -7168,12 +7172,24 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
rds
in6
+
+ hier_ifft_decoder_0_1_2_0_0
+ multirds_stream_router_0
+ 0
+ 7
+
hier_ifft_decoder_0_1_2_0_0
multirds_rds_parser_table_qt_0_0
rds
in7
+
+ hier_ifft_decoder_0_1_2_0_0_0
+ multirds_stream_router_0
+ 0
+ 8
+
hier_ifft_decoder_0_1_2_0_0_0
multirds_rds_parser_table_qt_0_0
@@ -7246,12 +7262,36 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
ctrl
ctrl
+
+ multirds_rds_parser_table_qt_0_0
+ multirds_stream_router_0
+ ctrl
+ ctrl
+
multirds_rds_parser_table_qt_0_0
multirds_tmc_parser_0
tmc_raw
in
+
+ multirds_stream_router_0
+ fir_filter_xxx_0_0_1
+ 0
+ 0
+
+
+ multirds_stream_router_0
+ fir_filter_xxx_0_0_0_0_0
+ 1
+ 0
+
+
+ multirds_stream_router_0
+ fir_filter_xxx_0_0_0_1
+ 2
+ 0
+
osmosdr_source_0
blocks_stream_to_vector_0
diff --git a/lib/rds_decoder_redsea_impl.cc b/lib/rds_decoder_redsea_impl.cc
index fd0bb96..91f6dcb 100644
--- a/lib/rds_decoder_redsea_impl.cc
+++ b/lib/rds_decoder_redsea_impl.cc
@@ -205,7 +205,7 @@ int rds_decoder_redsea_impl::work (int noutput_items,
uint16_t block_calculated_crc, block_received_crc, checkword,dataword;
uint16_t reg_syndrome;
uint8_t offset_char('x'); // x = error while decoding the word offset
- uint8_t variant;
+
/* the synchronization process is described in Annex C, page 66 of the standard */
while (i>10) & 0xffff;//data part of received block (upper 16 bits)
block_calculated_crc=calc_syndrome(dataword,16);
@@ -262,6 +263,8 @@ int rds_decoder_redsea_impl::work (int noutput_items,
uint32_t corrected_block= correctBurstErrors(reg,offset_char);
if(corrected_block != reg){
good_block=true;
+ block_was_corrected=true;
+ group_corrected_blocks_counter++;
dataword=(corrected_block>>10) & 0xffff;
checkword=corrected_block & 0x3ff;
//dout << "corrected error"< errors if corrected with wrong offset
- if(corrected_block != reg){
- good_block=true;
- dataword=(corrected_block>>10) & 0xffff;
- checkword=corrected_block & 0x3ff;
- offset_char = 'C';
- //dout << "corrected error"<>10) & 0xffff;
checkword=corrected_block & 0x3ff;
- //dout << "corrected error"< read group type variant
- variant=(dataword>>12)& 0x1;
+ variant=(dataword>>11)& 0x1;
+// uint8_t group=(dataword>>12)& 0xf;
+// dout << "group:"<< unsigned(group);
+// dout << "\tvariant:" << unsigned(variant);
+// dout << "\twas_corrected: "<