diff options
Diffstat (limited to 'gr-atsc/src')
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) |