diff --git a/CMakeLists.txt b/CMakeLists.txt
index e1493ff..17edf04 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -164,8 +164,8 @@ link_directories(
)
# Set component parameters
-set(GR_CRFA_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include CACHE INTERNAL "" FORCE)
-set(GR_CRFA_SWIG_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/swig CACHE INTERNAL "" FORCE)
+set(GR_MULTIRDS_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include CACHE INTERNAL "" FORCE)
+set(GR_MULTIRDS_SWIG_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/swig CACHE INTERNAL "" FORCE)
########################################################################
# Create uninstall target
diff --git a/MANIFEST.md b/MANIFEST.md
index ac12f91..91166b1 100644
--- a/MANIFEST.md
+++ b/MANIFEST.md
@@ -1,4 +1,4 @@
-title: The CRFA OOT Module
+title: The MULTIRDS OOT Module
brief: Short description of gr-multirds
tags: # Tags are arbitrary, but look at CGRAN what other authors are using
- sdr
diff --git a/apps/fft-multi-decoder_fixed_hackrf.grc b/apps/fft-multi-decoder_fixed_hackrf.grc
index 604920e..17ba717 100644
--- a/apps/fft-multi-decoder_fixed_hackrf.grc
+++ b/apps/fft-multi-decoder_fixed_hackrf.grc
@@ -2492,171 +2492,6 @@
1
-
- multirds_decoder_compare
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- _enabled
- 0
-
-
- _coordinate
- (1757, 231)
-
-
- _rotation
- 0
-
-
- id
- multirds_decoder_compare_0
-
-
- nPorts
- 6
-
-
-
- multirds_rds_parser_table_qt
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- 1
-
-
- _coordinate
- (1589, 423)
-
-
- gui_hint
- tabs@1:7,1,5,3
-
-
- _rotation
- 0
-
-
- id
- multirds_rds_parser_table_qt_0_0
-
-
- label
-
-
-
- log
- False
-
-
- maxoutbuf
- 0
-
-
- minoutbuf
- 0
-
-
- nPorts
- 9
-
-
- freq_tune
- freq_tune
-
-
- workdir
- /user/wire2/richter/data/
-
-
- writeDB
- True
-
-
-
- multirds_tmc_parser
-
- alias
-
-
-
- comment
-
-
-
- affinity
-
-
-
- debug
- False
-
-
- _enabled
- True
-
-
- _coordinate
- (1880, 512)
-
-
- gui_hint
- tabs@1
-
-
- _rotation
- 0
-
-
- id
- multirds_tmc_parser_0
-
-
- label
-
-
-
- log
- False
-
-
- maxheight
- 0
-
-
- workdir
- /user/wire2/richter/data/
-
-
- writeDB
- True
-
-
epy_block
@@ -3583,6 +3418,171 @@ 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_rds_parser_table_qt
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ debug
+ False
+
+
+ _enabled
+ 1
+
+
+ _coordinate
+ (1589, 423)
+
+
+ gui_hint
+ tabs@1:7,1,5,3
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_rds_parser_table_qt_0_0
+
+
+ label
+
+
+
+ log
+ False
+
+
+ maxoutbuf
+ 0
+
+
+ minoutbuf
+ 0
+
+
+ nPorts
+ 9
+
+
+ freq_tune
+ freq_tune
+
+
+ workdir
+ /user/wire2/richter/data/
+
+
+ writeDB
+ True
+
+
+
+ multirds_tmc_parser
+
+ alias
+
+
+
+ comment
+
+
+
+ affinity
+
+
+
+ debug
+ False
+
+
+ _enabled
+ True
+
+
+ _coordinate
+ (1880, 512)
+
+
+ gui_hint
+ tabs@1
+
+
+ _rotation
+ 0
+
+
+ id
+ multirds_tmc_parser_0
+
+
+ label
+
+
+
+ log
+ False
+
+
+ maxheight
+ 0
+
+
+ workdir
+ /user/wire2/richter/data/
+
+
+ writeDB
+ True
+
+
osmosdr_source
@@ -6772,12 +6772,6 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
0
0
-
- multirds_rds_parser_table_qt_0_0
- multirds_tmc_parser_0
- tmc_raw
- in
-
epy_block_0
multirds_rds_parser_table_qt_0_0
@@ -7072,6 +7066,12 @@ class blk(gr.sync_block): # other base classes are basic_block, decim_block, in
rds
in8
+
+ multirds_rds_parser_table_qt_0_0
+ multirds_tmc_parser_0
+ tmc_raw
+ in
+
osmosdr_source_0
blocks_stream_to_vector_0
diff --git a/cmake/Modules/multirdsConfig.cmake b/cmake/Modules/multirdsConfig.cmake
index 2d982c1..618f37a 100644
--- a/cmake/Modules/multirdsConfig.cmake
+++ b/cmake/Modules/multirdsConfig.cmake
@@ -1,21 +1,21 @@
INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(PC_CRFA multirds)
+PKG_CHECK_MODULES(PC_MULTIRDS multirds)
FIND_PATH(
- CRFA_INCLUDE_DIRS
+ MULTIRDS_INCLUDE_DIRS
NAMES multirds/api.h
- HINTS $ENV{CRFA_DIR}/include
- ${PC_CRFA_INCLUDEDIR}
+ HINTS $ENV{MULTIRDS_DIR}/include
+ ${PC_MULTIRDS_INCLUDEDIR}
PATHS ${CMAKE_INSTALL_PREFIX}/include
/usr/local/include
/usr/include
)
FIND_LIBRARY(
- CRFA_LIBRARIES
+ MULTIRDS_LIBRARIES
NAMES gnuradio-multirds
- HINTS $ENV{CRFA_DIR}/lib
- ${PC_CRFA_LIBDIR}
+ HINTS $ENV{MULTIRDS_DIR}/lib
+ ${PC_MULTIRDS_LIBDIR}
PATHS ${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib64
/usr/local/lib
@@ -25,6 +25,6 @@ FIND_LIBRARY(
)
INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(CRFA DEFAULT_MSG CRFA_LIBRARIES CRFA_INCLUDE_DIRS)
-MARK_AS_ADVANCED(CRFA_LIBRARIES CRFA_INCLUDE_DIRS)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(MULTIRDS DEFAULT_MSG MULTIRDS_LIBRARIES MULTIRDS_INCLUDE_DIRS)
+MARK_AS_ADVANCED(MULTIRDS_LIBRARIES MULTIRDS_INCLUDE_DIRS)
diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in
index e70d719..8f93005 100644
--- a/docs/doxygen/Doxyfile.in
+++ b/docs/doxygen/Doxyfile.in
@@ -28,7 +28,7 @@ DOXYFILE_ENCODING = UTF-8
# identify the project. Note that if you do not use Doxywizard you need
# to put quotes around the project name if it contains spaces.
-PROJECT_NAME = "GNU Radio's CRFA Package"
+PROJECT_NAME = "GNU Radio's MULTIRDS Package"
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
diff --git a/docs/doxygen/other/group_defs.dox b/docs/doxygen/other/group_defs.dox
index 347d743..c879fe8 100644
--- a/docs/doxygen/other/group_defs.dox
+++ b/docs/doxygen/other/group_defs.dox
@@ -1,6 +1,6 @@
/*!
- * \defgroup block GNU Radio CRFA C++ Signal Processing Blocks
- * \brief All C++ blocks that can be used from the CRFA GNU Radio
+ * \defgroup block GNU Radio MULTIRDS C++ Signal Processing Blocks
+ * \brief All C++ blocks that can be used from the MULTIRDS GNU Radio
* module are listed here or in the subcategories below.
*
*/
diff --git a/docs/doxygen/other/main_page.dox b/docs/doxygen/other/main_page.dox
index 94b59ed..c4ca3c9 100644
--- a/docs/doxygen/other/main_page.dox
+++ b/docs/doxygen/other/main_page.dox
@@ -1,8 +1,8 @@
/*! \mainpage
-Welcome to the GNU Radio CRFA Block
+Welcome to the GNU Radio MULTIRDS Block
-This is the intro page for the Doxygen manual generated for the CRFA
+This is the intro page for the Doxygen manual generated for the MULTIRDS
block (docs/doxygen/other/main_page.dox). Edit it to add more detailed
documentation about the new GNU Radio modules contained in this
project.
diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt
index d94ed36..490f95a 100644
--- a/grc/CMakeLists.txt
+++ b/grc/CMakeLists.txt
@@ -30,5 +30,6 @@ install(FILES
multirds_qtgui_range.xml
multirds_variable_setter.xml
multirds_tmc_parser.xml
- multirds_pilot_SNR.xml DESTINATION share/gnuradio/grc/blocks
+ multirds_pilot_SNR.xml
+ multirds_stream_router.xml DESTINATION share/gnuradio/grc/blocks
)
diff --git a/include/multirds/CMakeLists.txt b/include/multirds/CMakeLists.txt
index ea04c37..718d2fc 100644
--- a/include/multirds/CMakeLists.txt
+++ b/include/multirds/CMakeLists.txt
@@ -24,5 +24,6 @@ install(FILES
api.h
rds_decoder.h
sync_decim.h
- rds_decoder_redsea.h DESTINATION include/multirds
+ rds_decoder_redsea.h
+ stream_router.h DESTINATION include/multirds
)
diff --git a/include/multirds/api.h b/include/multirds/api.h
index fc3545f..0425f8b 100644
--- a/include/multirds/api.h
+++ b/include/multirds/api.h
@@ -19,15 +19,15 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef INCLUDED_CRFA_API_H
-#define INCLUDED_CRFA_API_H
+#ifndef INCLUDED_MULTIRDS_API_H
+#define INCLUDED_MULTIRDS_API_H
#include
#ifdef gnuradio_multirds_EXPORTS
-# define CRFA_API __GR_ATTR_EXPORT
+# define MULTIRDS_API __GR_ATTR_EXPORT
#else
-# define CRFA_API __GR_ATTR_IMPORT
+# define MULTIRDS_API __GR_ATTR_IMPORT
#endif
-#endif /* INCLUDED_CRFA_API_H */
+#endif /* INCLUDED_MULTIRDS_API_H */
diff --git a/include/multirds/rds_decoder.h b/include/multirds/rds_decoder.h
index efb0b71..3fcb104 100644
--- a/include/multirds/rds_decoder.h
+++ b/include/multirds/rds_decoder.h
@@ -19,8 +19,8 @@
*/
-#ifndef INCLUDED_CRFA_RDS_DECODER_H
-#define INCLUDED_CRFA_RDS_DECODER_H
+#ifndef INCLUDED_MULTIRDS_RDS_DECODER_H
+#define INCLUDED_MULTIRDS_RDS_DECODER_H
#include
#include
@@ -33,7 +33,7 @@ namespace gr {
* \ingroup multirds
*
*/
- class CRFA_API rds_decoder : virtual public gr::sync_block
+ class MULTIRDS_API rds_decoder : virtual public gr::sync_block
{
public:
typedef boost::shared_ptr sptr;
@@ -52,5 +52,5 @@ namespace gr {
} // namespace multirds
} // namespace gr
-#endif /* INCLUDED_CRFA_RDS_DECODER_H */
+#endif /* INCLUDED_MULTIRDS_RDS_DECODER_H */
diff --git a/include/multirds/rds_decoder_redsea.h b/include/multirds/rds_decoder_redsea.h
index 8f7b726..061755b 100644
--- a/include/multirds/rds_decoder_redsea.h
+++ b/include/multirds/rds_decoder_redsea.h
@@ -19,8 +19,8 @@
*/
-#ifndef INCLUDED_CRFA_RDS_DECODER_REDSEA_H
-#define INCLUDED_CRFA_RDS_DECODER_REDSEA_H
+#ifndef INCLUDED_MULTIRDS_RDS_DECODER_REDSEA_H
+#define INCLUDED_MULTIRDS_RDS_DECODER_REDSEA_H
#include
#include
@@ -33,7 +33,7 @@ namespace gr {
* \ingroup multirds
*
*/
- class CRFA_API rds_decoder_redsea : virtual public gr::sync_block
+ class MULTIRDS_API rds_decoder_redsea : virtual public gr::sync_block
{
public:
typedef boost::shared_ptr sptr;
@@ -52,5 +52,5 @@ namespace gr {
} // namespace multirds
} // namespace gr
-#endif /* INCLUDED_CRFA_RDS_DECODER_REDSEA_H */
+#endif /* INCLUDED_MULTIRDS_RDS_DECODER_REDSEA_H */
diff --git a/include/multirds/sync_decim.h b/include/multirds/sync_decim.h
index a1d9808..6b1f3b8 100644
--- a/include/multirds/sync_decim.h
+++ b/include/multirds/sync_decim.h
@@ -19,8 +19,8 @@
*/
-#ifndef INCLUDED_CRFA_SYNC_DECIM_H
-#define INCLUDED_CRFA_SYNC_DECIM_H
+#ifndef INCLUDED_MULTIRDS_SYNC_DECIM_H
+#define INCLUDED_MULTIRDS_SYNC_DECIM_H
#include
#include
@@ -33,7 +33,7 @@ namespace gr {
* \ingroup multirds
*
*/
- class CRFA_API sync_decim : virtual public gr::sync_decimator
+ class MULTIRDS_API sync_decim : virtual public gr::sync_decimator
{
public:
typedef boost::shared_ptr sptr;
@@ -52,5 +52,5 @@ namespace gr {
} // namespace multirds
} // namespace gr
-#endif /* INCLUDED_CRFA_SYNC_DECIM_H */
+#endif /* INCLUDED_MULTIRDS_SYNC_DECIM_H */
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 0d45ae4..9983586 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -27,7 +27,8 @@ link_directories(${Boost_LIBRARY_DIRS})
list(APPEND multirds_sources
rds_decoder_impl.cc
sync_decim_impl.cc
- rds_decoder_redsea_impl.cc )
+ rds_decoder_redsea_impl.cc
+ stream_router_impl.cc )
set(multirds_sources "${multirds_sources}" PARENT_SCOPE)
if(NOT multirds_sources)
diff --git a/lib/constants.h b/lib/constants.h
index d41f330..dbf0833 100644
--- a/lib/constants.h
+++ b/lib/constants.h
@@ -27,7 +27,7 @@ static const unsigned int offset_word[5]={252,408,360,436,848};
static const unsigned int syndrome[5]={383,14,303,663,748};
//static const char * const offset_name[]={"A","B","C","D","C'"};
static const char offset_name[]={'A','B','C','D','c'};
-static const char expected_offset_char[]={'A','B','X','D'};
+static const char expected_offset_char[]={'A','B','?','D'};
/* Annex F of RBDS Standard Table F.1 (North America) and
* Table F.2 (Europe) */
diff --git a/lib/qa_multirds.h b/lib/qa_multirds.h
index 076a7f0..5795979 100644
--- a/lib/qa_multirds.h
+++ b/lib/qa_multirds.h
@@ -20,8 +20,8 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef _QA_CRFA_H_
-#define _QA_CRFA_H_
+#ifndef _QA_MULTIRDS_H_
+#define _QA_MULTIRDS_H_
#include
#include
@@ -35,4 +35,4 @@ class __GR_ATTR_EXPORT qa_multirds
static CppUnit::TestSuite *suite();
};
-#endif /* _QA_CRFA_H_ */
+#endif /* _QA_MULTIRDS_H_ */
diff --git a/lib/rds_decoder_impl.h b/lib/rds_decoder_impl.h
index 1a149d4..82c151f 100644
--- a/lib/rds_decoder_impl.h
+++ b/lib/rds_decoder_impl.h
@@ -18,8 +18,8 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef INCLUDED_CRFA_RDS_DECODER_IMPL_H
-#define INCLUDED_CRFA_RDS_DECODER_IMPL_H
+#ifndef INCLUDED_MULTIRDS_RDS_DECODER_IMPL_H
+#define INCLUDED_MULTIRDS_RDS_DECODER_IMPL_H
#include
@@ -75,5 +75,5 @@ private:
} // namespace multirds
} // namespace gr
-#endif /* INCLUDED_CRFA_RDS_DECODER_IMPL_H */
+#endif /* INCLUDED_MULTIRDS_RDS_DECODER_IMPL_H */
diff --git a/lib/rds_decoder_redsea_impl.cc b/lib/rds_decoder_redsea_impl.cc
index d553142..fd0bb96 100644
--- a/lib/rds_decoder_redsea_impl.cc
+++ b/lib/rds_decoder_redsea_impl.cc
@@ -136,7 +136,8 @@ static const char * const offset_name[]={"A","B","C","D","c"};*/
// bits."
// Kopitz & Marks 1999: "RDS: The Radio Data System", p. 224
//for (uint32_t e=0x1;e <= 0x3;e+=0x2) {//for (uint32_t e : {0x1, 0x3}) {
- for (uint32_t e : {0x1, 0x3, 0x7,0x15,0x31}) {//fix up to 5 bit burst errors
+ //for (uint32_t e : {0x1, 0x3, 0x7,0x15,0x31}) {//fix up to 5 bit burst errors (as code should support)
+ for (uint32_t e : {0x1, 0x3}) {//fix up to 2 bit burst errors (as book says)
for (int shift=0; shift < 26; shift++) {
uint32_t errvec = ((e << shift) & kBitmask26);
uint16_t sy = calc_syndrome(errvec ^ offset_word[offset_num],26);
@@ -204,6 +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;
+ 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;
@@ -269,15 +298,16 @@ int rds_decoder_redsea_impl::work (int noutput_items,
good_block=false;
}
}
- }
+ }*/
}
else {
block_received_crc=checkword^offset_word[block_number];
if (block_received_crc==block_calculated_crc) {
good_block=true;
- if (block_number==0) offset_char = 'A';
+ offset_char=expected_offset_char[block_number]; //expected_offset_char[]={'A','B','?','D'};
+ /*if (block_number==0) offset_char = 'A';
else if (block_number==1) offset_char = 'B';
- else if (block_number==3) offset_char = 'D';
+ else if (block_number==3) offset_char = 'D';*/
} else {
//try correcting:
uint32_t corrected_block= correctBurstErrors(reg,expected_offset_char[block_number]);
@@ -304,6 +334,9 @@ int rds_decoder_redsea_impl::work (int noutput_items,
group_assembly_started=true;
group_good_blocks_counter=1;
}
+ if (block_number==1 && good_block) {//2nd block - > read group type variant
+ variant=(dataword>>12)& 0x1;
+ }
if (group_assembly_started) {
if (!good_block) group_assembly_started=false;
else {
diff --git a/lib/rds_decoder_redsea_impl.h b/lib/rds_decoder_redsea_impl.h
index 8d45c87..ea5e1aa 100644
--- a/lib/rds_decoder_redsea_impl.h
+++ b/lib/rds_decoder_redsea_impl.h
@@ -18,8 +18,8 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef INCLUDED_CRFA_RDS_DECODER_IMPL_H
-#define INCLUDED_CRFA_RDS_DECODER_IMPL_H
+#ifndef INCLUDED_MULTIRDS_RDS_DECODER_IMPL_H
+#define INCLUDED_MULTIRDS_RDS_DECODER_IMPL_H
#include
@@ -77,5 +77,5 @@ private:
} // namespace multirds
} // namespace gr
-#endif /* INCLUDED_CRFA_RDS_DECODER_IMPL_H */
+#endif /* INCLUDED_MULTIRDS_RDS_DECODER_IMPL_H */
diff --git a/lib/sync_decim_impl.cc b/lib/sync_decim_impl.cc
index a753cc4..f46a837 100644
--- a/lib/sync_decim_impl.cc
+++ b/lib/sync_decim_impl.cc
@@ -26,7 +26,8 @@
#include "sync_decim_impl.h"
#define DECIM 2
#define lout log && std::cout
-#define SYNC_COUNTER_MAX 5//higher value -> slower sync, less cpu load
+//#define SYNC_COUNTER_MAX 5//higher value -> slower sync, less cpu load
+#define SYNC_COUNTER_MAX 7//higher value -> slower sync, less cpu load
//#include
namespace gr {
namespace multirds {
diff --git a/lib/sync_decim_impl.h b/lib/sync_decim_impl.h
index fc28c6c..52cadff 100644
--- a/lib/sync_decim_impl.h
+++ b/lib/sync_decim_impl.h
@@ -18,8 +18,8 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef INCLUDED_CRFA_SYNC_DECIM_IMPL_H
-#define INCLUDED_CRFA_SYNC_DECIM_IMPL_H
+#ifndef INCLUDED_MULTIRDS_SYNC_DECIM_IMPL_H
+#define INCLUDED_MULTIRDS_SYNC_DECIM_IMPL_H
#include
@@ -52,5 +52,5 @@ namespace gr {
} // namespace multirds
} // namespace gr
-#endif /* INCLUDED_CRFA_SYNC_DECIM_IMPL_H */
+#endif /* INCLUDED_MULTIRDS_SYNC_DECIM_IMPL_H */
diff --git a/python/__init__.py b/python/__init__.py
index 8f7196c..f571609 100644
--- a/python/__init__.py
+++ b/python/__init__.py
@@ -19,7 +19,7 @@
# The presence of this file turns this directory into a Python package
'''
-This is the GNU Radio CRFA module. Place your Python package
+This is the GNU Radio MULTIRDS module. Place your Python package
description here (python/__init__.py).
'''
diff --git a/python/rds_parser_table_qt.py b/python/rds_parser_table_qt.py
index 3d11e80..6e9a11e 100644
--- a/python/rds_parser_table_qt.py
+++ b/python/rds_parser_table_qt.py
@@ -616,7 +616,7 @@ class rds_parser_table_qt(gr.sync_block):#START
#decode 3A group of RT+
if AID==19415: #RT+
self.RDS_data[PI]["AID_list"][AID]["CB"]=(app_data>>12)&0x1 #is set if template available
- self.RDS_data[PI]["AID_list"][AID]["SCB"]=(app_data >> 8)&0x0f#server control bit
+ self.RDS_data[PI]["AID_list"][AID]["SCB"]=(app_data >> 8)&0x0f#server control bits
self.RDS_data[PI]["AID_list"][AID]["template_number"]=app_data&0xff
#decode 3A group of TMC
if AID==52550:#TMC alert-c (continuously update)
diff --git a/swig/multirds_swig.i b/swig/multirds_swig.i
index 2cd4c32..9b1eae2 100644
--- a/swig/multirds_swig.i
+++ b/swig/multirds_swig.i
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
-#define CRFA_API
+#define MULTIRDS_API
%include "gnuradio.i" // the common stuff
@@ -11,6 +11,7 @@
#include "multirds/rds_decoder.h"
#include "multirds/sync_decim.h"
#include "multirds/rds_decoder_redsea.h"
+#include "multirds/stream_router.h"
%}
%include "multirds/rds_decoder.h"
@@ -20,3 +21,5 @@ GR_SWIG_BLOCK_MAGIC2(multirds, rds_decoder);
GR_SWIG_BLOCK_MAGIC2(multirds, sync_decim);
%include "multirds/rds_decoder_redsea.h"
GR_SWIG_BLOCK_MAGIC2(multirds, rds_decoder_redsea);
+%include "multirds/stream_router.h"
+GR_SWIG_BLOCK_MAGIC2(multirds, stream_router);