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: "<