summaryrefslogtreecommitdiff
path: root/gr-atsc/src
diff options
context:
space:
mode:
Diffstat (limited to 'gr-atsc/src')
-rw-r--r--gr-atsc/src/lib/CMakeLists.txt235
-rw-r--r--gr-atsc/src/lib/Makefile.am1
-rw-r--r--gr-atsc/src/lib/atsc_api.h33
-rw-r--r--gr-atsc/src/lib/atsc_bit_timing_loop.h7
-rw-r--r--gr-atsc/src/lib/atsc_deinterleaver.h7
-rw-r--r--gr-atsc/src/lib/atsc_depad.h7
-rw-r--r--gr-atsc/src/lib/atsc_derandomizer.h7
-rw-r--r--gr-atsc/src/lib/atsc_ds_to_softds.h7
-rw-r--r--gr-atsc/src/lib/atsc_equalizer.h7
-rw-r--r--gr-atsc/src/lib/atsc_field_sync_demux.h7
-rw-r--r--gr-atsc/src/lib/atsc_field_sync_mux.h7
-rw-r--r--gr-atsc/src/lib/atsc_fpll.h7
-rw-r--r--gr-atsc/src/lib/atsc_fs_checker.h5
-rw-r--r--gr-atsc/src/lib/atsc_interleaver.h7
-rw-r--r--gr-atsc/src/lib/atsc_pad.h7
-rw-r--r--gr-atsc/src/lib/atsc_randomizer.h7
-rw-r--r--gr-atsc/src/lib/atsc_rs_decoder.h7
-rw-r--r--gr-atsc/src/lib/atsc_rs_encoder.h7
-rw-r--r--gr-atsc/src/lib/atsc_trellis_encoder.h7
-rw-r--r--gr-atsc/src/lib/atsc_viterbi_decoder.h7
-rw-r--r--gr-atsc/src/lib/atsci_basic_trellis_encoder.h3
-rw-r--r--gr-atsc/src/lib/atsci_data_interleaver.h5
-rw-r--r--gr-atsc/src/lib/atsci_equalizer.h3
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_lms.h3
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_lms2.h3
-rw-r--r--gr-atsc/src/lib/atsci_equalizer_nop.h3
-rw-r--r--gr-atsc/src/lib/atsci_exp2_lp.h3
-rw-r--r--gr-atsc/src/lib/atsci_fake_single_viterbi.h4
-rw-r--r--gr-atsc/src/lib/atsci_fs_checker.h3
-rw-r--r--gr-atsc/src/lib/atsci_fs_checker_naive.h3
-rw-r--r--gr-atsc/src/lib/atsci_fs_correlator.h4
-rw-r--r--gr-atsc/src/lib/atsci_fs_correlator_naive.h3
-rw-r--r--gr-atsc/src/lib/atsci_pnXXX.h6
-rw-r--r--gr-atsc/src/lib/atsci_randomizer.h3
-rw-r--r--gr-atsc/src/lib/atsci_reed_solomon.h3
-rw-r--r--gr-atsc/src/lib/atsci_root_raised_cosine.h3
-rw-r--r--gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h3
-rw-r--r--gr-atsc/src/lib/atsci_single_viterbi.h4
-rw-r--r--gr-atsc/src/lib/atsci_slicer_agc.h3
-rw-r--r--gr-atsc/src/lib/atsci_sliding_correlator.h8
-rw-r--r--gr-atsc/src/lib/atsci_sssr.h11
-rw-r--r--gr-atsc/src/lib/atsci_trellis_encoder.h3
-rw-r--r--gr-atsc/src/lib/atsci_viterbi_decoder.h3
-rw-r--r--gr-atsc/src/lib/atsci_vsbtx_lp.h3
-rw-r--r--gr-atsc/src/lib/create_atsci_equalizer.h8
-rw-r--r--gr-atsc/src/lib/create_atsci_fs_checker.h4
-rw-r--r--gr-atsc/src/lib/create_atsci_fs_correlator.h4
-rw-r--r--gr-atsc/src/lib/interleaver_fifo.h1
-rw-r--r--gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc2
-rw-r--r--gr-atsc/src/lib/qa_atsci_single_viterbi.cc4
-rw-r--r--gr-atsc/src/python/CMakeLists.txt58
51 files changed, 469 insertions, 91 deletions
diff --git a/gr-atsc/src/lib/CMakeLists.txt b/gr-atsc/src/lib/CMakeLists.txt
new file mode 100644
index 000000000..da104e465
--- /dev/null
+++ b/gr-atsc/src/lib/CMakeLists.txt
@@ -0,0 +1,235 @@
+# Copyright 2011 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.
+
+########################################################################
+# Setup the include and linker paths
+########################################################################
+INCLUDE_DIRECTORIES(
+ ${GNURADIO_CORE_INCLUDE_DIRS}
+ ${GR_ATSC_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
+
+########################################################################
+# Generate viterbi mux source
+# http://www.vtk.org/Wiki/CMake_Cross_Compiling#Using_executables_in_the_build_created_during_the_build
+########################################################################
+IF(NOT CMAKE_CROSSCOMPILING)
+ ADD_EXECUTABLE(atsci_viterbi_gen atsci_viterbi_gen.cc)
+ EXPORT(TARGETS atsci_viterbi_gen APPEND FILE ${EXPORT_FILE})
+ENDIF()
+
+
+SET(atsci_viterbi_mux_cc ${CMAKE_CURRENT_BINARY_DIR}/atsci_viterbi_mux.cc)
+
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${atsci_viterbi_mux_cc}
+ DEPENDS atsci_viterbi_gen
+ COMMAND atsci_viterbi_gen -o ${atsci_viterbi_mux_cc}
+)
+
+########################################################################
+# Setup library
+########################################################################
+LIST(APPEND gr_atsc_sources
+ ${atsci_viterbi_mux_cc}
+ atsc_derandomizer.cc
+ atsc_randomizer.cc
+ atsc_rs_decoder.cc
+ atsc_rs_encoder.cc
+ atsc_interleaver.cc
+ atsc_deinterleaver.cc
+ atsc_trellis_encoder.cc
+ atsc_viterbi_decoder.cc
+ atsc_ds_to_softds.cc
+ atsc_field_sync_mux.cc
+ atsc_field_sync_demux.cc
+ atsc_equalizer.cc
+ atsc_fs_checker.cc
+ atsc_bit_timing_loop.cc
+ atsc_fpll.cc
+ atsc_depad.cc
+ atsc_pad.cc
+ atsci_basic_trellis_encoder.cc
+ atsci_data_interleaver.cc
+ atsci_equalizer.cc
+ atsci_equalizer_lms.cc
+ atsci_equalizer_lms2.cc
+ atsci_equalizer_nop.cc
+ atsci_fake_single_viterbi.cc
+ atsci_fs_checker.cc
+ atsci_fs_checker_naive.cc
+ atsci_fs_correlator.cc
+ atsci_fs_correlator_naive.cc
+ atsci_single_viterbi.cc
+ atsci_sssr.cc
+ atsci_pnXXX.cc
+ atsci_randomizer.cc
+ atsci_reed_solomon.cc
+ atsci_sliding_correlator.cc
+ atsci_trellis_encoder.cc
+ atsci_viterbi_decoder.cc
+ create_atsci_equalizer.cc
+ create_atsci_fs_checker.cc
+ create_atsci_fs_correlator.cc
+ plinfo.cc
+)
+
+LIST(APPEND atsc_libs
+ gnuradio-core
+ ${Boost_LIBRARIES}
+)
+
+ADD_LIBRARY(gnuradio-atsc SHARED ${gr_atsc_sources})
+TARGET_LINK_LIBRARIES(gnuradio-atsc ${atsc_libs})
+SET_TARGET_PROPERTIES(gnuradio-atsc PROPERTIES DEFINE_SYMBOL "gnuradio_atsc_EXPORTS")
+SET_TARGET_PROPERTIES(gnuradio-atsc PROPERTIES SOVERSION ${LIBVER})
+
+INSTALL(TARGETS gnuradio-atsc
+ LIBRARY DESTINATION ${GR_LIBRARY_DIR} COMPONENT "atsc_runtime" # .so/.dylib file
+ ARCHIVE DESTINATION ${GR_LIBRARY_DIR} COMPONENT "atsc_devel" # .lib file
+ RUNTIME DESTINATION ${GR_RUNTIME_DIR} COMPONENT "atsc_runtime" # .dll file
+)
+
+########################################################################
+# Build and register unit test
+########################################################################
+IF(ENABLE_TESTING)
+
+INCLUDE_DIRECTORIES(${CPPUNIT_INCLUDE_DIRS})
+LINK_DIRECTORIES(${CPPUNIT_LIBRARY_DIRS})
+
+LIST(APPEND test_atsci_sources
+ qa_atsci_basic_trellis_encoder.cc
+ qa_atsci_data_interleaver.cc
+ qa_atsci_equalizer_nop.cc
+ qa_atsci_fake_single_viterbi.cc
+ qa_atsci_fs_correlator.cc
+ qa_atsci_single_viterbi.cc
+ qa_atsci_randomizer.cc
+ qa_atsci_reed_solomon.cc
+ qa_atsci_sliding_correlator.cc
+ qa_atsci_trellis_encoder.cc
+ qa_atsci_viterbi_decoder.cc
+ qa_convolutional_interleaver.cc
+ qa_atsci.cc
+ qa_interleaver_fifo.cc
+)
+
+INCLUDE(GrTest)
+SET(GR_TEST_TARGET_DEPS gnuradio-atsc gnuradio-core gruel)
+ADD_EXECUTABLE(test_atsci ${test_atsci_sources} test_atsci.cc)
+TARGET_LINK_LIBRARIES(test_atsci gnuradio-atsc gnuradio-core ${CPPUNIT_LIBRARIES})
+GR_ADD_TEST(atsci-test test_atsci)
+
+ENDIF(ENABLE_TESTING)
+
+########################################################################
+# Install public header files
+########################################################################
+INSTALL(FILES
+ atsc_api.h
+ atsc_consts.h
+ atsc_derandomizer.h
+ atsc_randomizer.h
+ atsc_rs_decoder.h
+ atsc_rs_encoder.h
+ atsc_interleaver.h
+ atsc_deinterleaver.h
+ atsc_trellis_encoder.h
+ atsc_viterbi_decoder.h
+ atsc_ds_to_softds.h
+ atsc_field_sync_mux.h
+ atsc_field_sync_demux.h
+ atsc_equalizer.h
+ atsc_fs_checker.h
+ atsc_bit_timing_loop.h
+ atsc_fpll.h
+ atsc_depad.h
+ atsc_pad.h
+ atsc_types.h
+ atsci_basic_trellis_encoder.h
+ atsci_data_interleaver.h
+ atsci_diag_output.h
+ atsci_equalizer.h
+ atsci_equalizer_lms.h
+ atsci_equalizer_lms2.h
+ atsci_equalizer_nop.h
+ atsci_exp2_lp.h
+ atsci_fake_single_viterbi.h
+ atsci_fs_checker.h
+ atsci_fs_checker_naive.h
+ atsci_fs_correlator.h
+ atsci_fs_correlator_naive.h
+ atsci_pnXXX.h
+ atsci_randomizer.h
+ atsci_reed_solomon.h
+ atsci_root_raised_cosine.h
+ atsci_root_raised_cosine_bandpass.h
+ atsci_single_viterbi.h
+ atsci_slicer_agc.h
+ atsci_sliding_correlator.h
+ atsci_sssr.h
+ atsci_syminfo.h
+ atsci_sync_tag.h
+ atsci_trellis_encoder.h
+ atsci_viterbi_decoder.h
+ atsci_vsbtx_lp.h
+ convolutional_interleaver.h
+ create_atsci_equalizer.h
+ create_atsci_fs_checker.h
+ create_atsci_fs_correlator.h
+ fpll_btloop_coupling.h
+ interleaver_fifo.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "atsc_devel"
+)
+
+########################################################################
+# Setup swig generation
+########################################################################
+IF(ENABLE_PYTHON)
+INCLUDE(GrPython)
+INCLUDE(GrSwig)
+
+SET(GR_SWIG_INCLUDE_DIRS
+ ${GR_ATSC_INCLUDE_DIRS}
+ ${GNURADIO_CORE_SWIG_INCLUDE_DIRS}
+)
+
+SET(GR_SWIG_LIBRARIES gnuradio-atsc)
+
+GR_SWIG_MAKE(atsc atsc.i)
+
+GR_SWIG_INSTALL(
+ TARGETS atsc
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio
+ COMPONENT "atsc_python"
+)
+
+INSTALL(
+ FILES atsc.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "atsc_swig"
+)
+
+ENDIF(ENABLE_PYTHON)
diff --git a/gr-atsc/src/lib/Makefile.am b/gr-atsc/src/lib/Makefile.am
index b1bda90ff..3cbdc8a1b 100644
--- a/gr-atsc/src/lib/Makefile.am
+++ b/gr-atsc/src/lib/Makefile.am
@@ -123,6 +123,7 @@ libgnuradio_atsc_qa_la_LDFLAGS = \
# These headers get installed in ${prefix}/include/gnuradio
grinclude_HEADERS = \
+ atsc_api.h \
atsc_consts.h \
atsc_derandomizer.h \
atsc_randomizer.h \
diff --git a/gr-atsc/src/lib/atsc_api.h b/gr-atsc/src/lib/atsc_api.h
new file mode 100644
index 000000000..5add37762
--- /dev/null
+++ b/gr-atsc/src/lib/atsc_api.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2011 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.
+ */
+
+#ifndef INCLUDED_ATSC_API_H
+#define INCLUDED_ATSC_API_H
+
+#include <gruel/attributes.h>
+
+#ifdef gnuradio_atsc_EXPORTS
+# define ATSC_API __GR_ATTR_EXPORT
+#else
+# define ATSC_API __GR_ATTR_IMPORT
+#endif
+
+#endif /* INCLUDED_ATSC_API_H */
diff --git a/gr-atsc/src/lib/atsc_bit_timing_loop.h b/gr-atsc/src/lib/atsc_bit_timing_loop.h
index c9b63fee9..2adff26b8 100644
--- a/gr-atsc/src/lib/atsc_bit_timing_loop.h
+++ b/gr-atsc/src/lib/atsc_bit_timing_loop.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_ATSC_BIT_TIMING_LOOP_H
#define INCLUDED_ATSC_BIT_TIMING_LOOP_H
+#include <atsc_api.h>
#include <cstdio>
#include <gr_block.h>
#include <atsci_diag_output.h>
@@ -31,7 +32,7 @@
class atsc_bit_timing_loop;
typedef boost::shared_ptr<atsc_bit_timing_loop> atsc_bit_timing_loop_sptr;
-atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
+ATSC_API atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
/*!
* \brief ATSC BitTimingLoop3
@@ -40,9 +41,9 @@ atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
* This class accepts a single real input and produces two outputs,
* the raw symbol (float) and the tag (atsc_syminfo)
*/
-class atsc_bit_timing_loop : public gr_block
+class ATSC_API atsc_bit_timing_loop : public gr_block
{
- friend atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
+ friend ATSC_API atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
atsc_bit_timing_loop();
diff --git a/gr-atsc/src/lib/atsc_deinterleaver.h b/gr-atsc/src/lib/atsc_deinterleaver.h
index 0920818a4..8cab62b62 100644
--- a/gr-atsc/src/lib/atsc_deinterleaver.h
+++ b/gr-atsc/src/lib/atsc_deinterleaver.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_DEINTERLEAVER_H
#define INCLUDED_ATSC_DEINTERLEAVER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_data_interleaver.h>
class atsc_deinterleaver;
typedef boost::shared_ptr<atsc_deinterleaver> atsc_deinterleaver_sptr;
-atsc_deinterleaver_sptr atsc_make_deinterleaver();
+ATSC_API atsc_deinterleaver_sptr atsc_make_deinterleaver();
/*!
* \brief Deinterleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)
@@ -36,9 +37,9 @@ atsc_deinterleaver_sptr atsc_make_deinterleaver();
*
* input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded
*/
-class atsc_deinterleaver : public gr_sync_block
+class ATSC_API atsc_deinterleaver : public gr_sync_block
{
- friend atsc_deinterleaver_sptr atsc_make_deinterleaver();
+ friend ATSC_API atsc_deinterleaver_sptr atsc_make_deinterleaver();
atsci_data_deinterleaver d_deinterleaver;
diff --git a/gr-atsc/src/lib/atsc_depad.h b/gr-atsc/src/lib/atsc_depad.h
index 58dfdaf62..b514efe28 100644
--- a/gr-atsc/src/lib/atsc_depad.h
+++ b/gr-atsc/src/lib/atsc_depad.h
@@ -22,12 +22,13 @@
#ifndef INCLUDED_ATSC_DEPAD_H
#define INCLUDED_ATSC_DEPAD_H
+#include <atsc_api.h>
#include <gr_sync_interpolator.h>
class atsc_depad;
typedef boost::shared_ptr<atsc_depad> atsc_depad_sptr;
-atsc_depad_sptr atsc_make_depad();
+ATSC_API atsc_depad_sptr atsc_make_depad();
/*!
* \brief depad mpeg ts packets from 256 byte atsc_mpeg_packet to 188 byte char
@@ -35,9 +36,9 @@ atsc_depad_sptr atsc_make_depad();
*
* input: atsc_mpeg_packet; output: unsigned char
*/
-class atsc_depad : public gr_sync_interpolator
+class ATSC_API atsc_depad : public gr_sync_interpolator
{
- friend atsc_depad_sptr atsc_make_depad();
+ friend ATSC_API atsc_depad_sptr atsc_make_depad();
atsc_depad();
diff --git a/gr-atsc/src/lib/atsc_derandomizer.h b/gr-atsc/src/lib/atsc_derandomizer.h
index a72efbd4e..54254d0c5 100644
--- a/gr-atsc/src/lib/atsc_derandomizer.h
+++ b/gr-atsc/src/lib/atsc_derandomizer.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_DERANDOMIZER_H
#define INCLUDED_ATSC_DERANDOMIZER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_randomizer.h>
class atsc_derandomizer;
typedef boost::shared_ptr<atsc_derandomizer> atsc_derandomizer_sptr;
-atsc_derandomizer_sptr atsc_make_derandomizer();
+ATSC_API atsc_derandomizer_sptr atsc_make_derandomizer();
/*!
* \brief "dewhiten" incoming mpeg transport stream packets
@@ -36,9 +37,9 @@ atsc_derandomizer_sptr atsc_make_derandomizer();
*
* input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet;
*/
-class atsc_derandomizer : public gr_sync_block
+class ATSC_API atsc_derandomizer : public gr_sync_block
{
- friend atsc_derandomizer_sptr atsc_make_derandomizer();
+ friend ATSC_API atsc_derandomizer_sptr atsc_make_derandomizer();
atsci_randomizer d_rand;
diff --git a/gr-atsc/src/lib/atsc_ds_to_softds.h b/gr-atsc/src/lib/atsc_ds_to_softds.h
index f8623e3b0..1021eed6f 100644
--- a/gr-atsc/src/lib/atsc_ds_to_softds.h
+++ b/gr-atsc/src/lib/atsc_ds_to_softds.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_DS_TO_SOFTDS_H
#define INCLUDED_ATSC_DS_TO_SOFTDS_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsc_types.h>
class atsc_ds_to_softds;
typedef boost::shared_ptr<atsc_ds_to_softds> atsc_ds_to_softds_sptr;
-atsc_ds_to_softds_sptr atsc_make_ds_to_softds();
+ATSC_API atsc_ds_to_softds_sptr atsc_make_ds_to_softds();
/*!
* \brief Debug glue routine (atsc_data_segment --> atsc_soft_data_segment)
@@ -36,9 +37,9 @@ atsc_ds_to_softds_sptr atsc_make_ds_to_softds();
*
* input: atsc_data_segment; output: atsc_soft_data_segment
*/
-class atsc_ds_to_softds : public gr_sync_block
+class ATSC_API atsc_ds_to_softds : public gr_sync_block
{
- friend atsc_ds_to_softds_sptr atsc_make_ds_to_softds();
+ friend ATSC_API atsc_ds_to_softds_sptr atsc_make_ds_to_softds();
atsc_ds_to_softds();
diff --git a/gr-atsc/src/lib/atsc_equalizer.h b/gr-atsc/src/lib/atsc_equalizer.h
index 52b5cd38d..773cd1a04 100644
--- a/gr-atsc/src/lib/atsc_equalizer.h
+++ b/gr-atsc/src/lib/atsc_equalizer.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_EQUALIZER_H
#define INCLUDED_ATSC_EQUALIZER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_equalizer.h>
class atsc_equalizer;
typedef boost::shared_ptr<atsc_equalizer> atsc_equalizer_sptr;
-atsc_equalizer_sptr atsc_make_equalizer();
+atsc_equalizer_sptr ATSC_API atsc_make_equalizer();
/*!
* \brief ATSC equalizer (float,syminfo --> float,syminfo)
@@ -37,9 +38,9 @@ atsc_equalizer_sptr atsc_make_equalizer();
* first inputs are data samples, second inputs are tags.
* first outputs are equalized data samples, second outputs are tags.
*/
-class atsc_equalizer : public gr_sync_block
+class ATSC_API atsc_equalizer : public gr_sync_block
{
- friend atsc_equalizer_sptr atsc_make_equalizer();
+ friend ATSC_API atsc_equalizer_sptr atsc_make_equalizer();
atsc_equalizer();
diff --git a/gr-atsc/src/lib/atsc_field_sync_demux.h b/gr-atsc/src/lib/atsc_field_sync_demux.h
index 01cc33f87..0e3a5003d 100644
--- a/gr-atsc/src/lib/atsc_field_sync_demux.h
+++ b/gr-atsc/src/lib/atsc_field_sync_demux.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_FIELD_SYNC_DEMUX_H
#define INCLUDED_ATSC_FIELD_SYNC_DEMUX_H
+#include <atsc_api.h>
#include <gr_block.h>
#include <atsc_types.h>
class atsc_field_sync_demux;
typedef boost::shared_ptr<atsc_field_sync_demux> atsc_field_sync_demux_sptr;
-atsc_field_sync_demux_sptr atsc_make_field_sync_demux();
+ATSC_API atsc_field_sync_demux_sptr atsc_make_field_sync_demux();
/*!
* \brief ATSC Field Sync Demux
@@ -37,9 +38,9 @@ atsc_field_sync_demux_sptr atsc_make_field_sync_demux();
* \ingroup atsc
*
*/
-class atsc_field_sync_demux : public gr_block
+class ATSC_API atsc_field_sync_demux : public gr_block
{
- friend atsc_field_sync_demux_sptr atsc_make_field_sync_demux();
+ friend ATSC_API atsc_field_sync_demux_sptr atsc_make_field_sync_demux();
atsc_field_sync_demux();
diff --git a/gr-atsc/src/lib/atsc_field_sync_mux.h b/gr-atsc/src/lib/atsc_field_sync_mux.h
index 189341cb9..d08a99b5b 100644
--- a/gr-atsc/src/lib/atsc_field_sync_mux.h
+++ b/gr-atsc/src/lib/atsc_field_sync_mux.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_FIELD_SYNC_MUX_H
#define INCLUDED_ATSC_FIELD_SYNC_MUX_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsc_types.h>
class atsc_field_sync_mux;
typedef boost::shared_ptr<atsc_field_sync_mux> atsc_field_sync_mux_sptr;
-atsc_field_sync_mux_sptr atsc_make_field_sync_mux();
+ATSC_API atsc_field_sync_mux_sptr atsc_make_field_sync_mux();
/*!
* \brief Insert ATSC Field Syncs as required (atsc_data_segment --> atsc_data_segment)
@@ -36,9 +37,9 @@ atsc_field_sync_mux_sptr atsc_make_field_sync_mux();
*
* input: atsc_data_segment; output: atsc_data_segment
*/
-class atsc_field_sync_mux : public gr_sync_block
+class ATSC_API atsc_field_sync_mux : public gr_sync_block
{
- friend atsc_field_sync_mux_sptr atsc_make_field_sync_mux();
+ friend ATSC_API atsc_field_sync_mux_sptr atsc_make_field_sync_mux();
atsc_field_sync_mux();
diff --git a/gr-atsc/src/lib/atsc_fpll.h b/gr-atsc/src/lib/atsc_fpll.h
index 1ed41d865..dac3cda86 100644
--- a/gr-atsc/src/lib/atsc_fpll.h
+++ b/gr-atsc/src/lib/atsc_fpll.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_ATSC_FPLL_H
#define INCLUDED_ATSC_FPLL_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <gr_nco.h>
#include <gr_single_pole_iir.h>
@@ -32,7 +33,7 @@
class atsc_fpll;
typedef boost::shared_ptr<atsc_fpll> atsc_fpll_sptr;
-atsc_fpll_sptr atsc_make_fpll();
+ATSC_API atsc_fpll_sptr atsc_make_fpll();
/*!
* \brief ATSC FPLL (2nd Version)
@@ -45,9 +46,9 @@ atsc_fpll_sptr atsc_make_fpll();
* This class accepts a single real input and produces a single real output
*/
-class atsc_fpll : public gr_sync_block
+class ATSC_API atsc_fpll : public gr_sync_block
{
- friend atsc_fpll_sptr atsc_make_fpll();
+ friend ATSC_API atsc_fpll_sptr atsc_make_fpll();
atsc_fpll();
diff --git a/gr-atsc/src/lib/atsc_fs_checker.h b/gr-atsc/src/lib/atsc_fs_checker.h
index e7271af22..03e50ee9d 100644
--- a/gr-atsc/src/lib/atsc_fs_checker.h
+++ b/gr-atsc/src/lib/atsc_fs_checker.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_FS_CHECKER_H
#define INCLUDED_ATSC_FS_CHECKER_H
+#include <atsc_api.h>
#include <atsci_fs_checker.h>
#include <gr_sync_block.h>
class atsc_fs_checker;
typedef boost::shared_ptr<atsc_fs_checker> atsc_fs_checker_sptr;
-atsc_fs_checker_sptr atsc_make_fs_checker();
+ATSC_API atsc_fs_checker_sptr atsc_make_fs_checker();
/*!
* \brief ATSC field sync checker (float,syminfo --> float,syminfo)
@@ -38,7 +39,7 @@ atsc_fs_checker_sptr atsc_make_fs_checker();
* second output is set of tags, one-for-one with first output.
*/
-class atsc_fs_checker : public gr_sync_block
+class ATSC_API atsc_fs_checker : public gr_sync_block
{
friend atsc_fs_checker_sptr atsc_make_fs_checker();
diff --git a/gr-atsc/src/lib/atsc_interleaver.h b/gr-atsc/src/lib/atsc_interleaver.h
index 5f82b7596..00cd54c11 100644
--- a/gr-atsc/src/lib/atsc_interleaver.h
+++ b/gr-atsc/src/lib/atsc_interleaver.h
@@ -22,22 +22,23 @@
#ifndef INCLUDED_ATSC_INTERLEAVER_H
#define INCLUDED_ATSC_INTERLEAVER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_data_interleaver.h>
class atsc_interleaver;
typedef boost::shared_ptr<atsc_interleaver> atsc_interleaver_sptr;
-atsc_interleaver_sptr atsc_make_interleaver();
+ATSC_API atsc_interleaver_sptr atsc_make_interleaver();
/*! \brief Interleave RS encoded ATSC data ( atsc_mpeg_packet_rs_encoded --> atsc_mpeg_packet_rs_encoded)*
* \ingroup atsc
*
* input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_rs_encoded
*/
-class atsc_interleaver : public gr_sync_block
+class ATSC_API atsc_interleaver : public gr_sync_block
{
- friend atsc_interleaver_sptr atsc_make_interleaver();
+ friend ATSC_API atsc_interleaver_sptr atsc_make_interleaver();
atsci_data_interleaver d_interleaver;
diff --git a/gr-atsc/src/lib/atsc_pad.h b/gr-atsc/src/lib/atsc_pad.h
index e7e6874fb..866c72552 100644
--- a/gr-atsc/src/lib/atsc_pad.h
+++ b/gr-atsc/src/lib/atsc_pad.h
@@ -22,12 +22,13 @@
#ifndef INCLUDED_ATSC_PAD_H
#define INCLUDED_ATSC_PAD_H
+#include <atsc_api.h>
#include <gr_sync_decimator.h>
class atsc_pad;
typedef boost::shared_ptr<atsc_pad> atsc_pad_sptr;
-atsc_pad_sptr atsc_make_pad();
+ATSC_API atsc_pad_sptr atsc_make_pad();
/*!
* \brief pad mpeg ts packets from 188 byte char to
@@ -36,9 +37,9 @@ atsc_pad_sptr atsc_make_pad();
*
* input: unsigned char; output: atsc_mpeg_packet
*/
-class atsc_pad : public gr_sync_decimator
+class ATSC_API atsc_pad : public gr_sync_decimator
{
- friend atsc_pad_sptr atsc_make_pad();
+ friend ATSC_API atsc_pad_sptr atsc_make_pad();
atsc_pad();
diff --git a/gr-atsc/src/lib/atsc_randomizer.h b/gr-atsc/src/lib/atsc_randomizer.h
index 6617bcc28..1178f06c0 100644
--- a/gr-atsc/src/lib/atsc_randomizer.h
+++ b/gr-atsc/src/lib/atsc_randomizer.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_RANDOMIZER_H
#define INCLUDED_ATSC_RANDOMIZER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_randomizer.h>
class atsc_randomizer;
typedef boost::shared_ptr<atsc_randomizer> atsc_randomizer_sptr;
-atsc_randomizer_sptr atsc_make_randomizer();
+ATSC_API atsc_randomizer_sptr atsc_make_randomizer();
/*!
* \brief "Whiten" incoming mpeg transport stream packets
@@ -36,9 +37,9 @@ atsc_randomizer_sptr atsc_make_randomizer();
*
* input: atsc_mpeg_packet; output: atsc_mpeg_packet_no_sync
*/
-class atsc_randomizer : public gr_sync_block
+class ATSC_API atsc_randomizer : public gr_sync_block
{
- friend atsc_randomizer_sptr atsc_make_randomizer();
+ friend ATSC_API atsc_randomizer_sptr atsc_make_randomizer();
atsci_randomizer d_rand;
bool d_field2; // user to init plinfo in output
diff --git a/gr-atsc/src/lib/atsc_rs_decoder.h b/gr-atsc/src/lib/atsc_rs_decoder.h
index 00dea1603..4b8d6c1b4 100644
--- a/gr-atsc/src/lib/atsc_rs_decoder.h
+++ b/gr-atsc/src/lib/atsc_rs_decoder.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_RS_DECODER_H
#define INCLUDED_ATSC_RS_DECODER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_reed_solomon.h>
class atsc_rs_decoder;
typedef boost::shared_ptr<atsc_rs_decoder> atsc_rs_decoder_sptr;
-atsc_rs_decoder_sptr atsc_make_rs_decoder();
+ATSC_API atsc_rs_decoder_sptr atsc_make_rs_decoder();
/*!
* \brief Reed-Solomon decoder for ATSC
@@ -36,9 +37,9 @@ atsc_rs_decoder_sptr atsc_make_rs_decoder();
*
* input: atsc_mpeg_packet_rs_encoded; output: atsc_mpeg_packet_no_sync
*/
-class atsc_rs_decoder : public gr_sync_block
+class ATSC_API atsc_rs_decoder : public gr_sync_block
{
- friend atsc_rs_decoder_sptr atsc_make_rs_decoder();
+ friend ATSC_API atsc_rs_decoder_sptr atsc_make_rs_decoder();
atsci_reed_solomon d_rs_decoder;
diff --git a/gr-atsc/src/lib/atsc_rs_encoder.h b/gr-atsc/src/lib/atsc_rs_encoder.h
index 312b2e1cb..d9812678a 100644
--- a/gr-atsc/src/lib/atsc_rs_encoder.h
+++ b/gr-atsc/src/lib/atsc_rs_encoder.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_RS_ENCODER_H
#define INCLUDED_ATSC_RS_ENCODER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_reed_solomon.h>
class atsc_rs_encoder;
typedef boost::shared_ptr<atsc_rs_encoder> atsc_rs_encoder_sptr;
-atsc_rs_encoder_sptr atsc_make_rs_encoder();
+ATSC_API atsc_rs_encoder_sptr atsc_make_rs_encoder();
/*!
* \brief Reed-Solomon encoder for ATSC
@@ -36,9 +37,9 @@ atsc_rs_encoder_sptr atsc_make_rs_encoder();
*
* input: atsc_mpeg_packet_no_sync; output: atsc_mpeg_packet_rs_encoded
*/
-class atsc_rs_encoder : public gr_sync_block
+class ATSC_API atsc_rs_encoder : public gr_sync_block
{
- friend atsc_rs_encoder_sptr atsc_make_rs_encoder();
+ friend ATSC_API atsc_rs_encoder_sptr atsc_make_rs_encoder();
atsci_reed_solomon d_rs_encoder;
diff --git a/gr-atsc/src/lib/atsc_trellis_encoder.h b/gr-atsc/src/lib/atsc_trellis_encoder.h
index 5c93daf99..c84816118 100644
--- a/gr-atsc/src/lib/atsc_trellis_encoder.h
+++ b/gr-atsc/src/lib/atsc_trellis_encoder.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_TRELLIS_ENCODER_H
#define INCLUDED_ATSC_TRELLIS_ENCODER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_trellis_encoder.h>
class atsc_trellis_encoder;
typedef boost::shared_ptr<atsc_trellis_encoder> atsc_trellis_encoder_sptr;
-atsc_trellis_encoder_sptr atsc_make_trellis_encoder();
+ATSC_API atsc_trellis_encoder_sptr atsc_make_trellis_encoder();
/*!
* \brief ATSC 12-way interleaved trellis encoder (atsc_mpeg_packet_rs_encoded --> atsc_data_segment)
@@ -36,9 +37,9 @@ atsc_trellis_encoder_sptr atsc_make_trellis_encoder();
*
* input: atsc_mpeg_packet_rs_encoded; output: atsc_data_segment
*/
-class atsc_trellis_encoder : public gr_sync_block
+class ATSC_API atsc_trellis_encoder : public gr_sync_block
{
- friend atsc_trellis_encoder_sptr atsc_make_trellis_encoder();
+ friend ATSC_API atsc_trellis_encoder_sptr atsc_make_trellis_encoder();
atsci_trellis_encoder d_trellis_encoder;
diff --git a/gr-atsc/src/lib/atsc_viterbi_decoder.h b/gr-atsc/src/lib/atsc_viterbi_decoder.h
index 511df0dff..1a43b4952 100644
--- a/gr-atsc/src/lib/atsc_viterbi_decoder.h
+++ b/gr-atsc/src/lib/atsc_viterbi_decoder.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_ATSC_VITERBI_DECODER_H
#define INCLUDED_ATSC_VITERBI_DECODER_H
+#include <atsc_api.h>
#include <gr_sync_block.h>
#include <atsci_viterbi_decoder.h>
class atsc_viterbi_decoder;
typedef boost::shared_ptr<atsc_viterbi_decoder> atsc_viterbi_decoder_sptr;
-atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder();
+ATSC_API atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder();
/*!
* \brief ATSC 12-way interleaved viterbi decoder (atsc_soft_data_segment --> atsc_mpeg_packet_rs_encoded)
@@ -36,9 +37,9 @@ atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder();
*
* input: atsc_soft_data_segment; output: atsc_mpeg_packet_rs_encoded
*/
-class atsc_viterbi_decoder : public gr_sync_block
+class ATSC_API atsc_viterbi_decoder : public gr_sync_block
{
- friend atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder();
+ friend ATSC_API atsc_viterbi_decoder_sptr atsc_make_viterbi_decoder();
atsci_viterbi_decoder d_viterbi_decoder;
diff --git a/gr-atsc/src/lib/atsci_basic_trellis_encoder.h b/gr-atsc/src/lib/atsci_basic_trellis_encoder.h
index 1e4073144..c17e5653e 100644
--- a/gr-atsc/src/lib/atsci_basic_trellis_encoder.h
+++ b/gr-atsc/src/lib/atsci_basic_trellis_encoder.h
@@ -22,6 +22,7 @@
#ifndef _ATSC_BASIC_TRELLIS_ENCODER_H_
#define _ATSC_BASIC_TRELLIS_ENCODER_H_
+#include <atsc_api.h>
#include <assert.h>
/*!
@@ -36,7 +37,7 @@
* filter is not supported.
*/
-class atsci_basic_trellis_encoder {
+class ATSC_API atsci_basic_trellis_encoder {
private:
int state; // two bit state;
diff --git a/gr-atsc/src/lib/atsci_data_interleaver.h b/gr-atsc/src/lib/atsci_data_interleaver.h
index ab4b64d4f..e7f982db4 100644
--- a/gr-atsc/src/lib/atsci_data_interleaver.h
+++ b/gr-atsc/src/lib/atsci_data_interleaver.h
@@ -23,13 +23,14 @@
#ifndef _ATSC_DATA_INTERLEAVER_H_
#define _ATSC_DATA_INTERLEAVER_H_
+#include <atsc_api.h>
#include <atsc_types.h>
#include <convolutional_interleaver.h>
/*!
* \brief atsc convolutional data interleaver
*/
-class atsci_data_interleaver : public convolutional_interleaver<unsigned char> {
+class ATSC_API atsci_data_interleaver : public convolutional_interleaver<unsigned char> {
public:
atsci_data_interleaver () : convolutional_interleaver<unsigned char>(true, 52, 4) {}
@@ -40,7 +41,7 @@ class atsci_data_interleaver : public convolutional_interleaver<unsigned char> {
/*!
* \brief atsc convolutional data deinterleaver
*/
-class atsci_data_deinterleaver : public convolutional_interleaver<unsigned char> {
+class ATSC_API atsci_data_deinterleaver : public convolutional_interleaver<unsigned char> {
public:
atsci_data_deinterleaver () :
convolutional_interleaver<unsigned char>(false, 52, 4), alignment_fifo (156) {}
diff --git a/gr-atsc/src/lib/atsci_equalizer.h b/gr-atsc/src/lib/atsci_equalizer.h
index 2120ea90a..853c52689 100644
--- a/gr-atsc/src/lib/atsci_equalizer.h
+++ b/gr-atsc/src/lib/atsci_equalizer.h
@@ -23,12 +23,13 @@
#ifndef _ATSC_EQUALIZER_H_
#define _ATSC_EQUALIZER_H_
+#include <atsc_api.h>
#include <atsci_syminfo.h>
/*!
* \brief abstract base class for ATSC equalizer
*/
-class atsci_equalizer {
+class ATSC_API atsci_equalizer {
private:
diff --git a/gr-atsc/src/lib/atsci_equalizer_lms.h b/gr-atsc/src/lib/atsci_equalizer_lms.h
index 1626da234..8a39255c6 100644
--- a/gr-atsc/src/lib/atsci_equalizer_lms.h
+++ b/gr-atsc/src/lib/atsci_equalizer_lms.h
@@ -23,11 +23,12 @@
#ifndef _ATSC_EQUALIZER_LMS_H_
#define _ATSC_EQUALIZER_LMS_H_
+#include <atsc_api.h>
#include <atsci_equalizer.h>
#include <vector>
#include <stdio.h>
-class atsci_equalizer_lms : public atsci_equalizer
+class ATSC_API atsci_equalizer_lms : public atsci_equalizer
{
public:
atsci_equalizer_lms ();
diff --git a/gr-atsc/src/lib/atsci_equalizer_lms2.h b/gr-atsc/src/lib/atsci_equalizer_lms2.h
index 45b25b73f..7c60fc174 100644
--- a/gr-atsc/src/lib/atsci_equalizer_lms2.h
+++ b/gr-atsc/src/lib/atsci_equalizer_lms2.h
@@ -23,11 +23,12 @@
#ifndef _ATSC_EQUALIZER_LMS2_H_
#define _ATSC_EQUALIZER_LMS2_H_
+#include <atsc_api.h>
#include <atsci_equalizer.h>
#include <vector>
#include <stdio.h>
-class atsci_equalizer_lms2 : public atsci_equalizer
+class ATSC_API atsci_equalizer_lms2 : public atsci_equalizer
{
public:
atsci_equalizer_lms2 ();
diff --git a/gr-atsc/src/lib/atsci_equalizer_nop.h b/gr-atsc/src/lib/atsci_equalizer_nop.h
index 399f2da46..6d842601f 100644
--- a/gr-atsc/src/lib/atsci_equalizer_nop.h
+++ b/gr-atsc/src/lib/atsci_equalizer_nop.h
@@ -23,9 +23,10 @@
#ifndef _ATSC_EQUALIZER_NOP_H_
#define _ATSC_EQUALIZER_NOP_H_
+#include <atsc_api.h>
#include <atsci_equalizer.h>
-class atsci_equalizer_nop : public atsci_equalizer
+class ATSC_API atsci_equalizer_nop : public atsci_equalizer
{
private:
float scale (float input) { return input; }
diff --git a/gr-atsc/src/lib/atsci_exp2_lp.h b/gr-atsc/src/lib/atsci_exp2_lp.h
index cf66843c2..12d08fa6d 100644
--- a/gr-atsc/src/lib/atsci_exp2_lp.h
+++ b/gr-atsc/src/lib/atsci_exp2_lp.h
@@ -23,9 +23,10 @@
#ifndef _ATSC_EXP2_LP_H_
#define _ATSC_EXP2_LP_H_
+#include <atsc_api.h>
#include <gr_fir_builder.h>
-class atsci_exp2_lp : public gr_fir_builder
+class ATSC_API atsci_exp2_lp : public gr_fir_builder
{
public:
virtual std::vector<float> taps (double sampling_freq);
diff --git a/gr-atsc/src/lib/atsci_fake_single_viterbi.h b/gr-atsc/src/lib/atsci_fake_single_viterbi.h
index 1318256ec..b4cb6e3b3 100644
--- a/gr-atsc/src/lib/atsci_fake_single_viterbi.h
+++ b/gr-atsc/src/lib/atsci_fake_single_viterbi.h
@@ -23,10 +23,12 @@
#ifndef _ATSCFAKESINGLEVITERBI_H_
#define _ATSCFAKESINGLEVITERBI_H_
+#include <atsc_api.h>
+
/*!
* \brief single channel viterbi decoder
*/
-class atsci_fake_single_viterbi
+class ATSC_API atsci_fake_single_viterbi
{
public:
diff --git a/gr-atsc/src/lib/atsci_fs_checker.h b/gr-atsc/src/lib/atsci_fs_checker.h
index 76b754904..cdcd541e8 100644
--- a/gr-atsc/src/lib/atsci_fs_checker.h
+++ b/gr-atsc/src/lib/atsci_fs_checker.h
@@ -22,6 +22,7 @@
#ifndef _ATSC_FS_CHECKER_H_
#define _ATSC_FS_CHECKER_H_
+#include <atsc_api.h>
#include <atsci_syminfo.h>
/*!
@@ -47,7 +48,7 @@
* occur every 832 samples assuming everything is working.
*/
-class atsci_fs_checker {
+class ATSC_API atsci_fs_checker {
public:
diff --git a/gr-atsc/src/lib/atsci_fs_checker_naive.h b/gr-atsc/src/lib/atsci_fs_checker_naive.h
index 951820492..3ef507111 100644
--- a/gr-atsc/src/lib/atsci_fs_checker_naive.h
+++ b/gr-atsc/src/lib/atsci_fs_checker_naive.h
@@ -23,12 +23,13 @@
#ifndef _ATSC_FS_CHECKER_NAIVE_H_
#define _ATSC_FS_CHECKER_NAIVE_H_
+#include <atsc_api.h>
#include <atsci_fs_checker.h>
/*!
* \brief Naive concrete implementation of field sync checker
*/
-class atsci_fs_checker_naive : public atsci_fs_checker {
+class ATSC_API atsci_fs_checker_naive : public atsci_fs_checker {
private:
static const int SRSIZE = 1024; // must be power of two
diff --git a/gr-atsc/src/lib/atsci_fs_correlator.h b/gr-atsc/src/lib/atsci_fs_correlator.h
index f7915364a..a6db7f518 100644
--- a/gr-atsc/src/lib/atsci_fs_correlator.h
+++ b/gr-atsc/src/lib/atsci_fs_correlator.h
@@ -22,6 +22,8 @@
#ifndef _ATSC_FS_CORRELATOR_H_
#define _ATSC_FS_CORRELATOR_H_
+#include <atsc_api.h>
+
/*!
* \brief abstract base class for ATSC field sync correlator
*
@@ -42,7 +44,7 @@
* occur every 832 samples assuming everything is working.
*/
-class atsci_fs_correlator {
+class ATSC_API atsci_fs_correlator {
public:
diff --git a/gr-atsc/src/lib/atsci_fs_correlator_naive.h b/gr-atsc/src/lib/atsci_fs_correlator_naive.h
index c05cff0f7..92e3f7499 100644
--- a/gr-atsc/src/lib/atsci_fs_correlator_naive.h
+++ b/gr-atsc/src/lib/atsci_fs_correlator_naive.h
@@ -23,12 +23,13 @@
#ifndef _ATSC_FS_CORRELATOR_NAIVE_H_
#define _ATSC_FS_CORRELATOR_NAIVE_H_
+#include <atsc_api.h>
#include <atsci_fs_correlator.h>
/*!
* \brief Naive concrete implementation of field sync correlator
*/
-class atsci_fs_correlator_naive : public atsci_fs_correlator {
+class ATSC_API atsci_fs_correlator_naive : public atsci_fs_correlator {
private:
static const int SRSIZE = 1024; // must be power of two
diff --git a/gr-atsc/src/lib/atsci_pnXXX.h b/gr-atsc/src/lib/atsci_pnXXX.h
index 0e09ae831..58cb2d02d 100644
--- a/gr-atsc/src/lib/atsci_pnXXX.h
+++ b/gr-atsc/src/lib/atsci_pnXXX.h
@@ -20,5 +20,7 @@
* Boston, MA 02110-1301, USA.
*/
-extern const unsigned char atsc_pn511[];
-extern const unsigned char atsc_pn63[];
+#include <atsc_api.h>
+
+ATSC_API extern const unsigned char atsc_pn511[];
+ATSC_API extern const unsigned char atsc_pn63[];
diff --git a/gr-atsc/src/lib/atsci_randomizer.h b/gr-atsc/src/lib/atsci_randomizer.h
index 36025d10b..30c3235bb 100644
--- a/gr-atsc/src/lib/atsci_randomizer.h
+++ b/gr-atsc/src/lib/atsci_randomizer.h
@@ -23,6 +23,7 @@
#ifndef _ATSC_RANDOMIZER_H_
#define _ATSC_RANDOMIZER_H_
+#include <atsc_api.h>
#include <atsc_types.h>
/*!
@@ -32,7 +33,7 @@
* See figure D4 on page 54.
*/
-class atsci_randomizer {
+class ATSC_API atsci_randomizer {
friend class qa_atsci_randomizer;
public:
diff --git a/gr-atsc/src/lib/atsci_reed_solomon.h b/gr-atsc/src/lib/atsci_reed_solomon.h
index c9cdca94b..6f53c77ca 100644
--- a/gr-atsc/src/lib/atsci_reed_solomon.h
+++ b/gr-atsc/src/lib/atsci_reed_solomon.h
@@ -23,6 +23,7 @@
#ifndef _ATSC_REED_SOLOMON_H_
#define _ATSC_REED_SOLOMON_H_
+#include <atsc_api.h>
#include <atsc_types.h>
/*!
@@ -32,7 +33,7 @@
* See figure D5 on page 55.
*/
-class atsci_reed_solomon {
+class ATSC_API atsci_reed_solomon {
public:
atsci_reed_solomon();
diff --git a/gr-atsc/src/lib/atsci_root_raised_cosine.h b/gr-atsc/src/lib/atsci_root_raised_cosine.h
index cb2798ae5..12870faba 100644
--- a/gr-atsc/src/lib/atsci_root_raised_cosine.h
+++ b/gr-atsc/src/lib/atsci_root_raised_cosine.h
@@ -22,9 +22,10 @@
#ifndef _ATSC_RRC_H_
#define _ATSC_RRC_H_
+#include <atsc_api.h>
#include <gr_fir_builder.h>
-class atsc_root_raised_cosine : public gr_fir_builder
+class ATSC_API atsc_root_raised_cosine : public gr_fir_builder
{
public:
virtual std::vector<float> taps (double sampling_freq);
diff --git a/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h b/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h
index 00f609929..98329ab53 100644
--- a/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h
+++ b/gr-atsc/src/lib/atsci_root_raised_cosine_bandpass.h
@@ -22,9 +22,10 @@
#ifndef _ATSC_RRC_BANDPASS_H_
#define _ATSC_RRC_BANDPASS_H_
+#include <atsc_api.h>
#include <atsci_root_raised_cosine.h>
-class atsc_root_raised_cosine_bandpass : public atsc_root_raised_cosine
+class ATSC_API atsc_root_raised_cosine_bandpass : public atsc_root_raised_cosine
{
public:
atsc_root_raised_cosine_bandpass (double center_freq) : _center_freq (center_freq) {}
diff --git a/gr-atsc/src/lib/atsci_single_viterbi.h b/gr-atsc/src/lib/atsci_single_viterbi.h
index a722a4aaf..cc752cb3a 100644
--- a/gr-atsc/src/lib/atsci_single_viterbi.h
+++ b/gr-atsc/src/lib/atsci_single_viterbi.h
@@ -23,10 +23,12 @@
#ifndef _ATSCSINGLEVITERBI_H_
#define _ATSCSINGLEVITERBI_H_
+#include <atsc_api.h>
+
/*!
* \brief single channel viterbi decoder
*/
-class atsci_single_viterbi
+class ATSC_API atsci_single_viterbi
{
public:
diff --git a/gr-atsc/src/lib/atsci_slicer_agc.h b/gr-atsc/src/lib/atsci_slicer_agc.h
index 2e7d3be7a..520fec44b 100644
--- a/gr-atsc/src/lib/atsci_slicer_agc.h
+++ b/gr-atsc/src/lib/atsci_slicer_agc.h
@@ -23,6 +23,7 @@
#ifndef _ATSC_SLICER_AGC_H_
#define _ATSC_SLICER_AGC_H_
+#include <atsc_api.h>
#include <math.h>
#include <gr_single_pole_iir.h>
@@ -32,7 +33,7 @@
* Given perfect data, output values will be +/- {7, 5, 3, 1}
*/
-class atsci_slicer_agc {
+class ATSC_API atsci_slicer_agc {
public:
atsci_slicer_agc () : _gain(1), dc(0.0025) {};
diff --git a/gr-atsc/src/lib/atsci_sliding_correlator.h b/gr-atsc/src/lib/atsci_sliding_correlator.h
index c01bc9a20..64834a4e2 100644
--- a/gr-atsc/src/lib/atsci_sliding_correlator.h
+++ b/gr-atsc/src/lib/atsci_sliding_correlator.h
@@ -22,15 +22,17 @@
#ifndef _ATSC_SLIDING_CORRELATOR_H_
#define _ATSC_SLIDING_CORRELATOR_H_
+#include <atsc_api.h>
#include <string.h>
-extern const unsigned char atsc_pn511[511];
-extern const unsigned char atsc_pn63[63];
+#include <atsci_pnXXX.h>
+//extern const unsigned char atsc_pn511[511];
+//extern const unsigned char atsc_pn63[63];
/*!
* \brief look for the PN 511 field sync pattern
*/
-class atsci_sliding_correlator {
+class ATSC_API atsci_sliding_correlator {
public:
atsci_sliding_correlator ();
diff --git a/gr-atsc/src/lib/atsci_sssr.h b/gr-atsc/src/lib/atsci_sssr.h
index 4555dc23c..1dee54c1d 100644
--- a/gr-atsc/src/lib/atsci_sssr.h
+++ b/gr-atsc/src/lib/atsci_sssr.h
@@ -27,6 +27,7 @@
#ifndef _ATSC_SSSR_H_
#define _ATSC_SSSR_H_
+#include <atsc_api.h>
#include <atsc_consts.h>
#include <gri_mmse_fir_interpolator.h>
#include <gr_single_pole_iir.h>
@@ -43,7 +44,7 @@ namespace sssr {
// ----------------------------------------------------------------
//! digital correlator for 1001 and 0110 patterns
- class digital_correlator {
+ class ATSC_API digital_correlator {
int d_sr; // 4 bit shift register
public:
@@ -70,7 +71,7 @@ namespace sssr {
// ----------------------------------------------------------------
//! segment sync integrator
- class seg_sync_integrator {
+ class ATSC_API seg_sync_integrator {
signed char d_integrator[ATSC_DATA_SEGMENT_LENGTH];
public:
@@ -94,7 +95,7 @@ namespace sssr {
// ----------------------------------------------------------------
//! quad filter (used to compute timing error)
- class quad_filter {
+ class ATSC_API quad_filter {
sample_t d_delay[4];
public:
@@ -128,7 +129,7 @@ namespace sssr {
* by Wayne E. Bretl of Zenith, pgs 41-45.
*/
-class atsci_sssr {
+class ATSC_API atsci_sssr {
sssr::digital_correlator d_correlator;
sssr::seg_sync_integrator d_integrator;
sssr::quad_filter d_quad_filter;
@@ -193,7 +194,7 @@ public:
* \brief interpolator control for segment and symbol sync recovery
*/
-class atsci_interpolator {
+class ATSC_API atsci_interpolator {
gri_mmse_fir_interpolator d_interp;
gr_single_pole_iir<float,float,float> d_loop; // ``VCO'' loop filter
double d_nominal_ratio_of_rx_clock_to_symbol_freq; // FREQ
diff --git a/gr-atsc/src/lib/atsci_trellis_encoder.h b/gr-atsc/src/lib/atsci_trellis_encoder.h
index dc5c16d76..53be3fc22 100644
--- a/gr-atsc/src/lib/atsci_trellis_encoder.h
+++ b/gr-atsc/src/lib/atsci_trellis_encoder.h
@@ -23,6 +23,7 @@
#ifndef _ATSC_TRELLIS_ENCODER_H_
#define _ATSC_TRELLIS_ENCODER_H_
+#include <atsc_api.h>
#include <atsci_basic_trellis_encoder.h>
#include <atsc_types.h>
@@ -30,7 +31,7 @@
* \brief fancy, schmancy 12-way interleaved trellis encoder for ATSC
*/
-class atsci_trellis_encoder {
+class ATSC_API atsci_trellis_encoder {
public:
static const int NCODERS = 12;
diff --git a/gr-atsc/src/lib/atsci_viterbi_decoder.h b/gr-atsc/src/lib/atsci_viterbi_decoder.h
index 22e3c1892..1243feeb5 100644
--- a/gr-atsc/src/lib/atsci_viterbi_decoder.h
+++ b/gr-atsc/src/lib/atsci_viterbi_decoder.h
@@ -25,6 +25,7 @@
#define USE_SIMPLE_SLICER 0
+#include <atsc_api.h>
#include <atsc_types.h>
#include <interleaver_fifo.h>
@@ -40,7 +41,7 @@ typedef atsci_single_viterbi single_viterbi_t;
* \brief fancy, schmancy 12-way interleaved viterbi decoder for ATSC
*/
-class atsci_viterbi_decoder {
+class ATSC_API atsci_viterbi_decoder {
public:
static const int NCODERS = 12;
diff --git a/gr-atsc/src/lib/atsci_vsbtx_lp.h b/gr-atsc/src/lib/atsci_vsbtx_lp.h
index 7193c87d0..d3bb0c9d1 100644
--- a/gr-atsc/src/lib/atsci_vsbtx_lp.h
+++ b/gr-atsc/src/lib/atsci_vsbtx_lp.h
@@ -23,9 +23,10 @@
#ifndef _ATSC_VSBTX_LP_H_
#define _ATSC_VSBTX_LP_H_
+#include <atsc_api.h>
#include <gr_fir_builder.h>
-class atsc_vsbtx_lp : public gr_fir_builder
+class ATSC_API atsc_vsbtx_lp : public gr_fir_builder
{
public:
virtual std::vector<float> taps (double sampling_freq);
diff --git a/gr-atsc/src/lib/create_atsci_equalizer.h b/gr-atsc/src/lib/create_atsci_equalizer.h
index 57c167f59..fd26237d8 100644
--- a/gr-atsc/src/lib/create_atsci_equalizer.h
+++ b/gr-atsc/src/lib/create_atsci_equalizer.h
@@ -22,10 +22,12 @@
#ifndef _CREATE_ATSC_EQUALIZER_H_
#define _CREATE_ATSC_EQUALIZER_H_
+#include <atsc_api.h>
+
class atsci_equalizer;
-atsci_equalizer *create_atsci_equalizer_nop ();
-atsci_equalizer *create_atsci_equalizer_lms ();
-atsci_equalizer *create_atsci_equalizer_lms2 ();
+ATSC_API atsci_equalizer *create_atsci_equalizer_nop ();
+ATSC_API atsci_equalizer *create_atsci_equalizer_lms ();
+ATSC_API atsci_equalizer *create_atsci_equalizer_lms2 ();
#endif /* _CREATE_ATSC_EQUALIZER_H_ */
diff --git a/gr-atsc/src/lib/create_atsci_fs_checker.h b/gr-atsc/src/lib/create_atsci_fs_checker.h
index d08745052..23451757a 100644
--- a/gr-atsc/src/lib/create_atsci_fs_checker.h
+++ b/gr-atsc/src/lib/create_atsci_fs_checker.h
@@ -23,12 +23,14 @@
#ifndef _CREATE_ATSC_FS_CHECKER_H_
#define _CREATE_ATSC_FS_CHECKER_H_
+#include <atsc_api.h>
+
class atsci_fs_checker;
/*!
* Factory that creates appropriate atsci_fs_checker
*/
-atsci_fs_checker *create_atsci_fs_checker ();
+ATSC_API atsci_fs_checker *create_atsci_fs_checker ();
#endif /* _CREATE_ATSC_FS_CHECKER_H_ */
diff --git a/gr-atsc/src/lib/create_atsci_fs_correlator.h b/gr-atsc/src/lib/create_atsci_fs_correlator.h
index 9162be888..7b663fd56 100644
--- a/gr-atsc/src/lib/create_atsci_fs_correlator.h
+++ b/gr-atsc/src/lib/create_atsci_fs_correlator.h
@@ -23,12 +23,14 @@
#ifndef _CREATE_ATSC_FS_CORRELATOR_H_
#define _CREATE_ATSC_FS_CORRELATOR_H_
+#include <atsc_api.h>
+
class atsci_fs_correlator;
/*!
* Factory that creates appropriate atsci_fs_correlator
*/
-atsci_fs_correlator *create_atsci_fs_correlator ();
+ATSC_API atsci_fs_correlator *create_atsci_fs_correlator ();
#endif /* _CREATE_ATSC_FS_CORRELATOR_H_ */
diff --git a/gr-atsc/src/lib/interleaver_fifo.h b/gr-atsc/src/lib/interleaver_fifo.h
index 98764af49..6d1a44580 100644
--- a/gr-atsc/src/lib/interleaver_fifo.h
+++ b/gr-atsc/src/lib/interleaver_fifo.h
@@ -26,7 +26,6 @@
#include <interleaver_fifo.h>
#include <string.h>
-#include <strings.h>
/*!
* \brief template class for interleaver fifo
diff --git a/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc b/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc
index f50f3b6b8..1f5ba6b59 100644
--- a/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc
+++ b/gr-atsc/src/lib/qa_atsci_fake_single_viterbi.cc
@@ -70,7 +70,7 @@ qa_atsci_fake_single_viterbi::noise ()
void
qa_atsci_fake_single_viterbi::t0 ()
{
- int blocklen = NN;
+ static const int blocklen = NN;
unsigned char in[blocklen];
unsigned char enc[blocklen];
unsigned char out[blocklen];
diff --git a/gr-atsc/src/lib/qa_atsci_single_viterbi.cc b/gr-atsc/src/lib/qa_atsci_single_viterbi.cc
index d7c29097e..dac1e94c3 100644
--- a/gr-atsc/src/lib/qa_atsci_single_viterbi.cc
+++ b/gr-atsc/src/lib/qa_atsci_single_viterbi.cc
@@ -67,7 +67,7 @@ qa_atsci_single_viterbi::noise ()
void
qa_atsci_single_viterbi::t0 ()
{
- int blocklen = NN;
+ static const int blocklen = NN;
unsigned char in[blocklen];
unsigned char enc[blocklen];
unsigned char out[blocklen];
@@ -142,7 +142,7 @@ qa_atsci_single_viterbi::t0 ()
void
qa_atsci_single_viterbi::t1 ()
{
- int blocklen = NN;
+ static const int blocklen = NN;
unsigned char in[blocklen];
unsigned char enc[blocklen];
unsigned char out[blocklen];
diff --git a/gr-atsc/src/python/CMakeLists.txt b/gr-atsc/src/python/CMakeLists.txt
new file mode 100644
index 000000000..a8394d3da
--- /dev/null
+++ b/gr-atsc/src/python/CMakeLists.txt
@@ -0,0 +1,58 @@
+# Copyright 2011 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.
+
+########################################################################
+# Install python examples
+########################################################################
+INCLUDE(GrPython)
+
+GR_PYTHON_INSTALL(
+ PROGRAMS
+ btl-fsd.py
+ fpll.py
+ interp.py
+ xlate.py
+ viterbi-out.py
+ DESTINATION ${GR_PKG_DATA_DIR}/examples/atsc
+ COMPONENT "atsc_examples"
+)
+
+INSTALL(
+ FILES README
+ DESTINATION ${GR_PKG_DATA_DIR}/examples/atsc
+ COMPONENT "atsc_examples"
+)
+
+########################################################################
+# Handle the unit tests
+########################################################################
+IF(ENABLE_TESTING)
+INCLUDE(GrTest)
+FILE(GLOB py_qa_test_files "qa_*.py")
+FOREACH(py_qa_test_file ${py_qa_test_files})
+ GET_FILENAME_COMPONENT(py_qa_test_name ${py_qa_test_file} NAME_WE)
+ SET(GR_TEST_PYTHON_DIRS
+ ${CMAKE_BINARY_DIR}/gnuradio-core/src/python
+ ${CMAKE_BINARY_DIR}/gnuradio-core/src/lib/swig
+ ${CMAKE_BINARY_DIR}/gr-atsc/src/lib
+ )
+ SET(GR_TEST_TARGET_DEPS gruel gnuradio-core gnuradio-atsc)
+ GR_ADD_TEST(${py_qa_test_name} ${PYTHON_EXECUTABLE} ${py_qa_test_file})
+ENDFOREACH(py_qa_test_file)
+ENDIF(ENABLE_TESTING)