diff options
Diffstat (limited to 'gnuradio-core/src/lib')
357 files changed, 3383 insertions, 865 deletions
diff --git a/gnuradio-core/src/lib/CMakeLists.txt b/gnuradio-core/src/lib/CMakeLists.txt new file mode 100644 index 000000000..2e0d95798 --- /dev/null +++ b/gnuradio-core/src/lib/CMakeLists.txt @@ -0,0 +1,106 @@ +# Copyright 2010-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 compatibility checks and defines +######################################################################## +include(${CMAKE_CURRENT_SOURCE_DIR}/ConfigChecks.cmake) + +######################################################################## +# Include subdirs rather to populate to the sources lists. +######################################################################## +GR_INCLUDE_SUBDIRECTORY(missing) +GR_INCLUDE_SUBDIRECTORY(runtime) +GR_INCLUDE_SUBDIRECTORY(filter) +GR_INCLUDE_SUBDIRECTORY(viterbi) +GR_INCLUDE_SUBDIRECTORY(general) +GR_INCLUDE_SUBDIRECTORY(gengen) +GR_INCLUDE_SUBDIRECTORY(reed-solomon) +GR_INCLUDE_SUBDIRECTORY(io) +GR_INCLUDE_SUBDIRECTORY(hier) + +list(APPEND gnuradio_core_sources bug_work_around_6.cc) +list(APPEND test_gnuradio_core_sources bug_work_around_6.cc) + +######################################################################## +# Setup the include and linker paths +######################################################################## +include_directories(${GNURADIO_CORE_INCLUDE_DIRS}) + +include_directories(${Boost_INCLUDE_DIRS}) +link_directories(${Boost_LIBRARY_DIRS}) + +add_definitions(${GSL_DEFINITIONS}) +include_directories(${GSL_INCLUDE_DIRS}) +link_directories(${GSL_LIBRARY_DIRS}) + +include_directories(${FFTW3F_INCLUDE_DIRS}) +link_directories(${FFTW3F_LIBRARY_DIRS}) + +######################################################################## +# Setup library +######################################################################## +list(APPEND gnuradio_core_libs + gruel + ${Boost_LIBRARIES} + ${GSL_LIBRARIES} + ${FFTW3F_LIBRARIES} +) + +#need to link with librt on ubuntu 11.10 for shm_* +if(LINUX) + list(APPEND gnuradio_core_libs rt) +endif() + +add_library(gnuradio-core SHARED ${gnuradio_core_sources}) +target_link_libraries(gnuradio-core ${gnuradio_core_libs}) +set_target_properties(gnuradio-core PROPERTIES DEFINE_SYMBOL "gnuradio_core_EXPORTS") +set_target_properties(gnuradio-core PROPERTIES SOVERSION ${LIBVER}) +#avoid fftw and gsl link in dependent libraries: +set_target_properties(gnuradio-core PROPERTIES LINK_INTERFACE_LIBRARIES "gruel") + +install(TARGETS gnuradio-core + LIBRARY DESTINATION ${GR_LIBRARY_DIR} COMPONENT "core_runtime" # .so/.dylib file + ARCHIVE DESTINATION ${GR_LIBRARY_DIR} COMPONENT "core_devel" # .lib file + RUNTIME DESTINATION ${GR_RUNTIME_DIR} COMPONENT "core_runtime" # .dll file +) + +######################################################################## +# Setup executables +######################################################################## +add_executable(gnuradio-config-info gnuradio-config-info.cc) +target_link_libraries(gnuradio-config-info gnuradio-core ${Boost_LIBRARIES}) +install( + TARGETS gnuradio-config-info + DESTINATION ${GR_RUNTIME_DIR} + COMPONENT "core_runtime" +) + +######################################################################## +# Setup tests +######################################################################## +if(ENABLE_TESTING) + +include_directories(${CPPUNIT_INCLUDE_DIRS}) +link_directories(${CPPUNIT_LIBRARY_DIRS}) + +add_library(test-gnuradio-core SHARED ${test_gnuradio_core_sources}) +target_link_libraries(test-gnuradio-core gnuradio-core ${CPPUNIT_LIBRARIES} ${Boost_LIBRARIES}) + +endif(ENABLE_TESTING) diff --git a/gnuradio-core/src/lib/ConfigChecks.cmake b/gnuradio-core/src/lib/ConfigChecks.cmake new file mode 100644 index 000000000..30a1011e4 --- /dev/null +++ b/gnuradio-core/src/lib/ConfigChecks.cmake @@ -0,0 +1,212 @@ +# Copyright 2010-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. + +######################################################################## +INCLUDE(GrMiscUtils) +INCLUDE(CheckCXXSourceCompiles) + +IF(MSVC) #add this directory for our provided headers +LIST(APPEND CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/msvc) +ENDIF(MSVC) + +GR_CHECK_HDR_N_DEF(netdb.h HAVE_NETDB_H) +GR_CHECK_HDR_N_DEF(sys/time.h HAVE_SYS_TIME_H) +GR_CHECK_HDR_N_DEF(sys/types.h HAVE_SYS_TYPES_H) +GR_CHECK_HDR_N_DEF(sys/select.h HAVE_SYS_SELECT_H) +GR_CHECK_HDR_N_DEF(sys/socket.h HAVE_SYS_SOCKET_H) +GR_CHECK_HDR_N_DEF(io.h HAVE_IO_H) +GR_CHECK_HDR_N_DEF(sys/mman.h HAVE_SYS_MMAN_H) +GR_CHECK_HDR_N_DEF(sys/ipc.h HAVE_SYS_IPC_H) +GR_CHECK_HDR_N_DEF(sys/shm.h HAVE_SYS_SHM_H) +GR_CHECK_HDR_N_DEF(signal.h HAVE_SIGNAL_H) +GR_CHECK_HDR_N_DEF(netinet/in.h HAVE_NETINET_IN_H) +GR_CHECK_HDR_N_DEF(arpa/inet.h HAVE_ARPA_INET_H) +GR_CHECK_HDR_N_DEF(byteswap.h HAVE_BYTESWAP_H) +GR_CHECK_HDR_N_DEF(linux/ppdev.h HAVE_LINUX_PPDEV_H) +GR_CHECK_HDR_N_DEF(dev/ppbus/ppi.h HAVE_DEV_PPBUS_PPI_H) +GR_CHECK_HDR_N_DEF(unistd.h HAVE_UNISTD_H) +GR_CHECK_HDR_N_DEF(malloc.h HAVE_MALLOC_H) + + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <stdio.h> + int main(){snprintf(0, 0, 0); return 0;} + " HAVE_SNPRINTF +) +GR_ADD_COND_DEF(HAVE_SNPRINTF) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <signal.h> + int main(){sigaction(0, 0, 0); return 0;} + " HAVE_SIGACTION +) +GR_ADD_COND_DEF(HAVE_SIGACTION) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <sys/select.h> + int main(){select(0, 0, 0, 0, 0); return 0;} + " HAVE_SELECT +) +GR_ADD_COND_DEF(HAVE_SELECT) + + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <unistd.h> + int main(){sysconf(0); return 0;} + " HAVE_SYSCONF +) +GR_ADD_COND_DEF(HAVE_SYSCONF) + +CHECK_CXX_SOURCE_COMPILES(" + #include <unistd.h> + int main(){getpagesize(); return 0;} + " HAVE_GETPAGESIZE +) +GR_ADD_COND_DEF(HAVE_GETPAGESIZE) + + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <Winbase.h> + int main(){Sleep(0); return 0;} + " HAVE_SSLEEP +) +GR_ADD_COND_DEF(HAVE_SSLEEP) + +CHECK_CXX_SOURCE_COMPILES(" + #include <time.h> + int main(){nanosleep(0, 0); return 0;} + " HAVE_NANOSLEEP +) +GR_ADD_COND_DEF(HAVE_NANOSLEEP) + +CHECK_CXX_SOURCE_COMPILES(" + #include <sys/time.h> + int main(){gettimeofday(0, 0); return 0;} + " HAVE_GETTIMEOFDAY +) +GR_ADD_COND_DEF(HAVE_GETTIMEOFDAY) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <stdlib.h> + int main(){posix_memalign(0, 0, 0); return 0;} + " HAVE_POSIX_MEMALIGN +) +GR_ADD_COND_DEF(HAVE_POSIX_MEMALIGN) + +CHECK_CXX_SOURCE_COMPILES(" + #include <malloc.h> + int main(){valloc(0); return 0;} + " HAVE_VALLOC +) +GR_ADD_COND_DEF(HAVE_VALLOC) + +ADD_DEFINITIONS(-DALIGNED_MALLOC=0) + +######################################################################## +SET(CMAKE_REQUIRED_LIBRARIES -lpthread) +CHECK_CXX_SOURCE_COMPILES(" + #include <signal.h> + int main(){pthread_sigmask(0, 0, 0); return 0;} + " HAVE_PTHREAD_SIGMASK +) +GR_ADD_COND_DEF(HAVE_PTHREAD_SIGMASK) +SET(CMAKE_REQUIRED_LIBRARIES) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <windows.h> + int main(){ + HANDLE handle; + int size; + LPCTSTR lpName; + handle = CreateFileMapping( + INVALID_HANDLE_VALUE, // use paging file + NULL, // default security + PAGE_READWRITE, // read/write access + 0, // max. object size + size, // buffer size + lpName); // name of mapping object + return 0; + } " HAVE_CREATEFILEMAPPING +) +GR_ADD_COND_DEF(HAVE_CREATEFILEMAPPING) + +######################################################################## +CHECK_INCLUDE_FILE_CXX(windows.h HAVE_WINDOWS_H) +IF(HAVE_WINDOWS_H) + ADD_DEFINITIONS(-DHAVE_WINDOWS_H -DUSING_WINSOCK) + MESSAGE(STATUS "Adding windows libs to gnuradio core libs...") + LIST(APPEND gnuradio_core_libs WS2_32.lib WSock32.lib) +ENDIF(HAVE_WINDOWS_H) + +######################################################################## +SET(CMAKE_REQUIRED_LIBRARIES -lrt) +CHECK_CXX_SOURCE_COMPILES(" + #include <sys/types.h> + #include <sys/mman.h> + int main(){shm_open(0, 0, 0); return 0;} + " HAVE_SHM_OPEN +) +GR_ADD_COND_DEF(HAVE_SHM_OPEN) +SET(CMAKE_REQUIRED_LIBRARIES) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #define _GNU_SOURCE + #include <math.h> + int main(){double x, sin, cos; sincos(x, &sin, &cos); return 0;} + " HAVE_SINCOS +) +GR_ADD_COND_DEF(HAVE_SINCOS) + +CHECK_CXX_SOURCE_COMPILES(" + #define _GNU_SOURCE + #include <math.h> + int main(){float x, sin, cos; sincosf(x, &sin, &cos); return 0;} + " HAVE_SINCOSF +) +GR_ADD_COND_DEF(HAVE_SINCOSF) + +CHECK_CXX_SOURCE_COMPILES(" + #include <math.h> + int main(){sinf(0); return 0;} + " HAVE_SINF +) +GR_ADD_COND_DEF(HAVE_SINF) + +CHECK_CXX_SOURCE_COMPILES(" + #include <math.h> + int main(){cosf(0); return 0;} + " HAVE_COSF +) +GR_ADD_COND_DEF(HAVE_COSF) + +######################################################################## +CHECK_CXX_SOURCE_COMPILES(" + #include <sys/mman.h> + int main(){mmap(0, 0, 0, 0, 0, 0); return 0;} + " HAVE_MMAP +) +GR_ADD_COND_DEF(HAVE_MMAP) diff --git a/gnuradio-core/src/lib/filter/CMakeLists.txt b/gnuradio-core/src/lib/filter/CMakeLists.txt new file mode 100644 index 000000000..da16cd60b --- /dev/null +++ b/gnuradio-core/src/lib/filter/CMakeLists.txt @@ -0,0 +1,351 @@ +# Copyright 2010-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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +#set the C language property on the assembly files so the compiler will pick them up +file(GLOB gr_core_filter_asms ${CMAKE_CURRENT_SOURCE_DIR}/*.S) +foreach(gr_core_filter_asm ${gr_core_filter_asms}) + set_property(SOURCE ${gr_core_filter_asm} PROPERTY LANGUAGE C) +endforeach(gr_core_filter_asm) + +#detect 32 or 64 bit compiler +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86|x86_64)$") + include(CheckTypeSize) + check_type_size("void*" SIZEOF_VOID_P BUILTIN_TYPES_ONLY) + if (${SIZEOF_VOID_P} EQUAL 8) + set(CMAKE_SYSTEM_PROCESSOR_x86 64) + else() + set(CMAKE_SYSTEM_PROCESSOR_x86 32) + endif() +endif() + +######################################################################## +# Generate the makefile.gen, then extract its sources: +# This is a round-about way to extract the sources, +# but it requires minimum changed to the python utils. +# +# The recommended way to do this: +# - Make a generation macro that registers the sources command. +# - List the generation macro with each templated source file. +# - Create a python script (very generic) to perform generation. +# - This way the targets would depend only on their sources. +######################################################################## +execute_process( + COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} -c " +import os, sys +sys.path.append('${GR_CORE_PYTHONPATH}') +sys.path.append('${CMAKE_CURRENT_SOURCE_DIR}') +os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}' +os.environ['gendir'] = '${CMAKE_CURRENT_BINARY_DIR}' +os.environ['do_makefile'] = '1' +os.environ['do_sources'] = '0' +from generate_all import generate_all +generate_all() + " WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +macro(FILTER_GEN_EXTRACT outvar ext) + execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import os; print ';'.join( + map(lambda x: os.path.join('${CMAKE_CURRENT_BINARY_DIR}', x.replace('\\\\', '').strip()), + filter(lambda f: '${ext}' in f, open('${CMAKE_CURRENT_BINARY_DIR}/Makefile.gen').readlines() + )))" OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ${outvar}) + file(TO_CMAKE_PATH "${${outvar}}" ${outvar}) +endmacro(FILTER_GEN_EXTRACT) + +FILTER_GEN_EXTRACT(generated_filter_sources ".cc") +FILTER_GEN_EXTRACT(generated_filter_includes ".h") +FILTER_GEN_EXTRACT(generated_filter_swigs ".i") + +#TODO simplify this list with a triple-threat for loop +set(generated_filter_deps + ${CMAKE_CURRENT_SOURCE_DIR}/generate_all.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_filter_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_interp_fir_filter_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_rational_resampler_base_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_sysconfig.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_sysconfig_generic.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_util.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_freq_xlating_fir_filter_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_gri_fir_filter_with_buffer_XXX.py + ${CMAKE_CURRENT_SOURCE_DIR}/generate_utils.py + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX_generic.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX_generic.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.h.t + ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.i.t + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fir_filter_with_buffer_XXX.cc.t + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fir_filter_with_buffer_XXX.h.t +) + +add_custom_command( + OUTPUT + ${generated_filter_sources} + ${generated_filter_includes} + ${generated_filter_swigs} + DEPENDS ${generated_filter_deps} + COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} -c + "import os, sys;sys.path.append('${GR_CORE_PYTHONPATH}');sys.path.append('${CMAKE_CURRENT_SOURCE_DIR}');os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}';from generate_all import generate_all;generate_all()" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "generating filter files" + VERBATIM +) + +add_custom_target(filter_generated DEPENDS + ${generated_filter_sources} + ${generated_filter_includes} + ${generated_filter_swigs} +) + +######################################################################## +# Add target specific files +# May VOLK put a rest to all the insanity below. +######################################################################## +if(MSVC) + list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_generic.cc + ) + list(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_generic.cc + ) +else(MSVC) +if(CMAKE_SYSTEM_PROCESSOR_x86) + list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccc_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccc_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fsf_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fsf_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_scc_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_scc_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fcc_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fcc_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_simd.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/sse_debug.c + ) + list(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_float_dotprod_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_complex_dotprod_x86.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_ccomplex_dotprod_x86.cc + ) +endif() + +if(CMAKE_SYSTEM_PROCESSOR_x86 AND ${CMAKE_SYSTEM_PROCESSOR_x86} EQUAL 64) + list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_sse64.S + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_3dnow64.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnowext64.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnow64.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_sse64.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnowext64.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnow64.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_sse64.S + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_3dnow64.S + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_sse64.S + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_mmx64.S + ) +elseif(CMAKE_SYSTEM_PROCESSOR_x86 AND ${CMAKE_SYSTEM_PROCESSOR_x86} EQUAL 32) + list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_sse.S + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_3dnow.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnowext.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnow.S + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_sse.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnowext.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnow.S + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_sse.S + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_3dnow.S + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_sse.S + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_mmx.S + ) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)") + list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_powerpc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_powerpc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_powerpc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_altivec.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_altivec.c + ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_fff_altivec.c + ) + list(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_powerpc.cc + ) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") + list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_armv7_a.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_armv7_a.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_armv7_a.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_armv7_a.cc + ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_fff_armv7_a.c + ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_ccf_armv7_a.c + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_armv7_a.cc + ) + list(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_armv7_a.cc + ) +else() + list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_generic.cc + ) + list(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_generic.cc + ) +endif() +endif(MSVC) + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +list(APPEND gnuradio_core_sources + ${generated_filter_sources} + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_fff_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_ccc_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sincos.c + ${CMAKE_CURRENT_SOURCE_DIR}/gri_goertzel.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator_cc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_generic.c + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_generic.c +) + +######################################################################## +# Append gnuradio-core test sources +######################################################################## +list(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_filter.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_ccf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_fcc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_fff.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_ccc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_scc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_rotator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_mmse_fir_interpolator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_mmse_fir_interpolator_cc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_ccf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_ccc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fcc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fff.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fsf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_scc.cc +) + +######################################################################## +# Install runtime headers +######################################################################## +install(FILES + ${generated_filter_includes} + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_altivec.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_fff_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_ccc_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_powerpc.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_rotator.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sincos.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_pole_iir.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vec_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_goertzel.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_iir.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator_cc.h + ${CMAKE_CURRENT_SOURCE_DIR}/qa_filter.h + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_generic.h + ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_x86.h + ${CMAKE_CURRENT_SOURCE_DIR}/sse_debug.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Install swig headers +######################################################################## +if(ENABLE_PYTHON) +install(FILES + ${generated_filter_swigs} + ${CMAKE_CURRENT_SOURCE_DIR}/filter.i + ${CMAKE_CURRENT_BINARY_DIR}/filter_generated.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) +endif(ENABLE_PYTHON) + +######################################################################## +# Handle triple-threat files that have cc, h, and i +######################################################################## +set(gr_core_filter_triple_threats + gr_adaptive_fir_ccc + gr_adaptive_fir_ccf + gr_dc_blocker_cc + gr_dc_blocker_ff + gr_fft_filter_ccc + gr_fft_filter_fff + gr_filter_delay_fc + gr_fractional_interpolator_ff + gr_fractional_interpolator_cc + gr_goertzel_fc + gr_hilbert_fc + gr_iir_filter_ffd + gr_single_pole_iir_filter_ff + gr_single_pole_iir_filter_cc + gr_pfb_channelizer_ccf + gr_pfb_synthesis_filterbank_ccf + gr_pfb_decimator_ccf + gr_pfb_interpolator_ccf + gr_pfb_arb_resampler_ccf + gr_pfb_arb_resampler_fff + gr_pfb_clock_sync_ccf + gr_pfb_clock_sync_fff +) + +foreach(file_tt ${gr_core_filter_triple_threats}) + list(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel") + if(ENABLE_PYTHON) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig") + endif(ENABLE_PYTHON) +endforeach(file_tt ${gr_core_filter_triple_threats}) diff --git a/gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h b/gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h index 4637dc706..c03743776 100644 --- a/gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h +++ b/gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h @@ -23,7 +23,9 @@ #ifndef _CCOMPLEX_DOTPROD_GENERIC_H_ #define _CCOMPLEX_DOTPROD_GENERIC_H_ -void +#include <gr_core_api.h> + +GR_CORE_API void ccomplex_dotprod_generic (const float *input, const float *taps, unsigned n_2_ccomplex_blocks, float *result); diff --git a/gnuradio-core/src/lib/filter/complex_dotprod_generic.h b/gnuradio-core/src/lib/filter/complex_dotprod_generic.h index 75d18e7f1..aed82179e 100644 --- a/gnuradio-core/src/lib/filter/complex_dotprod_generic.h +++ b/gnuradio-core/src/lib/filter/complex_dotprod_generic.h @@ -23,7 +23,9 @@ #ifndef _COMPLEX_DOTPROD_GENERIC_H_ #define _COMPLEX_DOTPROD_GENERIC_H_ -void +#include <gr_core_api.h> + +GR_CORE_API void complex_dotprod_generic (const short *input, const float *taps, unsigned n_2_complex_blocks, float *result); diff --git a/gnuradio-core/src/lib/filter/dotprod_fff_altivec.h b/gnuradio-core/src/lib/filter/dotprod_fff_altivec.h index d9ee52cf0..af9210382 100644 --- a/gnuradio-core/src/lib/filter/dotprod_fff_altivec.h +++ b/gnuradio-core/src/lib/filter/dotprod_fff_altivec.h @@ -21,6 +21,7 @@ #ifndef INCLUDED_DOTPROD_FFF_ALTIVEC_H #define INCLUDED_DOTPROD_FFF_ALTIVEC_H +#include <gr_core_api.h> #include <stddef.h> #ifdef __cplusplus diff --git a/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h b/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h index e72621a0d..667ee5fb6 100644 --- a/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h +++ b/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h @@ -21,6 +21,7 @@ #ifndef INCLUDED_DOTPROD_FFF_ARMV7_A_H #define INCLUDED_DOTPROD_FFF_ARMV7_A_H +#include <gr_core_api.h> #include <stddef.h> #ifdef __cplusplus diff --git a/gnuradio-core/src/lib/filter/generate_gr_fir_util.py b/gnuradio-core/src/lib/filter/generate_gr_fir_util.py index 4f5f5ce06..06001695e 100755 --- a/gnuradio-core/src/lib/filter/generate_gr_fir_util.py +++ b/gnuradio-core/src/lib/filter/generate_gr_fir_util.py @@ -25,7 +25,7 @@ from generate_utils import * def make_info_struct (out, sig): out.write ( ''' -struct gr_fir_%s_info { +struct GR_CORE_API gr_fir_%s_info { const char *name; // implementation name, e.g., "generic", "SSE", "3DNow!" gr_fir_%s *(*create)(const std::vector<%s> &taps); }; @@ -74,6 +74,7 @@ def make_gr_fir_util_h (): * 'i' (short) */ +#include <gr_core_api.h> #include <gr_types.h> ''') @@ -87,7 +88,7 @@ def make_gr_fir_util_h (): make_info_struct (out, sig) out.write (''' -struct gr_fir_util { +struct GR_CORE_API gr_fir_util { // create a fast version of gr_fir_XXX. diff --git a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h index 8678255b7..aa5422a07 100644 --- a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h +++ b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_ADAPTIVE_FIR_CCC_H #define INCLUDED_GR_ADAPTIVE_FIR_CCC_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> /*! * \brief Adaptive FIR filter with gr_complex input, gr_complex output and float taps * \ingroup filter_blk */ -class gr_adaptive_fir_ccc : public gr_sync_decimator +class GR_CORE_API gr_adaptive_fir_ccc : public gr_sync_decimator { private: std::vector<gr_complex> d_new_taps; diff --git a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h index f860f4faa..87854201c 100644 --- a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_ADAPTIVE_FIR_CCF_H #define INCLUDED_GR_ADAPTIVE_FIR_CCF_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> /*! * \brief Adaptive FIR filter with gr_complex input, gr_complex output and float taps * \ingroup filter_blk */ -class gr_adaptive_fir_ccf : public gr_sync_decimator +class GR_CORE_API gr_adaptive_fir_ccf : public gr_sync_decimator { private: std::vector<float> d_new_taps; diff --git a/gnuradio-core/src/lib/filter/gr_altivec.h b/gnuradio-core/src/lib/filter/gr_altivec.h index c0d7cfb34..eb941ce42 100644 --- a/gnuradio-core/src/lib/filter/gr_altivec.h +++ b/gnuradio-core/src/lib/filter/gr_altivec.h @@ -29,6 +29,7 @@ * (included below) */ +#include <gr_core_api.h> #include <altivec.h> #undef bool // repair namespace pollution #undef vector // repair namespace pollution @@ -55,8 +56,8 @@ union v_float_u { float f[FLOATS_PER_VEC]; }; -void gr_print_vector_float(FILE *fp, vec_float4 v); -void gr_pvf(FILE *fp, const char *label, vec_float4 v); +GR_CORE_API void gr_print_vector_float(FILE *fp, vec_float4 v); +GR_CORE_API void gr_pvf(FILE *fp, const char *label, vec_float4 v); static inline float horizontal_add_f(vec_float4 v) diff --git a/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.h b/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.h new file mode 100644 index 000000000..73916a315 --- /dev/null +++ b/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.h @@ -0,0 +1,63 @@ +/* -*- c++ -*- */ +/* + * Copyright 2006 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_GR_CMA_EQUALIZER_CC_H +#define INCLUDED_GR_CMA_EQUALIZER_CC_H + +#include <gr_core_api.h> +#include <gr_adaptive_fir_ccf.h> + +class gr_cma_equalizer_cc; +typedef boost::shared_ptr<gr_cma_equalizer_cc> gr_cma_equalizer_cc_sptr; + +GR_CORE_API gr_cma_equalizer_cc_sptr +gr_make_cma_equalizer_cc(int num_taps, float modulus, float mu); + +/*! + * \brief Implements constant modulus adaptive filter on complex stream + * \ingroup eq_blk + */ +class GR_CORE_API gr_cma_equalizer_cc : public gr_adaptive_fir_ccf +{ +private: + float d_modulus; + float d_mu; + + friend GR_CORE_API gr_cma_equalizer_cc_sptr gr_make_cma_equalizer_cc(int num_taps, float modulus, float mu); + gr_cma_equalizer_cc(int num_taps, float modulus, float mu); + +protected: + + virtual float error(const gr_complex &out) + { + return (d_modulus - norm(out)); + } + + virtual void update_tap(float &tap, const gr_complex &in) + { + tap += d_mu*d_error*abs(in); + } + +public: +}; + +#endif diff --git a/gnuradio-core/src/lib/filter/gr_cpu.h b/gnuradio-core/src/lib/filter/gr_cpu.h index 01d719020..149404082 100644 --- a/gnuradio-core/src/lib/filter/gr_cpu.h +++ b/gnuradio-core/src/lib/filter/gr_cpu.h @@ -23,7 +23,9 @@ #ifndef _GR_CPU_H_ #define _GR_CPU_H_ -struct gr_cpu { +#include <gr_core_api.h> + +struct GR_CORE_API gr_cpu { static bool has_mmx (); static bool has_sse (); static bool has_sse2 (); @@ -37,4 +39,4 @@ struct gr_cpu { static bool has_armv7_a (); }; -#endif /* _GR_CPU_H_ */ +#endif /* _GR_CPU_H_ */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h b/gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h index d299cc7ef..3a9d364d4 100644 --- a/gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h +++ b/gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h @@ -24,12 +24,13 @@ #ifndef INCLUDED_GR_DC_BLOCKER_CC_H #define INCLUDED_GR_DC_BLOCKER_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <deque> class gr_dc_blocker_cc; typedef boost::shared_ptr<gr_dc_blocker_cc> gr_dc_blocker_cc_sptr; -gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D=32, bool long_form=true); +GR_CORE_API gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D=32, bool long_form=true); /*! * \class gr_dc_blocker_cc @@ -57,7 +58,7 @@ gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D=32, bool long_form=true); * <B><EM>R. Yates, "DC Blocker Algorithms," IEEE Signal Processing Magazine, * Mar. 2008, pp 132-134.</EM></B> */ -class moving_averager_c +class GR_CORE_API moving_averager_c { public: moving_averager_c(int D); @@ -72,7 +73,7 @@ private: std::deque<gr_complex> d_delay_line; }; -class gr_dc_blocker_cc : public gr_sync_block +class GR_CORE_API gr_dc_blocker_cc : public gr_sync_block { private: /*! @@ -80,7 +81,7 @@ class gr_dc_blocker_cc : public gr_sync_block * \param D (int) the length of the delay line * \param long_form (bool) whether to use long (true, default) or short form */ - friend gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D, bool long_form); + GR_CORE_API friend gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D, bool long_form); int d_length; bool d_long_form; diff --git a/gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h b/gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h index 8ffb6cf6f..6045b69de 100644 --- a/gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h +++ b/gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h @@ -24,12 +24,13 @@ #ifndef INCLUDED_GR_DC_BLOCKER_FF_H #define INCLUDED_GR_DC_BLOCKER_FF_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <deque> class gr_dc_blocker_ff; typedef boost::shared_ptr<gr_dc_blocker_ff> gr_dc_blocker_ff_sptr; -gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D=32, bool long_form=true); +GR_CORE_API gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D=32, bool long_form=true); /*! * \class gr_dc_blocker_ff @@ -57,7 +58,7 @@ gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D=32, bool long_form=true); * <B><EM>R. Yates, "DC Blocker Algorithms," IEEE Signal Processing Magazine, * Mar. 2008, pp 132-134.</EM></B> */ -class moving_averager_f +class GR_CORE_API moving_averager_f { public: moving_averager_f(int D); @@ -72,7 +73,7 @@ private: std::deque<float> d_delay_line; }; -class gr_dc_blocker_ff : public gr_sync_block +class GR_CORE_API gr_dc_blocker_ff : public gr_sync_block { private: /*! @@ -80,7 +81,7 @@ class gr_dc_blocker_ff : public gr_sync_block * \param D (int) the length of the delay line * \param long_form (bool) whether to use long (true, default) or short form */ - friend gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D, bool long_form); + GR_CORE_API friend gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D, bool long_form); int d_length; bool d_long_form; diff --git a/gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h b/gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h index 68b19e775..721a44a83 100644 --- a/gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h +++ b/gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h @@ -22,11 +22,12 @@ #ifndef INCLUDED_GR_FFT_FILTER_CCC_H #define INCLUDED_GR_FFT_FILTER_CCC_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_fft_filter_ccc; typedef boost::shared_ptr<gr_fft_filter_ccc> gr_fft_filter_ccc_sptr; -gr_fft_filter_ccc_sptr gr_make_fft_filter_ccc (int decimation, const std::vector<gr_complex> &taps); +GR_CORE_API gr_fft_filter_ccc_sptr gr_make_fft_filter_ccc (int decimation, const std::vector<gr_complex> &taps); //class gri_fft_filter_ccc_sse; class gri_fft_filter_ccc_generic; @@ -35,10 +36,10 @@ class gri_fft_filter_ccc_generic; * \brief Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps * \ingroup filter_blk */ -class gr_fft_filter_ccc : public gr_sync_decimator +class GR_CORE_API gr_fft_filter_ccc : public gr_sync_decimator { private: - friend gr_fft_filter_ccc_sptr gr_make_fft_filter_ccc (int decimation, const std::vector<gr_complex> &taps); + friend GR_CORE_API gr_fft_filter_ccc_sptr gr_make_fft_filter_ccc (int decimation, const std::vector<gr_complex> &taps); int d_nsamples; bool d_updated; diff --git a/gnuradio-core/src/lib/filter/gr_fft_filter_fff.h b/gnuradio-core/src/lib/filter/gr_fft_filter_fff.h index 6eaa21500..b0dc74883 100644 --- a/gnuradio-core/src/lib/filter/gr_fft_filter_fff.h +++ b/gnuradio-core/src/lib/filter/gr_fft_filter_fff.h @@ -22,11 +22,12 @@ #ifndef INCLUDED_GR_FFT_FILTER_FFF_H #define INCLUDED_GR_FFT_FILTER_FFF_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_fft_filter_fff; typedef boost::shared_ptr<gr_fft_filter_fff> gr_fft_filter_fff_sptr; -gr_fft_filter_fff_sptr gr_make_fft_filter_fff (int decimation, const std::vector<float> &taps); +GR_CORE_API gr_fft_filter_fff_sptr gr_make_fft_filter_fff (int decimation, const std::vector<float> &taps); class gri_fft_filter_fff_generic; //class gri_fft_filter_fff_sse; @@ -35,10 +36,10 @@ class gri_fft_filter_fff_generic; * \brief Fast FFT filter with float input, float output and float taps * \ingroup filter_blk */ -class gr_fft_filter_fff : public gr_sync_decimator +class GR_CORE_API gr_fft_filter_fff : public gr_sync_decimator { private: - friend gr_fft_filter_fff_sptr gr_make_fft_filter_fff (int decimation, const std::vector<float> &taps); + friend GR_CORE_API gr_fft_filter_fff_sptr gr_make_fft_filter_fff (int decimation, const std::vector<float> &taps); int d_nsamples; bool d_updated; diff --git a/gnuradio-core/src/lib/filter/gr_filter_delay_fc.h b/gnuradio-core/src/lib/filter/gr_filter_delay_fc.h index 946edf2c7..e09e4f0df 100644 --- a/gnuradio-core/src/lib/filter/gr_filter_delay_fc.h +++ b/gnuradio-core/src/lib/filter/gr_filter_delay_fc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_FILTER_DELAY_FC_H #define INCLUDED_GR_FILTER_DELAY_FC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_io_signature.h> #include <gr_types.h> @@ -31,7 +32,7 @@ class gr_filter_delay_fc; typedef boost::shared_ptr<gr_filter_delay_fc> gr_filter_delay_fc_sptr; // public constructor -gr_filter_delay_fc_sptr gr_make_filter_delay_fc (const std::vector<float> &taps); +GR_CORE_API gr_filter_delay_fc_sptr gr_make_filter_delay_fc (const std::vector<float> &taps); class gr_fir_fff; @@ -50,7 +51,7 @@ class gr_fir_fff; * before initializing this block. * */ -class gr_filter_delay_fc : public gr_sync_block +class GR_CORE_API gr_filter_delay_fc : public gr_sync_block { public: ~gr_filter_delay_fc (); @@ -66,7 +67,7 @@ class gr_filter_delay_fc : public gr_sync_block unsigned int d_delay; gr_fir_fff *d_fir; - friend gr_filter_delay_fc_sptr gr_make_filter_delay_fc (const std::vector<float> &taps); + friend GR_CORE_API gr_filter_delay_fc_sptr gr_make_filter_delay_fc (const std::vector<float> &taps); }; #endif /* INCLUDED_GR_FILTER_DELAY_FC_H */ diff --git a/gnuradio-core/src/lib/filter/gr_fir_XXX.h.t b/gnuradio-core/src/lib/filter/gr_fir_XXX.h.t index eeee716ec..f6019ea40 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_XXX.h.t +++ b/gnuradio-core/src/lib/filter/gr_fir_XXX.h.t @@ -29,6 +29,7 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <vector> @VRCOMPLEX_INCLUDE@ #include <gr_reverse.h> @@ -44,7 +45,7 @@ * I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int) */ -class @FIR_TYPE@ { +class GR_CORE_API @FIR_TYPE@ { protected: std::vector<@TAP_TYPE@> d_taps; // reversed taps diff --git a/gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t b/gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t index fc0f4f8b2..b3594b7ad 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t +++ b/gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t @@ -22,6 +22,7 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <@FIR_TYPE@.h> /*! @@ -32,7 +33,7 @@ * I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int) */ -class @FIR_TYPE@_generic : public @FIR_TYPE@ { +class GR_CORE_API @FIR_TYPE@_generic : public @FIR_TYPE@ { public: diff --git a/gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h b/gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h index 14ff1e6b1..af61ce274 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h +++ b/gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_FIR_CCC_SIMD_H #define INCLUDED_GR_FIR_CCC_SIMD_H +#include <gr_core_api.h> #include <gr_fir_ccc_generic.h> /*! @@ -32,7 +33,7 @@ * subclasses. */ -class gr_fir_ccc_simd : public gr_fir_ccc_generic +class GR_CORE_API gr_fir_ccc_simd : public gr_fir_ccc_generic { protected: typedef void (*ccomplex_dotprod_t)(const float *input, diff --git a/gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h b/gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h index 06d6b616c..262cc80e3 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h +++ b/gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h @@ -23,19 +23,20 @@ #ifndef INCLUDED_GR_FIR_CCC_X86_H #define INCLUDED_GR_FIR_CCC_X86_H +#include <gr_core_api.h> #include <gr_fir_ccc_simd.h> /*! * \brief 3DNow! version of gr_fir_ccc */ -class gr_fir_ccc_3dnow : public gr_fir_ccc_simd +class GR_CORE_API gr_fir_ccc_3dnow : public gr_fir_ccc_simd { public: gr_fir_ccc_3dnow (); gr_fir_ccc_3dnow (const std::vector<gr_complex> &taps); }; -class gr_fir_ccc_3dnowext : public gr_fir_ccc_simd +class GR_CORE_API gr_fir_ccc_3dnowext : public gr_fir_ccc_simd { public: gr_fir_ccc_3dnowext (); @@ -45,7 +46,7 @@ public: /*! * \brief SSE version of gr_fir_ccc */ -class gr_fir_ccc_sse : public gr_fir_ccc_simd +class GR_CORE_API gr_fir_ccc_sse : public gr_fir_ccc_simd { public: gr_fir_ccc_sse (); diff --git a/gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h b/gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h index ebc6a1bc0..31d70288e 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h +++ b/gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_FIR_CCF_SIMD_H #define INCLUDED_GR_FIR_CCF_SIMD_H +#include <gr_core_api.h> #include <gr_fir_ccf_generic.h> @@ -33,7 +34,7 @@ * subclasses. */ -class gr_fir_ccf_simd : public gr_fir_ccf_generic +class GR_CORE_API gr_fir_ccf_simd : public gr_fir_ccf_generic { protected: typedef void (*fcomplex_dotprod_t)(const float *taps, diff --git a/gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h b/gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h index 7f936546f..38d82060c 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h +++ b/gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_FIR_CCF_X86_H #define INCLUDED_GR_FIR_CCF_X86_H +#include <gr_core_api.h> #include <gr_fir_ccf_simd.h> /*! * \brief 3DNow! version of gr_fir_ccf * \ingroup filter_primitive */ -class gr_fir_ccf_3dnow : public gr_fir_ccf_simd +class GR_CORE_API gr_fir_ccf_3dnow : public gr_fir_ccf_simd { public: gr_fir_ccf_3dnow (); @@ -40,7 +41,7 @@ public: * \brief SSE version of gr_fir_ccf * \ingroup filter_primitive */ -class gr_fir_ccf_sse : public gr_fir_ccf_simd +class GR_CORE_API gr_fir_ccf_sse : public gr_fir_ccf_simd { public: gr_fir_ccf_sse (); diff --git a/gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h b/gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h index e2ed8bcae..7be3776e3 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h +++ b/gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_FIR_FCC_SIMD_H #define INCLUDED_GR_FIR_FCC_SIMD_H +#include <gr_core_api.h> #include <gr_fir_fcc_generic.h> @@ -33,7 +34,7 @@ * subclasses. */ -class gr_fir_fcc_simd : public gr_fir_fcc_generic +class GR_CORE_API gr_fir_fcc_simd : public gr_fir_fcc_generic { protected: typedef void (*fcomplex_dotprod_t)(const float *input, diff --git a/gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h b/gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h index 49386c35d..98ace66de 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h +++ b/gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_FIR_FCC_X86_H #define INCLUDED_GR_FIR_FCC_X86_H +#include <gr_core_api.h> #include <gr_fir_fcc_simd.h> /*! * \brief 3DNow! version of gr_fir_fcc * \ingroup filter_primitive */ -class gr_fir_fcc_3dnow : public gr_fir_fcc_simd +class GR_CORE_API gr_fir_fcc_3dnow : public gr_fir_fcc_simd { public: gr_fir_fcc_3dnow (); @@ -40,7 +41,7 @@ public: * \brief SSE version of gr_fir_fcc * \ingroup filter_blk */ -class gr_fir_fcc_sse : public gr_fir_fcc_simd +class GR_CORE_API gr_fir_fcc_sse : public gr_fir_fcc_simd { public: gr_fir_fcc_sse (); diff --git a/gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h b/gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h index 1694f5524..29bb3a899 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h +++ b/gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h @@ -21,12 +21,13 @@ #ifndef INCLUDED_GR_FIR_FFF_ALTIVEC_H #define INCLUDED_GR_FIR_FFF_ALTIVEC_H +#include <gr_core_api.h> #include <gr_fir_fff_generic.h> /*! * \brief altivec version of gr_fir_fff */ -class gr_fir_fff_altivec : public gr_fir_fff_generic +class GR_CORE_API gr_fir_fff_altivec : public gr_fir_fff_generic { protected: diff --git a/gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h b/gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h index d6097cf50..5c80c930f 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h +++ b/gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h @@ -21,12 +21,13 @@ #ifndef INCLUDED_GR_FIR_FFF_ARMV7_A_H #define INCLUDED_GR_FIR_FFF_ARMV7_A_H +#include <gr_core_api.h> #include <gr_fir_fff_generic.h> /*! * \brief armv7_a using NEON coprocessor version of gr_fir_fff */ -class gr_fir_fff_armv7_a : public gr_fir_fff_generic +class GR_CORE_API gr_fir_fff_armv7_a : public gr_fir_fff_generic { protected: diff --git a/gnuradio-core/src/lib/filter/gr_fir_fff_simd.h b/gnuradio-core/src/lib/filter/gr_fir_fff_simd.h index 82d3e3b99..781e4e7b9 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_fff_simd.h +++ b/gnuradio-core/src/lib/filter/gr_fir_fff_simd.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_FIR_FFF_SIMD_H #define INCLUDED_GR_FIR_FFF_SIMD_H +#include <gr_core_api.h> #include <gr_fir_fff_generic.h> /*! @@ -32,7 +33,7 @@ * subclasses. */ -class gr_fir_fff_simd : public gr_fir_fff_generic +class GR_CORE_API gr_fir_fff_simd : public gr_fir_fff_generic { protected: typedef float (*float_dotprod_t)(const float *input, diff --git a/gnuradio-core/src/lib/filter/gr_fir_fff_x86.h b/gnuradio-core/src/lib/filter/gr_fir_fff_x86.h index c288035ba..4e2f33181 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_fff_x86.h +++ b/gnuradio-core/src/lib/filter/gr_fir_fff_x86.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FIR_FFF_X86_H #define INCLUDED_GR_FIR_FFF_X86_H +#include <gr_core_api.h> #include <gr_fir_fff_simd.h> /*! * \brief 3DNow! version of gr_fir_fff */ -class gr_fir_fff_3dnow : public gr_fir_fff_simd +class GR_CORE_API gr_fir_fff_3dnow : public gr_fir_fff_simd { public: gr_fir_fff_3dnow (); @@ -38,7 +39,7 @@ public: /*! * \brief SSE version of gr_fir_fff */ -class gr_fir_fff_sse : public gr_fir_fff_simd +class GR_CORE_API gr_fir_fff_sse : public gr_fir_fff_simd { public: gr_fir_fff_sse (); diff --git a/gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t b/gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t index f2e56c901..db0625504 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t +++ b/gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t @@ -28,11 +28,12 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_decimator.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps); class @FIR_TYPE@; @@ -40,10 +41,10 @@ class @FIR_TYPE@; * \brief FIR filter with @I_TYPE@ input, @O_TYPE@ output and @TAP_TYPE@ taps * \ingroup filter_blk */ -class @NAME@ : public gr_sync_decimator +class GR_CORE_API @NAME@ : public gr_sync_decimator { private: - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps); @FIR_TYPE@ *d_fir; std::vector<@TAP_TYPE@> d_new_taps; diff --git a/gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h b/gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h index ad689407d..6fcb6bd35 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h +++ b/gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h @@ -22,6 +22,7 @@ #ifndef _GR_FIR_FSF_SIMD_H_ #define _GR_FIR_FSF_SIMD_H_ +#include <gr_core_api.h> #include <gr_fir_fsf_generic.h> /*! @@ -32,7 +33,7 @@ * subclasses. */ -class gr_fir_fsf_simd : public gr_fir_fsf_generic +class GR_CORE_API gr_fir_fsf_simd : public gr_fir_fsf_generic { protected: typedef float (*float_dotprod_t)(const float *input, diff --git a/gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h b/gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h index 78fdf73c0..0e11059b3 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h +++ b/gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_FIR_FSF_X86_H #define INCLUDED_GR_FIR_FSF_X86_H +#include <gr_core_api.h> #include <gr_fir_fsf_simd.h> /*! * \brief 3DNow! version of gr_fir_fsf * \ingroup filter_primitive */ -class gr_fir_fsf_3dnow : public gr_fir_fsf_simd +class GR_CORE_API gr_fir_fsf_3dnow : public gr_fir_fsf_simd { public: gr_fir_fsf_3dnow (); @@ -40,7 +41,7 @@ public: * \brief SSE version of gr_fir_fsf * \ingroup filter_primitive */ -class gr_fir_fsf_sse : public gr_fir_fsf_simd +class GR_CORE_API gr_fir_fsf_sse : public gr_fir_fsf_simd { public: gr_fir_fsf_sse (); diff --git a/gnuradio-core/src/lib/filter/gr_fir_scc_simd.h b/gnuradio-core/src/lib/filter/gr_fir_scc_simd.h index 2af45c8f4..9dced1578 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_scc_simd.h +++ b/gnuradio-core/src/lib/filter/gr_fir_scc_simd.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_FIR_SCC_SIMD_H #define INCLUDED_GR_FIR_SCC_SIMD_H +#include <gr_core_api.h> #include <gr_fir_scc_generic.h> @@ -32,7 +33,7 @@ * This base class handles alignment issues common to SSE and 3DNOW * subclasses. */ -class gr_fir_scc_simd : public gr_fir_scc_generic +class GR_CORE_API gr_fir_scc_simd : public gr_fir_scc_generic { protected: typedef void (*complex_dotprod_t)(const short *input, diff --git a/gnuradio-core/src/lib/filter/gr_fir_scc_x86.h b/gnuradio-core/src/lib/filter/gr_fir_scc_x86.h index 0cb5e3f7c..484bdc5a0 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_scc_x86.h +++ b/gnuradio-core/src/lib/filter/gr_fir_scc_x86.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FIR_SCC_X86_H #define INCLUDED_GR_FIR_SCC_X86_H +#include <gr_core_api.h> #include <gr_fir_scc_simd.h> /*! * \brief 3DNow! version of gr_fir_scc */ -class gr_fir_scc_3dnow : public gr_fir_scc_simd +class GR_CORE_API gr_fir_scc_3dnow : public gr_fir_scc_simd { public: gr_fir_scc_3dnow (); @@ -38,7 +39,7 @@ public: /*! * \brief 3DNow! Ext version of gr_fir_scc */ -class gr_fir_scc_3dnowext : public gr_fir_scc_simd +class GR_CORE_API gr_fir_scc_3dnowext : public gr_fir_scc_simd { public: gr_fir_scc_3dnowext (); @@ -48,7 +49,7 @@ public: /*! * \brief SSE version of gr_fir_scc */ -class gr_fir_scc_sse : public gr_fir_scc_simd +class GR_CORE_API gr_fir_scc_sse : public gr_fir_scc_simd { public: gr_fir_scc_sse (); diff --git a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h index c77b81026..69ee46019 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h +++ b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h @@ -22,9 +22,10 @@ #ifndef INCLUDED_GR_FIR_SYSCONFIG_ARMV7_A_H #define INCLUDED_GR_FIR_SYSCONFIG_ARMV7_A_H +#include <gr_core_api.h> #include <gr_fir_sysconfig_generic.h> -class gr_fir_sysconfig_armv7_a : public gr_fir_sysconfig_generic { +class GR_CORE_API gr_fir_sysconfig_armv7_a : public gr_fir_sysconfig_generic { public: virtual gr_fir_ccf *create_gr_fir_ccf (const std::vector<float> &taps); virtual gr_fir_fcc *create_gr_fir_fcc (const std::vector<gr_complex> &taps); diff --git a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h index 9c31cdf1b..d6be7653f 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h +++ b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h @@ -22,9 +22,10 @@ #ifndef INCLUDED_GR_FIR_SYSCONFIG_POWERPC_H #define INCLUDED_GR_FIR_SYSCONFIG_POWERPC_H +#include <gr_core_api.h> #include <gr_fir_sysconfig_generic.h> -class gr_fir_sysconfig_powerpc : public gr_fir_sysconfig_generic { +class GR_CORE_API gr_fir_sysconfig_powerpc : public gr_fir_sysconfig_generic { public: virtual gr_fir_ccf *create_gr_fir_ccf (const std::vector<float> &taps); virtual gr_fir_fcc *create_gr_fir_fcc (const std::vector<gr_complex> &taps); diff --git a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h index a4d0f92b0..49899d895 100644 --- a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h +++ b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h @@ -22,9 +22,10 @@ #ifndef INCLUDED_GR_FIR_SYSCONFIG_X86_H #define INCLUDED_GR_FIR_SYSCONFIG_X86_H +#include <gr_core_api.h> #include <gr_fir_sysconfig_generic.h> -class gr_fir_sysconfig_x86 : public gr_fir_sysconfig_generic { +class GR_CORE_API gr_fir_sysconfig_x86 : public gr_fir_sysconfig_generic { public: virtual gr_fir_ccf *create_gr_fir_ccf (const std::vector<float> &taps); virtual gr_fir_fcc *create_gr_fir_fcc (const std::vector<gr_complex> &taps); diff --git a/gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h b/gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h index c8378c43e..29c67895a 100644 --- a/gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h +++ b/gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_FRACTIONAL_INTERPOLATOR_CC_H #define INCLUDED_GR_FRACTIONAL_INTERPOLATOR_CC_H +#include <gr_core_api.h> #include <gr_block.h> class gri_mmse_fir_interpolator_cc; @@ -31,13 +32,13 @@ class gr_fractional_interpolator_cc; typedef boost::shared_ptr<gr_fractional_interpolator_cc> gr_fractional_interpolator_cc_sptr; // public constructor -gr_fractional_interpolator_cc_sptr gr_make_fractional_interpolator_cc (float phase_shift, float interp_ratio); +GR_CORE_API gr_fractional_interpolator_cc_sptr gr_make_fractional_interpolator_cc (float phase_shift, float interp_ratio); /*! * \brief Interpolating mmse filter with gr_complex input, gr_complex output * \ingroup filter_blk */ -class gr_fractional_interpolator_cc : public gr_block +class GR_CORE_API gr_fractional_interpolator_cc : public gr_block { public: ~gr_fractional_interpolator_cc (); @@ -60,7 +61,7 @@ private: float d_mu_inc; gri_mmse_fir_interpolator_cc *d_interp; - friend gr_fractional_interpolator_cc_sptr + friend GR_CORE_API gr_fractional_interpolator_cc_sptr gr_make_fractional_interpolator_cc (float phase_shift, float interp_ratio); }; diff --git a/gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h b/gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h index f50129289..7e000a6d1 100644 --- a/gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h +++ b/gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_FRACTIONAL_INTERPOLATOR_FF_H #define INCLUDED_GR_FRACTIONAL_INTERPOLATOR_FF_H +#include <gr_core_api.h> #include <gr_block.h> class gri_mmse_fir_interpolator; @@ -31,13 +32,13 @@ class gr_fractional_interpolator_ff; typedef boost::shared_ptr<gr_fractional_interpolator_ff> gr_fractional_interpolator_ff_sptr; // public constructor -gr_fractional_interpolator_ff_sptr gr_make_fractional_interpolator_ff (float phase_shift, float interp_ratio); +GR_CORE_API gr_fractional_interpolator_ff_sptr gr_make_fractional_interpolator_ff (float phase_shift, float interp_ratio); /*! * \brief Interpolating mmse filter with float input, float output * \ingroup filter_blk */ -class gr_fractional_interpolator_ff : public gr_block +class GR_CORE_API gr_fractional_interpolator_ff : public gr_block { public: ~gr_fractional_interpolator_ff (); @@ -60,7 +61,7 @@ private: float d_mu_inc; gri_mmse_fir_interpolator *d_interp; - friend gr_fractional_interpolator_ff_sptr + friend GR_CORE_API gr_fractional_interpolator_ff_sptr gr_make_fractional_interpolator_ff (float phase_shift, float interp_ratio); }; diff --git a/gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t b/gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t index 1205e8a08..bb05c138b 100644 --- a/gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t +++ b/gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t @@ -29,6 +29,7 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_decimator.h> #include <gr_rotator.h> @@ -40,7 +41,7 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * translation that shifts center_freq down to zero Hz. The frequency * translation logically comes before the filtering operation. */ -@SPTR_NAME@ +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps, double center_freq, double sampling_freq); @@ -60,7 +61,7 @@ class @FIR_TYPE@; * Uses a single input array to produce a single output array. * Additional inputs and/or outputs are ignored. */ -class @NAME@ : public gr_sync_decimator +class GR_CORE_API @NAME@ : public gr_sync_decimator { public: virtual ~@NAME@ (); @@ -73,7 +74,7 @@ class @NAME@ : public gr_sync_decimator gr_vector_void_star &output_items); private: - friend @SPTR_NAME@ + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps, double center_freq, double sampling_freq); diff --git a/gnuradio-core/src/lib/filter/gr_goertzel_fc.h b/gnuradio-core/src/lib/filter/gr_goertzel_fc.h index c60b63d88..6b5d8527c 100644 --- a/gnuradio-core/src/lib/filter/gr_goertzel_fc.h +++ b/gnuradio-core/src/lib/filter/gr_goertzel_fc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_GOERTZEL_FC_H #define INCLUDED_GR_GOERTZEL_FC_H +#include <gr_core_api.h> #include <gri_goertzel.h> #include <gr_sync_decimator.h> @@ -30,16 +31,16 @@ class gr_goertzel_fc; typedef boost::shared_ptr<gr_goertzel_fc> gr_goertzel_fc_sptr; // public constructor -gr_goertzel_fc_sptr gr_make_goertzel_fc(int rate, int len, float freq); +GR_CORE_API gr_goertzel_fc_sptr gr_make_goertzel_fc(int rate, int len, float freq); /*! * \brief Goertzel single-bin DFT calculation. * \ingroup dft_blk */ -class gr_goertzel_fc : public gr_sync_decimator +class GR_CORE_API gr_goertzel_fc : public gr_sync_decimator { private: - friend gr_goertzel_fc_sptr gr_make_goertzel_fc (int rate, int len, float freq); + friend GR_CORE_API gr_goertzel_fc_sptr gr_make_goertzel_fc (int rate, int len, float freq); gr_goertzel_fc(int rate, int len, float freq); gri_goertzel d_goertzel; diff --git a/gnuradio-core/src/lib/filter/gr_hilbert_fc.h b/gnuradio-core/src/lib/filter/gr_hilbert_fc.h index adcac7793..ba73324ee 100644 --- a/gnuradio-core/src/lib/filter/gr_hilbert_fc.h +++ b/gnuradio-core/src/lib/filter/gr_hilbert_fc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_HILBERT_FC_H #define INCLUDED_GR_HILBERT_FC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_io_signature.h> #include <gr_types.h> @@ -31,7 +32,7 @@ class gr_hilbert_fc; typedef boost::shared_ptr<gr_hilbert_fc> gr_hilbert_fc_sptr; // public constructor -gr_hilbert_fc_sptr gr_make_hilbert_fc (unsigned int ntaps); +GR_CORE_API gr_hilbert_fc_sptr gr_make_hilbert_fc (unsigned int ntaps); class gr_fir_fff; @@ -44,7 +45,7 @@ class gr_fir_fff; * imaginary output is hilbert filtered (90 degree phase shift) * version of input. */ -class gr_hilbert_fc : public gr_sync_block +class GR_CORE_API gr_hilbert_fc : public gr_sync_block { public: ~gr_hilbert_fc (); @@ -60,7 +61,7 @@ class gr_hilbert_fc : public gr_sync_block unsigned int d_ntaps; gr_fir_fff *d_hilb; - friend gr_hilbert_fc_sptr gr_make_hilbert_fc (unsigned int ntaps); + friend GR_CORE_API gr_hilbert_fc_sptr gr_make_hilbert_fc (unsigned int ntaps); }; diff --git a/gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h b/gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h index 0382646f1..386d056e5 100644 --- a/gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h +++ b/gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_IIR_FILTER_FFD_H #define INCLUDED_GR_IIR_FILTER_FFD_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_iir.h> #include <stdexcept> class gr_iir_filter_ffd; typedef boost::shared_ptr<gr_iir_filter_ffd> gr_iir_filter_ffd_sptr; -gr_iir_filter_ffd_sptr +GR_CORE_API gr_iir_filter_ffd_sptr gr_make_iir_filter_ffd (const std::vector<double> &fftaps, const std::vector<double> &fbtaps) throw (std::invalid_argument); @@ -56,10 +57,10 @@ gr_make_iir_filter_ffd (const std::vector<double> &fftaps, * Note that some texts define the system function with a + in the denominator. * If you're using that convention, you'll need to negate the feedback taps. */ -class gr_iir_filter_ffd : public gr_sync_block +class GR_CORE_API gr_iir_filter_ffd : public gr_sync_block { private: - friend gr_iir_filter_ffd_sptr + friend GR_CORE_API gr_iir_filter_ffd_sptr gr_make_iir_filter_ffd (const std::vector<double> &fftaps, const std::vector<double> &fbtaps) throw (std::invalid_argument); diff --git a/gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t b/gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t index 790e0b908..4a3590fc7 100644 --- a/gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t +++ b/gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t @@ -28,11 +28,12 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, const std::vector<@TAP_TYPE@> &taps); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, const std::vector<@TAP_TYPE@> &taps); class @FIR_TYPE@; @@ -40,10 +41,10 @@ class @FIR_TYPE@; * \brief Interpolating FIR filter with @I_TYPE@ input, @O_TYPE@ output and @TAP_TYPE@ taps * \ingroup filter_blk */ -class @NAME@ : public gr_sync_interpolator +class GR_CORE_API @NAME@ : public gr_sync_interpolator { private: - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, const std::vector<@TAP_TYPE@> &taps); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, const std::vector<@TAP_TYPE@> &taps); std::vector<@TAP_TYPE@> d_new_taps; bool d_updated; diff --git a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h index 806c33d92..749db937e 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h @@ -24,11 +24,12 @@ #ifndef INCLUDED_GR_PFB_ARB_RESAMPLER_CCF_H #define INCLUDED_GR_PFB_ARB_RESAMPLER_CCF_H +#include <gr_core_api.h> #include <gr_block.h> class gr_pfb_arb_resampler_ccf; typedef boost::shared_ptr<gr_pfb_arb_resampler_ccf> gr_pfb_arb_resampler_ccf_sptr; -gr_pfb_arb_resampler_ccf_sptr gr_make_pfb_arb_resampler_ccf (float rate, +GR_CORE_API gr_pfb_arb_resampler_ccf_sptr gr_make_pfb_arb_resampler_ccf (float rate, const std::vector<float> &taps, unsigned int filter_size=32); @@ -96,7 +97,7 @@ class gr_fir_ccf; * Systems", Upper Saddle River, NJ: Prentice Hall, Inc. 2004.</EM></B> */ -class gr_pfb_arb_resampler_ccf : public gr_block +class GR_CORE_API gr_pfb_arb_resampler_ccf : public gr_block { private: /*! @@ -108,7 +109,7 @@ class gr_pfb_arb_resampler_ccf : public gr_block related to quantization noise introduced during the resampling. Defaults to 32 filters. */ - friend gr_pfb_arb_resampler_ccf_sptr gr_make_pfb_arb_resampler_ccf (float rate, + friend GR_CORE_API gr_pfb_arb_resampler_ccf_sptr gr_make_pfb_arb_resampler_ccf (float rate, const std::vector<float> &taps, unsigned int filter_size); diff --git a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h index 69331a2c6..7fef06143 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h @@ -24,11 +24,12 @@ #ifndef INCLUDED_GR_PFB_ARB_RESAMPLER_FFF_H #define INCLUDED_GR_PFB_ARB_RESAMPLER_FFF_H +#include <gr_core_api.h> #include <gr_block.h> class gr_pfb_arb_resampler_fff; typedef boost::shared_ptr<gr_pfb_arb_resampler_fff> gr_pfb_arb_resampler_fff_sptr; -gr_pfb_arb_resampler_fff_sptr gr_make_pfb_arb_resampler_fff (float rate, +GR_CORE_API gr_pfb_arb_resampler_fff_sptr gr_make_pfb_arb_resampler_fff (float rate, const std::vector<float> &taps, unsigned int filter_size=32); @@ -96,7 +97,7 @@ class gr_fir_fff; * Systems", Upper Saddle River, NJ: Prentice Hall, Inc. 2004.</EM></B> */ -class gr_pfb_arb_resampler_fff : public gr_block +class GR_CORE_API gr_pfb_arb_resampler_fff : public gr_block { private: /*! @@ -108,7 +109,7 @@ class gr_pfb_arb_resampler_fff : public gr_block related to quantization noise introduced during the resampling. Defaults to 32 filters. */ - friend gr_pfb_arb_resampler_fff_sptr gr_make_pfb_arb_resampler_fff (float rate, + friend GR_CORE_API gr_pfb_arb_resampler_fff_sptr gr_make_pfb_arb_resampler_fff (float rate, const std::vector<float> &taps, unsigned int filter_size); diff --git a/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h index 68476ed3c..8fd5c4f78 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h @@ -24,11 +24,12 @@ #ifndef INCLUDED_GR_PFB_CHANNELIZER_CCF_H #define INCLUDED_GR_PFB_CHANNELIZER_CCF_H +#include <gr_core_api.h> #include <gr_block.h> class gr_pfb_channelizer_ccf; typedef boost::shared_ptr<gr_pfb_channelizer_ccf> gr_pfb_channelizer_ccf_sptr; -gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans, +GR_CORE_API gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans, const std::vector<float> &taps, float oversample_rate=1); @@ -111,7 +112,7 @@ class gri_fft_complex; * */ -class gr_pfb_channelizer_ccf : public gr_block +class GR_CORE_API gr_pfb_channelizer_ccf : public gr_block { private: /*! @@ -131,7 +132,7 @@ class gr_pfb_channelizer_ccf : public gr_block * sample rate of a 6/1 oversample ratio is 6000 Hz, or * 6 times the normal 1000 Hz. */ - friend gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans, + friend GR_CORE_API gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans, const std::vector<float> &taps, float oversample_rate); diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h index 674dee181..514f580ba 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h @@ -24,11 +24,12 @@ #ifndef INCLUDED_GR_PFB_CLOCK_SYNC_CCF_H #define INCLUDED_GR_PFB_CLOCK_SYNC_CCF_H +#include <gr_core_api.h> #include <gr_block.h> class gr_pfb_clock_sync_ccf; typedef boost::shared_ptr<gr_pfb_clock_sync_ccf> gr_pfb_clock_sync_ccf_sptr; -gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float loop_bw, +GR_CORE_API gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float loop_bw, const std::vector<float> &taps, unsigned int filter_size=32, float init_phase=0, @@ -125,7 +126,7 @@ class gr_fir_ccf; * */ -class gr_pfb_clock_sync_ccf : public gr_block +class GR_CORE_API gr_pfb_clock_sync_ccf : public gr_block { private: /*! @@ -140,7 +141,7 @@ class gr_pfb_clock_sync_ccf : public gr_block * \param osps (int) The number of output samples per symbol (default=1). * */ - friend gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float loop_bw, + friend GR_CORE_API gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float loop_bw, const std::vector<float> &taps, unsigned int filter_size, float init_phase, diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h index d7c646801..447d3e59d 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h @@ -24,11 +24,12 @@ #ifndef INCLUDED_GR_PFB_CLOCK_SYNC_FFF_H #define INCLUDED_GR_PFB_CLOCK_SYNC_FFF_H +#include <gr_core_api.h> #include <gr_block.h> class gr_pfb_clock_sync_fff; typedef boost::shared_ptr<gr_pfb_clock_sync_fff> gr_pfb_clock_sync_fff_sptr; -gr_pfb_clock_sync_fff_sptr gr_make_pfb_clock_sync_fff (double sps, float gain, +GR_CORE_API gr_pfb_clock_sync_fff_sptr gr_make_pfb_clock_sync_fff (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size=32, float init_phase=0, @@ -124,7 +125,7 @@ class gr_fir_fff; * */ -class gr_pfb_clock_sync_fff : public gr_block +class GR_CORE_API gr_pfb_clock_sync_fff : public gr_block { private: /*! @@ -138,7 +139,7 @@ class gr_pfb_clock_sync_fff : public gr_block * \param max_rate_deviation (float) Distance from 0 d_rate can get (default = 1.5). * */ - friend gr_pfb_clock_sync_fff_sptr gr_make_pfb_clock_sync_fff (double sps, float gain, + friend GR_CORE_API gr_pfb_clock_sync_fff_sptr gr_make_pfb_clock_sync_fff (double sps, float gain, const std::vector<float> &taps, unsigned int filter_size, float init_phase, diff --git a/gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h index 6b75c5859..0ae054685 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h @@ -24,11 +24,12 @@ #ifndef INCLUDED_GR_PFB_DECIMATOR_CCF_H #define INCLUDED_GR_PFB_DECIMATOR_CCF_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_pfb_decimator_ccf; typedef boost::shared_ptr<gr_pfb_decimator_ccf> gr_pfb_decimator_ccf_sptr; -gr_pfb_decimator_ccf_sptr gr_make_pfb_decimator_ccf (unsigned int decim, +GR_CORE_API gr_pfb_decimator_ccf_sptr gr_make_pfb_decimator_ccf (unsigned int decim, const std::vector<float> &taps, unsigned int channel=0); @@ -93,7 +94,7 @@ class gri_fft_complex; * Systems," Upper Saddle River, NJ: Prentice Hall, Inc. 2004.</EM></B> */ -class gr_pfb_decimator_ccf : public gr_sync_block +class GR_CORE_API gr_pfb_decimator_ccf : public gr_sync_block { private: /*! @@ -102,7 +103,7 @@ class gr_pfb_decimator_ccf : public gr_sync_block * \param taps (vector/list of floats) The prototype filter to populate the filterbank. * \param channel (unsigned integer) Selects the channel to return [default=0]. */ - friend gr_pfb_decimator_ccf_sptr gr_make_pfb_decimator_ccf (unsigned int decim, + friend GR_CORE_API gr_pfb_decimator_ccf_sptr gr_make_pfb_decimator_ccf (unsigned int decim, const std::vector<float> &taps, unsigned int channel); diff --git a/gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h index 3dc52938e..6885881e9 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h @@ -24,11 +24,12 @@ #ifndef INCLUDED_GR_PFB_INTERPOLATOR_CCF_H #define INCLUDED_GR_PFB_INTERPOLATOR_CCF_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_pfb_interpolator_ccf; typedef boost::shared_ptr<gr_pfb_interpolator_ccf> gr_pfb_interpolator_ccf_sptr; -gr_pfb_interpolator_ccf_sptr gr_make_pfb_interpolator_ccf (unsigned int interp, +GR_CORE_API gr_pfb_interpolator_ccf_sptr gr_make_pfb_interpolator_ccf (unsigned int interp, const std::vector<float> &taps); class gr_fir_ccf; @@ -80,7 +81,7 @@ class gr_fir_ccf; * Inc. 2004.</EM></B> */ -class gr_pfb_interpolator_ccf : public gr_sync_interpolator +class GR_CORE_API gr_pfb_interpolator_ccf : public gr_sync_interpolator { private: /*! @@ -89,7 +90,7 @@ class gr_pfb_interpolator_ccf : public gr_sync_interpolator * \param taps (vector/list of floats) The prototype filter to populate the filterbank. The taps * should be generated at the interpolated sampling rate. */ - friend gr_pfb_interpolator_ccf_sptr gr_make_pfb_interpolator_ccf (unsigned int interp, + friend GR_CORE_API gr_pfb_interpolator_ccf_sptr gr_make_pfb_interpolator_ccf (unsigned int interp, const std::vector<float> &taps); std::vector<gr_fir_ccf*> d_filters; diff --git a/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h index 7e3700921..1f772b1dd 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h +++ b/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h @@ -24,12 +24,13 @@ #ifndef INCLUDED_GR_PFB_SYNTHESIS_FILTERBANK_CCF_H #define INCLUDED_GR_PFB_SYNTHESIS_FILTERBANK_CCF_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> #include <gri_fir_filter_with_buffer_ccf.h> class gr_pfb_synthesis_filterbank_ccf; typedef boost::shared_ptr<gr_pfb_synthesis_filterbank_ccf> gr_pfb_synthesis_filterbank_ccf_sptr; -gr_pfb_synthesis_filterbank_ccf_sptr gr_make_pfb_synthesis_filterbank_ccf +GR_CORE_API gr_pfb_synthesis_filterbank_ccf_sptr gr_make_pfb_synthesis_filterbank_ccf (unsigned int numchans, const std::vector<float> &taps); class gri_fft_complex; @@ -45,7 +46,7 @@ class gri_fft_complex; * \ingroup pfb_blk */ -class gr_pfb_synthesis_filterbank_ccf : public gr_sync_interpolator +class GR_CORE_API gr_pfb_synthesis_filterbank_ccf : public gr_sync_interpolator { private: /*! @@ -55,7 +56,7 @@ class gr_pfb_synthesis_filterbank_ccf : public gr_sync_interpolator * \param taps (vector/list of floats) The prototype filter to populate the filterbank. */ - friend gr_pfb_synthesis_filterbank_ccf_sptr gr_make_pfb_synthesis_filterbank_ccf + friend GR_CORE_API gr_pfb_synthesis_filterbank_ccf_sptr gr_make_pfb_synthesis_filterbank_ccf (unsigned int numchans, const std::vector<float> &taps); bool d_updated; diff --git a/gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t b/gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t index 983b350fa..8f50acc72 100644 --- a/gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t +++ b/gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t @@ -29,11 +29,12 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, unsigned decimation, const std::vector<@TAP_TYPE@> &taps); @@ -44,7 +45,7 @@ class @FIR_TYPE@; * \brief Rational Resampling Polyphase FIR filter with @I_TYPE@ input, @O_TYPE@ output and @TAP_TYPE@ taps * \ingroup filter_blk */ -class @NAME@ : public gr_block +class GR_CORE_API @NAME@ : public gr_block { private: unsigned d_history; @@ -54,7 +55,7 @@ class @NAME@ : public gr_block bool d_updated; std::vector<@FIR_TYPE@ *> d_firs; - friend @SPTR_NAME@ + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, unsigned decimation, const std::vector<@TAP_TYPE@> &taps); diff --git a/gnuradio-core/src/lib/filter/gr_rotator.h b/gnuradio-core/src/lib/filter/gr_rotator.h index cb8f21a40..23c7a2830 100644 --- a/gnuradio-core/src/lib/filter/gr_rotator.h +++ b/gnuradio-core/src/lib/filter/gr_rotator.h @@ -23,9 +23,10 @@ #ifndef _GR_ROTATOR_H_ #define _GR_ROTATOR_H_ +#include <gr_core_api.h> #include <gr_complex.h> -class gr_rotator { +class GR_CORE_API gr_rotator { gr_complex d_phase; gr_complex d_phase_incr; unsigned int d_counter; diff --git a/gnuradio-core/src/lib/filter/gr_sincos.h b/gnuradio-core/src/lib/filter/gr_sincos.h index a8e267951..3d5c99083 100644 --- a/gnuradio-core/src/lib/filter/gr_sincos.h +++ b/gnuradio-core/src/lib/filter/gr_sincos.h @@ -23,14 +23,16 @@ #ifndef INCLUDED_GR_SINCOS_H #define INCLUDED_GR_SINCOS_H +#include <gr_core_api.h> + #ifdef __cplusplus extern "C" { #endif // compute sine and cosine at the same time -void gr_sincos (double x, double *sin, double *cos); -void gr_sincosf (float x, float *sin, float *cos); +GR_CORE_API void gr_sincos (double x, double *sin, double *cos); +GR_CORE_API void gr_sincosf (float x, float *sin, float *cos); #ifdef __cplusplus }; diff --git a/gnuradio-core/src/lib/filter/gr_single_pole_iir.h b/gnuradio-core/src/lib/filter/gr_single_pole_iir.h index 8781065d4..fb52e29e9 100644 --- a/gnuradio-core/src/lib/filter/gr_single_pole_iir.h +++ b/gnuradio-core/src/lib/filter/gr_single_pole_iir.h @@ -22,6 +22,7 @@ #ifndef _GR_SINGLE_POLE_IIR_H_ #define _GR_SINGLE_POLE_IIR_H_ +#include <gr_core_api.h> #include <stdexcept> #include <gr_complex.h> /*! diff --git a/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h b/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h index 1f1073424..3ce468db2 100644 --- a/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h +++ b/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SINGLE_POLE_IIR_FILTER_CC_H #define INCLUDED_GR_SINGLE_POLE_IIR_FILTER_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_single_pole_iir.h> #include <gr_complex.h> @@ -31,7 +32,7 @@ class gr_single_pole_iir_filter_cc; typedef boost::shared_ptr<gr_single_pole_iir_filter_cc> gr_single_pole_iir_filter_cc_sptr; -gr_single_pole_iir_filter_cc_sptr +GR_CORE_API gr_single_pole_iir_filter_cc_sptr gr_make_single_pole_iir_filter_cc (double alpha, unsigned int vlen=1); /*! @@ -53,10 +54,10 @@ gr_make_single_pole_iir_filter_cc (double alpha, unsigned int vlen=1); * Note that some texts define the system function with a + in the denominator. * If you're using that convention, you'll need to negate the feedback tap. */ -class gr_single_pole_iir_filter_cc : public gr_sync_block +class GR_CORE_API gr_single_pole_iir_filter_cc : public gr_sync_block { private: - friend gr_single_pole_iir_filter_cc_sptr + friend GR_CORE_API gr_single_pole_iir_filter_cc_sptr gr_make_single_pole_iir_filter_cc (double alpha, unsigned int vlen); unsigned int d_vlen; diff --git a/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h b/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h index f676e94bc..d376587df 100644 --- a/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h +++ b/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SINGLE_POLE_IIR_FILTER_FF_H #define INCLUDED_GR_SINGLE_POLE_IIR_FILTER_FF_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_single_pole_iir.h> #include <stdexcept> @@ -30,7 +31,7 @@ class gr_single_pole_iir_filter_ff; typedef boost::shared_ptr<gr_single_pole_iir_filter_ff> gr_single_pole_iir_filter_ff_sptr; -gr_single_pole_iir_filter_ff_sptr +GR_CORE_API gr_single_pole_iir_filter_ff_sptr gr_make_single_pole_iir_filter_ff (double alpha, unsigned int vlen=1); /*! @@ -52,10 +53,10 @@ gr_make_single_pole_iir_filter_ff (double alpha, unsigned int vlen=1); * Note that some texts define the system function with a + in the denominator. * If you're using that convention, you'll need to negate the feedback tap. */ -class gr_single_pole_iir_filter_ff : public gr_sync_block +class GR_CORE_API gr_single_pole_iir_filter_ff : public gr_sync_block { private: - friend gr_single_pole_iir_filter_ff_sptr + friend GR_CORE_API gr_single_pole_iir_filter_ff_sptr gr_make_single_pole_iir_filter_ff (double alpha, unsigned int vlen); unsigned int d_vlen; diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h index 3cd9105c7..4db7ba50f 100644 --- a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h +++ b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GRI_FFT_FILTER_CCC_GENERIC_H #define INCLUDED_GRI_FFT_FILTER_CCC_GENERIC_H +#include <gr_core_api.h> #include <gr_complex.h> #include <vector> @@ -32,7 +33,7 @@ class gri_fft_complex; * \brief Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps * \ingroup filter_blk */ -class gri_fft_filter_ccc_generic +class GR_CORE_API gri_fft_filter_ccc_generic { private: int d_ntaps; diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h index d1c54f01f..6c96152c0 100644 --- a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h +++ b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GRI_FFT_FILTER_CCC_SSE_H #define INCLUDED_GRI_FFT_FILTER_CCC_SSE_H +#include <gr_core_api.h> #include <gr_complex.h> #include <vector> @@ -32,7 +33,7 @@ class gri_fft_complex; * \brief Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps * \ingroup filter_blk */ -class gri_fft_filter_ccc_sse +class GR_CORE_API gri_fft_filter_ccc_sse { private: int d_ntaps; diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h index 6c31632d5..86658043a 100644 --- a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h +++ b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GRI_FFT_FILTER_FFF_GENERIC_H #define INCLUDED_GRI_FFT_FILTER_FFF_GENERIC_H +#include <gr_core_api.h> #include <gr_complex.h> #include <vector> class gri_fft_real_fwd; class gri_fft_real_rev; -class gri_fft_filter_fff_generic +class GR_CORE_API gri_fft_filter_fff_generic { private: int d_ntaps; diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h index 8258bb824..bd87358e2 100644 --- a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h +++ b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GRI_FFT_FILTER_FFF_SSE_H #define INCLUDED_GRI_FFT_FILTER_FFF_SSE_H +#include <gr_core_api.h> #include <gr_complex.h> #include <vector> class gri_fft_real_fwd; class gri_fft_real_rev; -class gri_fft_filter_fff_sse +class GR_CORE_API gri_fft_filter_fff_sse { private: int d_ntaps; diff --git a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t index 23d64b65d..f209a8849 100644 --- a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t +++ b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t @@ -29,6 +29,7 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <vector> #include <gr_types.h> #include <gr_reverse.h> @@ -42,7 +43,7 @@ * */ -class @NAME@ { +class GR_CORE_API @NAME@ { protected: std::vector<@TAP_TYPE@> d_taps; // reversed taps diff --git a/gnuradio-core/src/lib/filter/gri_goertzel.h b/gnuradio-core/src/lib/filter/gri_goertzel.h index e062f000e..6fb64b942 100644 --- a/gnuradio-core/src/lib/filter/gri_goertzel.h +++ b/gnuradio-core/src/lib/filter/gri_goertzel.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GRI_GOERTZEL_H #define INCLUDED_GRI_GOERTZEL_H +#include <gr_core_api.h> #include <gr_types.h> /*! * \brief Implements Goertzel single-bin DFT calculation * \ingroup misc */ -class gri_goertzel +class GR_CORE_API gri_goertzel { public: gri_goertzel() {} diff --git a/gnuradio-core/src/lib/filter/gri_iir.h b/gnuradio-core/src/lib/filter/gri_iir.h index 5bc67df53..ddd8f9b81 100644 --- a/gnuradio-core/src/lib/filter/gri_iir.h +++ b/gnuradio-core/src/lib/filter/gri_iir.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GRI_IIR_H #define INCLUDED_GRI_IIR_H +#include <gr_core_api.h> #include <vector> #include <stdexcept> diff --git a/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h b/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h index 616520ad6..b2832b3f6 100644 --- a/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h +++ b/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h @@ -22,6 +22,7 @@ #ifndef _GRI_MMSE_FIR_INTERPOLATOR_H_ #define _GRI_MMSE_FIR_INTERPOLATOR_H_ +#include <gr_core_api.h> #include <vector> class gr_fir_fff; @@ -39,7 +40,7 @@ class gr_fir_fff; * method to 32nd's of a sample. */ -class gri_mmse_fir_interpolator { +class GR_CORE_API gri_mmse_fir_interpolator { public: gri_mmse_fir_interpolator (); ~gri_mmse_fir_interpolator (); diff --git a/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h b/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h index daf8b19b8..2feef114b 100644 --- a/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h +++ b/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h @@ -22,6 +22,7 @@ #ifndef _GRI_MMSE_FIR_INTERPOLATOR_CC_H_ #define _GRI_MMSE_FIR_INTERPOLATOR_CC_H_ +#include <gr_core_api.h> #include <gr_complex.h> #include <vector> @@ -40,7 +41,7 @@ class gr_fir_ccf; * method to 32nd's of a sample. */ -class gri_mmse_fir_interpolator_cc { +class GR_CORE_API gri_mmse_fir_interpolator_cc { public: gri_mmse_fir_interpolator_cc (); ~gri_mmse_fir_interpolator_cc (); diff --git a/gnuradio-core/src/lib/filter/qa_filter.h b/gnuradio-core/src/lib/filter/qa_filter.h index a51a88238..a10782068 100644 --- a/gnuradio-core/src/lib/filter/qa_filter.h +++ b/gnuradio-core/src/lib/filter/qa_filter.h @@ -23,11 +23,12 @@ #ifndef _QA_FILTER_H_ #define _QA_FILTER_H_ +#include <gruel/attributes.h> #include <cppunit/TestSuite.h> //! collect all the tests for the gr directory -class qa_filter { +class __GR_ATTR_EXPORT qa_filter { public: //! return suite of tests for all of gr directory static CppUnit::TestSuite *suite (); diff --git a/gnuradio-core/src/lib/general/CMakeLists.txt b/gnuradio-core/src/lib/general/CMakeLists.txt new file mode 100644 index 000000000..0445e251e --- /dev/null +++ b/gnuradio-core/src/lib/general/CMakeLists.txt @@ -0,0 +1,301 @@ +# Copyright 2010-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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +######################################################################## +# Handle the generated sine table +######################################################################## +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen_sine_table.py + COMMAND ${PYTHON_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/gen_sine_table.py > + ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h +) + +include(AddFileDependencies) +ADD_FILE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.cc + ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h +) + +######################################################################## +# Handle the generated constants +######################################################################## +execute_process(COMMAND ${PYTHON_EXECUTABLE} -c + "import time;print time.strftime('%a, %d %b %Y %H:%M:%S', time.gmtime())" + OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE +) +message(STATUS "Loading build date ${BUILD_DATE} into gr_constants...") + +message(STATUS "Loading version ${VERSION} into gr_constants...") + +file(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_CONF_DIR}" SYSCONFDIR) +file(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_PKG_CONF_DIR}" GR_PREFSDIR) + +#double escape for windows backslash path separators +string(REPLACE "\\" "\\\\" prefix ${prefix}) +string(REPLACE "\\" "\\\\" SYSCONFDIR ${SYSCONFDIR}) +string(REPLACE "\\" "\\\\" GR_PREFSDIR ${GR_PREFSDIR}) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.cc.in + ${CMAKE_CURRENT_BINARY_DIR}/gr_constants.cc +@ONLY) + +list(APPEND gnuradio_core_sources ${CMAKE_CURRENT_BINARY_DIR}/gr_constants.cc) + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/gr_circular_file.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_count_bits.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fast_atan2f.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fft_vcc_fftw.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_misc.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_random.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_reverse.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_add_const_ss_generic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_char_to_float.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_control_loop.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_debugger_hook.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_char.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_short.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_uchar.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_glfsr.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_interleaved_short_to_complex.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_short_to_float.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_uchar_to_float.cc + ${CMAKE_CURRENT_SOURCE_DIR}/malloc16.c +) + +######################################################################## +# Append gnuradio-core test sources +######################################################################## +list(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_general.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_circular_file.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_cpm.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_firdes.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt_nco.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt_vco.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_math.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_lfsr.cc +) + +######################################################################## +# Install runtime headers +######################################################################## +install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_core_api.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_circular_file.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_count_bits.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_expj.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fft_vcc_fftw.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt_nco.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt_vco.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_log2_const.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_math.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_misc.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_nco.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_random.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_reverse.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_simple_framer_sync.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_test_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vco.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_add_const_ss.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_cc.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_ff.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_cc.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_ff.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_char_to_float.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_control_loop.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_debugger_hook.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_char.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_short.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_uchar.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_glfsr.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_interleaved_short_to_complex.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr_15_1_0.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr_32k.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_short_to_float.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_uchar_to_float.h + ${CMAKE_CURRENT_SOURCE_DIR}/malloc16.h + ${CMAKE_CURRENT_SOURCE_DIR}/random.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Install swig headers +######################################################################## +if(ENABLE_PYTHON) +install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/general.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_cc.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_ff.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_cc.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_ff.i + ${CMAKE_CURRENT_SOURCE_DIR}/gri_control_loop.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) +endif(ENABLE_PYTHON) + +######################################################################## +# Handle triple-threat files that have cc, h, and i +######################################################################## +set(gr_core_general_triple_threats + complex_vec_test + gr_additive_scrambler_bb + gr_agc_cc + gr_agc_ff + gr_agc2_cc + gr_agc2_ff + gr_align_on_samplenumbers_ss + gr_bin_statistics_f + gr_bytes_to_syms + gr_char_to_float + gr_check_counting_s + gr_check_lfsr_32k_s + gr_complex_to_interleaved_short + gr_complex_to_xxx + gr_conjugate_cc + gr_copy + gr_cpfsk_bc + gr_cpm + gr_ctcss_squelch_ff + gr_decode_ccsds_27_fb + gr_diff_decoder_bb + gr_diff_encoder_bb + gr_diff_phasor_cc + gr_dpll_bb + gr_deinterleave + gr_delay + gr_encode_ccsds_27_bb + gr_fake_channel_coder_pp + gr_feedforward_agc_cc + gr_feval + gr_fft_vcc + gr_fft_vfc + gr_firdes + gr_float_to_char + gr_float_to_complex + gr_float_to_short + gr_float_to_uchar + gr_fmdet_cf + gr_frequency_modulator_fc + gr_framer_sink_1 + gr_glfsr_source_b + gr_glfsr_source_f + gr_head + gr_int_to_float + gr_interleave + gr_interleaved_short_to_complex + gr_iqcomp_cc + gr_keep_one_in_n + gr_kludge_copy + gr_lfsr_32k_source_s + gr_map_bb + gr_nlog10_ff + gr_nop + gr_null_sink + gr_null_source + gr_ofdm_frame_acquisition + gr_ofdm_cyclic_prefixer + gr_ofdm_demapper_vcb + gr_ofdm_mapper_bcv + gr_ofdm_frame_sink + #gr_ofdm_frame_sink2 #cannot build yet... + gr_ofdm_insert_preamble + gr_ofdm_sampler + gr_pa_2x2_phase_combiner + gr_packet_sink + gr_peak_detector2_fb + gr_phase_modulator_fc + gr_pll_carriertracking_cc + gr_pll_freqdet_cf + gr_pll_refout_cc + gr_pn_correlator_cc + gr_prefs + gr_probe_avg_mag_sqrd_c + gr_probe_avg_mag_sqrd_cf + gr_probe_avg_mag_sqrd_f + gr_probe_signal_f + gr_pwr_squelch_cc + gr_pwr_squelch_ff + gr_quadrature_demod_cf + gr_rail_ff + gr_regenerate_bb + gr_remez + gr_rms_cf + gr_rms_ff + gr_repeat + gr_short_to_float + gr_simple_correlator + gr_simple_framer + gr_simple_squelch_cc + gr_skiphead + gr_squash_ff + gr_squelch_base_cc + gr_squelch_base_ff + gr_stream_mux + gr_stream_to_streams + gr_stream_to_vector + gr_streams_to_stream + gr_streams_to_vector + gr_stretch_ff + gr_test + gr_threshold_ff + gr_throttle + gr_uchar_to_float + gr_vco_f + gr_vector_to_stream + gr_vector_to_streams + gr_unpack_k_bits_bb + gr_wavelet_ff + gr_wvps_ff + gr_descrambler_bb + gr_scrambler_bb + gr_probe_mpsk_snr_c + gr_probe_density_b + gr_annotator_alltoall + gr_annotator_1to1 + gr_burst_tagger + gr_correlate_access_code_tag_bb +) + +foreach(file_tt ${gr_core_general_triple_threats}) + list(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel") + if(ENABLE_PYTHON) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig") + endif(ENABLE_PYTHON) +endforeach(file_tt ${gr_core_general_triple_threats}) diff --git a/gnuradio-core/src/lib/general/complex_vec_test.h b/gnuradio-core/src/lib/general/complex_vec_test.h index d13dedf63..be4de41fb 100644 --- a/gnuradio-core/src/lib/general/complex_vec_test.h +++ b/gnuradio-core/src/lib/general/complex_vec_test.h @@ -1,27 +1,28 @@ +#include <gr_core_api.h> #include <vector> #include <complex> -std::vector<std::complex<float> > +GR_CORE_API std::vector<std::complex<float> > complex_vec_test0(); -std::vector<std::complex<float> > +GR_CORE_API std::vector<std::complex<float> > complex_vec_test1(const std::vector<std::complex<float> > &input); -std::complex<float> +GR_CORE_API std::complex<float> complex_scalar_test0(); -std::complex<float> +GR_CORE_API std::complex<float> complex_scalar_test1(std::complex<float> input); -std::vector<int> +GR_CORE_API std::vector<int> int_vec_test0(); -std::vector<int> +GR_CORE_API std::vector<int> int_vec_test1(const std::vector<int> &input); -std::vector<float> +GR_CORE_API std::vector<float> float_vec_test0(); -std::vector<float> +GR_CORE_API std::vector<float> float_vec_test1(const std::vector<float> &input); diff --git a/gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h b/gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h index 6c9493050..4c7c8f87e 100644 --- a/gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h +++ b/gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_ADDITIVE_SCRAMBLER_BB_H #define INCLUDED_GR_ADDITIVE_SCRAMBLER_BB_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include "gri_lfsr.h" class gr_additive_scrambler_bb; typedef boost::shared_ptr<gr_additive_scrambler_bb> gr_additive_scrambler_bb_sptr; -gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, int len, int count=0); +GR_CORE_API gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, int len, int count=0); /*! * Scramble an input stream using an LFSR. This block works on the LSB only @@ -48,9 +49,9 @@ gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, * \ingroup coding_blk */ -class gr_additive_scrambler_bb : public gr_sync_block +class GR_CORE_API gr_additive_scrambler_bb : public gr_sync_block { - friend gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, int len, int count); + friend GR_CORE_API gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, int len, int count); gri_lfsr d_lfsr; int d_count; diff --git a/gnuradio-core/src/lib/general/gr_agc2_cc.h b/gnuradio-core/src/lib/general/gr_agc2_cc.h index 0eb20afb9..6127c3aa7 100644 --- a/gnuradio-core/src/lib/general/gr_agc2_cc.h +++ b/gnuradio-core/src/lib/general/gr_agc2_cc.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_AGC2_CC_H #define INCLUDED_GR_AGC2_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_agc2_cc.h> class gr_agc2_cc; typedef boost::shared_ptr<gr_agc2_cc> gr_agc2_cc_sptr; -gr_agc2_cc_sptr +GR_CORE_API gr_agc2_cc_sptr gr_make_agc2_cc (float attack_rate = 1e-1, float decay_rate = 1e-2, float reference = 1.0, float gain = 1.0, float max_gain = 0.0); /*! @@ -39,9 +40,9 @@ gr_make_agc2_cc (float attack_rate = 1e-1, float decay_rate = 1e-2, float refere * For Power the absolute value of the complex number is used. */ -class gr_agc2_cc : public gr_sync_block, public gri_agc2_cc +class GR_CORE_API gr_agc2_cc : public gr_sync_block, public gri_agc2_cc { - friend gr_agc2_cc_sptr gr_make_agc2_cc (float attack_rate, float decay_rate, float reference, + friend GR_CORE_API gr_agc2_cc_sptr gr_make_agc2_cc (float attack_rate, float decay_rate, float reference, float gain, float max_gain); gr_agc2_cc (float attack_rate, float decay_rate, float reference, float gain, float max_gain); diff --git a/gnuradio-core/src/lib/general/gr_agc2_ff.h b/gnuradio-core/src/lib/general/gr_agc2_ff.h index ef470765f..269d940d4 100644 --- a/gnuradio-core/src/lib/general/gr_agc2_ff.h +++ b/gnuradio-core/src/lib/general/gr_agc2_ff.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_AGC2_FF_H #define INCLUDED_GR_AGC2_FF_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_agc2_ff.h> class gr_agc2_ff; typedef boost::shared_ptr<gr_agc2_ff> gr_agc2_ff_sptr; -gr_agc2_ff_sptr +GR_CORE_API gr_agc2_ff_sptr gr_make_agc2_ff (float attack_rate = 1e-1, float decay_rate = 1e-2, float reference = 1.0, float gain = 1.0, float max_gain = 0.0); /*! @@ -38,9 +39,9 @@ gr_make_agc2_ff (float attack_rate = 1e-1, float decay_rate = 1e-2, float refere * Power is approximated by absolute value */ -class gr_agc2_ff : public gr_sync_block, public gri_agc2_ff +class GR_CORE_API gr_agc2_ff : public gr_sync_block, public gri_agc2_ff { - friend gr_agc2_ff_sptr gr_make_agc2_ff (float attack_rate, float decay_rate, + friend GR_CORE_API gr_agc2_ff_sptr gr_make_agc2_ff (float attack_rate, float decay_rate, float reference, float gain, float max_gain); gr_agc2_ff (float attack_rate, float decay_rate, float reference, float gain, float max_gain); diff --git a/gnuradio-core/src/lib/general/gr_agc_cc.h b/gnuradio-core/src/lib/general/gr_agc_cc.h index 43a5de6c7..f348fff91 100644 --- a/gnuradio-core/src/lib/general/gr_agc_cc.h +++ b/gnuradio-core/src/lib/general/gr_agc_cc.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_AGC_CC_H #define INCLUDED_GR_AGC_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_agc_cc.h> class gr_agc_cc; typedef boost::shared_ptr<gr_agc_cc> gr_agc_cc_sptr; -gr_agc_cc_sptr +GR_CORE_API gr_agc_cc_sptr gr_make_agc_cc (float rate = 1e-4, float reference = 1.0, float gain = 1.0, float max_gain = 0.0); /*! @@ -38,9 +39,9 @@ gr_make_agc_cc (float rate = 1e-4, float reference = 1.0, * For Power the absolute value of the complex number is used. */ -class gr_agc_cc : public gr_sync_block, public gri_agc_cc +class GR_CORE_API gr_agc_cc : public gr_sync_block, public gri_agc_cc { - friend gr_agc_cc_sptr gr_make_agc_cc (float rate, float reference, + friend GR_CORE_API gr_agc_cc_sptr gr_make_agc_cc (float rate, float reference, float gain, float max_gain); gr_agc_cc (float rate, float reference, float gain, float max_gain); diff --git a/gnuradio-core/src/lib/general/gr_agc_ff.h b/gnuradio-core/src/lib/general/gr_agc_ff.h index 7cb167fca..94db9eef5 100644 --- a/gnuradio-core/src/lib/general/gr_agc_ff.h +++ b/gnuradio-core/src/lib/general/gr_agc_ff.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_AGC_FF_H #define INCLUDED_GR_AGC_FF_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_agc_ff.h> class gr_agc_ff; typedef boost::shared_ptr<gr_agc_ff> gr_agc_ff_sptr; -gr_agc_ff_sptr +GR_CORE_API gr_agc_ff_sptr gr_make_agc_ff (float rate = 1e-4, float reference = 1.0, float gain = 1.0, float max_gain = 0.0); @@ -39,9 +40,9 @@ gr_make_agc_ff (float rate = 1e-4, float reference = 1.0, * Power is approximated by absolute value */ -class gr_agc_ff : public gr_sync_block, public gri_agc_ff +class GR_CORE_API gr_agc_ff : public gr_sync_block, public gri_agc_ff { - friend gr_agc_ff_sptr gr_make_agc_ff (float rate, float reference, + friend GR_CORE_API gr_agc_ff_sptr gr_make_agc_ff (float rate, float reference, float gain, float max_gain); gr_agc_ff (float rate, float reference, float gain, float max_gain); diff --git a/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h b/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h index 5038e168b..61f70ee96 100644 --- a/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h +++ b/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_ALIGN_ON_SAMPLE_NUMBERS_SS_H #define INCLUDED_GR_ALIGN_ON_SAMPLE_NUMBERS_SS_H +#include <gr_core_api.h> #include <gr_block.h> /*! @@ -45,19 +46,19 @@ class gr_align_on_samplenumbers_ss; typedef boost::shared_ptr<gr_align_on_samplenumbers_ss> gr_align_on_samplenumbers_ss_sptr; -gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss (int nchan=2, int align_interval=128); +GR_CORE_API gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss (int nchan=2, int align_interval=128); -class gr_align_on_samplenumbers_ss : public gr_block +class GR_CORE_API gr_align_on_samplenumbers_ss : public gr_block { int d_align_interval; int d_sample_counter; int d_nchan; bool d_in_presync; unsigned int d_ninputs; - class align_state { + class GR_CORE_API align_state { public: unsigned int ucounter_end; unsigned int ucounter_begin; @@ -72,7 +73,7 @@ class gr_align_on_samplenumbers_ss : public gr_block }; std::vector<align_state> d_state; - friend gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss (int nchan,int align_interval); + friend GR_CORE_API gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss (int nchan,int align_interval); gr_align_on_samplenumbers_ss (int nchan,int align_interval); public: diff --git a/gnuradio-core/src/lib/general/gr_annotator_1to1.h b/gnuradio-core/src/lib/general/gr_annotator_1to1.h index 4abc5b051..d866407fe 100644 --- a/gnuradio-core/src/lib/general/gr_annotator_1to1.h +++ b/gnuradio-core/src/lib/general/gr_annotator_1to1.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_ANNOTATOR_1TO1_H #define INCLUDED_GR_ANNOTATOR_1TO1_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_annotator_1to1; typedef boost::shared_ptr<gr_annotator_1to1> gr_annotator_1to1_sptr; // public constructor -gr_annotator_1to1_sptr +GR_CORE_API gr_annotator_1to1_sptr gr_make_annotator_1to1 (int when, size_t sizeof_stream_item); /*! @@ -45,7 +46,7 @@ gr_make_annotator_1to1 (int when, size_t sizeof_stream_item); * * This block is only meant for testing and showing how to use the tags. */ -class gr_annotator_1to1 : public gr_sync_block +class GR_CORE_API gr_annotator_1to1 : public gr_sync_block { public: ~gr_annotator_1to1 (); @@ -67,7 +68,7 @@ protected: uint64_t d_tag_counter; std::vector<pmt::pmt_t> d_stored_tags; - friend gr_annotator_1to1_sptr + friend GR_CORE_API gr_annotator_1to1_sptr gr_make_annotator_1to1 (int when, size_t sizeof_stream_item); }; diff --git a/gnuradio-core/src/lib/general/gr_annotator_alltoall.h b/gnuradio-core/src/lib/general/gr_annotator_alltoall.h index e1e51ebf3..259b2e54c 100644 --- a/gnuradio-core/src/lib/general/gr_annotator_alltoall.h +++ b/gnuradio-core/src/lib/general/gr_annotator_alltoall.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_ANNOTATOR_ALLTOALL_H #define INCLUDED_GR_ANNOTATOR_ALLTOALL_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_annotator_alltoall; typedef boost::shared_ptr<gr_annotator_alltoall> gr_annotator_alltoall_sptr; // public constructor -gr_annotator_alltoall_sptr +GR_CORE_API gr_annotator_alltoall_sptr gr_make_annotator_alltoall (int when, size_t sizeof_stream_item); /*! @@ -45,7 +46,7 @@ gr_make_annotator_alltoall (int when, size_t sizeof_stream_item); * * This block is only meant for testing and showing how to use the tags. */ -class gr_annotator_alltoall : public gr_sync_block +class GR_CORE_API gr_annotator_alltoall : public gr_sync_block { public: ~gr_annotator_alltoall (); @@ -68,7 +69,7 @@ protected: uint64_t d_tag_counter; std::vector<pmt::pmt_t> d_stored_tags; - friend gr_annotator_alltoall_sptr + friend GR_CORE_API gr_annotator_alltoall_sptr gr_make_annotator_alltoall (int when, size_t sizeof_stream_item); }; diff --git a/gnuradio-core/src/lib/general/gr_bin_statistics_f.h b/gnuradio-core/src/lib/general/gr_bin_statistics_f.h index d8c4c2fae..f7eea7d5f 100644 --- a/gnuradio-core/src/lib/general/gr_bin_statistics_f.h +++ b/gnuradio-core/src/lib/general/gr_bin_statistics_f.h @@ -24,6 +24,7 @@ #define INCLUDED_GR_BIN_STATISTICS_F_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_feval.h> #include <gr_message.h> @@ -33,7 +34,7 @@ class gr_bin_statistics_f; typedef boost::shared_ptr<gr_bin_statistics_f> gr_bin_statistics_f_sptr; -gr_bin_statistics_f_sptr +GR_CORE_API gr_bin_statistics_f_sptr gr_make_bin_statistics_f(unsigned int vlen, // vector length gr_msg_queue_sptr msgq, gr_feval_dd *tune, // callback @@ -44,9 +45,9 @@ gr_make_bin_statistics_f(unsigned int vlen, // vector length * \brief control scanning and record frequency domain statistics * \ingroup sink_blk */ -class gr_bin_statistics_f : public gr_sync_block +class GR_CORE_API gr_bin_statistics_f : public gr_sync_block { - friend gr_bin_statistics_f_sptr + friend GR_CORE_API gr_bin_statistics_f_sptr gr_make_bin_statistics_f(unsigned int vlen, // vector length gr_msg_queue_sptr msgq, gr_feval_dd *tune, // callback diff --git a/gnuradio-core/src/lib/general/gr_burst_tagger.h b/gnuradio-core/src/lib/general/gr_burst_tagger.h index 8f814bea0..7547ba9cc 100644 --- a/gnuradio-core/src/lib/general/gr_burst_tagger.h +++ b/gnuradio-core/src/lib/general/gr_burst_tagger.h @@ -23,26 +23,27 @@ #ifndef INCLUDED_GR_BURST_TAGGER_H #define INCLUDED_GR_BURST_TAGGER_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_burst_tagger; typedef boost::shared_ptr<gr_burst_tagger> gr_burst_tagger_sptr; -gr_burst_tagger_sptr gr_make_burst_tagger(size_t itemsize); +GR_CORE_API gr_burst_tagger_sptr gr_make_burst_tagger(size_t itemsize); /*! * \brief output[i] = input[i] * \ingroup misc_blk * */ -class gr_burst_tagger : public gr_sync_block +class GR_CORE_API gr_burst_tagger : public gr_sync_block { size_t d_itemsize; bool d_state; pmt::pmt_t d_key; pmt::pmt_t d_id; - friend gr_burst_tagger_sptr gr_make_burst_tagger(size_t itemsize); + friend GR_CORE_API gr_burst_tagger_sptr gr_make_burst_tagger(size_t itemsize); gr_burst_tagger(size_t itemsize); public: diff --git a/gnuradio-core/src/lib/general/gr_bytes_to_syms.h b/gnuradio-core/src/lib/general/gr_bytes_to_syms.h index 1531de02a..33b98d4fd 100644 --- a/gnuradio-core/src/lib/general/gr_bytes_to_syms.h +++ b/gnuradio-core/src/lib/general/gr_bytes_to_syms.h @@ -22,12 +22,13 @@ #ifndef INCLUDED_GR_BYTES_TO_SYMS_H #define INCLUDED_GR_BYTES_TO_SYMS_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_bytes_to_syms; typedef boost::shared_ptr<gr_bytes_to_syms> gr_bytes_to_syms_sptr; -gr_bytes_to_syms_sptr gr_make_bytes_to_syms (); +GR_CORE_API gr_bytes_to_syms_sptr gr_make_bytes_to_syms (); /*! * \brief Convert stream of bytes to stream of +/- 1 symbols @@ -45,9 +46,9 @@ gr_bytes_to_syms_sptr gr_make_bytes_to_syms (); * \sa gr_packed_to_unpacked_bb, gr_unpacked_to_packed_bb, * \sa gr_chunks_to_symbols_bf, gr_chunks_to_symbols_bc. */ -class gr_bytes_to_syms : public gr_sync_interpolator +class GR_CORE_API gr_bytes_to_syms : public gr_sync_interpolator { - friend gr_bytes_to_syms_sptr gr_make_bytes_to_syms (); + friend GR_CORE_API gr_bytes_to_syms_sptr gr_make_bytes_to_syms (); gr_bytes_to_syms (); diff --git a/gnuradio-core/src/lib/general/gr_char_to_float.h b/gnuradio-core/src/lib/general/gr_char_to_float.h index 482e479d6..b20d2066f 100644 --- a/gnuradio-core/src/lib/general/gr_char_to_float.h +++ b/gnuradio-core/src/lib/general/gr_char_to_float.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_CHAR_TO_FLOAT_H #define INCLUDED_GR_CHAR_TO_FLOAT_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_char_to_float; typedef boost::shared_ptr<gr_char_to_float> gr_char_to_float_sptr; -gr_char_to_float_sptr +GR_CORE_API gr_char_to_float_sptr gr_make_char_to_float (); /*! @@ -36,9 +37,9 @@ gr_make_char_to_float (); * \ingroup converter_blk */ -class gr_char_to_float : public gr_sync_block +class GR_CORE_API gr_char_to_float : public gr_sync_block { - friend gr_char_to_float_sptr gr_make_char_to_float (); + friend GR_CORE_API gr_char_to_float_sptr gr_make_char_to_float (); gr_char_to_float (); public: diff --git a/gnuradio-core/src/lib/general/gr_check_counting_s.h b/gnuradio-core/src/lib/general/gr_check_counting_s.h index da35ab8e2..cd4dcb24e 100644 --- a/gnuradio-core/src/lib/general/gr_check_counting_s.h +++ b/gnuradio-core/src/lib/general/gr_check_counting_s.h @@ -22,12 +22,13 @@ #ifndef INCLUDED_GR_CHECK_COUNTING_S_H #define INCLUDED_GR_CHECK_COUNTING_S_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_check_counting_s; typedef boost::shared_ptr<gr_check_counting_s> gr_check_counting_s_sptr; -gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit=false); +GR_CORE_API gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit=false); /*! * \brief sink that checks if its input stream consists of a counting sequence. @@ -36,9 +37,9 @@ gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit=false); * * This sink is typically used to test the USRP "Counting Mode" or "Counting mode 32 bit". */ -class gr_check_counting_s : public gr_sync_block +class GR_CORE_API gr_check_counting_s : public gr_sync_block { - friend gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit); + friend GR_CORE_API gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit); enum state { SEARCHING, // searching for synchronization diff --git a/gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h b/gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h index e2bff46d2..939675db8 100644 --- a/gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h +++ b/gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_CHECK_LFSR_32K_S_H #define INCLUDED_GR_CHECK_LFSR_32K_S_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_lfsr_32k.h> @@ -29,7 +30,7 @@ class gr_check_lfsr_32k_s; typedef boost::shared_ptr<gr_check_lfsr_32k_s> gr_check_lfsr_32k_s_sptr; -gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s (); +GR_CORE_API gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s (); /*! * \brief sink that checks if its input stream consists of a lfsr_32k sequence. @@ -38,9 +39,9 @@ gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s (); * This sink is typically used along with gr_lfsr_32k_source_s to test * the USRP using its digital loopback mode. */ -class gr_check_lfsr_32k_s : public gr_sync_block +class GR_CORE_API gr_check_lfsr_32k_s : public gr_sync_block { - friend gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s (); + friend GR_CORE_API gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s (); enum state { SEARCHING, // searching for synchronization diff --git a/gnuradio-core/src/lib/general/gr_circular_file.h b/gnuradio-core/src/lib/general/gr_circular_file.h index 70f4b4b11..3d3f33a8d 100644 --- a/gnuradio-core/src/lib/general/gr_circular_file.h +++ b/gnuradio-core/src/lib/general/gr_circular_file.h @@ -23,6 +23,8 @@ #ifndef _GR_CIRCULAR_FILE_H_ #define _GR_CIRCULAR_FILE_H_ +#include <gr_core_api.h> + /* * writes input data into a circular buffer on disk. * @@ -35,7 +37,7 @@ * current start of data * */ -class gr_circular_file { +class GR_CORE_API gr_circular_file { int d_fd; int *d_header; unsigned char *d_buffer; @@ -55,4 +57,4 @@ public: void reset_read_pointer (); }; -#endif /* _GR_CIRCULAR_FILE_H_ */ +#endif /* _GR_CIRCULAR_FILE_H_ */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h b/gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h index 0a91eddd6..a3e2d38ad 100644 --- a/gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h +++ b/gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_COMPLEX_TO_INTERLEAVED_SHORT_H #define INCLUDED_GR_COMPLEX_TO_INTERLEAVED_SHORT_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_complex_to_interleaved_short; typedef boost::shared_ptr<gr_complex_to_interleaved_short> gr_complex_to_interleaved_short_sptr; -gr_complex_to_interleaved_short_sptr +GR_CORE_API gr_complex_to_interleaved_short_sptr gr_make_complex_to_interleaved_short (); /*! @@ -37,9 +38,9 @@ gr_make_complex_to_interleaved_short (); * \ingroup converter_blk */ -class gr_complex_to_interleaved_short : public gr_sync_interpolator +class GR_CORE_API gr_complex_to_interleaved_short : public gr_sync_interpolator { - friend gr_complex_to_interleaved_short_sptr gr_make_complex_to_interleaved_short (); + friend GR_CORE_API gr_complex_to_interleaved_short_sptr gr_make_complex_to_interleaved_short (); gr_complex_to_interleaved_short (); public: diff --git a/gnuradio-core/src/lib/general/gr_complex_to_xxx.h b/gnuradio-core/src/lib/general/gr_complex_to_xxx.h index 1851c67d9..166403259 100644 --- a/gnuradio-core/src/lib/general/gr_complex_to_xxx.h +++ b/gnuradio-core/src/lib/general/gr_complex_to_xxx.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_COMPLEX_TO_XXX_H #define INCLUDED_GR_COMPLEX_TO_XXX_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_complex.h> @@ -40,21 +41,21 @@ typedef boost::shared_ptr<gr_complex_to_mag> gr_complex_to_mag_sptr; typedef boost::shared_ptr<gr_complex_to_mag_squared> gr_complex_to_mag_squared_sptr; typedef boost::shared_ptr<gr_complex_to_arg> gr_complex_to_arg_sptr; -gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen=1); -gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen=1); -gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen=1); -gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen=1); -gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen=1); -gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen=1); +GR_CORE_API gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen=1); +GR_CORE_API gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen=1); +GR_CORE_API gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen=1); +GR_CORE_API gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen=1); +GR_CORE_API gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen=1); +GR_CORE_API gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen=1); /*! * \brief convert a stream of gr_complex to 1 or 2 streams of float * \ingroup converter_blk * \param vlen vector len (default 1) */ -class gr_complex_to_float : public gr_sync_block +class GR_CORE_API gr_complex_to_float : public gr_sync_block { - friend gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen); + friend GR_CORE_API gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen); gr_complex_to_float (unsigned int vlen); unsigned int d_vlen; @@ -70,9 +71,9 @@ class gr_complex_to_float : public gr_sync_block * \ingroup converter_blk * \param vlen vector len (default 1) */ -class gr_complex_to_real : public gr_sync_block +class GR_CORE_API gr_complex_to_real : public gr_sync_block { - friend gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen); + friend GR_CORE_API gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen); gr_complex_to_real (unsigned int vlen); unsigned int d_vlen; @@ -88,9 +89,9 @@ class gr_complex_to_real : public gr_sync_block * \ingroup converter_blk * \param vlen vector len (default 1) */ -class gr_complex_to_imag : public gr_sync_block +class GR_CORE_API gr_complex_to_imag : public gr_sync_block { - friend gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen); + friend GR_CORE_API gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen); gr_complex_to_imag (unsigned int vlen); unsigned int d_vlen; @@ -106,9 +107,9 @@ class gr_complex_to_imag : public gr_sync_block * \ingroup converter_blk * \param vlen vector len (default 1) */ -class gr_complex_to_mag : public gr_sync_block +class GR_CORE_API gr_complex_to_mag : public gr_sync_block { - friend gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen); + friend GR_CORE_API gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen); gr_complex_to_mag (unsigned int vlen); unsigned int d_vlen; @@ -124,9 +125,9 @@ class gr_complex_to_mag : public gr_sync_block * \ingroup converter_blk * \param vlen vector len (default 1) */ -class gr_complex_to_mag_squared : public gr_sync_block +class GR_CORE_API gr_complex_to_mag_squared : public gr_sync_block { - friend gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen); + friend GR_CORE_API gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen); gr_complex_to_mag_squared (unsigned int vlen); unsigned int d_vlen; @@ -142,9 +143,9 @@ class gr_complex_to_mag_squared : public gr_sync_block * \ingroup converter_blk * \param vlen vector len (default 1) */ -class gr_complex_to_arg : public gr_sync_block +class GR_CORE_API gr_complex_to_arg : public gr_sync_block { - friend gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen); + friend GR_CORE_API gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen); gr_complex_to_arg (unsigned int vlen); unsigned int d_vlen; diff --git a/gnuradio-core/src/lib/general/gr_conjugate_cc.h b/gnuradio-core/src/lib/general/gr_conjugate_cc.h index 783019adb..16e76e153 100644 --- a/gnuradio-core/src/lib/general/gr_conjugate_cc.h +++ b/gnuradio-core/src/lib/general/gr_conjugate_cc.h @@ -25,20 +25,21 @@ #ifndef INCLUDED_GR_CONJUGATE_CC_H #define INCLUDED_GR_CONJUGATE_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_conjugate_cc; typedef boost::shared_ptr<gr_conjugate_cc> gr_conjugate_cc_sptr; -gr_conjugate_cc_sptr gr_make_conjugate_cc (); +GR_CORE_API gr_conjugate_cc_sptr gr_make_conjugate_cc (); /*! * \brief output = complex conjugate of input * \ingroup math_blk */ -class gr_conjugate_cc : public gr_sync_block +class GR_CORE_API gr_conjugate_cc : public gr_sync_block { - friend gr_conjugate_cc_sptr gr_make_conjugate_cc (); + friend GR_CORE_API gr_conjugate_cc_sptr gr_make_conjugate_cc (); gr_conjugate_cc (); diff --git a/gnuradio-core/src/lib/general/gr_constants.h b/gnuradio-core/src/lib/general/gr_constants.h index 449d41c17..3d21fe1d6 100644 --- a/gnuradio-core/src/lib/general/gr_constants.h +++ b/gnuradio-core/src/lib/general/gr_constants.h @@ -22,31 +22,32 @@ #ifndef INCLUDED_GR_CONSTANTS_H #define INCLUDED_GR_CONSTANTS_H +#include <gr_core_api.h> #include <string> /*! * \brief return ./configure --prefix argument. Typically /usr/local */ -const std::string gr_prefix(); +GR_CORE_API const std::string gr_prefix(); /*! * \brief return ./configure --sysconfdir argument. Typically $prefix/etc or /etc */ -const std::string gr_sysconfdir(); +GR_CORE_API const std::string gr_sysconfdir(); /*! * \brief return preferences file directory. Typically $sysconfdir/etc/conf.d */ -const std::string gr_prefsdir(); +GR_CORE_API const std::string gr_prefsdir(); /*! * \brief return date/time of build, as set when 'bootstrap' is run */ -const std::string gr_build_date(); +GR_CORE_API const std::string gr_build_date(); /*! * \brief return version string defined in configure.ac */ -const std::string gr_version(); +GR_CORE_API const std::string gr_version(); #endif /* INCLUDED_GR_CONSTANTS_H */ diff --git a/gnuradio-core/src/lib/general/gr_constellation_decoder_cb.h b/gnuradio-core/src/lib/general/gr_constellation_decoder_cb.h new file mode 100644 index 000000000..d1d29847c --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_constellation_decoder_cb.h @@ -0,0 +1,66 @@ +/* -*- c++ -*- */ +/* + * Copyright 2006 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_GR_CONSTELLATION_DECODER_CB_H +#define INCLUDED_GR_CONSTELLATION_DECODER_CB_H + +#include <gr_core_api.h> +#include <gr_sync_block.h> +#include <vector> + +class gr_constellation_decoder_cb; +typedef boost::shared_ptr<gr_constellation_decoder_cb> gr_constellation_decoder_cb_sptr; + +GR_CORE_API gr_constellation_decoder_cb_sptr + gr_make_constellation_decoder_cb (const std::vector<gr_complex> &sym_position, + const std::vector<unsigned char> &sym_value_out); + +/*! + * \brief Constellation Decoder + * \ingroup coding_blk + * + */ +class GR_CORE_API gr_constellation_decoder_cb : public gr_sync_block +{ + + private: + std::vector<gr_complex> d_sym_position; + std::vector<unsigned char> d_sym_value_out; + + friend GR_CORE_API gr_constellation_decoder_cb_sptr + gr_make_constellation_decoder_cb (const std::vector<gr_complex> &sym_position, const std::vector<unsigned char> &sym_value_out); + + gr_constellation_decoder_cb (const std::vector<gr_complex> &sym_position, + const std::vector<unsigned char> &sym_value_out); //constructor + + public: + bool set_constellation(const std::vector<gr_complex> &sym_position, + const std::vector<unsigned char> &sym_value_out); + + ~gr_constellation_decoder_cb(); //destructor + + int work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); +}; + +#endif diff --git a/gnuradio-core/src/lib/general/gr_copy.h b/gnuradio-core/src/lib/general/gr_copy.h index d99aef8b7..7fb13bf68 100644 --- a/gnuradio-core/src/lib/general/gr_copy.h +++ b/gnuradio-core/src/lib/general/gr_copy.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_COPY_H #define INCLUDED_GR_COPY_H +#include <gr_core_api.h> #include <gr_block.h> class gr_copy; typedef boost::shared_ptr<gr_copy> gr_copy_sptr; -gr_copy_sptr gr_make_copy(size_t itemsize); +GR_CORE_API gr_copy_sptr gr_make_copy(size_t itemsize); /*! * \brief output[i] = input[i] @@ -38,12 +39,12 @@ gr_copy_sptr gr_make_copy(size_t itemsize); * When disabled, this block drops its input on the floor. * */ -class gr_copy : public gr_block +class GR_CORE_API gr_copy : public gr_block { size_t d_itemsize; bool d_enabled; - friend gr_copy_sptr gr_make_copy(size_t itemsize); + friend GR_CORE_API gr_copy_sptr gr_make_copy(size_t itemsize); gr_copy(size_t itemsize); public: diff --git a/gnuradio-core/src/lib/general/gr_core_api.h b/gnuradio-core/src/lib/general/gr_core_api.h new file mode 100644 index 000000000..74c802857 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_core_api.h @@ -0,0 +1,33 @@ +/* + * Copyright 2010-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_GR_CORE_API_H +#define INCLUDED_GR_CORE_API_H + +#include <gruel/attributes.h> + +#ifdef gnuradio_core_EXPORTS +# define GR_CORE_API __GR_ATTR_EXPORT +#else +# define GR_CORE_API __GR_ATTR_IMPORT +#endif + +#endif /* INCLUDED_GR_CORE_API_H */ diff --git a/gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h b/gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h index 1067bbc56..e543f5cfb 100644 --- a/gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h +++ b/gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_gr_correlate_access_code_tag_bb_H #define INCLUDED_gr_correlate_access_code_tag_bb_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <string> @@ -34,7 +35,7 @@ typedef boost::shared_ptr<gr_correlate_access_code_tag_bb> gr_correlate_access_c * \param threshold maximum number of bits that may be wrong * \param tag_name key of the tag inserted into the tag stream */ -gr_correlate_access_code_tag_bb_sptr +GR_CORE_API gr_correlate_access_code_tag_bb_sptr gr_make_correlate_access_code_tag_bb (const std::string &access_code, int threshold, const std::string &tag_name); @@ -49,9 +50,9 @@ gr_make_correlate_access_code_tag_bb (const std::string &access_code, int thresh * name [tag_name], specified in the constructor. Used for searching * an input data stream for preambles, etc. */ -class gr_correlate_access_code_tag_bb : public gr_sync_block +class GR_CORE_API gr_correlate_access_code_tag_bb : public gr_sync_block { - friend gr_correlate_access_code_tag_bb_sptr + friend GR_CORE_API gr_correlate_access_code_tag_bb_sptr gr_make_correlate_access_code_tag_bb (const std::string &access_code, int threshold, const std::string &tag_name); private: diff --git a/gnuradio-core/src/lib/general/gr_costas_loop_cc.h b/gnuradio-core/src/lib/general/gr_costas_loop_cc.h new file mode 100644 index 000000000..13b33d96c --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_costas_loop_cc.h @@ -0,0 +1,146 @@ +/* -*- c++ -*- */ +/* + * Copyright 2006 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_GR_COSTAS_LOOP_CC_H +#define INCLUDED_GR_COSTAS_LOOP_CC_H + +#include <gr_core_api.h> +#include <gr_sync_block.h> +#include <stdexcept> +#include <fstream> + + +/*! \brief A Costas loop carrier recovery module. + * \ingroup sync_blk + * + * The Costas loop locks to the center frequency of a signal and + * downconverts it to baseband. The second (order=2) order loop is + * used for BPSK where the real part of the output signal is the + * baseband BPSK signal and the imaginary part is the error + * signal. When order=4, it can be used for quadrature modulations + * where both I and Q (real and imaginary) are outputted. + * + * More details can be found online: + * + * J. Feigin, "Practical Costas loop design: Designing a simple and inexpensive + * BPSK Costas loop carrier recovery circuit," RF signal processing, pp. 20-36, + * 2002. + * + * http://rfdesign.com/images/archive/0102Feigin20.pdf + * + * \param alpha the loop gain used for phase adjustment + * \param beta the loop gain for frequency adjustments + * \param max_freq the maximum frequency deviation (radians/sample) the loop can handle + * \param min_freq the minimum frequency deviation (radians/sample) the loop can handle + * \param order the loop order, either 2 or 4 + */ +class gr_costas_loop_cc; +typedef boost::shared_ptr<gr_costas_loop_cc> gr_costas_loop_cc_sptr; + + +GR_CORE_API gr_costas_loop_cc_sptr +gr_make_costas_loop_cc (float alpha, float beta, + float max_freq, float min_freq, + int order + ) throw (std::invalid_argument); + + +/*! + * \brief Carrier tracking PLL for QPSK + * \ingroup sync_blk + * input: complex; output: complex + * <br>The Costas loop can have two output streams: + * stream 1 is the baseband I and Q; + * stream 2 is the normalized frequency of the loop + * + * \p order must be 2 or 4. + */ +class GR_CORE_API gr_costas_loop_cc : public gr_sync_block +{ + friend GR_CORE_API gr_costas_loop_cc_sptr gr_make_costas_loop_cc (float alpha, float beta, + float max_freq, float min_freq, + int order + ) throw (std::invalid_argument); + + float d_alpha, d_beta, d_max_freq, d_min_freq, d_phase, d_freq; + int d_order; + + gr_costas_loop_cc (float alpha, float beta, + float max_freq, float min_freq, + int order + ) throw (std::invalid_argument); + + /*! \brief the phase detector circuit for 8th-order PSK loops + * \param sample complex sample + * \return the phase error + */ + float phase_detector_8(gr_complex sample) const; // for 8PSK + + /*! \brief the phase detector circuit for fourth-order loops + * \param sample complex sample + * \return the phase error + */ + float phase_detector_4(gr_complex sample) const; // for QPSK + + /*! \brief the phase detector circuit for second-order loops + * \param sample a complex sample + * \return the phase error + */ + float phase_detector_2(gr_complex sample) const; // for BPSK + + + float (gr_costas_loop_cc::*d_phase_detector)(gr_complex sample) const; + +public: + + /*! \brief set the first order gain + * \param alpha + */ + void set_alpha(float alpha); + + /*! \brief get the first order gain + * + */ + float alpha() const { return d_alpha; } + + /*! \brief set the second order gain + * \param beta + */ + void set_beta(float beta); + + /*! \brief get the second order gain + * + */ + float beta() const { return d_beta; } + + int work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + + /*! \brief returns the current NCO frequency in radians/sample + * + */ + float freq() const { return d_freq; } +}; + +#endif diff --git a/gnuradio-core/src/lib/general/gr_count_bits.h b/gnuradio-core/src/lib/general/gr_count_bits.h index a8b52d3ac..f0cec2a11 100644 --- a/gnuradio-core/src/lib/general/gr_count_bits.h +++ b/gnuradio-core/src/lib/general/gr_count_bits.h @@ -23,9 +23,11 @@ #ifndef _GR_COUNT_BITS_H_ #define _GR_COUNT_BITS_H_ -unsigned int gr_count_bits8(unsigned int x); // return number of set bits in the low 8 bits of x -unsigned int gr_count_bits16(unsigned int x); // return number of set bits in the low 16 bits of x -unsigned int gr_count_bits32(unsigned int x); // return number of set bits in the low 32 bits of x -unsigned int gr_count_bits64(unsigned long long int x); +#include <gr_core_api.h> + +GR_CORE_API unsigned int gr_count_bits8(unsigned int x); // return number of set bits in the low 8 bits of x +GR_CORE_API unsigned int gr_count_bits16(unsigned int x); // return number of set bits in the low 16 bits of x +GR_CORE_API unsigned int gr_count_bits32(unsigned int x); // return number of set bits in the low 32 bits of x +GR_CORE_API unsigned int gr_count_bits64(unsigned long long int x); #endif /* _GR_COUNT_BITS_H_ */ diff --git a/gnuradio-core/src/lib/general/gr_cpfsk_bc.h b/gnuradio-core/src/lib/general/gr_cpfsk_bc.h index 29bcfed65..4afba4fb4 100644 --- a/gnuradio-core/src/lib/general/gr_cpfsk_bc.h +++ b/gnuradio-core/src/lib/general/gr_cpfsk_bc.h @@ -20,13 +20,14 @@ #ifndef INCLUDED_GR_CPFSK_BC_H #define INCLUDED_GR_CPFSK_BC_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_cpfsk_bc; typedef boost::shared_ptr<gr_cpfsk_bc> gr_cpfsk_bc_sptr; -gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym); +GR_CORE_API gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym); /*! * \brief Perform continuous phase 2-level frequency shift keying modulation @@ -38,10 +39,10 @@ gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym); * \param samples_per_sym number of output samples per input bit */ -class gr_cpfsk_bc : public gr_sync_interpolator +class GR_CORE_API gr_cpfsk_bc : public gr_sync_interpolator { private: - friend gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym); + friend GR_CORE_API gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym); gr_cpfsk_bc(float k, float ampl, int samples_per_sym); diff --git a/gnuradio-core/src/lib/general/gr_cpm.cc b/gnuradio-core/src/lib/general/gr_cpm.cc index a00526b52..94a428c58 100644 --- a/gnuradio-core/src/lib/general/gr_cpm.cc +++ b/gnuradio-core/src/lib/general/gr_cpm.cc @@ -28,6 +28,10 @@ #include <cfloat> #include <gr_cpm.h> +//gives us erf on compilers without it +#include <boost/math/special_functions/erf.hpp> +namespace bm = boost::math; + #ifndef M_TWOPI # define M_TWOPI (2*M_PI) #endif @@ -178,8 +182,8 @@ generate_cpm_gaussian_taps(unsigned samples_per_sym, unsigned L, double bt) double alpha = 5.336446256636997 * bt; for (unsigned i = 0; i < samples_per_sym * L; i++) { double k = i - Ls/2; // Causal to acausal - taps_d[i] = (erf(alpha * (k / samples_per_sym + 0.5)) - - erf(alpha * (k / samples_per_sym - 0.5))) + taps_d[i] = (bm::erf(alpha * (k / samples_per_sym + 0.5)) - + bm::erf(alpha * (k / samples_per_sym - 0.5))) * 0.5 / samples_per_sym; taps[i] = (float) taps_d[i]; } diff --git a/gnuradio-core/src/lib/general/gr_cpm.h b/gnuradio-core/src/lib/general/gr_cpm.h index cae6fe313..ef2ff8414 100644 --- a/gnuradio-core/src/lib/general/gr_cpm.h +++ b/gnuradio-core/src/lib/general/gr_cpm.h @@ -22,9 +22,10 @@ #ifndef INCLUDED_GR_CPM_H #define INCLUDED_GR_CPM_H +#include <gr_core_api.h> #include <vector> -class gr_cpm +class GR_CORE_API gr_cpm { public: enum cpm_type { diff --git a/gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h b/gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h index 49df785ff..664c40846 100644 --- a/gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h +++ b/gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h @@ -23,20 +23,21 @@ #ifndef INCLUDED_GR_CTCSS_SQUELCH_FF_H #define INCLUDED_GR_CTCSS_SQUELCH_FF_H +#include <gr_core_api.h> #include <gr_squelch_base_ff.h> #include <gri_goertzel.h> class gr_ctcss_squelch_ff; typedef boost::shared_ptr<gr_ctcss_squelch_ff> gr_ctcss_squelch_ff_sptr; -gr_ctcss_squelch_ff_sptr +GR_CORE_API gr_ctcss_squelch_ff_sptr gr_make_ctcss_squelch_ff(int rate, float freq, float level=0.01, int len=0, int ramp=0, bool gate=false); /*! * \brief gate or zero output if ctcss tone not present * \ingroup level_blk */ -class gr_ctcss_squelch_ff : public gr_squelch_base_ff +class GR_CORE_API gr_ctcss_squelch_ff : public gr_squelch_base_ff { private: float d_freq; @@ -48,7 +49,7 @@ private: gri_goertzel d_goertzel_c; gri_goertzel d_goertzel_r; - friend gr_ctcss_squelch_ff_sptr gr_make_ctcss_squelch_ff(int rate, float freq, float level, int len, int ramp, bool gate); + friend GR_CORE_API gr_ctcss_squelch_ff_sptr gr_make_ctcss_squelch_ff(int rate, float freq, float level, int len, int ramp, bool gate); gr_ctcss_squelch_ff(int rate, float freq, float level, int len, int ramp, bool gate); int find_tone(float freq); diff --git a/gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h b/gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h index 50a6c9d89..3db250101 100644 --- a/gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h +++ b/gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h @@ -20,17 +20,18 @@ #ifndef INCLUDED_GR_DECODE_CCSDS_27_FB_H #define INCLUDED_GR_DECODE_CCSDS_27_FB_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> extern "C" { -#include "../viterbi/viterbi.h" +#include <viterbi.h> } class gr_decode_ccsds_27_fb; typedef boost::shared_ptr<gr_decode_ccsds_27_fb> gr_decode_ccsds_27_fb_sptr; -gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb(); +GR_CORE_API gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb(); /*! \brief A rate 1/2, k=7 convolutional decoder for the CCSDS standard * \ingroup ecc @@ -51,10 +52,10 @@ gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb(); * from the corresponding inputs. */ -class gr_decode_ccsds_27_fb : public gr_sync_decimator +class GR_CORE_API gr_decode_ccsds_27_fb : public gr_sync_decimator { private: - friend gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb(); + friend GR_CORE_API gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb(); gr_decode_ccsds_27_fb(); diff --git a/gnuradio-core/src/lib/general/gr_deinterleave.h b/gnuradio-core/src/lib/general/gr_deinterleave.h index 59c310bdc..3dd913911 100644 --- a/gnuradio-core/src/lib/general/gr_deinterleave.h +++ b/gnuradio-core/src/lib/general/gr_deinterleave.h @@ -23,20 +23,21 @@ #ifndef INCLUDED_GR_DEINTERLEAVE_H #define INCLUDED_GR_DEINTERLEAVE_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_deinterleave; typedef boost::shared_ptr<gr_deinterleave> gr_deinterleave_sptr; -gr_deinterleave_sptr gr_make_deinterleave (size_t itemsize); +GR_CORE_API gr_deinterleave_sptr gr_make_deinterleave (size_t itemsize); /*! * \brief deinterleave a single input into N outputs * \ingroup slicedice_blk */ -class gr_deinterleave : public gr_sync_decimator +class GR_CORE_API gr_deinterleave : public gr_sync_decimator { - friend gr_deinterleave_sptr gr_make_deinterleave (size_t itemsize); + friend GR_CORE_API gr_deinterleave_sptr gr_make_deinterleave (size_t itemsize); size_t d_itemsize; diff --git a/gnuradio-core/src/lib/general/gr_delay.h b/gnuradio-core/src/lib/general/gr_delay.h index d7e8252a2..14de9af1f 100644 --- a/gnuradio-core/src/lib/general/gr_delay.h +++ b/gnuradio-core/src/lib/general/gr_delay.h @@ -23,20 +23,21 @@ #ifndef INCLUDED_GR_DELAY_H #define INCLUDED_GR_DELAY_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_delay; typedef boost::shared_ptr<gr_delay> gr_delay_sptr; -gr_delay_sptr gr_make_delay (size_t itemsize, int delay); +GR_CORE_API gr_delay_sptr gr_make_delay (size_t itemsize, int delay); /*! * \brief delay the input by a certain number of samples * \ingroup misc_blk */ -class gr_delay : public gr_sync_block +class GR_CORE_API gr_delay : public gr_sync_block { - friend gr_delay_sptr gr_make_delay (size_t itemsize, int delay); + friend GR_CORE_API gr_delay_sptr gr_make_delay (size_t itemsize, int delay); gr_delay (size_t itemsize, int delay); diff --git a/gnuradio-core/src/lib/general/gr_descrambler_bb.h b/gnuradio-core/src/lib/general/gr_descrambler_bb.h index 19787690c..d7a49b5f1 100644 --- a/gnuradio-core/src/lib/general/gr_descrambler_bb.h +++ b/gnuradio-core/src/lib/general/gr_descrambler_bb.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_DESCRAMBLER_BB_H #define INCLUDED_GR_DESCRAMBLER_BB_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include "gri_lfsr.h" class gr_descrambler_bb; typedef boost::shared_ptr<gr_descrambler_bb> gr_descrambler_bb_sptr; -gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len); +GR_CORE_API gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len); /*! * Descramble an input stream using an LFSR. This block works on the LSB only @@ -42,9 +43,9 @@ gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len); * \ingroup coding_blk */ -class gr_descrambler_bb : public gr_sync_block +class GR_CORE_API gr_descrambler_bb : public gr_sync_block { - friend gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len); + friend GR_CORE_API gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len); gri_lfsr d_lfsr; diff --git a/gnuradio-core/src/lib/general/gr_diff_decoder_bb.h b/gnuradio-core/src/lib/general/gr_diff_decoder_bb.h index 6fd08ec4b..0337c3dbd 100644 --- a/gnuradio-core/src/lib/general/gr_diff_decoder_bb.h +++ b/gnuradio-core/src/lib/general/gr_diff_decoder_bb.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_DIFF_DECODER_BB_H #define INCLUDED_GR_DIFF_DECODER_BB_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_diff_decoder_bb; typedef boost::shared_ptr<gr_diff_decoder_bb> gr_diff_decoder_bb_sptr; -gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus); +GR_CORE_API gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus); /*! * \brief y[0] = (x[0] - x[-1]) % M @@ -36,9 +37,9 @@ gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus); * * Differential decoder */ -class gr_diff_decoder_bb : public gr_sync_block +class GR_CORE_API gr_diff_decoder_bb : public gr_sync_block { - friend gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus); + friend GR_CORE_API gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus); gr_diff_decoder_bb(unsigned int modulus); unsigned int d_modulus; diff --git a/gnuradio-core/src/lib/general/gr_diff_encoder_bb.h b/gnuradio-core/src/lib/general/gr_diff_encoder_bb.h index 50aff73cf..c99e226da 100644 --- a/gnuradio-core/src/lib/general/gr_diff_encoder_bb.h +++ b/gnuradio-core/src/lib/general/gr_diff_encoder_bb.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_DIFF_ENCODER_BB_H #define INCLUDED_GR_DIFF_ENCODER_BB_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_diff_encoder_bb; typedef boost::shared_ptr<gr_diff_encoder_bb> gr_diff_encoder_bb_sptr; -gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus); +GR_CORE_API gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus); /*! * \brief y[0] = (x[0] + y[-1]) % M @@ -36,9 +37,9 @@ gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus); * * Differential encoder */ -class gr_diff_encoder_bb : public gr_sync_block +class GR_CORE_API gr_diff_encoder_bb : public gr_sync_block { - friend gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus); + friend GR_CORE_API gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus); gr_diff_encoder_bb(unsigned int modulus); unsigned int d_last_out; diff --git a/gnuradio-core/src/lib/general/gr_diff_phasor_cc.h b/gnuradio-core/src/lib/general/gr_diff_phasor_cc.h index 1070ba183..8af2699a7 100644 --- a/gnuradio-core/src/lib/general/gr_diff_phasor_cc.h +++ b/gnuradio-core/src/lib/general/gr_diff_phasor_cc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_DIFF_PHASOR_CC_H #define INCLUDED_GR_DIFF_PHASOR_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> /*! @@ -32,12 +33,12 @@ class gr_diff_phasor_cc; typedef boost::shared_ptr<gr_diff_phasor_cc> gr_diff_phasor_cc_sptr; -gr_diff_phasor_cc_sptr gr_make_diff_phasor_cc (); +GR_CORE_API gr_diff_phasor_cc_sptr gr_make_diff_phasor_cc (); -class gr_diff_phasor_cc : public gr_sync_block +class GR_CORE_API gr_diff_phasor_cc : public gr_sync_block { - friend gr_diff_phasor_cc_sptr gr_make_diff_phasor_cc (); + friend GR_CORE_API gr_diff_phasor_cc_sptr gr_make_diff_phasor_cc (); gr_diff_phasor_cc (); //constructor diff --git a/gnuradio-core/src/lib/general/gr_dpll_bb.h b/gnuradio-core/src/lib/general/gr_dpll_bb.h index e6b5fc0fa..8e748dddb 100644 --- a/gnuradio-core/src/lib/general/gr_dpll_bb.h +++ b/gnuradio-core/src/lib/general/gr_dpll_bb.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_DPLL_BB_H #define INCLUDED_GR_DPLL_BB_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_dpll_bb; typedef boost::shared_ptr<gr_dpll_bb> gr_dpll_bb_sptr; -gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain); +GR_CORE_API gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain); /*! * \brief Detect the peak of a signal @@ -37,9 +38,9 @@ gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain); * If a peak is detected, this block outputs a 1, * or it outputs 0's. */ -class gr_dpll_bb : public gr_sync_block +class GR_CORE_API gr_dpll_bb : public gr_sync_block { - friend gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain); + friend GR_CORE_API gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain); gr_dpll_bb (float period, float gain); diff --git a/gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h b/gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h index 86832ee05..e24ae9151 100644 --- a/gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h +++ b/gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h @@ -20,13 +20,14 @@ #ifndef INCLUDED_GR_ENCODE_CCSDS_27_BB_H #define INCLUDED_GR_ENCODE_CCSDS_27_BB_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_encode_ccsds_27_bb; typedef boost::shared_ptr<gr_encode_ccsds_27_bb> gr_encode_ccsds_27_bb_sptr; -gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb(); +GR_CORE_API gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb(); /*! \brief A rate 1/2, k=7 convolutional encoder for the CCSDS standard * \ingroup ecc @@ -44,10 +45,10 @@ gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb(); * There is no provision to "flush" the encoder. */ -class gr_encode_ccsds_27_bb : public gr_sync_interpolator +class GR_CORE_API gr_encode_ccsds_27_bb : public gr_sync_interpolator { private: - friend gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb(); + friend GR_CORE_API gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb(); gr_encode_ccsds_27_bb(); unsigned char d_encstate; diff --git a/gnuradio-core/src/lib/general/gr_expj.h b/gnuradio-core/src/lib/general/gr_expj.h index 7adf3a0c6..6f1d56eb3 100644 --- a/gnuradio-core/src/lib/general/gr_expj.h +++ b/gnuradio-core/src/lib/general/gr_expj.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_EXPJ_H #define INCLUDED_GR_EXPJ_H +#include <gr_core_api.h> #include <gr_sincos.h> #include <gr_types.h> diff --git a/gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h b/gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h index 480fb8e78..2560c6105 100644 --- a/gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h +++ b/gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FAKE_CHANNEL_CODER_PP_H #define INCLUDED_GR_FAKE_CHANNEL_CODER_PP_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_fake_channel_encoder_pp; typedef boost::shared_ptr<gr_fake_channel_encoder_pp> gr_fake_channel_encoder_pp_sptr; -gr_fake_channel_encoder_pp_sptr +GR_CORE_API gr_fake_channel_encoder_pp_sptr gr_make_fake_channel_encoder_pp(int input_vlen, int output_vlen); /*! @@ -37,14 +38,14 @@ gr_make_fake_channel_encoder_pp(int input_vlen, int output_vlen); * * input: stream of byte vectors; output: stream of byte vectors */ -class gr_fake_channel_encoder_pp : public gr_sync_block +class GR_CORE_API gr_fake_channel_encoder_pp : public gr_sync_block { int d_input_vlen; int d_output_vlen; gr_fake_channel_encoder_pp(int input_vlen, int output_vlen); - friend gr_fake_channel_encoder_pp_sptr + friend GR_CORE_API gr_fake_channel_encoder_pp_sptr gr_make_fake_channel_encoder_pp(int input_vlen, int output_vlen); public: @@ -60,7 +61,7 @@ public: class gr_fake_channel_decoder_pp; typedef boost::shared_ptr<gr_fake_channel_decoder_pp> gr_fake_channel_decoder_pp_sptr; -gr_fake_channel_decoder_pp_sptr +GR_CORE_API gr_fake_channel_decoder_pp_sptr gr_make_fake_channel_decoder_pp(int input_vlen, int output_vlen); /*! @@ -69,14 +70,14 @@ gr_make_fake_channel_decoder_pp(int input_vlen, int output_vlen); * * input: stream of byte vectors; output: stream of byte vectors */ -class gr_fake_channel_decoder_pp : public gr_sync_block +class GR_CORE_API gr_fake_channel_decoder_pp : public gr_sync_block { int d_input_vlen; int d_output_vlen; gr_fake_channel_decoder_pp(int input_vlen, int output_vlen); - friend gr_fake_channel_decoder_pp_sptr + friend GR_CORE_API gr_fake_channel_decoder_pp_sptr gr_make_fake_channel_decoder_pp(int input_vlen, int output_vlen); public: diff --git a/gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h b/gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h index 8c600d3d1..a97dbd958 100644 --- a/gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h +++ b/gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h @@ -23,21 +23,22 @@ #ifndef INCLUDED_GR_FEEDFORWARD_AGC_CC_H #define INCLUDED_GR_FEEDFORWARD_AGC_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_feedforward_agc_cc; typedef boost::shared_ptr<gr_feedforward_agc_cc> gr_feedforward_agc_cc_sptr; -gr_feedforward_agc_cc_sptr +GR_CORE_API gr_feedforward_agc_cc_sptr gr_make_feedforward_agc_cc(int nsamples, float reference = 1.0); /*! * \brief Non-causal AGC which computes required gain based on max absolute value over nsamples * \ingroup level_blk */ -class gr_feedforward_agc_cc : public gr_sync_block +class GR_CORE_API gr_feedforward_agc_cc : public gr_sync_block { - friend gr_feedforward_agc_cc_sptr + friend GR_CORE_API gr_feedforward_agc_cc_sptr gr_make_feedforward_agc_cc(int nsamples, float reference); int d_nsamples; diff --git a/gnuradio-core/src/lib/general/gr_feval.h b/gnuradio-core/src/lib/general/gr_feval.h index cc4209af0..a0e448ebf 100644 --- a/gnuradio-core/src/lib/general/gr_feval.h +++ b/gnuradio-core/src/lib/general/gr_feval.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_FEVAL_H #define INCLUDED_GR_FEVAL_H +#include <gr_core_api.h> #include <gr_complex.h> /*! @@ -37,7 +38,7 @@ * Use calleval to invoke eval (this kludge is required to allow a * python specific "shim" to be inserted. */ -class gr_feval_dd +class GR_CORE_API gr_feval_dd { protected: /*! @@ -65,7 +66,7 @@ public: * Use calleval to invoke eval (this kludge is required to allow a * python specific "shim" to be inserted. */ -class gr_feval_cc +class GR_CORE_API gr_feval_cc { protected: /*! @@ -93,7 +94,7 @@ public: * Use calleval to invoke eval (this kludge is required to allow a * python specific "shim" to be inserted. */ -class gr_feval_ll +class GR_CORE_API gr_feval_ll { protected: /*! @@ -121,7 +122,7 @@ public: * Use calleval to invoke eval (this kludge is required to allow a * python specific "shim" to be inserted. */ -class gr_feval +class GR_CORE_API gr_feval { protected: /*! @@ -139,9 +140,9 @@ public: /*! * \brief trivial examples / test cases showing C++ calling Python code */ -double gr_feval_dd_example(gr_feval_dd *f, double x); -gr_complex gr_feval_cc_example(gr_feval_cc *f, gr_complex x); -long gr_feval_ll_example(gr_feval_ll *f, long x); -void gr_feval_example(gr_feval *f); +GR_CORE_API double gr_feval_dd_example(gr_feval_dd *f, double x); +GR_CORE_API gr_complex gr_feval_cc_example(gr_feval_cc *f, gr_complex x); +GR_CORE_API long gr_feval_ll_example(gr_feval_ll *f, long x); +GR_CORE_API void gr_feval_example(gr_feval *f); #endif /* INCLUDED_GR_FEVAL_H */ diff --git a/gnuradio-core/src/lib/general/gr_fft_vcc.h b/gnuradio-core/src/lib/general/gr_fft_vcc.h index 2ab9241ec..a7c8e1162 100644 --- a/gnuradio-core/src/lib/general/gr_fft_vcc.h +++ b/gnuradio-core/src/lib/general/gr_fft_vcc.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FFT_VCC_H #define INCLUDED_GR_FFT_VCC_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_fft_vcc; typedef boost::shared_ptr<gr_fft_vcc> gr_fft_vcc_sptr; -gr_fft_vcc_sptr +GR_CORE_API gr_fft_vcc_sptr gr_make_fft_vcc (int fft_size, bool forward, const std::vector<float> &window, bool shift=false); /*! @@ -37,10 +38,10 @@ gr_make_fft_vcc (int fft_size, bool forward, const std::vector<float> &window, b * * Abstract base class */ -class gr_fft_vcc : public gr_sync_block +class GR_CORE_API gr_fft_vcc : public gr_sync_block { protected: - friend gr_fft_vcc_sptr + friend GR_CORE_API gr_fft_vcc_sptr gr_make_fft_vcc (int fft_size, bool forward, const std::vector<float> &window, bool shift); unsigned int d_fft_size; diff --git a/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h b/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h index c026162ee..8535d133c 100644 --- a/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h +++ b/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h @@ -23,11 +23,12 @@ #ifndef INCLUDED_GR_FFT_VCC_FFTW_H #define INCLUDED_GR_FFT_VCC_FFTW_H +#include <gr_core_api.h> #include <gr_fft_vcc.h> class gri_fft_complex; -gr_fft_vcc_sptr +GR_CORE_API gr_fft_vcc_sptr gr_make_fft_vcc_fftw (int fft_size, bool forward, const std::vector<float> &window, bool shift=false); /*! @@ -36,9 +37,9 @@ gr_make_fft_vcc_fftw (int fft_size, bool forward, const std::vector<float> &wind * * Concrete class that uses FFTW. */ -class gr_fft_vcc_fftw : public gr_fft_vcc +class GR_CORE_API gr_fft_vcc_fftw : public gr_fft_vcc { - friend gr_fft_vcc_sptr + friend GR_CORE_API gr_fft_vcc_sptr gr_make_fft_vcc_fftw (int fft_size, bool forward, const std::vector<float> &window, bool shift); gri_fft_complex *d_fft; diff --git a/gnuradio-core/src/lib/general/gr_fft_vfc.h b/gnuradio-core/src/lib/general/gr_fft_vfc.h index 074574477..6cf6b9037 100644 --- a/gnuradio-core/src/lib/general/gr_fft_vfc.h +++ b/gnuradio-core/src/lib/general/gr_fft_vfc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_FFT_VFC_H #define INCLUDED_GR_FFT_VFC_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gri_fft_complex; @@ -30,7 +31,7 @@ class gri_fft_complex; class gr_fft_vfc; typedef boost::shared_ptr<gr_fft_vfc> gr_fft_vfc_sptr; -gr_fft_vfc_sptr +GR_CORE_API gr_fft_vfc_sptr gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window); /*! @@ -38,9 +39,9 @@ gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window); * \ingroup dft_blk */ -class gr_fft_vfc : public gr_sync_block +class GR_CORE_API gr_fft_vfc : public gr_sync_block { - friend gr_fft_vfc_sptr + friend GR_CORE_API gr_fft_vfc_sptr gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window); unsigned int d_fft_size; diff --git a/gnuradio-core/src/lib/general/gr_firdes.h b/gnuradio-core/src/lib/general/gr_firdes.h index de775bd07..83fa7e119 100644 --- a/gnuradio-core/src/lib/general/gr_firdes.h +++ b/gnuradio-core/src/lib/general/gr_firdes.h @@ -23,6 +23,7 @@ #ifndef _GR_FIRDES_H_ #define _GR_FIRDES_H_ +#include <gr_core_api.h> #include <vector> #include <cmath> #include <gr_complex.h> @@ -32,7 +33,7 @@ * \ingroup filter_design */ -class gr_firdes { +class GR_CORE_API gr_firdes { public: enum win_type { diff --git a/gnuradio-core/src/lib/general/gr_float_to_char.h b/gnuradio-core/src/lib/general/gr_float_to_char.h index e65072bf0..434e2e9d0 100644 --- a/gnuradio-core/src/lib/general/gr_float_to_char.h +++ b/gnuradio-core/src/lib/general/gr_float_to_char.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FLOAT_TO_CHAR_H #define INCLUDED_GR_FLOAT_TO_CHAR_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_float_to_char; typedef boost::shared_ptr<gr_float_to_char> gr_float_to_char_sptr; -gr_float_to_char_sptr +GR_CORE_API gr_float_to_char_sptr gr_make_float_to_char (); /*! @@ -36,9 +37,9 @@ gr_make_float_to_char (); * \ingroup converter_blk */ -class gr_float_to_char : public gr_sync_block +class GR_CORE_API gr_float_to_char : public gr_sync_block { - friend gr_float_to_char_sptr gr_make_float_to_char (); + friend GR_CORE_API gr_float_to_char_sptr gr_make_float_to_char (); gr_float_to_char (); public: diff --git a/gnuradio-core/src/lib/general/gr_float_to_complex.h b/gnuradio-core/src/lib/general/gr_float_to_complex.h index f6cc24852..596b595f3 100644 --- a/gnuradio-core/src/lib/general/gr_float_to_complex.h +++ b/gnuradio-core/src/lib/general/gr_float_to_complex.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_FLOAT_TO_COMPLEX_H #define INCLUDED_GR_FLOAT_TO_COMPLEX_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_complex.h> class gr_float_to_complex; typedef boost::shared_ptr<gr_float_to_complex> gr_float_to_complex_sptr; -gr_float_to_complex_sptr +GR_CORE_API gr_float_to_complex_sptr gr_make_float_to_complex (size_t vlen = 1); /*! @@ -37,9 +38,9 @@ gr_make_float_to_complex (size_t vlen = 1); * \ingroup converter_blk */ -class gr_float_to_complex : public gr_sync_block +class GR_CORE_API gr_float_to_complex : public gr_sync_block { - friend gr_float_to_complex_sptr gr_make_float_to_complex (size_t vlen); + friend GR_CORE_API gr_float_to_complex_sptr gr_make_float_to_complex (size_t vlen); gr_float_to_complex (size_t vlen); size_t d_vlen; diff --git a/gnuradio-core/src/lib/general/gr_float_to_short.h b/gnuradio-core/src/lib/general/gr_float_to_short.h index e85343929..010d61141 100644 --- a/gnuradio-core/src/lib/general/gr_float_to_short.h +++ b/gnuradio-core/src/lib/general/gr_float_to_short.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FLOAT_TO_SHORT_H #define INCLUDED_GR_FLOAT_TO_SHORT_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_float_to_short; typedef boost::shared_ptr<gr_float_to_short> gr_float_to_short_sptr; -gr_float_to_short_sptr +GR_CORE_API gr_float_to_short_sptr gr_make_float_to_short (); /*! @@ -36,9 +37,9 @@ gr_make_float_to_short (); * \ingroup converter_blk */ -class gr_float_to_short : public gr_sync_block +class GR_CORE_API gr_float_to_short : public gr_sync_block { - friend gr_float_to_short_sptr gr_make_float_to_short (); + friend GR_CORE_API gr_float_to_short_sptr gr_make_float_to_short (); gr_float_to_short (); public: diff --git a/gnuradio-core/src/lib/general/gr_float_to_uchar.h b/gnuradio-core/src/lib/general/gr_float_to_uchar.h index 3bca9c555..fca8eb07b 100644 --- a/gnuradio-core/src/lib/general/gr_float_to_uchar.h +++ b/gnuradio-core/src/lib/general/gr_float_to_uchar.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FLOAT_TO_UCHAR_H #define INCLUDED_GR_FLOAT_TO_UCHAR_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_float_to_uchar; typedef boost::shared_ptr<gr_float_to_uchar> gr_float_to_uchar_sptr; -gr_float_to_uchar_sptr +GR_CORE_API gr_float_to_uchar_sptr gr_make_float_to_uchar (); /*! @@ -36,9 +37,9 @@ gr_make_float_to_uchar (); * \ingroup converter_blk */ -class gr_float_to_uchar : public gr_sync_block +class GR_CORE_API gr_float_to_uchar : public gr_sync_block { - friend gr_float_to_uchar_sptr gr_make_float_to_uchar (); + friend GR_CORE_API gr_float_to_uchar_sptr gr_make_float_to_uchar (); gr_float_to_uchar (); public: diff --git a/gnuradio-core/src/lib/general/gr_fmdet_cf.h b/gnuradio-core/src/lib/general/gr_fmdet_cf.h index 792646bef..7bf3baa3f 100644 --- a/gnuradio-core/src/lib/general/gr_fmdet_cf.h +++ b/gnuradio-core/src/lib/general/gr_fmdet_cf.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FMDET_CF_H #define INCLUDED_GR_FMDET_CF_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_fmdet_cf; typedef boost::shared_ptr<gr_fmdet_cf> gr_fmdet_cf_sptr; -gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl); +GR_CORE_API gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl); class gr_fir_ccf; @@ -43,9 +44,9 @@ class gr_fir_ccf; * normalization by the magnitude of the sample */ -class gr_fmdet_cf : public gr_sync_block +class GR_CORE_API gr_fmdet_cf : public gr_sync_block { - friend gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low, + friend GR_CORE_API gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl); gr_complex d_S1,d_S2,d_S3,d_S4; diff --git a/gnuradio-core/src/lib/general/gr_framer_sink_1.h b/gnuradio-core/src/lib/general/gr_framer_sink_1.h index 3f2e8aa88..95ad6ced7 100644 --- a/gnuradio-core/src/lib/general/gr_framer_sink_1.h +++ b/gnuradio-core/src/lib/general/gr_framer_sink_1.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_FRAMER_SINK_1_H #define INCLUDED_GR_FRAMER_SINK_1_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_msg_queue.h> class gr_framer_sink_1; typedef boost::shared_ptr<gr_framer_sink_1> gr_framer_sink_1_sptr; -gr_framer_sink_1_sptr +GR_CORE_API gr_framer_sink_1_sptr gr_make_framer_sink_1 (gr_msg_queue_sptr target_queue); /*! @@ -50,9 +51,9 @@ gr_make_framer_sink_1 (gr_msg_queue_sptr target_queue); * the first bit of the packet. That is, this bit is the first * one after the access code. */ -class gr_framer_sink_1 : public gr_sync_block +class GR_CORE_API gr_framer_sink_1 : public gr_sync_block { - friend gr_framer_sink_1_sptr + friend GR_CORE_API gr_framer_sink_1_sptr gr_make_framer_sink_1 (gr_msg_queue_sptr target_queue); private: diff --git a/gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h b/gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h index 385f447b7..932e7da36 100644 --- a/gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h +++ b/gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FREQUENCY_MODULATOR_FC_H #define INCLUDED_GR_FREQUENCY_MODULATOR_FC_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_frequency_modulator_fc; typedef boost::shared_ptr<gr_frequency_modulator_fc> gr_frequency_modulator_fc_sptr; -gr_frequency_modulator_fc_sptr gr_make_frequency_modulator_fc (double sensitivity); +GR_CORE_API gr_frequency_modulator_fc_sptr gr_make_frequency_modulator_fc (double sensitivity); /*! * \brief Frequency modulator block @@ -36,12 +37,12 @@ gr_frequency_modulator_fc_sptr gr_make_frequency_modulator_fc (double sensitivit * * float input; complex baseband output */ -class gr_frequency_modulator_fc : public gr_sync_block +class GR_CORE_API gr_frequency_modulator_fc : public gr_sync_block { double d_sensitivity; double d_phase; - friend gr_frequency_modulator_fc_sptr + friend GR_CORE_API gr_frequency_modulator_fc_sptr gr_make_frequency_modulator_fc (double sensitivity); gr_frequency_modulator_fc (double sensitivity); diff --git a/gnuradio-core/src/lib/general/gr_fxpt.h b/gnuradio-core/src/lib/general/gr_fxpt.h index c98d31b27..5cf736dfb 100644 --- a/gnuradio-core/src/lib/general/gr_fxpt.h +++ b/gnuradio-core/src/lib/general/gr_fxpt.h @@ -22,10 +22,11 @@ #ifndef INCLUDED_GR_FXPT_H #define INCLUDED_GR_FXPT_H +#include <gr_core_api.h> #include <gr_types.h> /*! - * \brief fixed point sine and cosine and friends. + * \brief fixed point sine and cosine and friend GR_CORE_APIs. * \ingroup misc * * fixed pt radians @@ -35,7 +36,7 @@ * 2**31-1 pi - epsilon * */ -class gr_fxpt +class GR_CORE_API gr_fxpt { static const int WORDBITS = 32; static const int NBITS = 10; diff --git a/gnuradio-core/src/lib/general/gr_fxpt_nco.h b/gnuradio-core/src/lib/general/gr_fxpt_nco.h index ca0d54f02..5597efb4f 100644 --- a/gnuradio-core/src/lib/general/gr_fxpt_nco.h +++ b/gnuradio-core/src/lib/general/gr_fxpt_nco.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_FXPT_NCO_H #define INCLUDED_GR_FXPT_NCO_H +#include <gr_core_api.h> #include <gr_fxpt.h> #include <gr_complex.h> @@ -29,7 +30,7 @@ * \brief Numerically Controlled Oscillator (NCO) * \ingroup misc */ -class gr_fxpt_nco { +class GR_CORE_API gr_fxpt_nco { gr_uint32 d_phase; gr_int32 d_phase_inc; diff --git a/gnuradio-core/src/lib/general/gr_fxpt_vco.h b/gnuradio-core/src/lib/general/gr_fxpt_vco.h index 1ff968b79..a77a31311 100644 --- a/gnuradio-core/src/lib/general/gr_fxpt_vco.h +++ b/gnuradio-core/src/lib/general/gr_fxpt_vco.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_FXPT_VCO_H #define INCLUDED_GR_FXPT_VCO_H +#include <gr_core_api.h> #include <gr_fxpt.h> #include <gr_complex.h> @@ -29,7 +30,7 @@ * \brief Voltage Controlled Oscillator (VCO) * \ingroup misc */ -class gr_fxpt_vco { +class GR_CORE_API gr_fxpt_vco { gr_int32 d_phase; public: diff --git a/gnuradio-core/src/lib/general/gr_glfsr_source_b.h b/gnuradio-core/src/lib/general/gr_glfsr_source_b.h index cff8df11b..bd66912ed 100644 --- a/gnuradio-core/src/lib/general/gr_glfsr_source_b.h +++ b/gnuradio-core/src/lib/general/gr_glfsr_source_b.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_GLFSR_SOURCE_B_H #define INCLUDED_GR_GLFSR_SOURCE_B_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gri_glfsr; @@ -30,16 +31,16 @@ class gri_glfsr; class gr_glfsr_source_b; typedef boost::shared_ptr<gr_glfsr_source_b> gr_glfsr_source_b_sptr; -gr_glfsr_source_b_sptr gr_make_glfsr_source_b(int degree, bool repeat=true, int mask=0, int seed=1); +GR_CORE_API gr_glfsr_source_b_sptr gr_make_glfsr_source_b(int degree, bool repeat=true, int mask=0, int seed=1); /*! * \brief Galois LFSR pseudo-random source * \ingroup source_blk */ -class gr_glfsr_source_b : public gr_sync_block +class GR_CORE_API gr_glfsr_source_b : public gr_sync_block { private: - friend gr_glfsr_source_b_sptr + friend GR_CORE_API gr_glfsr_source_b_sptr gr_make_glfsr_source_b(int degree, bool repeat, int mask, int seed); gri_glfsr *d_glfsr; diff --git a/gnuradio-core/src/lib/general/gr_glfsr_source_f.h b/gnuradio-core/src/lib/general/gr_glfsr_source_f.h index 007970806..2dd09c5ac 100644 --- a/gnuradio-core/src/lib/general/gr_glfsr_source_f.h +++ b/gnuradio-core/src/lib/general/gr_glfsr_source_f.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_GLFSR_SOURCE_F_H #define INCLUDED_GR_GLFSR_SOURCE_F_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gri_glfsr; @@ -30,16 +31,16 @@ class gri_glfsr; class gr_glfsr_source_f; typedef boost::shared_ptr<gr_glfsr_source_f> gr_glfsr_source_f_sptr; -gr_glfsr_source_f_sptr gr_make_glfsr_source_f(int degree, bool repeat=true, int mask=0, int seed=1); +GR_CORE_API gr_glfsr_source_f_sptr gr_make_glfsr_source_f(int degree, bool repeat=true, int mask=0, int seed=1); /*! * \brief Galois LFSR pseudo-random source generating float outputs -1.0 - 1.0 * \ingroup source_blk */ -class gr_glfsr_source_f : public gr_sync_block +class GR_CORE_API gr_glfsr_source_f : public gr_sync_block { private: - friend gr_glfsr_source_f_sptr + friend GR_CORE_API gr_glfsr_source_f_sptr gr_make_glfsr_source_f(int degree, bool repeat, int mask, int seed); gri_glfsr *d_glfsr; diff --git a/gnuradio-core/src/lib/general/gr_head.h b/gnuradio-core/src/lib/general/gr_head.h index f7eee1064..f66d43308 100644 --- a/gnuradio-core/src/lib/general/gr_head.h +++ b/gnuradio-core/src/lib/general/gr_head.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_HEAD_H #define INCLUDED_GR_HEAD_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <stddef.h> // size_t @@ -36,9 +37,9 @@ typedef boost::shared_ptr<gr_head> gr_head_sptr; * Useful for building test cases */ -class gr_head : public gr_sync_block +class GR_CORE_API gr_head : public gr_sync_block { - friend gr_head_sptr gr_make_head (size_t sizeof_stream_item, unsigned long long nitems); + friend GR_CORE_API gr_head_sptr gr_make_head (size_t sizeof_stream_item, unsigned long long nitems); gr_head (size_t sizeof_stream_item, unsigned long long nitems); unsigned long long d_nitems; @@ -52,7 +53,7 @@ class gr_head : public gr_sync_block void reset() { d_ncopied_items = 0; } }; -gr_head_sptr +GR_CORE_API gr_head_sptr gr_make_head (size_t sizeof_stream_item, unsigned long long nitems); diff --git a/gnuradio-core/src/lib/general/gr_int_to_float.h b/gnuradio-core/src/lib/general/gr_int_to_float.h index cf1223be5..dac7be9c4 100644 --- a/gnuradio-core/src/lib/general/gr_int_to_float.h +++ b/gnuradio-core/src/lib/general/gr_int_to_float.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_INT_TO_FLOAT_H #define INCLUDED_GR_INT_TO_FLOAT_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_int_to_float; typedef boost::shared_ptr<gr_int_to_float> gr_int_to_float_sptr; -gr_int_to_float_sptr +GR_CORE_API gr_int_to_float_sptr gr_make_int_to_float (); /*! @@ -36,9 +37,9 @@ gr_make_int_to_float (); * \ingroup converter_blk */ -class gr_int_to_float : public gr_sync_block +class GR_CORE_API gr_int_to_float : public gr_sync_block { - friend gr_int_to_float_sptr gr_make_int_to_float (); + friend GR_CORE_API gr_int_to_float_sptr gr_make_int_to_float (); gr_int_to_float (); public: diff --git a/gnuradio-core/src/lib/general/gr_interleave.h b/gnuradio-core/src/lib/general/gr_interleave.h index faffdd757..ef7bce07a 100644 --- a/gnuradio-core/src/lib/general/gr_interleave.h +++ b/gnuradio-core/src/lib/general/gr_interleave.h @@ -23,20 +23,21 @@ #ifndef INCLUDED_GR_INTERLEAVE_H #define INCLUDED_GR_INTERLEAVE_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_interleave; typedef boost::shared_ptr<gr_interleave> gr_interleave_sptr; -gr_interleave_sptr gr_make_interleave (size_t itemsize); +GR_CORE_API gr_interleave_sptr gr_make_interleave (size_t itemsize); /*! * \brief interleave N inputs to a single output * \ingroup slicedice_blk */ -class gr_interleave : public gr_sync_interpolator +class GR_CORE_API gr_interleave : public gr_sync_interpolator { - friend gr_interleave_sptr gr_make_interleave (size_t itemsize); + friend GR_CORE_API gr_interleave_sptr gr_make_interleave (size_t itemsize); size_t d_itemsize; diff --git a/gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h b/gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h index c79a9370f..40f1636bd 100644 --- a/gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h +++ b/gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_INTERLEAVED_SHORT_TO_COMPLEX_H #define INCLUDED_GR_INTERLEAVED_SHORT_TO_COMPLEX_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_interleaved_short_to_complex; typedef boost::shared_ptr<gr_interleaved_short_to_complex> gr_interleaved_short_to_complex_sptr; -gr_interleaved_short_to_complex_sptr +GR_CORE_API gr_interleaved_short_to_complex_sptr gr_make_interleaved_short_to_complex (); /*! @@ -37,9 +38,9 @@ gr_make_interleaved_short_to_complex (); * \ingroup converter_blk */ -class gr_interleaved_short_to_complex : public gr_sync_decimator +class GR_CORE_API gr_interleaved_short_to_complex : public gr_sync_decimator { - friend gr_interleaved_short_to_complex_sptr gr_make_interleaved_short_to_complex (); + friend GR_CORE_API gr_interleaved_short_to_complex_sptr gr_make_interleaved_short_to_complex (); gr_interleaved_short_to_complex (); public: diff --git a/gnuradio-core/src/lib/general/gr_iqcomp_cc.h b/gnuradio-core/src/lib/general/gr_iqcomp_cc.h index f4c6cf8ea..c01e2a6ba 100644 --- a/gnuradio-core/src/lib/general/gr_iqcomp_cc.h +++ b/gnuradio-core/src/lib/general/gr_iqcomp_cc.h @@ -24,20 +24,21 @@ #ifndef INCLUDED_GR_IQCOMP_CC_H #define INCLUDED_GR_IQCOMP_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_iqcomp_cc; typedef boost::shared_ptr<gr_iqcomp_cc> gr_iqcomp_cc_sptr; -gr_iqcomp_cc_sptr gr_make_iqcomp_cc (float mu); +GR_CORE_API gr_iqcomp_cc_sptr gr_make_iqcomp_cc (float mu); /*! * \brief * \ingroup misc_blk */ -class gr_iqcomp_cc : public gr_sync_block +class GR_CORE_API gr_iqcomp_cc : public gr_sync_block { - friend gr_iqcomp_cc_sptr gr_make_iqcomp_cc (float mu); + friend GR_CORE_API gr_iqcomp_cc_sptr gr_make_iqcomp_cc (float mu); float d_mu, d_wi, d_wq; gr_iqcomp_cc (float mu); diff --git a/gnuradio-core/src/lib/general/gr_keep_one_in_n.h b/gnuradio-core/src/lib/general/gr_keep_one_in_n.h index ba573618e..c32ed2a26 100644 --- a/gnuradio-core/src/lib/general/gr_keep_one_in_n.h +++ b/gnuradio-core/src/lib/general/gr_keep_one_in_n.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_KEEP_ONE_IN_N_H #define INCLUDED_GR_KEEP_ONE_IN_N_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_keep_one_in_n; typedef boost::shared_ptr<gr_keep_one_in_n> gr_keep_one_in_n_sptr; -gr_keep_one_in_n_sptr +GR_CORE_API gr_keep_one_in_n_sptr gr_make_keep_one_in_n (size_t item_size, int n); @@ -36,9 +37,9 @@ gr_make_keep_one_in_n (size_t item_size, int n); * \brief decimate a stream, keeping one item out of every n. * \ingroup slicedice_blk */ -class gr_keep_one_in_n : public gr_block +class GR_CORE_API gr_keep_one_in_n : public gr_block { - friend gr_keep_one_in_n_sptr + friend GR_CORE_API gr_keep_one_in_n_sptr gr_make_keep_one_in_n (size_t item_size, int n); int d_n; diff --git a/gnuradio-core/src/lib/general/gr_kludge_copy.h b/gnuradio-core/src/lib/general/gr_kludge_copy.h index 90fd047df..5c1e461a8 100644 --- a/gnuradio-core/src/lib/general/gr_kludge_copy.h +++ b/gnuradio-core/src/lib/general/gr_kludge_copy.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_KLUDGE_COPY_H #define INCLUDED_GR_KLUDGE_COPY_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_kludge_copy; typedef boost::shared_ptr<gr_kludge_copy> gr_kludge_copy_sptr; -gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize); +GR_CORE_API gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize); /*! * \brief output[i] = input[i] @@ -36,11 +37,11 @@ gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize); * * This is a short term kludge to work around a problem with the hierarchical block impl. */ -class gr_kludge_copy : public gr_sync_block +class GR_CORE_API gr_kludge_copy : public gr_sync_block { size_t d_itemsize; - friend gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize); + friend GR_CORE_API gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize); gr_kludge_copy(size_t itemsize); public: diff --git a/gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h b/gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h index f8497e4cb..aa7ad7b1f 100644 --- a/gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h +++ b/gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_LFSR_32K_SOURCE_S_H #define INCLUDED_GR_LFSR_32K_SOURCE_S_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_lfsr_32k.h> class gr_lfsr_32k_source_s; typedef boost::shared_ptr<gr_lfsr_32k_source_s> gr_lfsr_32k_source_s_sptr; -gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s (); +GR_CORE_API gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s (); /*! * \brief LFSR pseudo-random source with period of 2^15 bits (2^11 shorts) @@ -38,9 +39,9 @@ gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s (); * This source is typically used along with gr_check_lfsr_32k_s to test * the USRP using its digital loopback mode. */ -class gr_lfsr_32k_source_s : public gr_sync_block +class GR_CORE_API gr_lfsr_32k_source_s : public gr_sync_block { - friend gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s (); + friend GR_CORE_API gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s (); static const int BUFSIZE = 2048 - 1; // ensure pattern isn't packet aligned diff --git a/gnuradio-core/src/lib/general/gr_lms_dfe_cc.h b/gnuradio-core/src/lib/general/gr_lms_dfe_cc.h new file mode 100644 index 000000000..335b1883c --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_lms_dfe_cc.h @@ -0,0 +1,65 @@ +/* -*- c++ -*- */ +/* + * Copyright 2005 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_GR_LMS_DFE_CC_H +#define INCLUDED_GR_LMS_DFE_CC_H + +#include <gr_core_api.h> +#include <gr_sync_block.h> + +class gr_lms_dfe_cc; +typedef boost::shared_ptr<gr_lms_dfe_cc> gr_lms_dfe_cc_sptr; + +GR_CORE_API gr_lms_dfe_cc_sptr gr_make_lms_dfe_cc (float lambda_ff, float lambda_fb, + unsigned int num_fftaps, unsigned int num_fbtaps); + +/*! + * \brief Least-Mean-Square Decision Feedback Equalizer (complex in/out) + * \ingroup eq_blk + */ +class GR_CORE_API gr_lms_dfe_cc : public gr_sync_block +{ + friend GR_CORE_API gr_lms_dfe_cc_sptr gr_make_lms_dfe_cc (float lambda_ff, float lambda_fb, + unsigned int num_fftaps, unsigned int num_fbtaps); + + float d_lambda_ff; + float d_lambda_fb; + std::vector<gr_complex> d_ff_delayline; + std::vector<gr_complex> d_fb_delayline; + std::vector<gr_complex> d_ff_taps; + std::vector<gr_complex> d_fb_taps; + unsigned int d_ff_index; + unsigned int d_fb_index; + + gr_lms_dfe_cc (float lambda_ff, float lambda_fb, + unsigned int num_fftaps, unsigned int num_fbtaps); + gr_complex slicer_0deg(gr_complex baud); + gr_complex slicer_45deg(gr_complex baud); + + public: + + int work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); +}; + +#endif diff --git a/gnuradio-core/src/lib/general/gr_lms_dfe_ff.h b/gnuradio-core/src/lib/general/gr_lms_dfe_ff.h new file mode 100644 index 000000000..ed2aa9844 --- /dev/null +++ b/gnuradio-core/src/lib/general/gr_lms_dfe_ff.h @@ -0,0 +1,63 @@ +/* -*- c++ -*- */ +/* + * Copyright 2005 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_GR_LMS_DFE_FF_H +#define INCLUDED_GR_LMS_DFE_FF_H + +#include <gr_core_api.h> +#include <gr_sync_block.h> + +class gr_lms_dfe_ff; +typedef boost::shared_ptr<gr_lms_dfe_ff> gr_lms_dfe_ff_sptr; + +GR_CORE_API gr_lms_dfe_ff_sptr gr_make_lms_dfe_ff (float lambda_ff, float lambda_fb, + unsigned int num_fftaps, unsigned int num_fbtaps); + +/*! + * \brief Least-Mean-Square Decision Feedback Equalizer (float in/out) + * \ingroup eq_blk + */ +class GR_CORE_API gr_lms_dfe_ff : public gr_sync_block +{ + friend GR_CORE_API gr_lms_dfe_ff_sptr gr_make_lms_dfe_ff (float lambda_ff, float lambda_fb, + unsigned int num_fftaps, unsigned int num_fbtaps); + + float d_lambda_ff; + float d_lambda_fb; + std::vector<float> d_ff_delayline; + std::vector<float> d_fb_delayline; + std::vector<float> d_ff_taps; + std::vector<float> d_fb_taps; + unsigned int d_ff_index; + unsigned int d_fb_index; + + gr_lms_dfe_ff (float lambda_ff, float lambda_fb, + unsigned int num_fftaps, unsigned int num_fbtaps); + + public: + + int work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); +}; + +#endif diff --git a/gnuradio-core/src/lib/general/gr_log2_const.h b/gnuradio-core/src/lib/general/gr_log2_const.h index 4ea420920..8e4a0860b 100644 --- a/gnuradio-core/src/lib/general/gr_log2_const.h +++ b/gnuradio-core/src/lib/general/gr_log2_const.h @@ -27,6 +27,7 @@ #ifndef INCLUDED_GR_LOG2_CONST_H #define INCLUDED_GR_LOG2_CONST_H +#include <gr_core_api.h> #include <assert.h> template<unsigned int k> static inline int gr_log2_const() { assert(0); return 0; } diff --git a/gnuradio-core/src/lib/general/gr_map_bb.h b/gnuradio-core/src/lib/general/gr_map_bb.h index 4986ab181..0820c6a16 100644 --- a/gnuradio-core/src/lib/general/gr_map_bb.h +++ b/gnuradio-core/src/lib/general/gr_map_bb.h @@ -22,21 +22,22 @@ #ifndef INCLUDED_GR_MAP_BB_H #define INCLUDED_GR_MAP_BB_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_map_bb; typedef boost::shared_ptr<gr_map_bb> gr_map_bb_sptr; -gr_map_bb_sptr gr_make_map_bb(const std::vector<int> &map); +GR_CORE_API gr_map_bb_sptr gr_make_map_bb(const std::vector<int> &map); /*! * \brief output[i] = map[input[i]] * \ingroup coding_blk */ -class gr_map_bb : public gr_sync_block +class GR_CORE_API gr_map_bb : public gr_sync_block { - friend gr_map_bb_sptr gr_make_map_bb(const std::vector<int> &map); + friend GR_CORE_API gr_map_bb_sptr gr_make_map_bb(const std::vector<int> &map); unsigned char d_map[0x100]; diff --git a/gnuradio-core/src/lib/general/gr_math.h b/gnuradio-core/src/lib/general/gr_math.h index f5935c1da..9c61942cd 100644 --- a/gnuradio-core/src/lib/general/gr_math.h +++ b/gnuradio-core/src/lib/general/gr_math.h @@ -27,6 +27,7 @@ #ifndef _GR_MATH_H_ #define _GR_MATH_H_ +#include <gr_core_api.h> #include <gr_complex.h> static inline bool @@ -51,7 +52,7 @@ gr_is_power_of_2(long x) * to zero. This routine calculates the arc tangent with an average * error of +/- 0.045 degrees. */ -float gr_fast_atan2f(float y, float x); +GR_CORE_API float gr_fast_atan2f(float y, float x); static inline float gr_fast_atan2f(gr_complex z) { diff --git a/gnuradio-core/src/lib/general/gr_misc.h b/gnuradio-core/src/lib/general/gr_misc.h index 55cc7eda6..78f7e18ac 100644 --- a/gnuradio-core/src/lib/general/gr_misc.h +++ b/gnuradio-core/src/lib/general/gr_misc.h @@ -23,16 +23,17 @@ #ifndef INCLUDED_GR_MISC_H #define INCLUDED_GR_MISC_H +#include <gr_core_api.h> #include <gr_types.h> unsigned int gr_rounduppow2(unsigned int n); // FIXME should be template -void gr_zero_vector(std::vector<float> &v); -void gr_zero_vector(std::vector<double> &v); -void gr_zero_vector(std::vector<int> &v); -void gr_zero_vector(std::vector<gr_complex> &v); +GR_CORE_API void gr_zero_vector(std::vector<float> &v); +GR_CORE_API void gr_zero_vector(std::vector<double> &v); +GR_CORE_API void gr_zero_vector(std::vector<int> &v); +GR_CORE_API void gr_zero_vector(std::vector<gr_complex> &v); #endif /* INCLUDED_GR_MISC_H */ diff --git a/gnuradio-core/src/lib/general/gr_nlog10_ff.h b/gnuradio-core/src/lib/general/gr_nlog10_ff.h index 1cb50f3ca..cea56f87e 100644 --- a/gnuradio-core/src/lib/general/gr_nlog10_ff.h +++ b/gnuradio-core/src/lib/general/gr_nlog10_ff.h @@ -22,20 +22,21 @@ #ifndef INCLUDED_GR_NLOG10_FF_H #define INCLUDED_GR_NLOG10_FF_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_nlog10_ff; typedef boost::shared_ptr<gr_nlog10_ff> gr_nlog10_ff_sptr; -gr_nlog10_ff_sptr gr_make_nlog10_ff (float n=1.0, unsigned vlen=1, float k=0); +GR_CORE_API gr_nlog10_ff_sptr gr_make_nlog10_ff (float n=1.0, unsigned vlen=1, float k=0); /*! * \brief output = n*log10(input) + k * \ingroup math_blk */ -class gr_nlog10_ff : public gr_sync_block +class GR_CORE_API gr_nlog10_ff : public gr_sync_block { - friend gr_nlog10_ff_sptr gr_make_nlog10_ff (float n, unsigned vlen, float k); + friend GR_CORE_API gr_nlog10_ff_sptr gr_make_nlog10_ff (float n, unsigned vlen, float k); unsigned int d_vlen; float d_n; diff --git a/gnuradio-core/src/lib/general/gr_nop.h b/gnuradio-core/src/lib/general/gr_nop.h index 354c2f9fc..b8398befc 100644 --- a/gnuradio-core/src/lib/general/gr_nop.h +++ b/gnuradio-core/src/lib/general/gr_nop.h @@ -23,22 +23,23 @@ #ifndef INCLUDED_GR_NOP_H #define INCLUDED_GR_NOP_H +#include <gr_core_api.h> #include <gr_block.h> #include <stddef.h> // size_t class gr_nop; typedef boost::shared_ptr<gr_nop> gr_nop_sptr; -gr_nop_sptr +GR_CORE_API gr_nop_sptr gr_make_nop (size_t sizeof_stream_item); /*! * \brief Does nothing. Used for testing only. * \ingroup misc_blk */ -class gr_nop : public gr_block +class GR_CORE_API gr_nop : public gr_block { - friend gr_nop_sptr gr_make_nop (size_t sizeof_stream_item); + friend GR_CORE_API gr_nop_sptr gr_make_nop (size_t sizeof_stream_item); gr_nop (size_t sizeof_stream_item); protected: diff --git a/gnuradio-core/src/lib/general/gr_null_sink.h b/gnuradio-core/src/lib/general/gr_null_sink.h index 6d00382a5..c6c4f36fb 100644 --- a/gnuradio-core/src/lib/general/gr_null_sink.h +++ b/gnuradio-core/src/lib/general/gr_null_sink.h @@ -23,23 +23,23 @@ #ifndef INCLUDED_GR_NULL_SINK_H #define INCLUDED_GR_NULL_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <stddef.h> // size_t class gr_null_sink; typedef boost::shared_ptr<gr_null_sink> gr_null_sink_sptr; -gr_null_sink_sptr +GR_CORE_API gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item); - /*! * \brief Bit bucket * \ingroup sink_blk */ -class gr_null_sink : public gr_sync_block +class GR_CORE_API gr_null_sink : public gr_sync_block { - friend gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item); + friend GR_CORE_API gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item); gr_null_sink (size_t sizeof_stream_item); public: diff --git a/gnuradio-core/src/lib/general/gr_null_source.h b/gnuradio-core/src/lib/general/gr_null_source.h index b1a46a195..33687fbaa 100644 --- a/gnuradio-core/src/lib/general/gr_null_source.h +++ b/gnuradio-core/src/lib/general/gr_null_source.h @@ -23,21 +23,22 @@ #ifndef INCLUDED_GR_NULL_SOURCE_H #define INCLUDED_GR_NULL_SOURCE_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_null_source; typedef boost::shared_ptr<gr_null_source> gr_null_source_sptr; -gr_null_source_sptr +GR_CORE_API gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item); /*! * \brief A source of zeros. * \ingroup source_blk */ -class gr_null_source : public gr_sync_block +class GR_CORE_API gr_null_source : public gr_sync_block { - friend gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item); + friend GR_CORE_API gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item); gr_null_source (size_t sizeof_stream_item); diff --git a/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h b/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h index 12ae6a8f6..6d532d50f 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h @@ -24,13 +24,14 @@ #define INCLUDED_GR_OFDM_BPSK_DEMAPPER_H +#include <gr_core_api.h> #include <gr_block.h> #include <vector> class gr_ofdm_bpsk_demapper; typedef boost::shared_ptr<gr_ofdm_bpsk_demapper> gr_ofdm_bpsk_demapper_sptr; -gr_ofdm_bpsk_demapper_sptr +GR_CORE_API gr_ofdm_bpsk_demapper_sptr gr_make_ofdm_bpsk_demapper (unsigned int occupied_carriers); @@ -39,9 +40,9 @@ gr_make_ofdm_bpsk_demapper (unsigned int occupied_carriers); * and demodulate to a stream of bits. Simple BPSK version. * \ingroup ofdm_blk */ -class gr_ofdm_bpsk_demapper : public gr_block +class GR_CORE_API gr_ofdm_bpsk_demapper : public gr_block { - friend gr_ofdm_bpsk_demapper_sptr + friend GR_CORE_API gr_ofdm_bpsk_demapper_sptr gr_make_ofdm_bpsk_demapper (unsigned int occupied_carriers); protected: diff --git a/gnuradio-core/src/lib/general/gr_ofdm_cyclic_prefixer.h b/gnuradio-core/src/lib/general/gr_ofdm_cyclic_prefixer.h index eab91cd11..1ed68aa58 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_cyclic_prefixer.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_cyclic_prefixer.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_OFDM_CYCLIC_PREFIXER_H #define INCLUDED_GR_OFDM_CYCLIC_PREFIXER_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> #include <stdio.h> class gr_ofdm_cyclic_prefixer; typedef boost::shared_ptr<gr_ofdm_cyclic_prefixer> gr_ofdm_cyclic_prefixer_sptr; -gr_ofdm_cyclic_prefixer_sptr +GR_CORE_API gr_ofdm_cyclic_prefixer_sptr gr_make_ofdm_cyclic_prefixer (size_t input_size, size_t output_size); @@ -38,9 +39,9 @@ gr_make_ofdm_cyclic_prefixer (size_t input_size, size_t output_size); * symbol(vector) and converts vector to a stream output_size long. * \ingroup ofdm_blk */ -class gr_ofdm_cyclic_prefixer : public gr_sync_interpolator +class GR_CORE_API gr_ofdm_cyclic_prefixer : public gr_sync_interpolator { - friend gr_ofdm_cyclic_prefixer_sptr + friend GR_CORE_API gr_ofdm_cyclic_prefixer_sptr gr_make_ofdm_cyclic_prefixer (size_t input_size, size_t output_size); protected: diff --git a/gnuradio-core/src/lib/general/gr_ofdm_demapper_vcb.h b/gnuradio-core/src/lib/general/gr_ofdm_demapper_vcb.h index 979e1996b..d12e007df 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_demapper_vcb.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_demapper_vcb.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_OFDM_DEMAPPER_VCB_H #define INCLUDED_GR_OFDM_DEMAPPER_VCB_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_ofdm_demapper_vcb; typedef boost::shared_ptr<gr_ofdm_demapper_vcb> gr_ofdm_demapper_vcb_sptr; -gr_ofdm_demapper_vcb_sptr +GR_CORE_API gr_ofdm_demapper_vcb_sptr gr_make_ofdm_demapper_vcb (unsigned int bits_per_symbol, unsigned int vlen); @@ -39,9 +40,9 @@ gr_make_ofdm_demapper_vcb (unsigned int bits_per_symbol, unsigned int vlen); * \ingroup demodulation_blk * \ingroup ofdm_blk */ -class gr_ofdm_demapper_vcb : public gr_sync_decimator +class GR_CORE_API gr_ofdm_demapper_vcb : public gr_sync_decimator { - friend gr_ofdm_demapper_vcb_sptr + friend GR_CORE_API gr_ofdm_demapper_vcb_sptr gr_make_ofdm_demapper_vcb (unsigned int bits_per_symbol, unsigned int vlen); protected: diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_acquisition.h b/gnuradio-core/src/lib/general/gr_ofdm_frame_acquisition.h index 5db8dbb7f..63c1af086 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_frame_acquisition.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_acquisition.h @@ -24,13 +24,14 @@ #define INCLUDED_GR_OFDM_FRAME_ACQUISITION_H +#include <gr_core_api.h> #include <gr_block.h> #include <vector> class gr_ofdm_frame_acquisition; typedef boost::shared_ptr<gr_ofdm_frame_acquisition> gr_ofdm_frame_acquisition_sptr; -gr_ofdm_frame_acquisition_sptr +GR_CORE_API gr_ofdm_frame_acquisition_sptr gr_make_ofdm_frame_acquisition (unsigned int occupied_carriers, unsigned int fft_length, unsigned int cplen, const std::vector<gr_complex> &known_symbol, @@ -54,7 +55,7 @@ gr_make_ofdm_frame_acquisition (unsigned int occupied_carriers, unsigned int fft * distortion caused by the channel. */ -class gr_ofdm_frame_acquisition : public gr_block +class GR_CORE_API gr_ofdm_frame_acquisition : public gr_block { /*! * \brief Build an OFDM correlator and equalizer. @@ -65,7 +66,7 @@ class gr_ofdm_frame_acquisition : public gr_block * start of a frame (usually a BPSK PN sequence) * \param max_fft_shift_len Set's the maximum distance you can look between bins for correlation */ - friend gr_ofdm_frame_acquisition_sptr + friend GR_CORE_API gr_ofdm_frame_acquisition_sptr gr_make_ofdm_frame_acquisition (unsigned int occupied_carriers, unsigned int fft_length, unsigned int cplen, const std::vector<gr_complex> &known_symbol, diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h index c419b8673..d3c1d761d 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_OFDM_FRAME_SINK_H #define INCLUDED_GR_OFDM_FRAME_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_msg_queue.h> class gr_ofdm_frame_sink; typedef boost::shared_ptr<gr_ofdm_frame_sink> gr_ofdm_frame_sink_sptr; -gr_ofdm_frame_sink_sptr +GR_CORE_API gr_ofdm_frame_sink_sptr gr_make_ofdm_frame_sink (const std::vector<gr_complex> &sym_position, const std::vector<unsigned char> &sym_value_out, gr_msg_queue_sptr target_queue, unsigned int occupied_tones, @@ -45,9 +46,9 @@ gr_make_ofdm_frame_sink (const std::vector<gr_complex> &sym_position, * we want to be able to pass in a reference to an object to do the demapping and slicing * for a given modulation type. */ -class gr_ofdm_frame_sink : public gr_sync_block +class GR_CORE_API gr_ofdm_frame_sink : public gr_sync_block { - friend gr_ofdm_frame_sink_sptr + friend GR_CORE_API gr_ofdm_frame_sink_sptr gr_make_ofdm_frame_sink (const std::vector<gr_complex> &sym_position, const std::vector<unsigned char> &sym_value_out, gr_msg_queue_sptr target_queue, unsigned int occupied_tones, diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h index de8c6a37e..9595303b1 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_OFDM_FRAME_SINK2_H #define INCLUDED_GR_OFDM_FRAME_SINK2_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_msg_queue.h> #include <gr_constellation.h> @@ -30,7 +31,7 @@ class gr_ofdm_frame_sink2; typedef boost::shared_ptr<gr_ofdm_frame_sink2> gr_ofdm_frame_sink2_sptr; -gr_ofdm_frame_sink2_sptr +GR_CORE_API gr_ofdm_frame_sink2_sptr gr_make_ofdm_frame_sink2 (gr_constellation_sptr constell, gr_msg_queue_sptr target_queue, unsigned int occupied_tones, float phase_gain=0.25, float freq_gain=0.25*0.25/4.0); @@ -45,9 +46,9 @@ gr_make_ofdm_frame_sink2 (gr_constellation_sptr constell, * we want to be able to pass in a reference to an object to do the demapping and slicing * for a given modulation type. */ -class gr_ofdm_frame_sink2 : public gr_sync_block +class GR_CORE_API gr_ofdm_frame_sink2 : public gr_sync_block { - friend gr_ofdm_frame_sink2_sptr + friend GR_CORE_API gr_ofdm_frame_sink2_sptr gr_make_ofdm_frame_sink2 (gr_constellation_sptr constell, gr_msg_queue_sptr target_queue, unsigned int occupied_tones, float phase_gain, float freq_gain); diff --git a/gnuradio-core/src/lib/general/gr_ofdm_insert_preamble.h b/gnuradio-core/src/lib/general/gr_ofdm_insert_preamble.h index 57c1af013..10025dd14 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_insert_preamble.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_insert_preamble.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_OFDM_INSERT_PREAMBLE_H #define INCLUDED_GR_OFDM_INSERT_PREAMBLE_H +#include <gr_core_api.h> #include <gr_block.h> #include <vector> class gr_ofdm_insert_preamble; typedef boost::shared_ptr<gr_ofdm_insert_preamble> gr_ofdm_insert_preamble_sptr; -gr_ofdm_insert_preamble_sptr +GR_CORE_API gr_ofdm_insert_preamble_sptr gr_make_ofdm_insert_preamble(int fft_length, const std::vector<std::vector<gr_complex> > &preamble); @@ -62,9 +63,9 @@ gr_make_ofdm_insert_preamble(int fft_length, * \param preamble vector of symbols that represent the pre-modulated preamble. */ -class gr_ofdm_insert_preamble : public gr_block +class GR_CORE_API gr_ofdm_insert_preamble : public gr_block { - friend gr_ofdm_insert_preamble_sptr + friend GR_CORE_API gr_ofdm_insert_preamble_sptr gr_make_ofdm_insert_preamble(int fft_length, const std::vector<std::vector<gr_complex> > &preamble); diff --git a/gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.h b/gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.h index 5a21b90af..f33ca4253 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_mapper_bcv.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_OFDM_MAPPER_BCV_H #define INCLUDED_GR_OFDM_MAPPER_BCV_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_message.h> #include <gr_msg_queue.h> @@ -30,7 +31,7 @@ class gr_ofdm_mapper_bcv; typedef boost::shared_ptr<gr_ofdm_mapper_bcv> gr_ofdm_mapper_bcv_sptr; -gr_ofdm_mapper_bcv_sptr +GR_CORE_API gr_ofdm_mapper_bcv_sptr gr_make_ofdm_mapper_bcv (const std::vector<gr_complex> &constellation, unsigned msgq_limit, unsigned occupied_carriers, unsigned int fft_length); @@ -42,9 +43,9 @@ gr_make_ofdm_mapper_bcv (const std::vector<gr_complex> &constellation, unsigned * \ingroup ofdm_blk */ -class gr_ofdm_mapper_bcv : public gr_sync_block +class GR_CORE_API gr_ofdm_mapper_bcv : public gr_sync_block { - friend gr_ofdm_mapper_bcv_sptr + friend GR_CORE_API gr_ofdm_mapper_bcv_sptr gr_make_ofdm_mapper_bcv (const std::vector<gr_complex> &constellation, unsigned msgq_limit, unsigned occupied_carriers, unsigned int fft_length); protected: diff --git a/gnuradio-core/src/lib/general/gr_ofdm_sampler.h b/gnuradio-core/src/lib/general/gr_ofdm_sampler.h index d059636ed..6e9dddada 100644 --- a/gnuradio-core/src/lib/general/gr_ofdm_sampler.h +++ b/gnuradio-core/src/lib/general/gr_ofdm_sampler.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_OFDM_SAMPLER_H #define INCLUDED_GR_OFDM_SAMPLER_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_ofdm_sampler; typedef boost::shared_ptr<gr_ofdm_sampler> gr_ofdm_sampler_sptr; -gr_ofdm_sampler_sptr gr_make_ofdm_sampler (unsigned int fft_length, +GR_CORE_API gr_ofdm_sampler_sptr gr_make_ofdm_sampler (unsigned int fft_length, unsigned int symbol_length, unsigned int timeout=1000); @@ -36,9 +37,9 @@ gr_ofdm_sampler_sptr gr_make_ofdm_sampler (unsigned int fft_length, * \brief does the rest of the OFDM stuff * \ingroup ofdm_blk */ -class gr_ofdm_sampler : public gr_block +class GR_CORE_API gr_ofdm_sampler : public gr_block { - friend gr_ofdm_sampler_sptr gr_make_ofdm_sampler (unsigned int fft_length, + friend GR_CORE_API gr_ofdm_sampler_sptr gr_make_ofdm_sampler (unsigned int fft_length, unsigned int symbol_length, unsigned int timeout); diff --git a/gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h b/gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h index ec163911a..abb23e002 100644 --- a/gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h +++ b/gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h @@ -22,12 +22,13 @@ #ifndef INCLUDED_GR_PA_2X2_PHASE_COMBINER_H #define INCLUDED_GR_PA_2X2_PHASE_COMBINER_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_pa_2x2_phase_combiner; typedef boost::shared_ptr<gr_pa_2x2_phase_combiner> gr_pa_2x2_phase_combiner_sptr; -gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner (); +GR_CORE_API gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner (); /*! * \brief pa_2x2 phase combiner @@ -40,7 +41,7 @@ gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner (); * * dx and dy are lambda/2. */ -class gr_pa_2x2_phase_combiner : public gr_sync_block +class GR_CORE_API gr_pa_2x2_phase_combiner : public gr_sync_block { static const int NM = 4; @@ -48,7 +49,7 @@ class gr_pa_2x2_phase_combiner : public gr_sync_block gr_complex d_phase[NM]; gr_pa_2x2_phase_combiner (); - friend gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner(); + friend GR_CORE_API gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner(); public: float theta() const { return d_theta; } diff --git a/gnuradio-core/src/lib/general/gr_packet_sink.h b/gnuradio-core/src/lib/general/gr_packet_sink.h index 73c5d6c52..89a95f3e3 100644 --- a/gnuradio-core/src/lib/general/gr_packet_sink.h +++ b/gnuradio-core/src/lib/general/gr_packet_sink.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_PACKET_SINK_H #define INCLUDED_GR_PACKET_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_msg_queue.h> class gr_packet_sink; typedef boost::shared_ptr<gr_packet_sink> gr_packet_sink_sptr; -gr_packet_sink_sptr +GR_CORE_API gr_packet_sink_sptr gr_make_packet_sink (const std::vector<unsigned char>& sync_vector, gr_msg_queue_sptr target_queue, int threshold = -1 // -1 -> use default @@ -38,9 +39,9 @@ gr_make_packet_sink (const std::vector<unsigned char>& sync_vector, * \brief process received bits looking for packet sync, header, and process bits into packet * \ingroup sink_blk */ -class gr_packet_sink : public gr_sync_block +class GR_CORE_API gr_packet_sink : public gr_sync_block { - friend gr_packet_sink_sptr + friend GR_CORE_API gr_packet_sink_sptr gr_make_packet_sink (const std::vector<unsigned char>& sync_vector, gr_msg_queue_sptr target_queue, int threshold); diff --git a/gnuradio-core/src/lib/general/gr_peak_detector2_fb.h b/gnuradio-core/src/lib/general/gr_peak_detector2_fb.h index 58a006246..5bb97fc5d 100644 --- a/gnuradio-core/src/lib/general/gr_peak_detector2_fb.h +++ b/gnuradio-core/src/lib/general/gr_peak_detector2_fb.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_gr_peak_detector2_FB_H #define INCLUDED_gr_peak_detector2_FB_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_peak_detector2_fb; typedef boost::shared_ptr<gr_peak_detector2_fb> gr_peak_detector2_fb_sptr; -gr_peak_detector2_fb_sptr gr_make_peak_detector2_fb (float threshold_factor_rise = 7, +GR_CORE_API gr_peak_detector2_fb_sptr gr_make_peak_detector2_fb (float threshold_factor_rise = 7, int look_ahead = 1000, float alpha = 0.001); @@ -49,9 +50,9 @@ gr_peak_detector2_fb_sptr gr_make_peak_detector2_fb (float threshold_factor_rise * \param alpha The gain value of a single-pole moving average filter */ -class gr_peak_detector2_fb : public gr_sync_block +class GR_CORE_API gr_peak_detector2_fb : public gr_sync_block { - friend gr_peak_detector2_fb_sptr + friend GR_CORE_API gr_peak_detector2_fb_sptr gr_make_peak_detector2_fb (float threshold_factor_rise, int look_ahead, float alpha); gr_peak_detector2_fb (float threshold_factor_rise, int look_ahead, float alpha); diff --git a/gnuradio-core/src/lib/general/gr_phase_modulator_fc.h b/gnuradio-core/src/lib/general/gr_phase_modulator_fc.h index 50157534b..dd6e300a8 100644 --- a/gnuradio-core/src/lib/general/gr_phase_modulator_fc.h +++ b/gnuradio-core/src/lib/general/gr_phase_modulator_fc.h @@ -23,24 +23,25 @@ #ifndef INCLUDED_GR_PHASE_MODULATOR_FC_H #define INCLUDED_GR_PHASE_MODULATOR_FC_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_phase_modulator_fc; typedef boost::shared_ptr<gr_phase_modulator_fc> gr_phase_modulator_fc_sptr; -gr_phase_modulator_fc_sptr gr_make_phase_modulator_fc (double sensitivity); +GR_CORE_API gr_phase_modulator_fc_sptr gr_make_phase_modulator_fc (double sensitivity); /*! * \brief Phase modulator block * \ingroup modulation_blk * output=complex(cos(in*sensitivity),sin(in*sensitivity)) */ -class gr_phase_modulator_fc : public gr_sync_block +class GR_CORE_API gr_phase_modulator_fc : public gr_sync_block { double d_sensitivity; double d_phase; - friend gr_phase_modulator_fc_sptr + friend GR_CORE_API gr_phase_modulator_fc_sptr gr_make_phase_modulator_fc (double sensitivity); gr_phase_modulator_fc (double sensitivity); diff --git a/gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h b/gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h index bcdf543a4..db74bb101 100644 --- a/gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h +++ b/gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_PLL_CARRIERTRACKING_CC_H #define INCLUDED_GR_PLL_CARRIERTRACKING_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_control_loop.h> class gr_pll_carriertracking_cc; typedef boost::shared_ptr<gr_pll_carriertracking_cc> gr_pll_carriertracking_cc_sptr; -gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw, +GR_CORE_API gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw, float max_freq, float min_freq); /*! @@ -48,9 +49,9 @@ gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw, * \sa gr_pll_freqdet_cf, gr_pll_carriertracking_cc */ -class gr_pll_carriertracking_cc : public gr_sync_block, public gri_control_loop +class GR_CORE_API gr_pll_carriertracking_cc : public gr_sync_block, public gri_control_loop { - friend gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw, + friend GR_CORE_API gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw, float max_freq, float min_freq); diff --git a/gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h b/gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h index 0da9fc5c7..336f3fd31 100644 --- a/gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h +++ b/gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_PLL_FREQDET_CF_H #define INCLUDED_GR_PLL_FREQDET_CF_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_control_loop.h> class gr_pll_freqdet_cf; typedef boost::shared_ptr<gr_pll_freqdet_cf> gr_pll_freqdet_cf_sptr; -gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw, +GR_CORE_API gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw, float max_freq, float min_freq); /*! @@ -47,9 +48,9 @@ gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw, * \sa gr_pll_refout_cc, gr_pll_carriertracking_cc */ -class gr_pll_freqdet_cf : public gr_sync_block, public gri_control_loop +class GR_CORE_API gr_pll_freqdet_cf : public gr_sync_block, public gri_control_loop { - friend gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw, + friend GR_CORE_API gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw, float max_freq, float min_freq); diff --git a/gnuradio-core/src/lib/general/gr_pll_refout_cc.h b/gnuradio-core/src/lib/general/gr_pll_refout_cc.h index d3e45882b..dcbeb1efa 100644 --- a/gnuradio-core/src/lib/general/gr_pll_refout_cc.h +++ b/gnuradio-core/src/lib/general/gr_pll_refout_cc.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_PLL_REFOUT_CC_H #define INCLUDED_GR_PLL_REFOUT_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gri_control_loop.h> class gr_pll_refout_cc; typedef boost::shared_ptr<gr_pll_refout_cc> gr_pll_refout_cc_sptr; -gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw, +GR_CORE_API gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw, float max_freq, float min_freq); /*! * \brief Implements a PLL which locks to the input frequency and outputs a carrier @@ -46,9 +47,9 @@ gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw, * around pi/200 -- 2pi/100. * \sa gr_pll_freqdet_cf, gr_pll_carriertracking_cc */ -class gr_pll_refout_cc : public gr_sync_block, public gri_control_loop +class GR_CORE_API gr_pll_refout_cc : public gr_sync_block, public gri_control_loop { - friend gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw, + friend GR_CORE_API gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw, float max_freq, float min_freq); gr_pll_refout_cc (float loop_bw, float max_freq, float min_freq); diff --git a/gnuradio-core/src/lib/general/gr_pn_correlator_cc.h b/gnuradio-core/src/lib/general/gr_pn_correlator_cc.h index 73bb7aa8c..75e2d1c7b 100644 --- a/gnuradio-core/src/lib/general/gr_pn_correlator_cc.h +++ b/gnuradio-core/src/lib/general/gr_pn_correlator_cc.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_PN_CORRELATOR_CC_H #define INCLUDED_GR_PN_CORRELATOR_CC_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> #include <gri_glfsr.h> class gr_pn_correlator_cc; typedef boost::shared_ptr<gr_pn_correlator_cc> gr_pn_correlator_cc_sptr; -gr_pn_correlator_cc_sptr +GR_CORE_API gr_pn_correlator_cc_sptr gr_make_pn_correlator_cc(int degree, int mask=0, int seed=1); /*! * \brief PN code sequential search correlator @@ -39,9 +40,9 @@ gr_make_pn_correlator_cc(int degree, int mask=0, int seed=1); * reference PN code, one sample per PN code period */ -class gr_pn_correlator_cc : public gr_sync_decimator +class GR_CORE_API gr_pn_correlator_cc : public gr_sync_decimator { - friend gr_pn_correlator_cc_sptr gr_make_pn_correlator_cc(int degree, int mask, int seed); + friend GR_CORE_API gr_pn_correlator_cc_sptr gr_make_pn_correlator_cc(int degree, int mask, int seed); int d_len; float d_pn; diff --git a/gnuradio-core/src/lib/general/gr_prefs.h b/gnuradio-core/src/lib/general/gr_prefs.h index 4396d727c..8ceb5b465 100644 --- a/gnuradio-core/src/lib/general/gr_prefs.h +++ b/gnuradio-core/src/lib/general/gr_prefs.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_PREFS_H #define INCLUDED_GR_PREFS_H +#include <gr_core_api.h> #include <string> /*! @@ -32,7 +33,7 @@ * via the magic of SWIG directors. */ -class gr_prefs +class GR_CORE_API gr_prefs { public: static gr_prefs *singleton(); diff --git a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h index ee8872010..e857686a8 100644 --- a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h +++ b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_PROBE_AVG_MAG_SQRD_C_H #define INCLUDED_GR_PROBE_AVG_MAG_SQRD_C_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_single_pole_iir.h> class gr_probe_avg_mag_sqrd_c; typedef boost::shared_ptr<gr_probe_avg_mag_sqrd_c> gr_probe_avg_mag_sqrd_c_sptr; -gr_probe_avg_mag_sqrd_c_sptr +GR_CORE_API gr_probe_avg_mag_sqrd_c_sptr gr_make_probe_avg_mag_sqrd_c (double threshold_db, double alpha = 0.0001); /*! @@ -41,14 +42,14 @@ gr_make_probe_avg_mag_sqrd_c (double threshold_db, double alpha = 0.0001); * The level and indication as to whether the level exceeds threshold * can be retrieved with the level and unmuted accessors. */ -class gr_probe_avg_mag_sqrd_c : public gr_sync_block +class GR_CORE_API gr_probe_avg_mag_sqrd_c : public gr_sync_block { double d_threshold; gr_single_pole_iir<double,double,double> d_iir; bool d_unmuted; double d_level; - friend gr_probe_avg_mag_sqrd_c_sptr + friend GR_CORE_API gr_probe_avg_mag_sqrd_c_sptr gr_make_probe_avg_mag_sqrd_c (double threshold_db, double alpha); gr_probe_avg_mag_sqrd_c (double threshold_db, double alpha); diff --git a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h index 6c536ca5b..a85afcf3b 100644 --- a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h +++ b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_PROBE_AVG_MAG_SQRD_CF_H #define INCLUDED_GR_PROBE_AVG_MAG_SQRD_CF_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_single_pole_iir.h> class gr_probe_avg_mag_sqrd_cf; typedef boost::shared_ptr<gr_probe_avg_mag_sqrd_cf> gr_probe_avg_mag_sqrd_cf_sptr; -gr_probe_avg_mag_sqrd_cf_sptr +GR_CORE_API gr_probe_avg_mag_sqrd_cf_sptr gr_make_probe_avg_mag_sqrd_cf (double threshold_db, double alpha = 0.0001); /*! @@ -43,14 +44,14 @@ gr_make_probe_avg_mag_sqrd_cf (double threshold_db, double alpha = 0.0001); * can be retrieved with the level and unmuted accessors. * */ -class gr_probe_avg_mag_sqrd_cf : public gr_sync_block +class GR_CORE_API gr_probe_avg_mag_sqrd_cf : public gr_sync_block { double d_threshold; gr_single_pole_iir<double,double,double> d_iir; bool d_unmuted; double d_level; - friend gr_probe_avg_mag_sqrd_cf_sptr + friend GR_CORE_API gr_probe_avg_mag_sqrd_cf_sptr gr_make_probe_avg_mag_sqrd_cf (double threshold_db, double alpha); gr_probe_avg_mag_sqrd_cf (double threshold_db, double alpha); diff --git a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h index b31e54f6b..4181ccf46 100644 --- a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h +++ b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_PROBE_AVG_MAG_SQRD_F_H #define INCLUDED_GR_PROBE_AVG_MAG_SQRD_F_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_single_pole_iir.h> class gr_probe_avg_mag_sqrd_f; typedef boost::shared_ptr<gr_probe_avg_mag_sqrd_f> gr_probe_avg_mag_sqrd_f_sptr; -gr_probe_avg_mag_sqrd_f_sptr +GR_CORE_API gr_probe_avg_mag_sqrd_f_sptr gr_make_probe_avg_mag_sqrd_f (double threshold_db, double alpha = 0.0001); /*! @@ -41,14 +42,14 @@ gr_make_probe_avg_mag_sqrd_f (double threshold_db, double alpha = 0.0001); * The level and indication as to whether the level exceeds threshold * can be retrieved with the level and unmuted accessors. */ -class gr_probe_avg_mag_sqrd_f : public gr_sync_block +class GR_CORE_API gr_probe_avg_mag_sqrd_f : public gr_sync_block { double d_threshold; gr_single_pole_iir<double,double,double> d_iir; bool d_unmuted; double d_level; - friend gr_probe_avg_mag_sqrd_f_sptr + friend GR_CORE_API gr_probe_avg_mag_sqrd_f_sptr gr_make_probe_avg_mag_sqrd_f (double threshold_db, double alpha); gr_probe_avg_mag_sqrd_f (double threshold_db, double alpha); diff --git a/gnuradio-core/src/lib/general/gr_probe_density_b.h b/gnuradio-core/src/lib/general/gr_probe_density_b.h index 92b98d193..0af30c665 100644 --- a/gnuradio-core/src/lib/general/gr_probe_density_b.h +++ b/gnuradio-core/src/lib/general/gr_probe_density_b.h @@ -20,13 +20,14 @@ #ifndef INCLUDED_GR_PROBE_DENSITY_B_H #define INCLUDED_GR_PROBE_DENSITY_B_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_probe_density_b; typedef boost::shared_ptr<gr_probe_density_b> gr_probe_density_b_sptr; -gr_probe_density_b_sptr gr_make_probe_density_b(double alpha); +GR_CORE_API gr_probe_density_b_sptr gr_make_probe_density_b(double alpha); /*! * This block maintains a running average of the input stream and @@ -40,10 +41,10 @@ gr_probe_density_b_sptr gr_make_probe_density_b(double alpha); * */ -class gr_probe_density_b : public gr_sync_block +class GR_CORE_API gr_probe_density_b : public gr_sync_block { private: - friend gr_probe_density_b_sptr gr_make_probe_density_b(double alpha); + friend GR_CORE_API gr_probe_density_b_sptr gr_make_probe_density_b(double alpha); double d_alpha; double d_beta; diff --git a/gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h b/gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h index 279a4a5b8..870e46701 100644 --- a/gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h +++ b/gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h @@ -22,12 +22,13 @@ #ifndef INCLUDED_GR_PROBE_MPSK_SNR_C_H #define INCLUDED_GR_PROBE_MPSK_SNR_C_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_probe_mpsk_snr_c; typedef boost::shared_ptr<gr_probe_mpsk_snr_c> gr_probe_mpsk_snr_c_sptr; -gr_probe_mpsk_snr_c_sptr +GR_CORE_API gr_probe_mpsk_snr_c_sptr gr_make_probe_mpsk_snr_c(double alpha = 0.0001); /*! @@ -46,7 +47,7 @@ gr_make_probe_mpsk_snr_c(double alpha = 0.0001); * This SNR estimator is inaccurate below about 7dB SNR. * */ -class gr_probe_mpsk_snr_c : public gr_sync_block +class GR_CORE_API gr_probe_mpsk_snr_c : public gr_sync_block { double d_alpha; double d_beta; @@ -54,7 +55,7 @@ class gr_probe_mpsk_snr_c : public gr_sync_block double d_noise_variance; // Factory function returning shared pointer of this class - friend gr_probe_mpsk_snr_c_sptr + friend GR_CORE_API gr_probe_mpsk_snr_c_sptr gr_make_probe_mpsk_snr_c(double alpha); // Private constructor diff --git a/gnuradio-core/src/lib/general/gr_probe_signal_f.h b/gnuradio-core/src/lib/general/gr_probe_signal_f.h index 9605bb685..b99c76976 100644 --- a/gnuradio-core/src/lib/general/gr_probe_signal_f.h +++ b/gnuradio-core/src/lib/general/gr_probe_signal_f.h @@ -22,23 +22,24 @@ #ifndef INCLUDED_GR_PROBE_SIGNAL_F_H #define INCLUDED_GR_PROBE_SIGNAL_F_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_probe_signal_f; typedef boost::shared_ptr<gr_probe_signal_f> gr_probe_signal_f_sptr; -gr_probe_signal_f_sptr +GR_CORE_API gr_probe_signal_f_sptr gr_make_probe_signal_f (); /*! * \brief Sink that allows a sample to be grabbed from Python. * \ingroup sink_blk */ -class gr_probe_signal_f : public gr_sync_block +class GR_CORE_API gr_probe_signal_f : public gr_sync_block { float d_level; - friend gr_probe_signal_f_sptr + friend GR_CORE_API gr_probe_signal_f_sptr gr_make_probe_signal_f(); gr_probe_signal_f(); diff --git a/gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h b/gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h index 9c519f383..2a008d92d 100644 --- a/gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h +++ b/gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_PWR_SQUELCH_CC_H #define INCLUDED_GR_PWR_SQUELCH_CC_H +#include <gr_core_api.h> #include <cmath> #include <gr_squelch_base_cc.h> #include <gr_single_pole_iir.h> @@ -30,21 +31,21 @@ class gr_pwr_squelch_cc; typedef boost::shared_ptr<gr_pwr_squelch_cc> gr_pwr_squelch_cc_sptr; -gr_pwr_squelch_cc_sptr +GR_CORE_API gr_pwr_squelch_cc_sptr gr_make_pwr_squelch_cc(double db, double alpha = 0.0001, int ramp=0, bool gate=false); /*! * \brief gate or zero output when input power below threshold * \ingroup level_blk */ -class gr_pwr_squelch_cc : public gr_squelch_base_cc +class GR_CORE_API gr_pwr_squelch_cc : public gr_squelch_base_cc { private: double d_threshold; double d_pwr; gr_single_pole_iir<double,double,double> d_iir; - friend gr_pwr_squelch_cc_sptr gr_make_pwr_squelch_cc(double db, double alpha, int ramp, bool gate); + friend GR_CORE_API gr_pwr_squelch_cc_sptr gr_make_pwr_squelch_cc(double db, double alpha, int ramp, bool gate); gr_pwr_squelch_cc(double db, double alpha, int ramp, bool gate); protected: diff --git a/gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h b/gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h index 6952dbce2..27a7306b3 100644 --- a/gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h +++ b/gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_PWR_SQUELCH_FF_H #define INCLUDED_GR_PWR_SQUELCH_FF_H +#include <gr_core_api.h> #include <cmath> #include <gr_squelch_base_ff.h> #include <gr_single_pole_iir.h> @@ -30,21 +31,21 @@ class gr_pwr_squelch_ff; typedef boost::shared_ptr<gr_pwr_squelch_ff> gr_pwr_squelch_ff_sptr; -gr_pwr_squelch_ff_sptr +GR_CORE_API gr_pwr_squelch_ff_sptr gr_make_pwr_squelch_ff(double db, double alpha = 0.0001, int ramp=0, bool gate=false); /*! * \brief gate or zero output when input power below threshold * \ingroup level_blk */ -class gr_pwr_squelch_ff : public gr_squelch_base_ff +class GR_CORE_API gr_pwr_squelch_ff : public gr_squelch_base_ff { private: double d_threshold; double d_pwr; gr_single_pole_iir<double,double,double> d_iir; - friend gr_pwr_squelch_ff_sptr gr_make_pwr_squelch_ff(double db, double alpha, int ramp, bool gate); + friend GR_CORE_API gr_pwr_squelch_ff_sptr gr_make_pwr_squelch_ff(double db, double alpha, int ramp, bool gate); gr_pwr_squelch_ff(double db, double alpha, int ramp, bool gate); protected: diff --git a/gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h b/gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h index df6de93d5..755f2839a 100644 --- a/gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h +++ b/gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h @@ -23,11 +23,12 @@ #ifndef INCLUDED_GR_QUADRATURE_DEMOD_CF_H #define INCLUDED_GR_QUADRATURE_DEMOD_CF_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_quadrature_demod_cf; typedef boost::shared_ptr<gr_quadrature_demod_cf> gr_quadrature_demod_cf_sptr; -gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain); +GR_CORE_API gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain); /*! * \brief quadrature demodulator: complex in, float out @@ -36,9 +37,9 @@ gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain); * This can be used to demod FM, FSK, GMSK, etc. * The input is complex baseband. */ -class gr_quadrature_demod_cf : public gr_sync_block +class GR_CORE_API gr_quadrature_demod_cf : public gr_sync_block { - friend gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain); + friend GR_CORE_API gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain); gr_quadrature_demod_cf (float gain); float d_gain; diff --git a/gnuradio-core/src/lib/general/gr_rail_ff.h b/gnuradio-core/src/lib/general/gr_rail_ff.h index d9e19a964..225bdf36e 100644 --- a/gnuradio-core/src/lib/general/gr_rail_ff.h +++ b/gnuradio-core/src/lib/general/gr_rail_ff.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_RAIL_FF_H_ # define INCLUDED_GR_RAIL_FF_H_ +#include <gr_core_api.h> #include <gr_sync_block.h> /*! @@ -33,11 +34,11 @@ class gr_rail_ff; typedef boost::shared_ptr<gr_rail_ff> gr_rail_ff_sptr; -gr_rail_ff_sptr gr_make_rail_ff(float lo, float hi); +GR_CORE_API gr_rail_ff_sptr gr_make_rail_ff(float lo, float hi); -class gr_rail_ff : public gr_sync_block +class GR_CORE_API gr_rail_ff : public gr_sync_block { - friend gr_rail_ff_sptr gr_make_rail_ff (float lo, float hi); + friend GR_CORE_API gr_rail_ff_sptr gr_make_rail_ff (float lo, float hi); float d_lo, d_hi; // the constant gr_rail_ff(float lo, float hi); diff --git a/gnuradio-core/src/lib/general/gr_random.h b/gnuradio-core/src/lib/general/gr_random.h index e5002fd33..13dbbfb04 100644 --- a/gnuradio-core/src/lib/general/gr_random.h +++ b/gnuradio-core/src/lib/general/gr_random.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_RANDOM_H #define INCLUDED_GR_RANDOM_H +#include <gr_core_api.h> #include <gr_complex.h> /*! * \brief pseudo random number generator * \ingroup math_blk */ -class gr_random { +class GR_CORE_API gr_random { protected: static const int NTAB = 32; long d_seed; diff --git a/gnuradio-core/src/lib/general/gr_regenerate_bb.h b/gnuradio-core/src/lib/general/gr_regenerate_bb.h index db511b228..67cfedac7 100644 --- a/gnuradio-core/src/lib/general/gr_regenerate_bb.h +++ b/gnuradio-core/src/lib/general/gr_regenerate_bb.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_REGENERATE_BB_H #define INCLUDED_GR_REGENERATE_BB_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_regenerate_bb; typedef boost::shared_ptr<gr_regenerate_bb> gr_regenerate_bb_sptr; -gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen=500); +GR_CORE_API gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen=500); /*! * \brief Detect the peak of a signal and repeat every period samples @@ -40,7 +41,7 @@ gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen= * * Note that if max_regen=(-1)/ULONG_MAX then the regeneration will run forever. */ -class gr_regenerate_bb : public gr_sync_block +class GR_CORE_API gr_regenerate_bb : public gr_sync_block { /*! * \brief Make a regenerate block @@ -48,7 +49,7 @@ class gr_regenerate_bb : public gr_sync_block * \param max_regen The maximum number of regenerations to perform; if set to * ULONG_MAX, it will regenerate continuously. */ - friend gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen); + friend GR_CORE_API gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen); gr_regenerate_bb (int period, unsigned int max_regen); diff --git a/gnuradio-core/src/lib/general/gr_remez.h b/gnuradio-core/src/lib/general/gr_remez.h index 85e1516a5..f7b8a72a3 100644 --- a/gnuradio-core/src/lib/general/gr_remez.h +++ b/gnuradio-core/src/lib/general/gr_remez.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_REMEZ_H #define INCLUDED_GR_REMEZ_H +#include <gr_core_api.h> #include <gr_types.h> #include <string> #include <stdexcept> @@ -51,7 +52,7 @@ * \throws std::runtime_error if args are invalid or calculation fails to converge. */ -std::vector<double> +GR_CORE_API std::vector<double> gr_remez (int order, const std::vector<double> &bands, const std::vector<double> &l, diff --git a/gnuradio-core/src/lib/general/gr_repeat.h b/gnuradio-core/src/lib/general/gr_repeat.h index f323fc375..b90f2f51d 100644 --- a/gnuradio-core/src/lib/general/gr_repeat.h +++ b/gnuradio-core/src/lib/general/gr_repeat.h @@ -22,23 +22,24 @@ #ifndef INCLUDED_GR_REPEAT_H #define INCLUDED_GR_REPEAT_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_repeat; typedef boost::shared_ptr<gr_repeat> gr_repeat_sptr; -gr_repeat_sptr gr_make_repeat(size_t itemsize, int interp); +GR_CORE_API gr_repeat_sptr gr_make_repeat(size_t itemsize, int interp); /*! * \brief Repeat a sample 'interp' times in output stream * \ingroup misc_blk */ -class gr_repeat : public gr_sync_interpolator +class GR_CORE_API gr_repeat : public gr_sync_interpolator { private: - friend gr_repeat_sptr gr_make_repeat(size_t itemsize, int interp); + friend GR_CORE_API gr_repeat_sptr gr_make_repeat(size_t itemsize, int interp); gr_repeat(size_t itemsize, int interp); diff --git a/gnuradio-core/src/lib/general/gr_reverse.h b/gnuradio-core/src/lib/general/gr_reverse.h index d79d34e91..43d84fda7 100644 --- a/gnuradio-core/src/lib/general/gr_reverse.h +++ b/gnuradio-core/src/lib/general/gr_reverse.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_REVERSE_H #define INCLUDED_GR_REVERSE_H +#include <gr_core_api.h> #include <vector> #include <gr_complex.h> diff --git a/gnuradio-core/src/lib/general/gr_rms_cf.h b/gnuradio-core/src/lib/general/gr_rms_cf.h index 86c4bdbac..f1bd9802c 100644 --- a/gnuradio-core/src/lib/general/gr_rms_cf.h +++ b/gnuradio-core/src/lib/general/gr_rms_cf.h @@ -22,25 +22,26 @@ #ifndef INCLUDED_GR_RMS_CF_H #define INCLUDED_GR_RMS_CF_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_single_pole_iir.h> class gr_rms_cf; typedef boost::shared_ptr<gr_rms_cf> gr_rms_cf_sptr; -gr_rms_cf_sptr +GR_CORE_API gr_rms_cf_sptr gr_make_rms_cf (double alpha = 0.0001); /*! * \brief RMS average power * \ingroup math_blk */ -class gr_rms_cf : public gr_sync_block +class GR_CORE_API gr_rms_cf : public gr_sync_block { gr_single_pole_iir<double,double,double> d_iir; bool d_unmuted; - friend gr_rms_cf_sptr + friend GR_CORE_API gr_rms_cf_sptr gr_make_rms_cf (double alpha); gr_rms_cf (double alpha); diff --git a/gnuradio-core/src/lib/general/gr_rms_ff.h b/gnuradio-core/src/lib/general/gr_rms_ff.h index ed1635eb1..0bbd53b70 100644 --- a/gnuradio-core/src/lib/general/gr_rms_ff.h +++ b/gnuradio-core/src/lib/general/gr_rms_ff.h @@ -22,25 +22,26 @@ #ifndef INCLUDED_GR_RMS_FF_H #define INCLUDED_GR_RMS_FF_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_single_pole_iir.h> class gr_rms_ff; typedef boost::shared_ptr<gr_rms_ff> gr_rms_ff_sptr; -gr_rms_ff_sptr +GR_CORE_API gr_rms_ff_sptr gr_make_rms_ff (double alpha = 0.0001); /*! * \brief RMS average power * \ingroup math_blk */ -class gr_rms_ff : public gr_sync_block +class GR_CORE_API gr_rms_ff : public gr_sync_block { gr_single_pole_iir<double,double,double> d_iir; bool d_unmuted; - friend gr_rms_ff_sptr + friend GR_CORE_API gr_rms_ff_sptr gr_make_rms_ff (double alpha); gr_rms_ff (double alpha); diff --git a/gnuradio-core/src/lib/general/gr_scrambler_bb.h b/gnuradio-core/src/lib/general/gr_scrambler_bb.h index 7efe8b598..79905933d 100644 --- a/gnuradio-core/src/lib/general/gr_scrambler_bb.h +++ b/gnuradio-core/src/lib/general/gr_scrambler_bb.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_SCRAMBLER_BB_H #define INCLUDED_GR_SCRAMBLER_BB_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include "gri_lfsr.h" class gr_scrambler_bb; typedef boost::shared_ptr<gr_scrambler_bb> gr_scrambler_bb_sptr; -gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len); +GR_CORE_API gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len); /*! * Scramble an input stream using an LFSR. This block works on the LSB only @@ -42,9 +43,9 @@ gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len); * \ingroup coding_blk */ -class gr_scrambler_bb : public gr_sync_block +class GR_CORE_API gr_scrambler_bb : public gr_sync_block { - friend gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len); + friend GR_CORE_API gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len); gri_lfsr d_lfsr; diff --git a/gnuradio-core/src/lib/general/gr_short_to_float.h b/gnuradio-core/src/lib/general/gr_short_to_float.h index ccb19d9f2..b40c966ea 100644 --- a/gnuradio-core/src/lib/general/gr_short_to_float.h +++ b/gnuradio-core/src/lib/general/gr_short_to_float.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_SHORT_TO_FLOAT_H #define INCLUDED_GR_SHORT_TO_FLOAT_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_short_to_float; typedef boost::shared_ptr<gr_short_to_float> gr_short_to_float_sptr; -gr_short_to_float_sptr +GR_CORE_API gr_short_to_float_sptr gr_make_short_to_float (); /*! @@ -36,9 +37,9 @@ gr_make_short_to_float (); * \ingroup converter_blk */ -class gr_short_to_float : public gr_sync_block +class GR_CORE_API gr_short_to_float : public gr_sync_block { - friend gr_short_to_float_sptr gr_make_short_to_float (); + friend GR_CORE_API gr_short_to_float_sptr gr_make_short_to_float (); gr_short_to_float (); public: diff --git a/gnuradio-core/src/lib/general/gr_simple_correlator.cc b/gnuradio-core/src/lib/general/gr_simple_correlator.cc index 01c007122..bdfa73ef3 100644 --- a/gnuradio-core/src/lib/general/gr_simple_correlator.cc +++ b/gnuradio-core/src/lib/general/gr_simple_correlator.cc @@ -50,6 +50,7 @@ gr_simple_correlator::gr_simple_correlator (int payload_bytesize) d_state (ST_LOOKING), d_osi (0), d_bblen ((payload_bytesize + GRSF_PAYLOAD_OVERHEAD) * GRSF_BITS_PER_BYTE), d_bitbuf (new unsigned char [d_bblen]), + d_pktbuf (new unsigned char [d_bblen/GRSF_BITS_PER_BYTE]), d_bbi (0) { d_avbi = 0; @@ -71,6 +72,7 @@ gr_simple_correlator::~gr_simple_correlator () fclose(d_debug_fp); #endif delete [] d_bitbuf; + delete [] d_pktbuf; } @@ -184,10 +186,9 @@ gr_simple_correlator::general_work (int noutput_items, d_bbi++; if (d_bbi >= d_bblen){ // printf ("got whole packet\n"); - unsigned char pktbuf[d_bblen/GRSF_BITS_PER_BYTE]; - packit (pktbuf, d_bitbuf, d_bbi); - printf ("seqno %3d\n", pktbuf[0]); - memcpy (out, &pktbuf[GRSF_PAYLOAD_OVERHEAD], d_payload_bytesize); + packit (d_pktbuf, d_bitbuf, d_bbi); + printf ("seqno %3d\n", d_pktbuf[0]); + memcpy (out, &d_pktbuf[GRSF_PAYLOAD_OVERHEAD], d_payload_bytesize); enter_looking (); consume_each (n + 1); return d_payload_bytesize; diff --git a/gnuradio-core/src/lib/general/gr_simple_correlator.h b/gnuradio-core/src/lib/general/gr_simple_correlator.h index b21d38a04..4c5f060cd 100644 --- a/gnuradio-core/src/lib/general/gr_simple_correlator.h +++ b/gnuradio-core/src/lib/general/gr_simple_correlator.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SIMPLE_CORRELATOR_H #define INCLUDED_GR_SIMPLE_CORRELATOR_H +#include <gr_core_api.h> #include <gr_block.h> #include <assert.h> @@ -31,13 +32,13 @@ class gr_simple_correlator; typedef boost::shared_ptr<gr_simple_correlator> gr_simple_correlator_sptr; -gr_simple_correlator_sptr gr_make_simple_correlator (int payload_bytesize); +GR_CORE_API gr_simple_correlator_sptr gr_make_simple_correlator (int payload_bytesize); /*! * \brief inverse of gr_simple_framer (more or less) * \ingroup sync_blk */ -class gr_simple_correlator : public gr_block +class GR_CORE_API gr_simple_correlator : public gr_block { static const int OVERSAMPLE = 8; enum state_t { ST_LOOKING, ST_UNDER_THRESHOLD, ST_LOCKED }; @@ -50,6 +51,7 @@ class gr_simple_correlator : public gr_block unsigned long long int d_shift_reg[OVERSAMPLE]; int d_bblen; // length of bitbuf unsigned char *d_bitbuf; // demodulated bits + unsigned char *d_pktbuf; // temp packet buf int d_bbi; // bitbuf index static const int AVG_PERIOD = 512; // must be power of 2 (for freq offset correction) @@ -62,7 +64,7 @@ class gr_simple_correlator : public gr_block FILE *d_debug_fp; // binary log file #endif - friend gr_simple_correlator_sptr gr_make_simple_correlator (int payload_bytesize); + friend GR_CORE_API gr_simple_correlator_sptr gr_make_simple_correlator (int payload_bytesize); gr_simple_correlator (int payload_bytesize); diff --git a/gnuradio-core/src/lib/general/gr_simple_framer.h b/gnuradio-core/src/lib/general/gr_simple_framer.h index d930da33b..15f392e4a 100644 --- a/gnuradio-core/src/lib/general/gr_simple_framer.h +++ b/gnuradio-core/src/lib/general/gr_simple_framer.h @@ -23,25 +23,26 @@ #ifndef INCLUDED_GR_SIMPLE_FRAMER_H #define INCLUDED_GR_SIMPLE_FRAMER_H +#include <gr_core_api.h> #include <gr_block.h> class gr_simple_framer; typedef boost::shared_ptr<gr_simple_framer> gr_simple_framer_sptr; -gr_simple_framer_sptr gr_make_simple_framer (int payload_bytesize); +GR_CORE_API gr_simple_framer_sptr gr_make_simple_framer (int payload_bytesize); /*! * \brief add sync field, seq number and command field to payload * \ingroup sync_blk */ -class gr_simple_framer : public gr_block +class GR_CORE_API gr_simple_framer : public gr_block { int d_seqno; int d_payload_bytesize; int d_input_block_size; // bytes int d_output_block_size; // bytes - friend gr_simple_framer_sptr gr_make_simple_framer (int payload_bytesize); + friend GR_CORE_API gr_simple_framer_sptr gr_make_simple_framer (int payload_bytesize); gr_simple_framer (int payload_bytesize); public: diff --git a/gnuradio-core/src/lib/general/gr_simple_squelch_cc.h b/gnuradio-core/src/lib/general/gr_simple_squelch_cc.h index 30744f6fb..590b86de8 100644 --- a/gnuradio-core/src/lib/general/gr_simple_squelch_cc.h +++ b/gnuradio-core/src/lib/general/gr_simple_squelch_cc.h @@ -22,26 +22,27 @@ #ifndef INCLUDED_GR_SIMPLE_SQUELCH_CC_H #define INCLUDED_GR_SIMPLE_SQUELCH_CC_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_single_pole_iir.h> class gr_simple_squelch_cc; typedef boost::shared_ptr<gr_simple_squelch_cc> gr_simple_squelch_cc_sptr; -gr_simple_squelch_cc_sptr +GR_CORE_API gr_simple_squelch_cc_sptr gr_make_simple_squelch_cc (double threshold_db, double alpha = 0.0001); /*! * \brief simple squelch block based on average signal power and threshold in dB. * \ingroup level_blk */ -class gr_simple_squelch_cc : public gr_sync_block +class GR_CORE_API gr_simple_squelch_cc : public gr_sync_block { double d_threshold; gr_single_pole_iir<double,double,double> d_iir; bool d_unmuted; - friend gr_simple_squelch_cc_sptr + friend GR_CORE_API gr_simple_squelch_cc_sptr gr_make_simple_squelch_cc (double threshold_db, double alpha); gr_simple_squelch_cc (double threshold_db, double alpha); diff --git a/gnuradio-core/src/lib/general/gr_skiphead.h b/gnuradio-core/src/lib/general/gr_skiphead.h index 933c126e3..2beaaeab0 100644 --- a/gnuradio-core/src/lib/general/gr_skiphead.h +++ b/gnuradio-core/src/lib/general/gr_skiphead.h @@ -23,12 +23,16 @@ #ifndef INCLUDED_GR_SKIPHEAD_H #define INCLUDED_GR_SKIPHEAD_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <stddef.h> // size_t class gr_skiphead; typedef boost::shared_ptr<gr_skiphead> gr_skiphead_sptr; +GR_CORE_API gr_skiphead_sptr +gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip); + /*! * \brief skips the first N items, from then on copies items to the output @@ -37,9 +41,9 @@ typedef boost::shared_ptr<gr_skiphead> gr_skiphead_sptr; * Useful for building test cases and sources which have metadata or junk at the start */ -class gr_skiphead : public gr_block +class GR_CORE_API gr_skiphead : public gr_block { - friend gr_skiphead_sptr gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip); + friend GR_CORE_API gr_skiphead_sptr gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip); gr_skiphead (size_t itemsize, uint64_t nitems_to_skip); uint64_t d_nitems_to_skip; @@ -53,8 +57,4 @@ class gr_skiphead : public gr_block gr_vector_void_star &output_items); }; -gr_skiphead_sptr -gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip); - - #endif /* INCLUDED_GR_SKIPHEAD_H */ diff --git a/gnuradio-core/src/lib/general/gr_squash_ff.h b/gnuradio-core/src/lib/general/gr_squash_ff.h index ee3426cae..f7fea1648 100644 --- a/gnuradio-core/src/lib/general/gr_squash_ff.h +++ b/gnuradio-core/src/lib/general/gr_squash_ff.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SQUASH_FF_H_ # define INCLUDED_GR_SQUASH_FF_H_ +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gsl/gsl_errno.h> #include <gsl/gsl_interp.h> @@ -36,12 +37,12 @@ class gr_squash_ff; typedef boost::shared_ptr<gr_squash_ff> gr_squash_ff_sptr; -gr_squash_ff_sptr gr_make_squash_ff(const std::vector<float> &igrid, +GR_CORE_API gr_squash_ff_sptr gr_make_squash_ff(const std::vector<float> &igrid, const std::vector<float> &ogrid); -class gr_squash_ff : public gr_sync_block +class GR_CORE_API gr_squash_ff : public gr_sync_block { - friend gr_squash_ff_sptr gr_make_squash_ff(const std::vector<float> &igrid, + friend GR_CORE_API gr_squash_ff_sptr gr_make_squash_ff(const std::vector<float> &igrid, const std::vector<float> &ogrid); size_t d_inum; diff --git a/gnuradio-core/src/lib/general/gr_squelch_base_cc.h b/gnuradio-core/src/lib/general/gr_squelch_base_cc.h index 51e2e14e5..7c15e0121 100644 --- a/gnuradio-core/src/lib/general/gr_squelch_base_cc.h +++ b/gnuradio-core/src/lib/general/gr_squelch_base_cc.h @@ -23,9 +23,10 @@ #ifndef INCLUDED_GR_SQUELCH_BASE_CC_H #define INCLUDED_GR_SQUELCH_BASE_CC_H +#include <gr_core_api.h> #include <gr_block.h> -class gr_squelch_base_cc : public gr_block +class GR_CORE_API gr_squelch_base_cc : public gr_block { private: int d_ramp; diff --git a/gnuradio-core/src/lib/general/gr_squelch_base_ff.h b/gnuradio-core/src/lib/general/gr_squelch_base_ff.h index 2ca108c75..92a064e63 100644 --- a/gnuradio-core/src/lib/general/gr_squelch_base_ff.h +++ b/gnuradio-core/src/lib/general/gr_squelch_base_ff.h @@ -23,9 +23,10 @@ #ifndef INCLUDED_GR_SQUELCH_BASE_FF_H #define INCLUDED_GR_SQUELCH_BASE_FF_H +#include <gr_core_api.h> #include <gr_block.h> -class gr_squelch_base_ff : public gr_block +class GR_CORE_API gr_squelch_base_ff : public gr_block { private: int d_ramp; diff --git a/gnuradio-core/src/lib/general/gr_stream_mux.h b/gnuradio-core/src/lib/general/gr_stream_mux.h index 29829339e..68415ab1d 100644 --- a/gnuradio-core/src/lib/general/gr_stream_mux.h +++ b/gnuradio-core/src/lib/general/gr_stream_mux.h @@ -24,6 +24,7 @@ #define INCLUDED_GR_STREAM_MUX_H +#include <gr_core_api.h> #include <gr_block.h> #include <vector> @@ -45,7 +46,7 @@ typedef boost::shared_ptr<gr_stream_mux> gr_stream_mux_sptr; -gr_stream_mux_sptr +GR_CORE_API gr_stream_mux_sptr gr_make_stream_mux (size_t itemsize, const std::vector<int> &lengths); @@ -60,9 +61,9 @@ gr_make_stream_mux (size_t itemsize, const std::vector<int> &lengths); * [N0, N1, N2, ..., Nm, N0, N1, ...] */ -class gr_stream_mux : public gr_block +class GR_CORE_API gr_stream_mux : public gr_block { - friend gr_stream_mux_sptr + friend GR_CORE_API gr_stream_mux_sptr gr_make_stream_mux (size_t itemsize, const std::vector<int> &lengths); protected: diff --git a/gnuradio-core/src/lib/general/gr_stream_to_streams.h b/gnuradio-core/src/lib/general/gr_stream_to_streams.h index 2fdd39e4a..905d3c556 100644 --- a/gnuradio-core/src/lib/general/gr_stream_to_streams.h +++ b/gnuradio-core/src/lib/general/gr_stream_to_streams.h @@ -22,12 +22,13 @@ #ifndef INCLUDED_GR_STREAM_TO_STREAMS_H #define INCLUDED_GR_STREAM_TO_STREAMS_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_stream_to_streams; typedef boost::shared_ptr<gr_stream_to_streams> gr_stream_to_streams_sptr; -gr_stream_to_streams_sptr +GR_CORE_API gr_stream_to_streams_sptr gr_make_stream_to_streams (size_t item_size, size_t nstreams); @@ -38,9 +39,9 @@ gr_make_stream_to_streams (size_t item_size, size_t nstreams); * Converts a stream of N items into N streams of 1 item. * Repeat ad infinitum. */ -class gr_stream_to_streams : public gr_sync_decimator +class GR_CORE_API gr_stream_to_streams : public gr_sync_decimator { - friend gr_stream_to_streams_sptr + friend GR_CORE_API gr_stream_to_streams_sptr gr_make_stream_to_streams (size_t item_size, size_t nstreams); protected: diff --git a/gnuradio-core/src/lib/general/gr_stream_to_vector.h b/gnuradio-core/src/lib/general/gr_stream_to_vector.h index 2cb03f6a8..77272b96b 100644 --- a/gnuradio-core/src/lib/general/gr_stream_to_vector.h +++ b/gnuradio-core/src/lib/general/gr_stream_to_vector.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_STREAM_TO_VECTOR_H #define INCLUDED_GR_STREAM_TO_VECTOR_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_stream_to_vector; typedef boost::shared_ptr<gr_stream_to_vector> gr_stream_to_vector_sptr; -gr_stream_to_vector_sptr +GR_CORE_API gr_stream_to_vector_sptr gr_make_stream_to_vector (size_t item_size, size_t nitems_per_block); @@ -36,9 +37,9 @@ gr_make_stream_to_vector (size_t item_size, size_t nitems_per_block); * \brief convert a stream of items into a stream of blocks containing nitems_per_block * \ingroup slicedice_blk */ -class gr_stream_to_vector : public gr_sync_decimator +class GR_CORE_API gr_stream_to_vector : public gr_sync_decimator { - friend gr_stream_to_vector_sptr + friend GR_CORE_API gr_stream_to_vector_sptr gr_make_stream_to_vector (size_t item_size, size_t nitems_per_block); protected: diff --git a/gnuradio-core/src/lib/general/gr_streams_to_stream.h b/gnuradio-core/src/lib/general/gr_streams_to_stream.h index 044af6cd2..8207fed42 100644 --- a/gnuradio-core/src/lib/general/gr_streams_to_stream.h +++ b/gnuradio-core/src/lib/general/gr_streams_to_stream.h @@ -22,12 +22,13 @@ #ifndef INCLUDED_GR_STREAMS_TO_STREAM_H #define INCLUDED_GR_STREAMS_TO_STREAM_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_streams_to_stream; typedef boost::shared_ptr<gr_streams_to_stream> gr_streams_to_stream_sptr; -gr_streams_to_stream_sptr +GR_CORE_API gr_streams_to_stream_sptr gr_make_streams_to_stream (size_t item_size, size_t nstreams); @@ -38,9 +39,9 @@ gr_make_streams_to_stream (size_t item_size, size_t nstreams); * Convert N streams of 1 item into 1 stream of N items. * Repeat ad infinitum. */ -class gr_streams_to_stream : public gr_sync_interpolator +class GR_CORE_API gr_streams_to_stream : public gr_sync_interpolator { - friend gr_streams_to_stream_sptr + friend GR_CORE_API gr_streams_to_stream_sptr gr_make_streams_to_stream (size_t item_size, size_t nstreams); protected: diff --git a/gnuradio-core/src/lib/general/gr_streams_to_vector.h b/gnuradio-core/src/lib/general/gr_streams_to_vector.h index 1b2e3ebf7..6a05ac90a 100644 --- a/gnuradio-core/src/lib/general/gr_streams_to_vector.h +++ b/gnuradio-core/src/lib/general/gr_streams_to_vector.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_STREAMS_TO_VECTOR_H #define INCLUDED_GR_STREAMS_TO_VECTOR_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_streams_to_vector; typedef boost::shared_ptr<gr_streams_to_vector> gr_streams_to_vector_sptr; -gr_streams_to_vector_sptr +GR_CORE_API gr_streams_to_vector_sptr gr_make_streams_to_vector (size_t item_size, size_t nstreams); @@ -36,9 +37,9 @@ gr_make_streams_to_vector (size_t item_size, size_t nstreams); * \brief convert N streams of items to 1 stream of vector length N * \ingroup slicedice_blk */ -class gr_streams_to_vector : public gr_sync_block +class GR_CORE_API gr_streams_to_vector : public gr_sync_block { - friend gr_streams_to_vector_sptr + friend GR_CORE_API gr_streams_to_vector_sptr gr_make_streams_to_vector (size_t item_size, size_t nstreams); protected: diff --git a/gnuradio-core/src/lib/general/gr_stretch_ff.h b/gnuradio-core/src/lib/general/gr_stretch_ff.h index e75e1969f..578634dd8 100644 --- a/gnuradio-core/src/lib/general/gr_stretch_ff.h +++ b/gnuradio-core/src/lib/general/gr_stretch_ff.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_STRETCH_FF_H_ # define INCLUDED_GR_STRETCH_FF_H_ +#include <gr_core_api.h> #include <gr_sync_block.h> /*! @@ -36,11 +37,11 @@ class gr_stretch_ff; typedef boost::shared_ptr<gr_stretch_ff> gr_stretch_ff_sptr; -gr_stretch_ff_sptr gr_make_stretch_ff(float lo, size_t vlen); +GR_CORE_API gr_stretch_ff_sptr gr_make_stretch_ff(float lo, size_t vlen); -class gr_stretch_ff : public gr_sync_block +class GR_CORE_API gr_stretch_ff : public gr_sync_block { - friend gr_stretch_ff_sptr gr_make_stretch_ff(float lo, size_t vlen); + friend GR_CORE_API gr_stretch_ff_sptr gr_make_stretch_ff(float lo, size_t vlen); float d_lo; // the constant size_t d_vlen; diff --git a/gnuradio-core/src/lib/general/gr_test.h b/gnuradio-core/src/lib/general/gr_test.h index 5438ac701..78e39d518 100644 --- a/gnuradio-core/src/lib/general/gr_test.h +++ b/gnuradio-core/src/lib/general/gr_test.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_TEST_H #define INCLUDED_GR_TEST_H +#include <gr_core_api.h> #include <gr_block.h> #include <string> #include "gr_test_types.h" @@ -31,7 +32,7 @@ class gr_test; typedef boost::shared_ptr<gr_test> gr_test_sptr; // public constructor -gr_test_sptr gr_make_test (const std::string &name=std::string("gr_test"), +GR_CORE_API gr_test_sptr gr_make_test (const std::string &name=std::string("gr_test"), int min_inputs=1, int max_inputs=1, unsigned int sizeof_input_item=1, int min_outputs=1, int max_outputs=1, unsigned int sizeof_output_item=1, unsigned int history=1,unsigned int output_multiple=1,double relative_rate=1.0, @@ -50,7 +51,7 @@ gr_test_sptr gr_make_test (const std::string &name=std::string("gr_test"), * The runtime system should detect this and create large enough buffers * all through the signal chain. */ -class gr_test : public gr_block { +class GR_CORE_API gr_test : public gr_block { public: @@ -183,7 +184,7 @@ int general_work (int noutput_items, - friend gr_test_sptr gr_make_test (const std::string &name,int min_inputs, int max_inputs, unsigned int sizeof_input_item, + friend GR_CORE_API gr_test_sptr gr_make_test (const std::string &name,int min_inputs, int max_inputs, unsigned int sizeof_input_item, int min_outputs, int max_outputs, unsigned int sizeof_output_item, unsigned int history,unsigned int output_multiple,double relative_rate, bool fixed_rate,gr_consume_type_t cons_type, gr_produce_type_t prod_type); diff --git a/gnuradio-core/src/lib/general/gr_threshold_ff.h b/gnuradio-core/src/lib/general/gr_threshold_ff.h index 65b677a77..3bf3058cd 100644 --- a/gnuradio-core/src/lib/general/gr_threshold_ff.h +++ b/gnuradio-core/src/lib/general/gr_threshold_ff.h @@ -23,20 +23,21 @@ #ifndef INCLUDED_GR_THRESHOLD_FF_H #define INCLUDED_GR_THRESHOLD_FF_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_threshold_ff; typedef boost::shared_ptr<gr_threshold_ff> gr_threshold_ff_sptr; -gr_threshold_ff_sptr gr_make_threshold_ff (float lo, float hi, float initial_state=0); +GR_CORE_API gr_threshold_ff_sptr gr_make_threshold_ff (float lo, float hi, float initial_state=0); /*! * \brief Please fix my documentation * \ingroup misc_blk */ -class gr_threshold_ff : public gr_sync_block +class GR_CORE_API gr_threshold_ff : public gr_sync_block { - friend gr_threshold_ff_sptr gr_make_threshold_ff (float lo, float hi, float initial_state); + friend GR_CORE_API gr_threshold_ff_sptr gr_make_threshold_ff (float lo, float hi, float initial_state); float d_lo,d_hi; // the constant float d_last_state; diff --git a/gnuradio-core/src/lib/general/gr_throttle.h b/gnuradio-core/src/lib/general/gr_throttle.h index a82821f77..0b6ada995 100644 --- a/gnuradio-core/src/lib/general/gr_throttle.h +++ b/gnuradio-core/src/lib/general/gr_throttle.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_THROTTLE_H #define INCLUDED_GR_THROTTLE_H +#include <gr_core_api.h> #include <gr_sync_block.h> /*! @@ -35,7 +36,7 @@ * controlling the rate of samples. That should be controlled by a * source or sink tied to sample clock. E.g., a USRP or audio card. */ -class gr_throttle : virtual public gr_sync_block +class GR_CORE_API gr_throttle : virtual public gr_sync_block { public: typedef boost::shared_ptr<gr_throttle> sptr; @@ -44,6 +45,6 @@ public: virtual void set_sample_rate(double rate) = 0; }; -gr_throttle::sptr gr_make_throttle(size_t itemsize, double samples_per_sec); +GR_CORE_API gr_throttle::sptr gr_make_throttle(size_t itemsize, double samples_per_sec); #endif /* INCLUDED_GR_THROTTLE_H */ diff --git a/gnuradio-core/src/lib/general/gr_uchar_to_float.h b/gnuradio-core/src/lib/general/gr_uchar_to_float.h index 3b83c893f..8e8836c2c 100644 --- a/gnuradio-core/src/lib/general/gr_uchar_to_float.h +++ b/gnuradio-core/src/lib/general/gr_uchar_to_float.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_UCHAR_TO_FLOAT_H #define INCLUDED_GR_UCHAR_TO_FLOAT_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_uchar_to_float; typedef boost::shared_ptr<gr_uchar_to_float> gr_uchar_to_float_sptr; -gr_uchar_to_float_sptr +GR_CORE_API gr_uchar_to_float_sptr gr_make_uchar_to_float (); /*! @@ -36,9 +37,9 @@ gr_make_uchar_to_float (); * \ingroup converter_blk */ -class gr_uchar_to_float : public gr_sync_block +class GR_CORE_API gr_uchar_to_float : public gr_sync_block { - friend gr_uchar_to_float_sptr gr_make_uchar_to_float (); + friend GR_CORE_API gr_uchar_to_float_sptr gr_make_uchar_to_float (); gr_uchar_to_float (); public: diff --git a/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h b/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h index e2be2c59c..056c69dc1 100644 --- a/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h +++ b/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h @@ -23,11 +23,12 @@ #ifndef INCLUDED_GR_UNPACK_K_BITS_BB_H #define INCLUDED_GR_UNPACK_K_BITS_BB_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_unpack_k_bits_bb; typedef boost::shared_ptr<gr_unpack_k_bits_bb> gr_unpack_k_bits_bb_sptr; -gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (unsigned k); +GR_CORE_API gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (unsigned k); class gr_unpack_k_bits_bb; @@ -35,10 +36,10 @@ class gr_unpack_k_bits_bb; * \brief Converts a byte with k relevent bits to k output bytes with 1 bit in the LSB. * \ingroup converter_blk */ -class gr_unpack_k_bits_bb : public gr_sync_interpolator +class GR_CORE_API gr_unpack_k_bits_bb : public gr_sync_interpolator { private: - friend gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (unsigned k); + friend GR_CORE_API gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (unsigned k); gr_unpack_k_bits_bb (unsigned k); diff --git a/gnuradio-core/src/lib/general/gr_vco_f.h b/gnuradio-core/src/lib/general/gr_vco_f.h index 2bdf60899..b7524d581 100644 --- a/gnuradio-core/src/lib/general/gr_vco_f.h +++ b/gnuradio-core/src/lib/general/gr_vco_f.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_VCO_F_H #define INCLUDED_GR_VCO_F_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_fxpt_vco.h> @@ -37,7 +38,7 @@ class gr_vco_f; typedef boost::shared_ptr<gr_vco_f> gr_vco_f_sptr; -gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amplitude); +GR_CORE_API gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amplitude); /*! * \brief VCO - Voltage controlled oscillator @@ -45,9 +46,9 @@ gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amp * * input: float stream of control voltages; output: float oscillator output */ -class gr_vco_f : public gr_sync_block +class GR_CORE_API gr_vco_f : public gr_sync_block { - friend gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amplitude); + friend GR_CORE_API gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amplitude); /*! * \brief VCO - Voltage controlled oscillator diff --git a/gnuradio-core/src/lib/general/gr_vector_to_stream.h b/gnuradio-core/src/lib/general/gr_vector_to_stream.h index de6cc2a8b..d2fa8c7ab 100644 --- a/gnuradio-core/src/lib/general/gr_vector_to_stream.h +++ b/gnuradio-core/src/lib/general/gr_vector_to_stream.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_VECTOR_TO_STREAM_H #define INCLUDED_GR_VECTOR_TO_STREAM_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_vector_to_stream; typedef boost::shared_ptr<gr_vector_to_stream> gr_vector_to_stream_sptr; -gr_vector_to_stream_sptr +GR_CORE_API gr_vector_to_stream_sptr gr_make_vector_to_stream (size_t item_size, size_t nitems_per_block); @@ -36,9 +37,9 @@ gr_make_vector_to_stream (size_t item_size, size_t nitems_per_block); * \brief convert a stream of blocks of nitems_per_block items into a stream of items * \ingroup slicedice_blk */ -class gr_vector_to_stream : public gr_sync_interpolator +class GR_CORE_API gr_vector_to_stream : public gr_sync_interpolator { - friend gr_vector_to_stream_sptr + friend GR_CORE_API gr_vector_to_stream_sptr gr_make_vector_to_stream (size_t item_size, size_t nitems_per_block); protected: diff --git a/gnuradio-core/src/lib/general/gr_vector_to_streams.h b/gnuradio-core/src/lib/general/gr_vector_to_streams.h index d5ba7acf9..04ac941a1 100644 --- a/gnuradio-core/src/lib/general/gr_vector_to_streams.h +++ b/gnuradio-core/src/lib/general/gr_vector_to_streams.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_VECTOR_TO_STREAMS_H #define INCLUDED_GR_VECTOR_TO_STREAMS_H +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class gr_vector_to_streams; typedef boost::shared_ptr<gr_vector_to_streams> gr_vector_to_streams_sptr; -gr_vector_to_streams_sptr +GR_CORE_API gr_vector_to_streams_sptr gr_make_vector_to_streams (size_t item_size, size_t nstreams); @@ -36,9 +37,9 @@ gr_make_vector_to_streams (size_t item_size, size_t nstreams); * \brief Convert 1 stream of vectors of length N to N streams of items * \ingroup slicedice_blk */ -class gr_vector_to_streams : public gr_sync_block +class GR_CORE_API gr_vector_to_streams : public gr_sync_block { - friend gr_vector_to_streams_sptr + friend GR_CORE_API gr_vector_to_streams_sptr gr_make_vector_to_streams (size_t item_size, size_t nstreams); protected: diff --git a/gnuradio-core/src/lib/general/gr_wavelet_ff.h b/gnuradio-core/src/lib/general/gr_wavelet_ff.h index dcfb595e5..107a50fe2 100644 --- a/gnuradio-core/src/lib/general/gr_wavelet_ff.h +++ b/gnuradio-core/src/lib/general/gr_wavelet_ff.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_WAVELET_FF_H #define INCLUDED_GR_WAVELET_FF_H +#include <gr_core_api.h> #include <iostream> #include <gr_sync_block.h> @@ -31,7 +32,7 @@ class gr_wavelet_ff; typedef boost::shared_ptr<gr_wavelet_ff> gr_wavelet_ff_sptr; -gr_wavelet_ff_sptr +GR_CORE_API gr_wavelet_ff_sptr gr_make_wavelet_ff(int size = 1024, int order = 20, bool forward = true); @@ -41,7 +42,7 @@ gr_make_wavelet_ff(int size = 1024, * \ingroup wavelet_blk */ -class gr_wavelet_ff : public gr_sync_block +class GR_CORE_API gr_wavelet_ff : public gr_sync_block { int d_size; int d_order; @@ -50,7 +51,7 @@ class gr_wavelet_ff : public gr_sync_block gsl_wavelet_workspace *d_workspace; double *d_temp; - friend gr_wavelet_ff_sptr + friend GR_CORE_API gr_wavelet_ff_sptr gr_make_wavelet_ff(int size, int order, bool forward); diff --git a/gnuradio-core/src/lib/general/gr_wvps_ff.h b/gnuradio-core/src/lib/general/gr_wvps_ff.h index af122d0fc..7c8f26066 100644 --- a/gnuradio-core/src/lib/general/gr_wvps_ff.h +++ b/gnuradio-core/src/lib/general/gr_wvps_ff.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_WVPS_FF_H #define INCLUDED_GR_WVPS_FF_H +#include <gr_core_api.h> #include <gr_sync_decimator.h> class gr_wvps_ff; typedef boost::shared_ptr<gr_wvps_ff> gr_wvps_ff_sptr; -gr_wvps_ff_sptr +GR_CORE_API gr_wvps_ff_sptr gr_make_wvps_ff(int ilen); @@ -36,9 +37,9 @@ gr_make_wvps_ff(int ilen); * \brief computes the Wavelet Power Spectrum from a set of wavelet coefficients * \ingroup wavelet_blk */ -class gr_wvps_ff : public gr_sync_block +class GR_CORE_API gr_wvps_ff : public gr_sync_block { - friend gr_wvps_ff_sptr + friend GR_CORE_API gr_wvps_ff_sptr gr_make_wvps_ff(int ilen); int d_ilen; diff --git a/gnuradio-core/src/lib/general/gri_agc2_cc.h b/gnuradio-core/src/lib/general/gri_agc2_cc.h index 441d1e459..b0a027aad 100644 --- a/gnuradio-core/src/lib/general/gri_agc2_cc.h +++ b/gnuradio-core/src/lib/general/gri_agc2_cc.h @@ -23,6 +23,7 @@ #ifndef _GRI_AGC2_CC_H_ #define _GRI_AGC2_CC_H_ +#include <gr_core_api.h> #include <math.h> /*! @@ -30,7 +31,7 @@ * * For Power the absolute value of the complex number is used. */ -class gri_agc2_cc { +class GR_CORE_API gri_agc2_cc { public: gri_agc2_cc (float attack_rate = 1e-1, float decay_rate = 1e-2, float reference = 1.0, diff --git a/gnuradio-core/src/lib/general/gri_agc2_ff.h b/gnuradio-core/src/lib/general/gri_agc2_ff.h index a06dab78c..ee70c2537 100644 --- a/gnuradio-core/src/lib/general/gri_agc2_ff.h +++ b/gnuradio-core/src/lib/general/gri_agc2_ff.h @@ -23,6 +23,7 @@ #ifndef _GRI_AGC2_FF_H_ #define _GRI_AGC2_FF_H_ +#include <gr_core_api.h> #include <math.h> /*! @@ -31,7 +32,7 @@ * Power is approximated by absolute value */ -class gri_agc2_ff { +class GR_CORE_API gri_agc2_ff { public: gri_agc2_ff (float attack_rate = 1e-1, float decay_rate = 1e-2, float reference = 1.0, diff --git a/gnuradio-core/src/lib/general/gri_agc_cc.h b/gnuradio-core/src/lib/general/gri_agc_cc.h index bc31d9a3d..74dfdf1dc 100644 --- a/gnuradio-core/src/lib/general/gri_agc_cc.h +++ b/gnuradio-core/src/lib/general/gri_agc_cc.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GRI_AGC_CC_H #define INCLUDED_GRI_AGC_CC_H +#include <gr_core_api.h> #include <math.h> /*! @@ -31,7 +32,7 @@ * For Power the absolute value of the complex number is used. */ -class gri_agc_cc { +class GR_CORE_API gri_agc_cc { public: gri_agc_cc (float rate = 1e-4, float reference = 1.0, diff --git a/gnuradio-core/src/lib/general/gri_agc_ff.h b/gnuradio-core/src/lib/general/gri_agc_ff.h index de609a8d4..753bbe275 100644 --- a/gnuradio-core/src/lib/general/gri_agc_ff.h +++ b/gnuradio-core/src/lib/general/gri_agc_ff.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GRI_AGC_FF_H #define INCLUDED_GRI_AGC_FF_H +#include <gr_core_api.h> #include <math.h> /*! @@ -30,7 +31,7 @@ * * Power is approximated by absolute value */ -class gri_agc_ff { +class GR_CORE_API gri_agc_ff { public: gri_agc_ff (float rate = 1e-4, float reference = 1.0, diff --git a/gnuradio-core/src/lib/general/gri_char_to_float.h b/gnuradio-core/src/lib/general/gri_char_to_float.h index f4703bef7..890d482b5 100644 --- a/gnuradio-core/src/lib/general/gri_char_to_float.h +++ b/gnuradio-core/src/lib/general/gri_char_to_float.h @@ -23,10 +23,12 @@ #ifndef INCLUDED_GRI_CHAR_TO_FLOAT_H #define INCLUDED_GRI_CHAR_TO_FLOAT_H +#include <gr_core_api.h> + /* * convert array of chars to floats */ -void gri_char_to_float (const char *in, float *out, int nsamples); +GR_CORE_API void gri_char_to_float (const char *in, float *out, int nsamples); -#endif /* INCLUDED_GRI_CHAR_TO_FLOAT_H */ +#endif /* INCLUDED_GRI_CHAR_TO_FLOAT_H */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/general/gri_control_loop.cc b/gnuradio-core/src/lib/general/gri_control_loop.cc index affdeefc9..4c64bb922 100644 --- a/gnuradio-core/src/lib/general/gri_control_loop.cc +++ b/gnuradio-core/src/lib/general/gri_control_loop.cc @@ -20,6 +20,10 @@ * Boston, MA 02110-1301, USA. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <gri_control_loop.h> #include <gr_math.h> #include <stdexcept> diff --git a/gnuradio-core/src/lib/general/gri_control_loop.h b/gnuradio-core/src/lib/general/gri_control_loop.h index a85625bbd..3aeac58f7 100644 --- a/gnuradio-core/src/lib/general/gri_control_loop.h +++ b/gnuradio-core/src/lib/general/gri_control_loop.h @@ -23,7 +23,9 @@ #ifndef GRI_CONTROL_LOOP #define GRI_CONTROL_LOOP -class gri_control_loop +#include <gr_core_api.h> + +class GR_CORE_API gri_control_loop { protected: float d_phase, d_freq; diff --git a/gnuradio-core/src/lib/general/gri_debugger_hook.h b/gnuradio-core/src/lib/general/gri_debugger_hook.h index 60c90685e..cf227af8f 100644 --- a/gnuradio-core/src/lib/general/gri_debugger_hook.h +++ b/gnuradio-core/src/lib/general/gri_debugger_hook.h @@ -23,6 +23,8 @@ #ifndef INCLUDED_GRI_DEBUGGER_HOOK_H #define INCLUDED_GRI_DEBUGGER_HOOK_H -void gri_debugger_hook (); +#include <gr_core_api.h> -#endif /* INCLUDED_GRI_DEBUGGER_HOOK_H */ +GR_CORE_API void gri_debugger_hook (); + +#endif /* INCLUDED_GRI_DEBUGGER_HOOK_H */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/general/gri_fft.cc b/gnuradio-core/src/lib/general/gri_fft.cc index f20b15ca0..0df1af25d 100644 --- a/gnuradio-core/src/lib/general/gri_fft.cc +++ b/gnuradio-core/src/lib/general/gri_fft.cc @@ -23,6 +23,19 @@ #include <gri_fft.h> #include <gr_sys_paths.h> #include <fftw3.h> + +#ifdef _MSC_VER //http://www.fftw.org/install/windows.html#DLLwisdom +static void my_fftw_write_char(char c, void *f) { fputc(c, (FILE *) f); } +#define fftw_export_wisdom_to_file(f) fftw_export_wisdom(my_fftw_write_char, (void*) (f)) +#define fftwf_export_wisdom_to_file(f) fftwf_export_wisdom(my_fftw_write_char, (void*) (f)) +#define fftwl_export_wisdom_to_file(f) fftwl_export_wisdom(my_fftw_write_char, (void*) (f)) + +static int my_fftw_read_char(void *f) { return fgetc((FILE *) f); } +#define fftw_import_wisdom_from_file(f) fftw_import_wisdom(my_fftw_read_char, (void*) (f)) +#define fftwf_import_wisdom_from_file(f) fftwf_import_wisdom(my_fftw_read_char, (void*) (f)) +#define fftwl_import_wisdom_from_file(f) fftwl_import_wisdom(my_fftw_read_char, (void*) (f)) +#endif //_MSC_VER + #include <gr_complex.h> #include <stdlib.h> #include <string.h> diff --git a/gnuradio-core/src/lib/general/gri_fft.h b/gnuradio-core/src/lib/general/gri_fft.h index 9ffcc5a50..91a82fb55 100644 --- a/gnuradio-core/src/lib/general/gri_fft.h +++ b/gnuradio-core/src/lib/general/gri_fft.h @@ -26,6 +26,7 @@ * Wrappers for FFTW single precision 1d dft */ +#include <gr_core_api.h> #include <gr_complex.h> #include <boost/thread.hpp> @@ -33,7 +34,7 @@ * \brief Export reference to planner mutex for those apps that * want to use FFTW w/o using the gri_fftw* classes. */ -class gri_fft_planner { +class GR_CORE_API gri_fft_planner { public: typedef boost::mutex::scoped_lock scoped_lock; /*! @@ -46,7 +47,7 @@ public: * \brief FFT: complex in, complex out * \ingroup misc */ -class gri_fft_complex { +class GR_CORE_API gri_fft_complex { int d_fft_size; gr_complex *d_inbuf; gr_complex *d_outbuf; @@ -77,7 +78,7 @@ public: * \brief FFT: real in, complex out * \ingroup misc */ -class gri_fft_real_fwd { +class GR_CORE_API gri_fft_real_fwd { int d_fft_size; float *d_inbuf; gr_complex *d_outbuf; @@ -108,7 +109,7 @@ public: * \brief FFT: complex in, float out * \ingroup misc */ -class gri_fft_real_rev { +class GR_CORE_API gri_fft_real_rev { int d_fft_size; gr_complex *d_inbuf; float *d_outbuf; diff --git a/gnuradio-core/src/lib/general/gri_float_to_char.h b/gnuradio-core/src/lib/general/gri_float_to_char.h index 95cc8ea8d..184592a69 100644 --- a/gnuradio-core/src/lib/general/gri_float_to_char.h +++ b/gnuradio-core/src/lib/general/gri_float_to_char.h @@ -23,10 +23,11 @@ #ifndef INCLUDED_GRI_FLOAT_TO_CHAR_H #define INCLUDED_GRI_FLOAT_TO_CHAR_H +#include <gr_core_api.h> + /*! * convert array of floats to chars with rounding and saturation. */ -void gri_float_to_char (const float *in, char *out, int nsamples); +GR_CORE_API void gri_float_to_char (const float *in, char *out, int nsamples); #endif /* INCLUDED_GRI_FLOAT_TO_CHAR_H */ - diff --git a/gnuradio-core/src/lib/general/gri_float_to_short.h b/gnuradio-core/src/lib/general/gri_float_to_short.h index e36e25de6..6d814b2b3 100644 --- a/gnuradio-core/src/lib/general/gri_float_to_short.h +++ b/gnuradio-core/src/lib/general/gri_float_to_short.h @@ -23,10 +23,11 @@ #ifndef INCLUDED_GRI_FLOAT_TO_SHORT_H #define INCLUDED_GRI_FLOAT_TO_SHORT_H +#include <gr_core_api.h> + /*! * convert array of floats to shorts with rounding and saturation. */ -void gri_float_to_short (const float *in, short *out, int nsamples); +GR_CORE_API void gri_float_to_short (const float *in, short *out, int nsamples); #endif /* INCLUDED_GRI_FLOAT_TO_SHORT_H */ - diff --git a/gnuradio-core/src/lib/general/gri_float_to_uchar.h b/gnuradio-core/src/lib/general/gri_float_to_uchar.h index e413e725f..ff549333e 100644 --- a/gnuradio-core/src/lib/general/gri_float_to_uchar.h +++ b/gnuradio-core/src/lib/general/gri_float_to_uchar.h @@ -23,10 +23,11 @@ #ifndef INCLUDED_GRI_FLOAT_TO_UCHAR_H #define INCLUDED_GRI_FLOAT_TO_UCHAR_H +#include <gr_core_api.h> + /*! * convert array of floats to unsigned chars with rounding and saturation. */ -void gri_float_to_uchar (const float *in, unsigned char *out, int nsamples); +GR_CORE_API void gri_float_to_uchar (const float *in, unsigned char *out, int nsamples); #endif /* INCLUDED_GRI_FLOAT_TO_UCHAR_H */ - diff --git a/gnuradio-core/src/lib/general/gri_glfsr.h b/gnuradio-core/src/lib/general/gri_glfsr.h index 7dd5f8660..e6d28cf45 100644 --- a/gnuradio-core/src/lib/general/gri_glfsr.h +++ b/gnuradio-core/src/lib/general/gri_glfsr.h @@ -23,6 +23,8 @@ #ifndef INCLUDED_GRI_GLFSR_H #define INCLUDED_GRI_GLFSR_H +#include <gr_core_api.h> + /*! * \brief Galois Linear Feedback Shift Register using specified polynomial mask * \ingroup misc @@ -30,7 +32,7 @@ * Generates a maximal length pseudo-random sequence of length 2^degree-1 */ -class gri_glfsr +class GR_CORE_API gri_glfsr { private: int d_shift_register; @@ -52,4 +54,4 @@ class gri_glfsr int mask() const { return d_mask; } }; -#endif /* INCLUDED_GRI_GLFSR_H */ +#endif /* INCLUDED_GRI_GLFSR_H */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h b/gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h index 09d915f7a..107e2f778 100644 --- a/gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h +++ b/gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GRI_INTERLEAVED_SHORT_TO_COMPLEX_H #define INCLUDED_GRI_INTERLEAVED_SHORT_TO_COMPLEX_H +#include <gr_core_api.h> #include <gr_complex.h> /* @@ -30,7 +31,7 @@ * the shorts contains real, imaginary, real, imaginary... * nsamples is the number of shorts; it must be even. */ -void gri_interleaved_short_to_complex (const short *in, gr_complex *out, int nsamples); +GR_CORE_API void gri_interleaved_short_to_complex (const short *in, gr_complex *out, int nsamples); #endif /* INCLUDED_GRI_INTERLEAVED_SHORT_TO_COMPLEX_H */ diff --git a/gnuradio-core/src/lib/general/gri_lfsr.h b/gnuradio-core/src/lib/general/gri_lfsr.h index f691e36ec..dc9358572 100644 --- a/gnuradio-core/src/lib/general/gri_lfsr.h +++ b/gnuradio-core/src/lib/general/gri_lfsr.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GRI_LFSR_H #define INCLUDED_GRI_LFSR_H +#include <gr_core_api.h> #include <stdexcept> #include <stdint.h> @@ -81,7 +82,7 @@ * */ -class gri_lfsr +class GR_CORE_API gri_lfsr { private: uint32_t d_shift_register; diff --git a/gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h b/gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h index 798f2faad..7405ffbaa 100644 --- a/gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h +++ b/gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h @@ -23,6 +23,8 @@ #ifndef INCLUDED_GRI_LFSR_15_1_0_H #define INCLUDED_GRI_LFSR_15_1_0_H +#include <gr_core_api.h> + /*! * \brief Linear Feedback Shift Register using primitive polynomial x^15 + x + 1 * \ingroup misc @@ -30,7 +32,7 @@ * Generates a maximal length pseudo-random sequence of length 2^15 - 1 bits. */ -class gri_lfsr_15_1_0 { +class GR_CORE_API gri_lfsr_15_1_0 { unsigned long d_sr; // shift register public: @@ -55,4 +57,4 @@ class gri_lfsr_15_1_0 { } }; -#endif /* INCLUDED_GRI_LFSR_15_1_0_H */ +#endif /* INCLUDED_GRI_LFSR_15_1_0_H */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/general/gri_lfsr_32k.h b/gnuradio-core/src/lib/general/gri_lfsr_32k.h index 33e7ae3a1..5c0396b50 100644 --- a/gnuradio-core/src/lib/general/gri_lfsr_32k.h +++ b/gnuradio-core/src/lib/general/gri_lfsr_32k.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GRI_LFSR_32k_H #define INCLUDED_GRI_LFSR_32k_H +#include <gr_core_api.h> #include <gri_lfsr_15_1_0.h> /*! @@ -33,7 +34,7 @@ * of the sequence. */ -class gri_lfsr_32k { +class GR_CORE_API gri_lfsr_32k { gri_lfsr_15_1_0 d_lfsr; unsigned int d_count; diff --git a/gnuradio-core/src/lib/general/gri_short_to_float.h b/gnuradio-core/src/lib/general/gri_short_to_float.h index ce4193062..51767efab 100644 --- a/gnuradio-core/src/lib/general/gri_short_to_float.h +++ b/gnuradio-core/src/lib/general/gri_short_to_float.h @@ -23,10 +23,12 @@ #ifndef INCLUDED_GRI_SHORT_TO_FLOAT_H #define INCLUDED_GRI_SHORT_TO_FLOAT_H +#include <gr_core_api.h> + /* * convert array of shorts to floats */ -void gri_short_to_float (const short *in, float *out, int nsamples); +GR_CORE_API void gri_short_to_float (const short *in, float *out, int nsamples); -#endif /* INCLUDED_GRI_SHORT_TO_FLOAT_H */ +#endif /* INCLUDED_GRI_SHORT_TO_FLOAT_H */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/general/gri_uchar_to_float.h b/gnuradio-core/src/lib/general/gri_uchar_to_float.h index 7a9f11ba6..9f342989d 100644 --- a/gnuradio-core/src/lib/general/gri_uchar_to_float.h +++ b/gnuradio-core/src/lib/general/gri_uchar_to_float.h @@ -23,10 +23,12 @@ #ifndef INCLUDED_GRI_UCHAR_TO_FLOAT_H #define INCLUDED_GRI_UCHAR_TO_FLOAT_H +#include <gr_core_api.h> + /* * convert array of unsigned chars to floats */ -void gri_uchar_to_float (const unsigned char *in, float *out, int nsamples); +GR_CORE_API void gri_uchar_to_float (const unsigned char *in, float *out, int nsamples); -#endif /* INCLUDED_GRI_UCHAR_TO_FLOAT_H */ +#endif /* INCLUDED_GRI_UCHAR_TO_FLOAT_H */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/general/malloc16.c b/gnuradio-core/src/lib/general/malloc16.c index 331751499..2cc6135e7 100644 --- a/gnuradio-core/src/lib/general/malloc16.c +++ b/gnuradio-core/src/lib/general/malloc16.c @@ -7,7 +7,6 @@ #include "malloc16.h" #include <string.h> -#include <strings.h> void *malloc16Align(int size){ void *p; diff --git a/gnuradio-core/src/lib/general/malloc16.h b/gnuradio-core/src/lib/general/malloc16.h index fc97f267d..6b1a3fb08 100644 --- a/gnuradio-core/src/lib/general/malloc16.h +++ b/gnuradio-core/src/lib/general/malloc16.h @@ -20,15 +20,17 @@ * Boston, MA 02110-1301, USA. */ +#include <gr_core_api.h> + #ifdef __cplusplus extern "C" { #endif #include <stdlib.h> -void *malloc16Align(int size); -void *calloc16Align(size_t nmemb,size_t size); -void free16Align(void *p); +GR_CORE_API void *malloc16Align(int size); +GR_CORE_API void *calloc16Align(size_t nmemb,size_t size); +GR_CORE_API void free16Align(void *p); #ifdef __cplusplus } diff --git a/gnuradio-core/src/lib/general/qa_general.h b/gnuradio-core/src/lib/general/qa_general.h index 577c9d7fb..7da188266 100644 --- a/gnuradio-core/src/lib/general/qa_general.h +++ b/gnuradio-core/src/lib/general/qa_general.h @@ -23,11 +23,12 @@ #ifndef _QA_GENERAL_H_ #define _QA_GENERAL_H_ +#include <gruel/attributes.h> #include <cppunit/TestSuite.h> //! collect all the tests for the gr directory -class qa_general { +class __GR_ATTR_EXPORT qa_general { public: //! return suite of tests for all of gr directory static CppUnit::TestSuite *suite (); diff --git a/gnuradio-core/src/lib/general/qa_gri_lfsr.cc b/gnuradio-core/src/lib/general/qa_gri_lfsr.cc index 9f8b62dcf..9625071d8 100644 --- a/gnuradio-core/src/lib/general/qa_gri_lfsr.cc +++ b/gnuradio-core/src/lib/general/qa_gri_lfsr.cc @@ -24,6 +24,7 @@ #include <cppunit/TestAssert.h> #include <stdio.h> #include <string.h> +#include <vector> void qa_gri_lfsr::test_lfsr () @@ -90,12 +91,12 @@ qa_gri_lfsr::test_scrambler() 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, }; int len = sizeof(src); - unsigned char actual[len]; + std::vector<unsigned char> actual(len); for (int i = 0; i < len; i++) actual[i] = scrambler.next_bit_scramble(src[i]); - CPPUNIT_ASSERT(memcmp(expected, actual, len) == 0); + CPPUNIT_ASSERT(memcmp(expected, &actual[0], len) == 0); } void @@ -132,10 +133,10 @@ qa_gri_lfsr::test_descrambler() 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int len = sizeof(src); - unsigned char actual[len]; + std::vector<unsigned char> actual(len); for (int i = 0; i < len; i++) actual[i] = descrambler.next_bit_descramble(src[i]); - CPPUNIT_ASSERT(memcmp(expected, actual, len) == 0); + CPPUNIT_ASSERT(memcmp(expected, &actual[0], len) == 0); } diff --git a/gnuradio-core/src/lib/gengen/CMakeLists.txt b/gnuradio-core/src/lib/gengen/CMakeLists.txt new file mode 100644 index 000000000..779ea0c47 --- /dev/null +++ b/gnuradio-core/src/lib/gengen/CMakeLists.txt @@ -0,0 +1,164 @@ +# Copyright 2010-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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +######################################################################## +# generate the python helper script which calls into the build utils +######################################################################## +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py " +#!${PYTHON_EXECUTABLE} + +import sys, os, re +sys.path.append('${GR_CORE_PYTHONPATH}') +os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}' +os.chdir('${CMAKE_CURRENT_BINARY_DIR}') + +if __name__ == '__main__': + import build_utils + root, inp = sys.argv[1:3] + for sig in sys.argv[3:]: + name = re.sub ('X+', sig, root) + d = build_utils.standard_dict(name, sig) + build_utils.expand_template(d, inp) + +") + +######################################################################## +# generation helper macro to generate various files from template +######################################################################## +macro(expand_h_cc_i root) + + foreach(ext h cc i) + #make a list of all the generated files + unset(expanded_files_${ext}) + foreach(sig ${ARGN}) + string(REGEX REPLACE "X+" ${sig} name ${root}) + list(APPEND expanded_files_${ext} ${CMAKE_CURRENT_BINARY_DIR}/${name}.${ext}) + endforeach(sig) + + #create a command to generate the files + add_custom_command( + OUTPUT ${expanded_files_${ext}} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${root}.${ext}.t + COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} + ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py + ${root} ${root}.${ext}.t ${ARGN} + ) + endforeach(ext) + + #make source files depends on headers to force generation + set_source_files_properties(${expanded_files_cc} + PROPERTIES OBJECT_DEPENDS "${expanded_files_h}" + ) + + #install rules for the generated cc, h, and i files + list(APPEND generated_gengen_sources ${expanded_files_cc}) + list(APPEND generated_gengen_includes ${expanded_files_h}) + list(APPEND generated_gengen_swigs ${expanded_files_i}) + +endmacro(expand_h_cc_i) + +######################################################################## +# Invoke macro to generate various sources +######################################################################## +expand_h_cc_i(gr_vector_source_X b s i f c) +expand_h_cc_i(gr_vector_sink_X b s i f c) +expand_h_cc_i(gr_noise_source_X s i f c) +expand_h_cc_i(gr_sig_source_X s i f c) + +expand_h_cc_i(gr_add_const_XX ss ii ff cc sf) +expand_h_cc_i(gr_multiply_const_XX ss ii ff cc) +expand_h_cc_i(gr_add_XX ss ii ff cc) +expand_h_cc_i(gr_sub_XX ss ii ff cc) +expand_h_cc_i(gr_multiply_XX ss ii ff cc) +expand_h_cc_i(gr_divide_XX ss ii ff cc) +expand_h_cc_i(gr_mute_XX ss ii ff cc) +expand_h_cc_i(gr_add_const_vXX ss ii ff cc) +expand_h_cc_i(gr_multiply_const_vXX ss ii ff cc) +expand_h_cc_i(gr_integrate_XX ss ii ff cc) +expand_h_cc_i(gr_moving_average_XX ss ii ff cc) + +expand_h_cc_i(gr_chunks_to_symbols_XX bf bc sf sc if ic) +expand_h_cc_i(gr_unpacked_to_packed_XX bb ss ii) +expand_h_cc_i(gr_packed_to_unpacked_XX bb ss ii) +expand_h_cc_i(gr_xor_XX bb ss ii) +expand_h_cc_i(gr_and_XX bb ss ii) +expand_h_cc_i(gr_and_const_XX bb ss ii) +expand_h_cc_i(gr_or_XX bb ss ii) +expand_h_cc_i(gr_not_XX bb ss ii) +expand_h_cc_i(gr_sample_and_hold_XX bb ss ii ff) +expand_h_cc_i(gr_argmax_XX fs is ss) +expand_h_cc_i(gr_max_XX ff ii ss) +expand_h_cc_i(gr_peak_detector_XX fb ib sb) + +add_custom_target(gengen_generated DEPENDS + ${generated_gengen_includes} + ${generated_gengen_swigs} +) + +######################################################################## +# Create the master gengen swig include files +######################################################################## +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i " +// +// This file is machine generated. All edits will be overwritten +// +") + +file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i "%{\n") +foreach(swig_file ${generated_gengen_swigs}) + get_filename_component(name ${swig_file} NAME_WE) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i "#include<${name}.h>\n") +endforeach(swig_file) +file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i "%}\n") + +foreach(swig_file ${generated_gengen_swigs}) + get_filename_component(name ${swig_file} NAME) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i "%include<${name}>\n") +endforeach(swig_file) + +######################################################################## +# Handle the generated sources + a few non-generated ones +######################################################################## +list(APPEND gnuradio_core_sources + ${generated_gengen_sources} +) + +install(FILES + ${generated_gengen_includes} + ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_noise_type.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sig_source_waveform.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +if(ENABLE_PYTHON) + install(FILES + ${generated_gengen_swigs} + ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.i + ${CMAKE_CURRENT_SOURCE_DIR}/gengen.i + ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" + ) +endif(ENABLE_PYTHON) diff --git a/gnuradio-core/src/lib/gengen/gr_add_XX.h.t b/gnuradio-core/src/lib/gengen/gr_add_XX.h.t index 91dd9196a..f0e857abf 100644 --- a/gnuradio-core/src/lib/gengen/gr_add_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_add_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1); /*! * \brief output = sum (input_0, input_1, ...) @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * Add across all input streams. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); @NAME@ (size_t vlen); diff --git a/gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t b/gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t index 8e9884104..5b46d0f89 100644 --- a/gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t @@ -25,20 +25,21 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); /*! * \brief output = input + constant * \ingroup math_blk */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); @O_TYPE@ d_k; // the constant @NAME@ (@O_TYPE@ k); diff --git a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t index 574fc686c..9d986e960 100755..100644 --- a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t @@ -25,20 +25,21 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k); /*! * \brief output vector = input vector + constant vector * \ingroup math_blk */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k); std::vector<@I_TYPE@> d_k; // the constant @NAME@ (const std::vector<@I_TYPE@> &k); diff --git a/gnuradio-core/src/lib/gengen/gr_and_XX.h.t b/gnuradio-core/src/lib/gengen/gr_and_XX.h.t index 6152942dd..dbb225907 100644 --- a/gnuradio-core/src/lib/gengen/gr_and_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_and_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); /*! * \brief output = input_0 & input_1 & , ... & input_N) @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * bitwise boolean and across all input streams. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); @NAME@ (); diff --git a/gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t b/gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t index 3119611f1..ceffc3066 100644 --- a/gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); /*! * \brief output_N = input_N & value @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * bitwise boolean and of const to the data stream. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); @O_TYPE@ d_k; // the constant @NAME@ (@O_TYPE@ k); diff --git a/gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t b/gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t index 2aba94d71..437fa5735 100644 --- a/gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t @@ -25,17 +25,18 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); @NAME@ (size_t vlen); size_t d_vlen; diff --git a/gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t b/gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t index a5313d07d..c1393df3f 100644 --- a/gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_interpolator.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@O_TYPE@> &symbol_table, const int D = 1); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@O_TYPE@> &symbol_table, const int D = 1); /*! * \brief Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in \p D dimensions (\p D = 1 by default) @@ -51,9 +52,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * \sa gr_chunks_to_symbols_sf, gr_chunks_to_symbols_sc. */ -class @NAME@ : public gr_sync_interpolator +class GR_CORE_API @NAME@ : public gr_sync_interpolator { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@O_TYPE@> &symbol_table, const int D); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@O_TYPE@> &symbol_table, const int D); int d_D; std::vector<@O_TYPE@> d_symbol_table; diff --git a/gnuradio-core/src/lib/gengen/gr_divide_XX.h.t b/gnuradio-core/src/lib/gengen/gr_divide_XX.h.t index a59497c8c..ebe5ff5e5 100644 --- a/gnuradio-core/src/lib/gengen/gr_divide_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_divide_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1); /*! * \brief output = input_0 / input_1 / input_x ...) @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * Divide across all input streams. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); @NAME@ (size_t vlen); diff --git a/gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t b/gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t index 01061ff21..c1d81000f 100644 --- a/gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t @@ -25,13 +25,14 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_decimator.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (int decim); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int decim); /*! * \brief output = sum(input[0]...input[n]) @@ -39,10 +40,10 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * Integrate successive samples in input stream and decimate */ -class @NAME@ : public gr_sync_decimator +class GR_CORE_API @NAME@ : public gr_sync_decimator { private: - friend @SPTR_NAME@ gr_make_@BASE_NAME@(int decim); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@(int decim); @NAME@ (int decim); diff --git a/gnuradio-core/src/lib/gengen/gr_max_XX.h.t b/gnuradio-core/src/lib/gengen/gr_max_XX.h.t index 2aba94d71..437fa5735 100644 --- a/gnuradio-core/src/lib/gengen/gr_max_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_max_XX.h.t @@ -25,17 +25,18 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); @NAME@ (size_t vlen); size_t d_vlen; diff --git a/gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t b/gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t index 2441ca65b..7e228abb6 100644 --- a/gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t @@ -25,13 +25,14 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (int length, @O_TYPE@ scale, int max_iter = 4096); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int length, @O_TYPE@ scale, int max_iter = 4096); /*! * \brief output is the moving sum of the last N samples, scaled by the scale factor @@ -40,10 +41,10 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * max_iter limits how long we go without flushing the accumulator * This is necessary to avoid numerical instability for float and complex. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { private: - friend @SPTR_NAME@ gr_make_@BASE_NAME@(int length, @O_TYPE@ scale, int max_iter); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@(int length, @O_TYPE@ scale, int max_iter); @NAME@ (int length, @O_TYPE@ scale, int max_iter = 4096); diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t b/gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t index cb4a0273d..1feb16202 100644 --- a/gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1); /*! * \brief output = prod (input_0, input_1, ...) @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * Multiply across all input streams. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); @NAME@ (size_t vlen); diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t b/gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t index 0c10185cc..6ff6f74a9 100644 --- a/gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t @@ -25,20 +25,21 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); /*! * \brief output = input * constant * \ingroup math_blk */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k); @O_TYPE@ d_k; // the constant @NAME@ (@O_TYPE@ k); diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t index 81e781895..f696ab7b1 100755..100644 --- a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t @@ -25,20 +25,21 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k); /*! * \brief output vector = input vector * constant vector (element-wise) * \ingroup math_blk */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k); std::vector<@I_TYPE@> d_k; // the constant @NAME@ (const std::vector<@I_TYPE@> &k); diff --git a/gnuradio-core/src/lib/gengen/gr_mute_XX.h.t b/gnuradio-core/src/lib/gengen/gr_mute_XX.h.t index 5007787c4..ccf966e53 100644 --- a/gnuradio-core/src/lib/gengen/gr_mute_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_mute_XX.h.t @@ -25,20 +25,21 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (bool mute=false); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (bool mute=false); /*! * \brief output = input or zero if muted. * \ingroup level_blk */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (bool mute); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (bool mute); bool d_mute; @NAME@ (bool mute); diff --git a/gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t b/gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t index a920ce04a..9dd92c8f5 100644 --- a/gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t +++ b/gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t @@ -25,6 +25,7 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_noise_type.h> #include <gr_random.h> @@ -33,15 +34,15 @@ class @NAME@; typedef boost::shared_ptr<@NAME@> @NAME@_sptr; -@NAME@_sptr +GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (gr_noise_type_t type, float ampl, long seed = 3021); /*! * \brief random number source * \ingroup source_blk */ -class @NAME@ : public gr_sync_block { - friend @NAME@_sptr +class GR_CORE_API @NAME@ : public gr_sync_block { + friend GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (gr_noise_type_t type, float ampl, long seed); gr_noise_type_t d_type; diff --git a/gnuradio-core/src/lib/gengen/gr_not_XX.h.t b/gnuradio-core/src/lib/gengen/gr_not_XX.h.t index cf8d96ede..b946ffc42 100644 --- a/gnuradio-core/src/lib/gengen/gr_not_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_not_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); /*! * \brief output = ~input_0 @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * bitwise boolean not across input stream. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); @NAME@ (); diff --git a/gnuradio-core/src/lib/gengen/gr_or_XX.h.t b/gnuradio-core/src/lib/gengen/gr_or_XX.h.t index 3e02d9b1a..8d1fea951 100644 --- a/gnuradio-core/src/lib/gengen/gr_or_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_or_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); /*! * \brief output = input_0 | input_1 | , ... | input_N) @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * bitwise boolean or across all input streams. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); @NAME@ (); diff --git a/gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t b/gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t index 803098c0d..77cd2b470 100644 --- a/gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t @@ -25,13 +25,14 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_block.h> #include <gr_endianness.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness); /*! @@ -59,9 +60,9 @@ gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness); * \sa gr_chunks_to_symbols_sf, gr_chunks_to_symbols_sc. */ -class @NAME@ : public gr_block +class GR_CORE_API @NAME@ : public gr_block { - friend @SPTR_NAME@ + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness); @NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness); diff --git a/gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t b/gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t index d6a8caf76..d6d1e5e51 100644 --- a/gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (float threshold_factor_rise = 0.25, +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (float threshold_factor_rise = 0.25, float threshold_factor_fall = 0.40, int look_ahead = 10, float alpha = 0.001); @@ -57,9 +58,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * This look-ahead range. * \param alpha The gain value of a moving average filter */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (float threshold_factor_rise, + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (float threshold_factor_rise, float threshold_factor_fall, int look_ahead, float alpha); diff --git a/gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t b/gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t index b96487326..328c47106 100644 --- a/gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); /*! * \brief sample and hold circuit @@ -39,9 +40,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * Samples the data stream (input stream 0) and holds the value * if the control signal is 1 (intput stream 1). */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); @NAME@ (); diff --git a/gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t b/gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t index 9906d16ab..3df723868 100644 --- a/gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t +++ b/gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t @@ -25,6 +25,7 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_sig_source_waveform.h> #include <gr_fxpt_nco.h> @@ -37,8 +38,8 @@ typedef boost::shared_ptr<@NAME@> @NAME@_sptr; * \ingroup source_blk */ -class @NAME@ : public gr_sync_block { - friend @NAME@_sptr +class GR_CORE_API @NAME@ : public gr_sync_block { + friend GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (double sampling_freq, gr_waveform_t waveform, double frequency, double ampl, @TYPE@ offset); @@ -73,7 +74,7 @@ class @NAME@ : public gr_sync_block { void set_offset (@TYPE@ offset); }; -@NAME@_sptr +GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (double sampling_freq, gr_waveform_t waveform, double wave_freq, double ampl, @TYPE@ offset = 0); diff --git a/gnuradio-core/src/lib/gengen/gr_sub_XX.h.t b/gnuradio-core/src/lib/gengen/gr_sub_XX.h.t index a58d1f3b8..4c988945e 100644 --- a/gnuradio-core/src/lib/gengen/gr_sub_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_sub_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1); /*! * \brief output = input_0 - input_1 - ...) @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * Subtract across all input streams. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen); @NAME@ (size_t vlen); diff --git a/gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t b/gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t index 42d201093..a7db84c5c 100644 --- a/gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t @@ -25,13 +25,14 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_block.h> #include <gr_endianness.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @NAME@_sptr; -@SPTR_NAME@ +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness); /*! @@ -57,9 +58,9 @@ gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness); * \sa gr_chunks_to_symbols_bf, gr_chunks_to_symbols_bc. * \sa gr_chunks_to_symbols_sf, gr_chunks_to_symbols_sc. */ -class @NAME@ : public gr_block +class GR_CORE_API @NAME@ : public gr_block { - friend @SPTR_NAME@ + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness); @NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness); diff --git a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t b/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t index 7ba5ee9e9..475cc0112 100644 --- a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t +++ b/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @NAME@_sptr; -@NAME@_sptr +GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (int vlen = 1); @@ -39,8 +40,8 @@ gr_make_@BASE_NAME@ (int vlen = 1); * \ingroup sink_blk */ -class @NAME@ : public gr_sync_block { - friend @NAME@_sptr gr_make_@BASE_NAME@ (int vlen); +class GR_CORE_API @NAME@ : public gr_sync_block { + friend GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (int vlen); std::vector<@TYPE@> d_data; int d_vlen; @NAME@ (int vlen); diff --git a/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t b/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t index 63edcb61c..fbab3effb 100644 --- a/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t +++ b/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t @@ -25,9 +25,10 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> -class @NAME@; +class GR_CORE_API @NAME@; typedef boost::shared_ptr<@NAME@> @NAME@_sptr; /*! @@ -36,7 +37,7 @@ typedef boost::shared_ptr<@NAME@> @NAME@_sptr; */ class @NAME@ : public gr_sync_block { - friend @NAME@_sptr + friend GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen); std::vector<@TYPE@> d_data; @@ -53,7 +54,7 @@ class @NAME@ : public gr_sync_block { gr_vector_void_star &output_items); }; -@NAME@_sptr +GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, bool repeat = false, int vlen = 1); #endif diff --git a/gnuradio-core/src/lib/gengen/gr_xor_XX.h.t b/gnuradio-core/src/lib/gengen/gr_xor_XX.h.t index 33d729450..b2e1a68c8 100644 --- a/gnuradio-core/src/lib/gengen/gr_xor_XX.h.t +++ b/gnuradio-core/src/lib/gengen/gr_xor_XX.h.t @@ -25,12 +25,13 @@ #ifndef @GUARD_NAME@ #define @GUARD_NAME@ +#include <gr_core_api.h> #include <gr_sync_block.h> class @NAME@; typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; -@SPTR_NAME@ gr_make_@BASE_NAME@ (); +GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); /*! * \brief output = input_0 ^ input_1 ^ , ... ^ input_N) @@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@; * * bitwise boolean xor across all input streams. */ -class @NAME@ : public gr_sync_block +class GR_CORE_API @NAME@ : public gr_sync_block { - friend @SPTR_NAME@ gr_make_@BASE_NAME@ (); + friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (); @NAME@ (); diff --git a/gnuradio-core/src/lib/hier/CMakeLists.txt b/gnuradio-core/src/lib/hier/CMakeLists.txt new file mode 100644 index 000000000..192dd5939 --- /dev/null +++ b/gnuradio-core/src/lib/hier/CMakeLists.txt @@ -0,0 +1,42 @@ +# Copyright 2010-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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.cc +) + +install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +if(ENABLE_PYTHON) + install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/hier.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" + ) +endif(ENABLE_PYTHON) diff --git a/gnuradio-core/src/lib/hier/gr_channel_model.h b/gnuradio-core/src/lib/hier/gr_channel_model.h index 116b5dc14..07c0c76b6 100644 --- a/gnuradio-core/src/lib/hier/gr_channel_model.h +++ b/gnuradio-core/src/lib/hier/gr_channel_model.h @@ -19,6 +19,7 @@ * Boston, MA 02110-1301, USA. */ +#include <gr_core_api.h> #include <gr_top_block.h> #include <gr_fractional_interpolator_cc.h> #include <gr_sig_source_c.h> @@ -31,7 +32,7 @@ class gr_channel_model; typedef boost::shared_ptr<gr_channel_model> gr_channel_model_sptr; -gr_channel_model_sptr gr_make_channel_model(double noise_voltage=0.0, +GR_CORE_API gr_channel_model_sptr gr_make_channel_model(double noise_voltage=0.0, double frequency_offset=0.0, double epsilon=1.0, const std::vector<gr_complex> &taps=std::vector<gr_complex>(1, 1), @@ -41,7 +42,7 @@ gr_channel_model_sptr gr_make_channel_model(double noise_voltage=0.0, * \brief channel simulator * \ingroup misc_blk */ -class gr_channel_model : public gr_hier_block2 +class GR_CORE_API gr_channel_model : public gr_hier_block2 { private: gr_channel_model(double noise_voltage, @@ -50,7 +51,7 @@ class gr_channel_model : public gr_hier_block2 const std::vector<gr_complex> &taps, double noise_seed); - friend gr_channel_model_sptr gr_make_channel_model(double noise_voltage, + friend GR_CORE_API gr_channel_model_sptr gr_make_channel_model(double noise_voltage, double frequency_offset, double epsilon, const std::vector<gr_complex> &taps, diff --git a/gnuradio-core/src/lib/io/CMakeLists.txt b/gnuradio-core/src/lib/io/CMakeLists.txt new file mode 100644 index 000000000..af9d7583c --- /dev/null +++ b/gnuradio-core/src/lib/io/CMakeLists.txt @@ -0,0 +1,108 @@ +# Copyright 2010-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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.cc + ${CMAKE_CURRENT_SOURCE_DIR}/i2c.cc + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bitbang.cc + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio.cc + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio_pp.cc + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4702.cc + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4937.cc + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_xxxx.cc + ${CMAKE_CURRENT_SOURCE_DIR}/ppio_ppdev.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gri_wavfile.cc +) + +######################################################################## +# Install runtime headers +######################################################################## +install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_trigger_mode.h + ${CMAKE_CURRENT_SOURCE_DIR}/i2c.h + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bitbang.h + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio.h + ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio_pp.h + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4702.h + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4937.h + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_eval_board_defs.h + ${CMAKE_CURRENT_SOURCE_DIR}/microtune_xxxx.h + ${CMAKE_CURRENT_SOURCE_DIR}/ppio_ppdev.h + ${CMAKE_CURRENT_SOURCE_DIR}/gri_wavfile.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Install swig headers +######################################################################## +if(ENABLE_PYTHON) +install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/io.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) +endif(ENABLE_PYTHON) + +######################################################################## +# Handle triple-threat files that have cc, h, and i +######################################################################## +set(gr_core_io_triple_threats + gr_file_sink + gr_file_sink_base + gr_file_source + gr_file_descriptor_sink + gr_file_descriptor_source + gr_message_sink + gr_message_source + microtune_xxxx_eval_board + microtune_4702_eval_board + microtune_4937_eval_board + ppio + sdr_1000 + gr_udp_sink + gr_udp_source + gr_wavfile_source + gr_wavfile_sink + gr_tagged_file_sink +) + +foreach(file_tt ${gr_core_io_triple_threats}) + list(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel") + if(ENABLE_PYTHON) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig") + endif(ENABLE_PYTHON) +endforeach(file_tt ${gr_core_io_triple_threats}) diff --git a/gnuradio-core/src/lib/io/gr_file_descriptor_sink.h b/gnuradio-core/src/lib/io/gr_file_descriptor_sink.h index fa8fa3f05..5e4cc6505 100644 --- a/gnuradio-core/src/lib/io/gr_file_descriptor_sink.h +++ b/gnuradio-core/src/lib/io/gr_file_descriptor_sink.h @@ -23,21 +23,22 @@ #ifndef INCLUDED_GR_FILE_DESCRIPTOR_SINK_H #define INCLUDED_GR_FILE_DESCRIPTOR_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_file_descriptor_sink; typedef boost::shared_ptr<gr_file_descriptor_sink> gr_file_descriptor_sink_sptr; -gr_file_descriptor_sink_sptr gr_make_file_descriptor_sink (size_t itemsize, int fd); +GR_CORE_API gr_file_descriptor_sink_sptr gr_make_file_descriptor_sink (size_t itemsize, int fd); /*! * \brief Write stream to file descriptor. * \ingroup sink_blk */ -class gr_file_descriptor_sink : public gr_sync_block +class GR_CORE_API gr_file_descriptor_sink : public gr_sync_block { - friend gr_file_descriptor_sink_sptr gr_make_file_descriptor_sink (size_t itemsize, int fd); + friend GR_CORE_API gr_file_descriptor_sink_sptr gr_make_file_descriptor_sink (size_t itemsize, int fd); private: size_t d_itemsize; diff --git a/gnuradio-core/src/lib/io/gr_file_descriptor_source.h b/gnuradio-core/src/lib/io/gr_file_descriptor_source.h index a9f117286..fa513fd25 100644 --- a/gnuradio-core/src/lib/io/gr_file_descriptor_source.h +++ b/gnuradio-core/src/lib/io/gr_file_descriptor_source.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FILE_DESCRIPTOR_SOURCE_H #define INCLUDED_GR_FILE_DESCRIPTOR_SOURCE_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_file_descriptor_source; typedef boost::shared_ptr<gr_file_descriptor_source> gr_file_descriptor_source_sptr; -gr_file_descriptor_source_sptr +GR_CORE_API gr_file_descriptor_source_sptr gr_make_file_descriptor_source (size_t itemsize, int fd, bool repeat = false); /*! @@ -36,9 +37,9 @@ gr_make_file_descriptor_source (size_t itemsize, int fd, bool repeat = false); * \ingroup source_blk */ -class gr_file_descriptor_source : public gr_sync_block +class GR_CORE_API gr_file_descriptor_source : public gr_sync_block { - friend gr_file_descriptor_source_sptr + friend GR_CORE_API gr_file_descriptor_source_sptr gr_make_file_descriptor_source (size_t itemsize, int fd, bool repeat); private: size_t d_itemsize; diff --git a/gnuradio-core/src/lib/io/gr_file_sink.h b/gnuradio-core/src/lib/io/gr_file_sink.h index b9ad06cd6..180cbef2a 100644 --- a/gnuradio-core/src/lib/io/gr_file_sink.h +++ b/gnuradio-core/src/lib/io/gr_file_sink.h @@ -23,22 +23,23 @@ #ifndef INCLUDED_GR_FILE_SINK_H #define INCLUDED_GR_FILE_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_file_sink_base.h> class gr_file_sink; typedef boost::shared_ptr<gr_file_sink> gr_file_sink_sptr; -gr_file_sink_sptr gr_make_file_sink(size_t itemsize, const char *filename); +GR_CORE_API gr_file_sink_sptr gr_make_file_sink(size_t itemsize, const char *filename); /*! * \brief Write stream to file. * \ingroup sink_blk */ -class gr_file_sink : public gr_sync_block, public gr_file_sink_base +class GR_CORE_API gr_file_sink : public gr_sync_block, public gr_file_sink_base { - friend gr_file_sink_sptr gr_make_file_sink(size_t itemsize, const char *filename); + friend GR_CORE_API gr_file_sink_sptr gr_make_file_sink(size_t itemsize, const char *filename); private: size_t d_itemsize; diff --git a/gnuradio-core/src/lib/io/gr_file_sink_base.h b/gnuradio-core/src/lib/io/gr_file_sink_base.h index 7b96cdb7f..6765dbad8 100644 --- a/gnuradio-core/src/lib/io/gr_file_sink_base.h +++ b/gnuradio-core/src/lib/io/gr_file_sink_base.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_FILE_SINK_BASE_H #define INCLUDED_GR_FILE_SINK_BASE_H +#include <gr_core_api.h> #include <boost/thread.hpp> #include <cstdio> /*! * \brief Common base class for file sinks */ -class gr_file_sink_base +class GR_CORE_API gr_file_sink_base { protected: FILE *d_fp; // current FILE pointer diff --git a/gnuradio-core/src/lib/io/gr_file_source.h b/gnuradio-core/src/lib/io/gr_file_source.h index 5f5c2564e..6e8fc4074 100644 --- a/gnuradio-core/src/lib/io/gr_file_source.h +++ b/gnuradio-core/src/lib/io/gr_file_source.h @@ -23,12 +23,13 @@ #ifndef INCLUDED_GR_FILE_SOURCE_H #define INCLUDED_GR_FILE_SOURCE_H +#include <gr_core_api.h> #include <gr_sync_block.h> class gr_file_source; typedef boost::shared_ptr<gr_file_source> gr_file_source_sptr; -gr_file_source_sptr +GR_CORE_API gr_file_source_sptr gr_make_file_source (size_t itemsize, const char *filename, bool repeat = false); /*! @@ -36,9 +37,9 @@ gr_make_file_source (size_t itemsize, const char *filename, bool repeat = false) * \ingroup source_blk */ -class gr_file_source : public gr_sync_block +class GR_CORE_API gr_file_source : public gr_sync_block { - friend gr_file_source_sptr gr_make_file_source (size_t itemsize, + friend GR_CORE_API gr_file_source_sptr gr_make_file_source (size_t itemsize, const char *filename, bool repeat); private: diff --git a/gnuradio-core/src/lib/io/gr_histo_sink_f.h b/gnuradio-core/src/lib/io/gr_histo_sink_f.h index 8ba45ec55..934066ba2 100644 --- a/gnuradio-core/src/lib/io/gr_histo_sink_f.h +++ b/gnuradio-core/src/lib/io/gr_histo_sink_f.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_HISTO_SINK_F_H #define INCLUDED_GR_HISTO_SINK_F_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_msg_queue.h> #include <gruel/thread.h> @@ -30,13 +31,13 @@ class gr_histo_sink_f; typedef boost::shared_ptr<gr_histo_sink_f> gr_histo_sink_f_sptr; -gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq); +GR_CORE_API gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq); /*! * \brief Histogram module. * \ingroup sink_blk */ -class gr_histo_sink_f : public gr_sync_block +class GR_CORE_API gr_histo_sink_f : public gr_sync_block { private: gr_msg_queue_sptr d_msgq; @@ -47,7 +48,7 @@ private: float *d_samps; gruel::mutex d_mutex; - friend gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq); + friend GR_CORE_API gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq); gr_histo_sink_f (gr_msg_queue_sptr msgq); void send_frame(void); void clear(void); diff --git a/gnuradio-core/src/lib/io/gr_message_sink.h b/gnuradio-core/src/lib/io/gr_message_sink.h index 5f1e5f91f..180055261 100644 --- a/gnuradio-core/src/lib/io/gr_message_sink.h +++ b/gnuradio-core/src/lib/io/gr_message_sink.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_MESSAGE_SINK_H #define INCLUDED_GR_MESSAGE_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_message.h> #include <gr_msg_queue.h> @@ -30,7 +31,7 @@ class gr_message_sink; typedef boost::shared_ptr<gr_message_sink> gr_message_sink_sptr; -gr_message_sink_sptr gr_make_message_sink (size_t itemsize, +GR_CORE_API gr_message_sink_sptr gr_make_message_sink (size_t itemsize, gr_msg_queue_sptr msgq, bool dont_block); @@ -38,14 +39,14 @@ gr_message_sink_sptr gr_make_message_sink (size_t itemsize, * \brief Gather received items into messages and insert into msgq * \ingroup sink_blk */ -class gr_message_sink : public gr_sync_block +class GR_CORE_API gr_message_sink : public gr_sync_block { private: size_t d_itemsize; gr_msg_queue_sptr d_msgq; bool d_dont_block; - friend gr_message_sink_sptr + friend GR_CORE_API gr_message_sink_sptr gr_make_message_sink(size_t itemsize, gr_msg_queue_sptr msgq, bool dont_block); protected: diff --git a/gnuradio-core/src/lib/io/gr_message_source.h b/gnuradio-core/src/lib/io/gr_message_source.h index 46a808754..16a0f4474 100644 --- a/gnuradio-core/src/lib/io/gr_message_source.h +++ b/gnuradio-core/src/lib/io/gr_message_source.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_MESSAGE_SOURCE_H #define INCLUDED_GR_MESSAGE_SOURCE_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_message.h> #include <gr_msg_queue.h> @@ -30,14 +31,14 @@ class gr_message_source; typedef boost::shared_ptr<gr_message_source> gr_message_source_sptr; -gr_message_source_sptr gr_make_message_source (size_t itemsize, int msgq_limit=0); -gr_message_source_sptr gr_make_message_source (size_t itemsize, gr_msg_queue_sptr msgq); +GR_CORE_API gr_message_source_sptr gr_make_message_source (size_t itemsize, int msgq_limit=0); +GR_CORE_API gr_message_source_sptr gr_make_message_source (size_t itemsize, gr_msg_queue_sptr msgq); /*! * \brief Turn received messages into a stream * \ingroup source_blk */ -class gr_message_source : public gr_sync_block +class GR_CORE_API gr_message_source : public gr_sync_block { private: size_t d_itemsize; @@ -46,9 +47,9 @@ class gr_message_source : public gr_sync_block unsigned d_msg_offset; bool d_eof; - friend gr_message_source_sptr + friend GR_CORE_API gr_message_source_sptr gr_make_message_source(size_t itemsize, int msgq_limit); - friend gr_message_source_sptr + friend GR_CORE_API gr_message_source_sptr gr_make_message_source(size_t itemsize, gr_msg_queue_sptr msgq); protected: diff --git a/gnuradio-core/src/lib/io/gr_oscope_guts.h b/gnuradio-core/src/lib/io/gr_oscope_guts.h index f39db62f6..3223d4e38 100644 --- a/gnuradio-core/src/lib/io/gr_oscope_guts.h +++ b/gnuradio-core/src/lib/io/gr_oscope_guts.h @@ -24,6 +24,7 @@ #ifndef INCLUDED_GR_OSCOPE_GUTS_H #define INCLUDED_GR_OSCOPE_GUTS_H +#include <gr_core_api.h> #include <gr_trigger_mode.h> #include <gr_msg_queue.h> @@ -40,7 +41,7 @@ * consist of 50% pre-trigger data and 50% post-trigger data. */ -class gr_oscope_guts { +class GR_CORE_API gr_oscope_guts { public: static const int MAX_CHANNELS = 8; private: diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_f.h b/gnuradio-core/src/lib/io/gr_oscope_sink_f.h index 1a8022b89..e3d1f65e5 100644 --- a/gnuradio-core/src/lib/io/gr_oscope_sink_f.h +++ b/gnuradio-core/src/lib/io/gr_oscope_sink_f.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_OSCOPE_SINK_F_H #define INCLUDED_GR_OSCOPE_SINK_F_H +#include <gr_core_api.h> #include <gr_oscope_sink_x.h> #include <gr_msg_queue.h> class gr_oscope_sink_f; typedef boost::shared_ptr<gr_oscope_sink_x> gr_oscope_sink_f_sptr; -gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq); +GR_CORE_API gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq); /*! @@ -38,10 +39,10 @@ gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_ * * Accepts multiple float streams. */ -class gr_oscope_sink_f : public gr_oscope_sink_x +class GR_CORE_API gr_oscope_sink_f : public gr_oscope_sink_x { private: - friend gr_oscope_sink_f_sptr + friend GR_CORE_API gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq); gr_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq); diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_x.h b/gnuradio-core/src/lib/io/gr_oscope_sink_x.h index 62cf65100..aaff5870b 100644 --- a/gnuradio-core/src/lib/io/gr_oscope_sink_x.h +++ b/gnuradio-core/src/lib/io/gr_oscope_sink_x.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_OSCOPE_SINK_X_H #define INCLUDED_GR_OSCOPE_SINK_X_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_trigger_mode.h> @@ -34,7 +35,7 @@ class gr_oscope_guts; * * Don't instantiate this. Use gr_oscope_sink_f or gr_oscope_sink_c instead. */ -class gr_oscope_sink_x : public gr_sync_block +class GR_CORE_API gr_oscope_sink_x : public gr_sync_block { protected: double d_sampling_rate; diff --git a/gnuradio-core/src/lib/io/gr_tagged_file_sink.h b/gnuradio-core/src/lib/io/gr_tagged_file_sink.h index 2e0a5c63a..da12dca78 100644 --- a/gnuradio-core/src/lib/io/gr_tagged_file_sink.h +++ b/gnuradio-core/src/lib/io/gr_tagged_file_sink.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_TAGGED_FILE_SINK_H #define INCLUDED_GR_TAGGED_FILE_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <cstdio> // for FILE class gr_tagged_file_sink; typedef boost::shared_ptr<gr_tagged_file_sink> gr_tagged_file_sink_sptr; -gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize, +GR_CORE_API gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize, double samp_rate); /*! @@ -37,9 +38,9 @@ gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize, * \ingroup sink_blk */ -class gr_tagged_file_sink : public gr_sync_block +class GR_CORE_API gr_tagged_file_sink : public gr_sync_block { - friend gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize, + friend GR_CORE_API gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize, double samp_rate); private: diff --git a/gnuradio-core/src/lib/io/gr_udp_sink.h b/gnuradio-core/src/lib/io/gr_udp_sink.h index 421d514a4..e9d4f8c73 100644 --- a/gnuradio-core/src/lib/io/gr_udp_sink.h +++ b/gnuradio-core/src/lib/io/gr_udp_sink.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_UDP_SINK_H #define INCLUDED_GR_UDP_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gruel/thread.h> class gr_udp_sink; typedef boost::shared_ptr<gr_udp_sink> gr_udp_sink_sptr; -gr_udp_sink_sptr +GR_CORE_API gr_udp_sink_sptr gr_make_udp_sink (size_t itemsize, const char *host, unsigned short port, int payload_size=1472, bool eof=true); @@ -47,9 +48,9 @@ gr_make_udp_sink (size_t itemsize, * \param eof Send zero-length packet on disconnect */ -class gr_udp_sink : public gr_sync_block +class GR_CORE_API gr_udp_sink : public gr_sync_block { - friend gr_udp_sink_sptr gr_make_udp_sink (size_t itemsize, + friend GR_CORE_API gr_udp_sink_sptr gr_make_udp_sink (size_t itemsize, const char *host, unsigned short port, int payload_size, bool eof); diff --git a/gnuradio-core/src/lib/io/gr_udp_source.h b/gnuradio-core/src/lib/io/gr_udp_source.h index 5d30fad30..e2898981d 100644 --- a/gnuradio-core/src/lib/io/gr_udp_source.h +++ b/gnuradio-core/src/lib/io/gr_udp_source.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_UDP_SOURCE_H #define INCLUDED_GR_UDP_SOURCE_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gruel/thread.h> class gr_udp_source; typedef boost::shared_ptr<gr_udp_source> gr_udp_source_sptr; -gr_udp_source_sptr gr_make_udp_source(size_t itemsize, const char *host, +GR_CORE_API gr_udp_source_sptr gr_make_udp_source(size_t itemsize, const char *host, unsigned short port, int payload_size=1472, bool eof=true, bool wait=true); @@ -52,9 +53,9 @@ gr_udp_source_sptr gr_make_udp_source(size_t itemsize, const char *host, * */ -class gr_udp_source : public gr_sync_block +class GR_CORE_API gr_udp_source : public gr_sync_block { - friend gr_udp_source_sptr gr_make_udp_source(size_t itemsize, + friend GR_CORE_API gr_udp_source_sptr gr_make_udp_source(size_t itemsize, const char *host, unsigned short port, int payload_size, diff --git a/gnuradio-core/src/lib/io/gr_wavfile_sink.h b/gnuradio-core/src/lib/io/gr_wavfile_sink.h index a1d6ed527..5fd3eaadc 100644 --- a/gnuradio-core/src/lib/io/gr_wavfile_sink.h +++ b/gnuradio-core/src/lib/io/gr_wavfile_sink.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_WAVFILE_SINK_H #define INCLUDED_GR_WAVFILE_SINK_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <gr_file_sink_base.h> #include <boost/thread.hpp> @@ -36,7 +37,7 @@ typedef boost::shared_ptr<gr_wavfile_sink> gr_wavfile_sink_sptr; * \p sample_rate Sample rate [S/s] * \p bits_per_sample 16 or 8 bit, default is 16 */ -gr_wavfile_sink_sptr +GR_CORE_API gr_wavfile_sink_sptr gr_make_wavfile_sink (const char *filename, int n_channels, unsigned int sample_rate, @@ -50,10 +51,10 @@ gr_make_wavfile_sink (const char *filename, * * \ingroup sink_blk */ -class gr_wavfile_sink : public gr_sync_block +class GR_CORE_API gr_wavfile_sink : public gr_sync_block { private: - friend gr_wavfile_sink_sptr gr_make_wavfile_sink (const char *filename, + friend GR_CORE_API gr_wavfile_sink_sptr gr_make_wavfile_sink (const char *filename, int n_channels, unsigned int sample_rate, int bits_per_sample); diff --git a/gnuradio-core/src/lib/io/gr_wavfile_source.h b/gnuradio-core/src/lib/io/gr_wavfile_source.h index e434a6b4c..b300f2808 100644 --- a/gnuradio-core/src/lib/io/gr_wavfile_source.h +++ b/gnuradio-core/src/lib/io/gr_wavfile_source.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_GR_WAVFILE_SOURCE_H #define INCLUDED_GR_WAVFILE_SOURCE_H +#include <gr_core_api.h> #include <gr_sync_block.h> #include <cstdio> // for FILE class gr_wavfile_source; typedef boost::shared_ptr<gr_wavfile_source> gr_wavfile_source_sptr; -gr_wavfile_source_sptr +GR_CORE_API gr_wavfile_source_sptr gr_make_wavfile_source (const char *filename, bool repeat = false); /*! @@ -41,10 +42,10 @@ gr_make_wavfile_source (const char *filename, bool repeat = false); * \ingroup source_blk */ -class gr_wavfile_source : public gr_sync_block +class GR_CORE_API gr_wavfile_source : public gr_sync_block { private: - friend gr_wavfile_source_sptr gr_make_wavfile_source (const char *filename, + friend GR_CORE_API gr_wavfile_source_sptr gr_make_wavfile_source (const char *filename, bool repeat); gr_wavfile_source(const char *filename, bool repeat); diff --git a/gnuradio-core/src/lib/io/gri_wavfile.h b/gnuradio-core/src/lib/io/gri_wavfile.h index 2c7c1207c..2268474fb 100644 --- a/gnuradio-core/src/lib/io/gri_wavfile.h +++ b/gnuradio-core/src/lib/io/gri_wavfile.h @@ -23,6 +23,7 @@ // This file stores all the RIFF file type knowledge for the gr_wavfile_* // blocks. +#include <gr_core_api.h> #include <cstdio> /*! diff --git a/gnuradio-core/src/lib/io/i2c.h b/gnuradio-core/src/lib/io/i2c.h index e959f59a8..7d446dfa3 100644 --- a/gnuradio-core/src/lib/io/i2c.h +++ b/gnuradio-core/src/lib/io/i2c.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_I2C_H #define INCLUDED_I2C_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> class i2c; @@ -31,7 +32,7 @@ typedef boost::shared_ptr<i2c> i2c_sptr; /*! * \brief abstract class for controlling i2c bus */ -class i2c { +class GR_CORE_API i2c { public: i2c () {} diff --git a/gnuradio-core/src/lib/io/i2c_bbio.h b/gnuradio-core/src/lib/io/i2c_bbio.h index c6b226e39..110a56555 100644 --- a/gnuradio-core/src/lib/io/i2c_bbio.h +++ b/gnuradio-core/src/lib/io/i2c_bbio.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_I2C_BBIO_H #define INCLUDED_I2C_BBIO_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> class i2c_bbio; @@ -33,7 +34,7 @@ typedef boost::shared_ptr<i2c_bbio> i2c_bbio_sptr; * \brief abstract class that implements bit banging i/o for i2c bus. * \ingroup base */ -class i2c_bbio { +class GR_CORE_API i2c_bbio { public: i2c_bbio () {} diff --git a/gnuradio-core/src/lib/io/i2c_bbio_pp.h b/gnuradio-core/src/lib/io/i2c_bbio_pp.h index 5a99cdcd1..4a311a2c9 100644 --- a/gnuradio-core/src/lib/io/i2c_bbio_pp.h +++ b/gnuradio-core/src/lib/io/i2c_bbio_pp.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_I2C_BBIO_PP_H #define INCLUDED_I2C_BBIO_PP_H +#include <gr_core_api.h> #include "i2c_bbio.h" #include "ppio.h" @@ -33,8 +34,8 @@ * This class talks to the i2c bus on the microtune eval board using * the parallel port. This works for both the 4937 and 4702 boards. */ -class i2c_bbio_pp : public i2c_bbio { - friend i2c_bbio_sptr make_i2c_bbio_pp (ppio_sptr pp); +class GR_CORE_API i2c_bbio_pp : public i2c_bbio { + friend GR_CORE_API i2c_bbio_sptr make_i2c_bbio_pp (ppio_sptr pp); i2c_bbio_pp (ppio_sptr pp); public: @@ -50,7 +51,7 @@ class i2c_bbio_pp : public i2c_bbio { ppio_sptr d_pp; }; -i2c_bbio_sptr make_i2c_bbio_pp (ppio_sptr pp); +GR_CORE_API i2c_bbio_sptr make_i2c_bbio_pp (ppio_sptr pp); #endif /* INCLUDED_I2C_BBIO_PP_H */ diff --git a/gnuradio-core/src/lib/io/i2c_bitbang.h b/gnuradio-core/src/lib/io/i2c_bitbang.h index c9deb38ba..feb23b787 100644 --- a/gnuradio-core/src/lib/io/i2c_bitbang.h +++ b/gnuradio-core/src/lib/io/i2c_bitbang.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_I2C_BITBANG_H #define INCLUDED_I2C_BITBANG_H +#include <gr_core_api.h> #include <i2c.h> #include <i2c_bbio.h> @@ -30,8 +31,8 @@ * \brief class for controlling i2c bus * \ingroup base */ -class i2c_bitbang : public i2c { - friend i2c_sptr make_i2c_bitbang (i2c_bbio_sptr io); +class GR_CORE_API i2c_bitbang : public i2c { + friend GR_CORE_API i2c_sptr make_i2c_bitbang (i2c_bbio_sptr io); i2c_bitbang (i2c_bbio_sptr io); public: @@ -57,7 +58,7 @@ private: i2c_bbio_sptr d_io; }; -i2c_sptr make_i2c_bitbang (i2c_bbio_sptr io); +GR_CORE_API i2c_sptr make_i2c_bitbang (i2c_bbio_sptr io); #endif /* INCLUDED_I2C_BITBANG_H */ diff --git a/gnuradio-core/src/lib/io/microtune_4702.h b/gnuradio-core/src/lib/io/microtune_4702.h index 95c64abe7..fd8d89305 100644 --- a/gnuradio-core/src/lib/io/microtune_4702.h +++ b/gnuradio-core/src/lib/io/microtune_4702.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_MICROTUNE_4702_H #define INCLUDED_MICROTUNE_4702_H +#include <gr_core_api.h> #include <microtune_xxxx.h> /*! @@ -30,7 +31,7 @@ * \ingroup hardware */ -class microtune_4702 : public microtune_xxxx { +class GR_CORE_API microtune_4702 : public microtune_xxxx { public: microtune_4702 (i2c_sptr i2c, int i2c_addr); diff --git a/gnuradio-core/src/lib/io/microtune_4702_eval_board.h b/gnuradio-core/src/lib/io/microtune_4702_eval_board.h index 6e9726917..e3c07fdf9 100644 --- a/gnuradio-core/src/lib/io/microtune_4702_eval_board.h +++ b/gnuradio-core/src/lib/io/microtune_4702_eval_board.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_MICROTUNE_4702_EVAL_BOARD_H #define INCLUDED_MICROTUNE_4702_EVAL_BOARD_H +#include <gr_core_api.h> #include "microtune_xxxx_eval_board.h" /*! @@ -30,7 +31,7 @@ * \ingroup hardware */ -class microtune_4702_eval_board : public microtune_xxxx_eval_board { +class GR_CORE_API microtune_4702_eval_board : public microtune_xxxx_eval_board { public: microtune_4702_eval_board (int which_pp = 0); ~microtune_4702_eval_board (); diff --git a/gnuradio-core/src/lib/io/microtune_4937.h b/gnuradio-core/src/lib/io/microtune_4937.h index b263ceb0f..bc8a26c64 100644 --- a/gnuradio-core/src/lib/io/microtune_4937.h +++ b/gnuradio-core/src/lib/io/microtune_4937.h @@ -23,13 +23,14 @@ #ifndef INCLUDED_MICROTUNE_4937_H #define INCLUDED_MICROTUNE_4937_H +#include <gr_core_api.h> #include <microtune_xxxx.h> /*! * \brief class for controlling microtune 4937 tuner module * \ingroup hardware */ -class microtune_4937 : public microtune_xxxx { +class GR_CORE_API microtune_4937 : public microtune_xxxx { public: microtune_4937 (i2c_sptr i2c, int i2c_addr = 0x61); virtual ~microtune_4937 (); diff --git a/gnuradio-core/src/lib/io/microtune_4937_eval_board.h b/gnuradio-core/src/lib/io/microtune_4937_eval_board.h index 154a7281a..09c00d116 100644 --- a/gnuradio-core/src/lib/io/microtune_4937_eval_board.h +++ b/gnuradio-core/src/lib/io/microtune_4937_eval_board.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_MICROTUNE_4937_EVAL_BOARD_H #define INCLUDED_MICROTUNE_4937_EVAL_BOARD_H +#include <gr_core_api.h> #include "microtune_xxxx_eval_board.h" /*! @@ -30,7 +31,7 @@ * \ingroup hardware */ -class microtune_4937_eval_board : public microtune_xxxx_eval_board { +class GR_CORE_API microtune_4937_eval_board : public microtune_xxxx_eval_board { public: microtune_4937_eval_board (int which_pp = 0); ~microtune_4937_eval_board (); diff --git a/gnuradio-core/src/lib/io/microtune_xxxx.h b/gnuradio-core/src/lib/io/microtune_xxxx.h index 4d5074a85..8b6ec25aa 100644 --- a/gnuradio-core/src/lib/io/microtune_xxxx.h +++ b/gnuradio-core/src/lib/io/microtune_xxxx.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_MICROTUNE_XXXX_H #define INCLUDED_MICROTUNE_XXXX_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> class i2c; @@ -32,7 +33,7 @@ typedef boost::shared_ptr<i2c> i2c_sptr; * \brief abstract class for controlling microtune {4937,4702} tuner modules * \ingroup base */ -class microtune_xxxx { +class GR_CORE_API microtune_xxxx { public: microtune_xxxx () {} virtual ~microtune_xxxx (); diff --git a/gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h b/gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h index 808075e55..08aa438c0 100644 --- a/gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h +++ b/gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_MICROTUNE_XXXX_EVAL_BOARD_H #define INCLUDED_MICROTUNE_XXXX_EVAL_BOARD_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> class microtune_xxxx; @@ -37,7 +38,7 @@ typedef boost::shared_ptr<i2c> i2c_sptr; * \brief abstract class for controlling microtune xxxx eval board * \ingroup hardware */ -class microtune_xxxx_eval_board { +class GR_CORE_API microtune_xxxx_eval_board { public: microtune_xxxx_eval_board (int which_pp = 0); virtual ~microtune_xxxx_eval_board (); diff --git a/gnuradio-core/src/lib/io/ppio.h b/gnuradio-core/src/lib/io/ppio.h index e1a62e2a3..f7d14d52e 100644 --- a/gnuradio-core/src/lib/io/ppio.h +++ b/gnuradio-core/src/lib/io/ppio.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_PPIO_H #define INCLUDED_PPIO_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> class ppio; @@ -34,7 +35,7 @@ typedef boost::shared_ptr<ppio> ppio_sptr; * \ingroup hardware */ -class ppio { +class GR_CORE_API ppio { public: ppio () {} virtual ~ppio (); @@ -55,7 +56,7 @@ class ppio { * Split out from class to make life easier for SWIG */ -ppio_sptr make_ppio (int which_pp); +GR_CORE_API ppio_sptr make_ppio (int which_pp); #endif /* INCLUDED_PPIO_H */ diff --git a/gnuradio-core/src/lib/io/ppio_ppdev.h b/gnuradio-core/src/lib/io/ppio_ppdev.h index b5abe3f0a..5d082d784 100644 --- a/gnuradio-core/src/lib/io/ppio_ppdev.h +++ b/gnuradio-core/src/lib/io/ppio_ppdev.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_PPIO_PPDEV_H #define INCLUDED_PPIO_PPDEV_H +#include <gr_core_api.h> #include <ppio.h> class ppio_ppdev; @@ -33,8 +34,8 @@ typedef boost::shared_ptr<ppio_ppdev> ppio_ppdev_sptr; * \ingroup hardware */ -class ppio_ppdev : public ppio { - friend ppio_ppdev_sptr make_ppio_ppdev (int which = 0); +class GR_CORE_API ppio_ppdev : public ppio { + friend GR_CORE_API ppio_ppdev_sptr make_ppio_ppdev (int which = 0); ppio_ppdev (int which = 0); public: diff --git a/gnuradio-core/src/lib/io/sdr_1000.h b/gnuradio-core/src/lib/io/sdr_1000.h index 113e85deb..6647fbba5 100644 --- a/gnuradio-core/src/lib/io/sdr_1000.h +++ b/gnuradio-core/src/lib/io/sdr_1000.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_SDR_1000_H #define INCLUDED_SDR_1000_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> class ppio; @@ -36,7 +37,7 @@ enum { L_EXT = 0, L_BAND = 1, L_DDS0 = 2, L_DDS1 = 3 }; * \sa sdr_1000.py for a higher level interface. * \ingroup hardware */ -class sdr_1000_base { +class GR_CORE_API sdr_1000_base { ppio_sptr d_ppio; int d_shadow[4]; // shadow latches diff --git a/gnuradio-core/src/lib/missing/CMakeLists.txt b/gnuradio-core/src/lib/missing/CMakeLists.txt new file mode 100644 index 000000000..0a376645f --- /dev/null +++ b/gnuradio-core/src/lib/missing/CMakeLists.txt @@ -0,0 +1,32 @@ +# Copyright 2010 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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/bug_work_around_8.cc +) + +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)") + list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/posix_memalign.cc + ) +endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)") diff --git a/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt b/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt new file mode 100644 index 000000000..f073249f6 --- /dev/null +++ b/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt @@ -0,0 +1,62 @@ +# Copyright 2010-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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## +#MSVC workaround: we cant have dynamically sized arrays. +#So ifdef a max array bounds that is larger than NN and NROOTS +#Its a bit of a hack, but if you look at the code, its so full of ifdefs, +#and lacks optimization where it should be pre-allocating these arrays. +if(MSVC) + set_source_files_properties( + ${CMAKE_CURRENT_SOURCE_DIR}/exercise.c + ${CMAKE_CURRENT_SOURCE_DIR}/decode_rs.c + PROPERTIES COMPILE_DEFINITIONS "MAX_ARRAY=256;" + ) +endif(MSVC) + +set(gr_core_rs_sources + ${CMAKE_CURRENT_SOURCE_DIR}/encode_rs.c + ${CMAKE_CURRENT_SOURCE_DIR}/decode_rs.c + ${CMAKE_CURRENT_SOURCE_DIR}/init_rs.c +) + +######################################################################## +# Setup sources and includes +######################################################################## +list(APPEND gnuradio_core_sources ${gr_core_rs_sources}) + +install( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/rs.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Register unit tests +######################################################################## +if(ENABLE_TESTING) +add_executable(gr_core_rstest + ${gr_core_rs_sources} + ${CMAKE_CURRENT_SOURCE_DIR}/rstest.c + ${CMAKE_CURRENT_SOURCE_DIR}/exercise.c +) +add_test(gr-core-reed-solomon-test gr_core_rstest) +endif(ENABLE_TESTING) diff --git a/gnuradio-core/src/lib/reed-solomon/char.h b/gnuradio-core/src/lib/reed-solomon/char.h index 2fbcb504a..8010fb0b9 100644 --- a/gnuradio-core/src/lib/reed-solomon/char.h +++ b/gnuradio-core/src/lib/reed-solomon/char.h @@ -6,6 +6,8 @@ #define DTYPE unsigned char +#include <gr_core_api.h> + /* Reed-Solomon codec control block */ struct rs { unsigned int mm; /* Bits per symbol */ @@ -44,12 +46,11 @@ static inline int modnn(struct rs *rs,int x){ #define INIT_RS init_rs_char #define FREE_RS free_rs_char -void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity); -int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras); -void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned int fcr, +GR_CORE_API void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity); +GR_CORE_API int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras); +GR_CORE_API void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned int fcr, unsigned int prim,unsigned int nroots); -void FREE_RS(void *p); - +GR_CORE_API void FREE_RS(void *p); diff --git a/gnuradio-core/src/lib/reed-solomon/decode_rs.c b/gnuradio-core/src/lib/reed-solomon/decode_rs.c index 27ddd8532..ba60b89ee 100644 --- a/gnuradio-core/src/lib/reed-solomon/decode_rs.c +++ b/gnuradio-core/src/lib/reed-solomon/decode_rs.c @@ -8,7 +8,6 @@ #endif #include <string.h> -#include <strings.h> #define NULL ((void *)0) #define min(a,b) ((a) < (b) ? (a) : (b)) @@ -32,11 +31,19 @@ DTYPE *data, int *eras_pos, int no_eras){ #endif int deg_lambda, el, deg_omega; int i, j, r,k; +#ifdef MAX_ARRAY + DTYPE u,q,tmp,num1,num2,den,discr_r; + DTYPE lambda[MAX_ARRAY], s[MAX_ARRAY]; /* Err+Eras Locator poly + * and syndrome poly */ + DTYPE b[MAX_ARRAY], t[MAX_ARRAY], omega[MAX_ARRAY]; + DTYPE root[MAX_ARRAY], reg[MAX_ARRAY], loc[MAX_ARRAY]; +#else DTYPE u,q,tmp,num1,num2,den,discr_r; DTYPE lambda[NROOTS+1], s[NROOTS]; /* Err+Eras Locator poly * and syndrome poly */ DTYPE b[NROOTS+1], t[NROOTS+1], omega[NROOTS+1]; DTYPE root[NROOTS], reg[NROOTS+1], loc[NROOTS]; +#endif int syn_error, count; /* form the syndromes; i.e., evaluate data(x) at roots of g(x) */ diff --git a/gnuradio-core/src/lib/reed-solomon/encode_rs.c b/gnuradio-core/src/lib/reed-solomon/encode_rs.c index 147f0a9e3..9d56d0bf1 100644 --- a/gnuradio-core/src/lib/reed-solomon/encode_rs.c +++ b/gnuradio-core/src/lib/reed-solomon/encode_rs.c @@ -3,7 +3,6 @@ * May be used under the terms of the GNU General Public License (GPL) */ #include <string.h> -#include <strings.h> #ifdef FIXED #include "fixed.h" diff --git a/gnuradio-core/src/lib/reed-solomon/exercise.c b/gnuradio-core/src/lib/reed-solomon/exercise.c index 1e04f618d..987fe1aeb 100644 --- a/gnuradio-core/src/lib/reed-solomon/exercise.c +++ b/gnuradio-core/src/lib/reed-solomon/exercise.c @@ -13,7 +13,6 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <strings.h> #ifdef FIXED #include "fixed.h" @@ -47,11 +46,19 @@ int trials){ #if !defined(CCSDS) && !defined(FIXED) struct rs *rs = (struct rs *)p; #endif +#if MAX_ARRAY + DTYPE block[MAX_ARRAY],tblock[MAX_ARRAY]; + int i; + int errors; + int errlocs[MAX_ARRAY]; + int derrlocs[MAX_ARRAY]; +#else DTYPE block[NN],tblock[NN]; int i; int errors; int errlocs[NN]; int derrlocs[NROOTS]; +#endif int derrors; int errval,errloc; int erasures; diff --git a/gnuradio-core/src/lib/reed-solomon/fixed.h b/gnuradio-core/src/lib/reed-solomon/fixed.h index 9f0ddd9a4..30091e7bf 100644 --- a/gnuradio-core/src/lib/reed-solomon/fixed.h +++ b/gnuradio-core/src/lib/reed-solomon/fixed.h @@ -7,6 +7,8 @@ */ #define DTYPE unsigned char +#include <gr_core_api.h> + static inline int mod255(int x){ while (x >= 255) { x -= 255; @@ -34,5 +36,5 @@ extern unsigned char CCSDS_poly[]; #define ENCODE_RS encode_rs_8 #define DECODE_RS decode_rs_8 -void ENCODE_RS(DTYPE *data,DTYPE *parity); -int DECODE_RS(DTYPE *data, int *eras_pos, int no_eras); +GR_CORE_API void ENCODE_RS(DTYPE *data,DTYPE *parity); +GR_CORE_API int DECODE_RS(DTYPE *data, int *eras_pos, int no_eras);
\ No newline at end of file diff --git a/gnuradio-core/src/lib/reed-solomon/int.h b/gnuradio-core/src/lib/reed-solomon/int.h index 2b0405ae0..79979f827 100644 --- a/gnuradio-core/src/lib/reed-solomon/int.h +++ b/gnuradio-core/src/lib/reed-solomon/int.h @@ -5,8 +5,10 @@ */ #define DTYPE int +#include <gr_core_api.h> + /* Reed-Solomon codec control block */ -struct rs { +struct GR_CORE_API rs { unsigned int mm; /* Bits per symbol */ unsigned int nn; /* Symbols per block (= (1<<mm)-1) */ int *alpha_to; /* log lookup table */ @@ -43,12 +45,11 @@ static inline int modnn(struct rs *rs,int x){ #define INIT_RS init_rs_int #define FREE_RS free_rs_int -void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity); -int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras); +GR_CORE_API void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity); +GR_CORE_API int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras); void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned int fcr, unsigned int prim,unsigned int nroots); -void FREE_RS(void *p); - +GR_CORE_API void FREE_RS(void *p); diff --git a/gnuradio-core/src/lib/reed-solomon/rs.h b/gnuradio-core/src/lib/reed-solomon/rs.h index 9e731d9d9..97e78769e 100644 --- a/gnuradio-core/src/lib/reed-solomon/rs.h +++ b/gnuradio-core/src/lib/reed-solomon/rs.h @@ -1,28 +1,29 @@ +#include <gr_core_api.h> /* User include file for the Reed-Solomon codec * Copyright 2002, Phil Karn KA9Q * May be used under the terms of the GNU General Public License (GPL) */ /* General purpose RS codec, 8-bit symbols */ -void encode_rs_char(void *rs,unsigned char *data,unsigned char *parity); -int decode_rs_char(void *rs,unsigned char *data,int *eras_pos, +GR_CORE_API void encode_rs_char(void *rs,unsigned char *data,unsigned char *parity); +GR_CORE_API int decode_rs_char(void *rs,unsigned char *data,int *eras_pos, int no_eras); -void *init_rs_char(unsigned int symsize,unsigned int gfpoly, +GR_CORE_API void *init_rs_char(unsigned int symsize,unsigned int gfpoly, unsigned int fcr,unsigned int prim,unsigned int nroots); -void free_rs_char(void *rs); +GR_CORE_API void free_rs_char(void *rs); /* General purpose RS codec, integer symbols */ -void encode_rs_int(void *rs,int *data,int *parity); -int decode_rs_int(void *rs,int *data,int *eras_pos,int no_eras); -void *init_rs_int(unsigned int symsize,unsigned int gfpoly,unsigned int fcr, +GR_CORE_API void encode_rs_int(void *rs,int *data,int *parity); +GR_CORE_API int decode_rs_int(void *rs,int *data,int *eras_pos,int no_eras); +GR_CORE_API void *init_rs_int(unsigned int symsize,unsigned int gfpoly,unsigned int fcr, unsigned int prim,unsigned int nroots); -void free_rs_int(void *rs); +GR_CORE_API void free_rs_int(void *rs); /* CCSDS standard (255,223) RS codec with conventional (*not* dual-basis) * symbol representation */ -void encode_rs_8(unsigned char *data,unsigned char *parity); -int decode_rs_8(unsigned char *data,int *eras_pos,int no_eras); +GR_CORE_API void encode_rs_8(unsigned char *data,unsigned char *parity); +GR_CORE_API int decode_rs_8(unsigned char *data,int *eras_pos,int no_eras); /* Tables to map from conventional->dual (Taltab) and * dual->conventional (Tal1tab) bases diff --git a/gnuradio-core/src/lib/runtime/CMakeLists.txt b/gnuradio-core/src/lib/runtime/CMakeLists.txt new file mode 100644 index 000000000..52cb39c40 --- /dev/null +++ b/gnuradio-core/src/lib/runtime/CMakeLists.txt @@ -0,0 +1,162 @@ +# Copyright 2010-2010 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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +list(APPEND gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_flowgraph.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_flat_flowgraph.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_executor.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2_detail.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_local_sighandler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_accepter.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_pagesize.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_preferences.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_sts.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_tpb.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sptr_magic.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sys_paths.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block_impl.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_detail.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_thread_body.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_mmap_shm_open.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_mmap_tmpfile.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_createfilemapping.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_sysv_shm.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_select_handler.cc + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tag_info.cc +) + +######################################################################## +# Append gnuradio-core test sources +######################################################################## +list(APPEND test_gnuradio_core_sources + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2_derived.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_buffer.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_flowgraph.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_top_block.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_io_signature.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_vmcircbuf.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_block_tags.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_runtime.cc + ${CMAKE_CURRENT_SOURCE_DIR}/qa_set_msg_handler.cc +) + +######################################################################## +# Install runtime headers +######################################################################## +install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_flowgraph.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_flat_flowgraph.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_executor.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2_detail.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_complex.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_local_sighandler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_accepter.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_pagesize.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_preferences.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_runtime_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_sts.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_tpb.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_select_handler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sptr_magic.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block_impl.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_detail.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_thread_body.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_timer.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sys_paths.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_types.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_unittests.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf.h + ${CMAKE_CURRENT_SOURCE_DIR}/gr_tag_info.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Install swig headers +######################################################################## +if(ENABLE_PYTHON) +install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.i + ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.i + ${CMAKE_CURRENT_SOURCE_DIR}/runtime.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) +endif(ENABLE_PYTHON) diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.h b/gnuradio-core/src/lib/runtime/gr_basic_block.h index 3b0cd51dd..2adca8ccb 100644 --- a/gnuradio-core/src/lib/runtime/gr_basic_block.h +++ b/gnuradio-core/src/lib/runtime/gr_basic_block.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_BASIC_BLOCK_H #define INCLUDED_GR_BASIC_BLOCK_H +#include <gr_core_api.h> #include <gr_runtime_types.h> #include <gr_sptr_magic.h> #include <boost/enable_shared_from_this.hpp> @@ -41,7 +42,7 @@ * signal processing functions. */ -class gr_basic_block : public gr_msg_accepter, public boost::enable_shared_from_this<gr_basic_block> +class GR_CORE_API gr_basic_block : public gr_msg_accepter, public boost::enable_shared_from_this<gr_basic_block> { typedef boost::function<void(pmt::pmt_t)> msg_handler_t; @@ -158,7 +159,7 @@ inline bool operator<(gr_basic_block_sptr lhs, gr_basic_block_sptr rhs) typedef std::vector<gr_basic_block_sptr> gr_basic_block_vector_t; typedef std::vector<gr_basic_block_sptr>::iterator gr_basic_block_viter_t; -long gr_basic_block_ncurrently_allocated(); +GR_CORE_API long gr_basic_block_ncurrently_allocated(); inline std::ostream &operator << (std::ostream &os, gr_basic_block_sptr basic_block) { diff --git a/gnuradio-core/src/lib/runtime/gr_block.h b/gnuradio-core/src/lib/runtime/gr_block.h index fc22f9ea8..2453e97b8 100644 --- a/gnuradio-core/src/lib/runtime/gr_block.h +++ b/gnuradio-core/src/lib/runtime/gr_block.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_BLOCK_H #define INCLUDED_GR_BLOCK_H +#include <gr_core_api.h> #include <gr_basic_block.h> /*! @@ -53,7 +54,7 @@ * It reads the input items and writes the output items. */ -class gr_block : public gr_basic_block { +class GR_CORE_API gr_block : public gr_basic_block { public: @@ -300,7 +301,7 @@ class gr_block : public gr_basic_block { const pmt::pmt_t &key); // These are really only for internal use, but leaving them public avoids - // having to work up an ever-varying list of friends + // having to work up an ever-varying list of friend GR_CORE_APIs public: gr_block_detail_sptr detail () const { return d_detail; } diff --git a/gnuradio-core/src/lib/runtime/gr_block_detail.h b/gnuradio-core/src/lib/runtime/gr_block_detail.h index d7ec3b136..633da1b0c 100644 --- a/gnuradio-core/src/lib/runtime/gr_block_detail.h +++ b/gnuradio-core/src/lib/runtime/gr_block_detail.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_BLOCK_DETAIL_H #define INCLUDED_GR_BLOCK_DETAIL_H +#include <gr_core_api.h> #include <gr_runtime_types.h> #include <gr_tpb_detail.h> #include <gr_tag_info.h> @@ -36,7 +37,7 @@ * of almost all users of GNU Radio. This decoupling also means that * we can make changes to the guts without having to recompile everything. */ -class gr_block_detail { +class GR_CORE_API gr_block_detail { public: ~gr_block_detail (); @@ -172,16 +173,16 @@ class gr_block_detail { gr_block_detail (unsigned int ninputs, unsigned int noutputs); - friend class gr_tpb_detail; + friend struct gr_tpb_detail; - friend gr_block_detail_sptr + friend GR_CORE_API gr_block_detail_sptr gr_make_block_detail (unsigned int ninputs, unsigned int noutputs); }; -gr_block_detail_sptr +GR_CORE_API gr_block_detail_sptr gr_make_block_detail (unsigned int ninputs, unsigned int noutputs); -long +GR_CORE_API long gr_block_detail_ncurrently_allocated (); #endif /* INCLUDED_GR_BLOCK_DETAIL_H */ diff --git a/gnuradio-core/src/lib/runtime/gr_block_executor.cc b/gnuradio-core/src/lib/runtime/gr_block_executor.cc index a8d0bc1c8..b3f987f72 100644 --- a/gnuradio-core/src/lib/runtime/gr_block_executor.cc +++ b/gnuradio-core/src/lib/runtime/gr_block_executor.cc @@ -29,6 +29,7 @@ #include <gr_block_detail.h> #include <gr_buffer.h> #include <boost/thread.hpp> +#include <boost/format.hpp> #include <iostream> #include <limits> #include <assert.h> @@ -165,9 +166,8 @@ gr_block_executor::gr_block_executor (gr_block_sptr block) : d_block(block), d_log(0) { if (ENABLE_LOGGING){ - char name[100]; - snprintf(name, sizeof(name), "sst-%03d.log", which_scheduler++); - d_log = new std::ofstream(name); + std::string name = str(boost::format("sst-%03d.log") % which_scheduler++); + d_log = new std::ofstream(name.c_str()); std::unitbuf(*d_log); // make it unbuffered... *d_log << "gr_block_executor: " << d_block << std::endl; diff --git a/gnuradio-core/src/lib/runtime/gr_block_executor.h b/gnuradio-core/src/lib/runtime/gr_block_executor.h index 77ace5522..cd93212e1 100644 --- a/gnuradio-core/src/lib/runtime/gr_block_executor.h +++ b/gnuradio-core/src/lib/runtime/gr_block_executor.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_BLOCK_EXECUTOR_H #define INCLUDED_GR_BLOCK_EXECUTOR_H +#include <gr_core_api.h> #include <gr_runtime_types.h> #include <fstream> #include <gruel/pmt.h> @@ -36,7 +37,7 @@ * \ingroup internal */ -class gr_block_executor { +class GR_CORE_API gr_block_executor { protected: gr_block_sptr d_block; // The block we're trying to run std::ofstream *d_log; diff --git a/gnuradio-core/src/lib/runtime/gr_buffer.h b/gnuradio-core/src/lib/runtime/gr_buffer.h index e5725d386..e7c0a06a5 100644 --- a/gnuradio-core/src/lib/runtime/gr_buffer.h +++ b/gnuradio-core/src/lib/runtime/gr_buffer.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_BUFFER_H #define INCLUDED_GR_BUFFER_H +#include <gr_core_api.h> #include <gr_runtime_types.h> #include <boost/weak_ptr.hpp> #include <gruel/thread.h> @@ -42,14 +43,14 @@ class gr_vmcircbuf; * \param sizeof_item is the size of an item in bytes. * \param link is the block that writes to this buffer. */ -gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link=gr_block_sptr()); +GR_CORE_API gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link=gr_block_sptr()); /*! * \brief Single writer, multiple reader fifo. * \ingroup internal */ -class gr_buffer { +class GR_CORE_API gr_buffer { public: virtual ~gr_buffer (); @@ -115,8 +116,8 @@ class gr_buffer { private: friend class gr_buffer_reader; - friend gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link); - friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link); + friend GR_CORE_API gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link); + friend GR_CORE_API gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link); protected: char *d_base; // base address of buffer @@ -192,11 +193,11 @@ class gr_buffer { * \param nzero_preload -- number of zero items to "preload" into buffer. * \param link is the block that reads from the buffer using this gr_buffer_reader. */ -gr_buffer_reader_sptr +GR_CORE_API gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link=gr_block_sptr()); //! returns # of gr_buffers currently allocated -long gr_buffer_ncurrently_allocated (); +GR_CORE_API long gr_buffer_ncurrently_allocated (); // --------------------------------------------------------------------------- @@ -206,7 +207,7 @@ long gr_buffer_ncurrently_allocated (); * \ingroup internal */ -class gr_buffer_reader { +class GR_CORE_API gr_buffer_reader { public: ~gr_buffer_reader (); @@ -276,7 +277,7 @@ class gr_buffer_reader { private: friend class gr_buffer; - friend gr_buffer_reader_sptr + friend GR_CORE_API gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link); @@ -290,7 +291,7 @@ class gr_buffer_reader { }; //! returns # of gr_buffer_readers currently allocated -long gr_buffer_reader_ncurrently_allocated (); +GR_CORE_API long gr_buffer_reader_ncurrently_allocated (); #endif /* INCLUDED_GR_BUFFER_H */ diff --git a/gnuradio-core/src/lib/runtime/gr_dispatcher.h b/gnuradio-core/src/lib/runtime/gr_dispatcher.h index 34f825102..735974766 100644 --- a/gnuradio-core/src/lib/runtime/gr_dispatcher.h +++ b/gnuradio-core/src/lib/runtime/gr_dispatcher.h @@ -23,14 +23,15 @@ #ifndef INCLUDED_GR_DISPATCHER_H #define INCLUDED_GR_DISPATCHER_H +#include <gr_core_api.h> #include <gr_select_handler.h> #include <vector> class gr_dispatcher; typedef boost::shared_ptr<gr_dispatcher> gr_dispatcher_sptr; -gr_dispatcher_sptr gr_dispatcher_singleton(); -gr_dispatcher_sptr gr_make_dispatcher(); +GR_CORE_API gr_dispatcher_sptr gr_dispatcher_singleton(); +GR_CORE_API gr_dispatcher_sptr gr_make_dispatcher(); /*! * \brief invoke callbacks based on select. @@ -38,10 +39,10 @@ gr_dispatcher_sptr gr_make_dispatcher(); * * \sa gr_select_handler */ -class gr_dispatcher +class GR_CORE_API gr_dispatcher { gr_dispatcher(); - friend gr_dispatcher_sptr gr_make_dispatcher(); + friend GR_CORE_API gr_dispatcher_sptr gr_make_dispatcher(); std::vector<gr_select_handler_sptr> d_handler; int d_max_index; diff --git a/gnuradio-core/src/lib/runtime/gr_error_handler.h b/gnuradio-core/src/lib/runtime/gr_error_handler.h index aedb6f41f..4c30791f2 100644 --- a/gnuradio-core/src/lib/runtime/gr_error_handler.h +++ b/gnuradio-core/src/lib/runtime/gr_error_handler.h @@ -43,6 +43,7 @@ #ifndef INCLUDED_GR_ERROR_HANDLER_H #define INCLUDED_GR_ERROR_HANDLER_H +#include <gr_core_api.h> #include <stdarg.h> #include <string> #include <cstdio> // for FILE @@ -51,7 +52,7 @@ * \brief abstract error handler * \ingroup base */ -class gr_error_handler { +class GR_CORE_API gr_error_handler { public: enum seriousness { ERR_DEBUG = 0x00000000, @@ -90,7 +91,7 @@ protected: }; -class gr_base_error_handler : public gr_error_handler { +class GR_CORE_API gr_base_error_handler : public gr_error_handler { int d_nwarnings; int d_nerrors; @@ -102,7 +103,7 @@ public: void count_error(seriousness s); }; -class gr_file_error_handler : public gr_base_error_handler { +class GR_CORE_API gr_file_error_handler : public gr_base_error_handler { FILE *d_file; int d_fd; public: diff --git a/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h b/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h index 8e9834337..2cc883686 100644 --- a/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h +++ b/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h @@ -23,22 +23,23 @@ #ifndef INCLUDED_GR_FLAT_FLOWGRAPH_H #define INCLUDED_GR_FLAT_FLOWGRAPH_H +#include <gr_core_api.h> #include <gr_flowgraph.h> #include <gr_block.h> // Create a shared pointer to a heap allocated gr_flat_flowgraph // (types defined in gr_runtime_types.h) -gr_flat_flowgraph_sptr gr_make_flat_flowgraph(); +GR_CORE_API gr_flat_flowgraph_sptr gr_make_flat_flowgraph(); /*! *\brief Class specializing gr_flat_flowgraph that has all nodes * as gr_blocks, with no hierarchy * \ingroup internal */ -class gr_flat_flowgraph : public gr_flowgraph +class GR_CORE_API gr_flat_flowgraph : public gr_flowgraph { public: - friend gr_flat_flowgraph_sptr gr_make_flat_flowgraph(); + friend GR_CORE_API gr_flat_flowgraph_sptr gr_make_flat_flowgraph(); // Destruct an arbitrary gr_flat_flowgraph ~gr_flat_flowgraph(); diff --git a/gnuradio-core/src/lib/runtime/gr_flowgraph.h b/gnuradio-core/src/lib/runtime/gr_flowgraph.h index 8e988506b..8f9a8ba71 100644 --- a/gnuradio-core/src/lib/runtime/gr_flowgraph.h +++ b/gnuradio-core/src/lib/runtime/gr_flowgraph.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_FLOWGRAPH_H #define INCLUDED_GR_FLOWGRAPH_H +#include <gr_core_api.h> #include <gr_basic_block.h> #include <iostream> @@ -30,7 +31,7 @@ * \brief Class representing a specific input or output graph endpoint * \ingroup internal */ -class gr_endpoint +class GR_CORE_API gr_endpoint { private: gr_basic_block_sptr d_basic_block; @@ -59,7 +60,7 @@ typedef std::vector<gr_endpoint>::iterator gr_endpoint_viter_t; *\brief Class representing a connection between to graph endpoints * */ -class gr_edge +class GR_CORE_API gr_edge { public: gr_edge() : d_src(), d_dst() { }; @@ -81,16 +82,16 @@ typedef std::vector<gr_edge>::iterator gr_edge_viter_t; // Create a shared pointer to a heap allocated flowgraph // (types defined in gr_runtime_types.h) -gr_flowgraph_sptr gr_make_flowgraph(); +GR_CORE_API gr_flowgraph_sptr gr_make_flowgraph(); /*! * \brief Class representing a directed, acyclic graph of basic blocks * \ingroup internal */ -class gr_flowgraph +class GR_CORE_API gr_flowgraph { public: - friend gr_flowgraph_sptr gr_make_flowgraph(); + friend GR_CORE_API gr_flowgraph_sptr gr_make_flowgraph(); // Destruct an arbitrary flowgraph ~gr_flowgraph(); diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2.h b/gnuradio-core/src/lib/runtime/gr_hier_block2.h index 0a40c36b7..8687b7d99 100644 --- a/gnuradio-core/src/lib/runtime/gr_hier_block2.h +++ b/gnuradio-core/src/lib/runtime/gr_hier_block2.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_HIER_BLOCK2_H #define INCLUDED_GR_HIER_BLOCK2_H +#include <gr_core_api.h> #include <gr_basic_block.h> /*! * \brief public constructor for gr_hier_block2 */ -gr_hier_block2_sptr gr_make_hier_block2(const std::string &name, +GR_CORE_API gr_hier_block2_sptr gr_make_hier_block2(const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature); @@ -40,11 +41,11 @@ class gr_hier_block2_detail; * \ingroup base_blk * */ -class gr_hier_block2 : public gr_basic_block +class GR_CORE_API gr_hier_block2 : public gr_basic_block { private: friend class gr_hier_block2_detail; - friend gr_hier_block2_sptr gr_make_hier_block2(const std::string &name, + friend GR_CORE_API gr_hier_block2_sptr gr_make_hier_block2(const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature); diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h index 6f5384e5a..5a77d6a03 100644 --- a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h +++ b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_HIER_BLOCK2_DETAIL_H #define INCLUDED_GR_HIER_BLOCK2_DETAIL_H +#include <gr_core_api.h> #include <gr_hier_block2.h> #include <gr_flat_flowgraph.h> #include <boost/utility.hpp> @@ -29,7 +30,7 @@ /*! * \ingroup internal */ -class gr_hier_block2_detail : boost::noncopyable +class GR_CORE_API gr_hier_block2_detail : boost::noncopyable { public: gr_hier_block2_detail(gr_hier_block2 *owner); diff --git a/gnuradio-core/src/lib/runtime/gr_io_signature.h b/gnuradio-core/src/lib/runtime/gr_io_signature.h index 5d194cf55..11c6b7f13 100644 --- a/gnuradio-core/src/lib/runtime/gr_io_signature.h +++ b/gnuradio-core/src/lib/runtime/gr_io_signature.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_IO_SIGNATURE_H #define INCLUDED_IO_SIGNATURE_H +#include <gr_core_api.h> #include <gr_runtime_types.h> /*! @@ -33,7 +34,7 @@ * \param max_streams specify maximum number of streams (>= min_streams or -1 -> infinite) * \param sizeof_stream_item specify the size of the items in each stream */ -gr_io_signature_sptr +GR_CORE_API gr_io_signature_sptr gr_make_io_signature(int min_streams, int max_streams, int sizeof_stream_item); @@ -45,7 +46,7 @@ gr_make_io_signature(int min_streams, int max_streams, * \param sizeof_stream_item1 specify the size of the items in the first stream * \param sizeof_stream_item2 specify the size of the items in the second and subsequent streams */ -gr_io_signature_sptr +GR_CORE_API gr_io_signature_sptr gr_make_io_signature2(int min_streams, int max_streams, int sizeof_stream_item1, int sizeof_stream_item2 @@ -60,7 +61,7 @@ gr_make_io_signature2(int min_streams, int max_streams, * \param sizeof_stream_item2 specify the size of the items in the second stream * \param sizeof_stream_item3 specify the size of the items in the third and subsequent streams */ -gr_io_signature_sptr +GR_CORE_API gr_io_signature_sptr gr_make_io_signature3(int min_streams, int max_streams, int sizeof_stream_item1, int sizeof_stream_item2, @@ -78,7 +79,7 @@ gr_make_io_signature3(int min_streams, int max_streams, * value of the last entry in sizeof_stream_items is used for the missing values. * sizeof_stream_items must contain at least 1 entry. */ -gr_io_signature_sptr +GR_CORE_API gr_io_signature_sptr gr_make_io_signaturev(int min_streams, int max_streams, const std::vector<int> &sizeof_stream_items); @@ -87,7 +88,7 @@ gr_make_io_signaturev(int min_streams, int max_streams, * \brief i/o signature for input and output ports. * \brief misc */ -class gr_io_signature { +class GR_CORE_API gr_io_signature { int d_min_streams; int d_max_streams; std::vector<int> d_sizeof_stream_item; @@ -95,7 +96,7 @@ class gr_io_signature { gr_io_signature(int min_streams, int max_streams, const std::vector<int> &sizeof_stream_items); - friend gr_io_signature_sptr + friend GR_CORE_API gr_io_signature_sptr gr_make_io_signaturev(int min_streams, int max_streams, const std::vector<int> &sizeof_stream_items); diff --git a/gnuradio-core/src/lib/runtime/gr_local_sighandler.h b/gnuradio-core/src/lib/runtime/gr_local_sighandler.h index 6b60cf09a..9e4eacc47 100644 --- a/gnuradio-core/src/lib/runtime/gr_local_sighandler.h +++ b/gnuradio-core/src/lib/runtime/gr_local_sighandler.h @@ -27,6 +27,7 @@ #include <signal.h> #endif +#include <gr_core_api.h> #include <string> /*! @@ -36,7 +37,7 @@ * Constructor installs new handler, destructor reinstalls * original value. */ -class gr_local_sighandler { +class GR_CORE_API gr_local_sighandler { int d_signum; #ifdef HAVE_SIGACTION struct sigaction d_old_action; @@ -52,7 +53,7 @@ public: /*! * \brief Representation of signal. */ -class gr_signal +class GR_CORE_API gr_signal { int d_signum; public: diff --git a/gnuradio-core/src/lib/runtime/gr_message.h b/gnuradio-core/src/lib/runtime/gr_message.h index 179f7d9bc..ead002616 100644 --- a/gnuradio-core/src/lib/runtime/gr_message.h +++ b/gnuradio-core/src/lib/runtime/gr_message.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_MESSAGE_H #define INCLUDED_GR_MESSAGE_H +#include <gr_core_api.h> #include <gr_types.h> #include <string> @@ -31,10 +32,10 @@ typedef boost::shared_ptr<gr_message> gr_message_sptr; /*! * \brief public constructor for gr_message */ -gr_message_sptr +GR_CORE_API gr_message_sptr gr_make_message(long type = 0, double arg1 = 0, double arg2 = 0, size_t length = 0); -gr_message_sptr +GR_CORE_API gr_message_sptr gr_make_message_from_string(const std::string s, long type = 0, double arg1 = 0, double arg2 = 0); /*! @@ -44,7 +45,7 @@ gr_make_message_from_string(const std::string s, long type = 0, double arg1 = 0, * The ideas and method names for adjustable message length were * lifted from the click modular router "Packet" class. */ -class gr_message { +class GR_CORE_API gr_message { gr_message_sptr d_next; // link field for msg queue long d_type; // type of the message double d_arg1; // optional arg1 @@ -57,10 +58,10 @@ class gr_message { gr_message (long type, double arg1, double arg2, size_t length); - friend gr_message_sptr + friend GR_CORE_API gr_message_sptr gr_make_message (long type, double arg1, double arg2, size_t length); - friend gr_message_sptr + friend GR_CORE_API gr_message_sptr gr_make_message_from_string (const std::string s, long type, double arg1, double arg2); friend class gr_msg_queue; @@ -85,6 +86,6 @@ public: }; -long gr_message_ncurrently_allocated (); +GR_CORE_API long gr_message_ncurrently_allocated (); #endif /* INCLUDED_GR_MESSAGE_H */ diff --git a/gnuradio-core/src/lib/runtime/gr_msg_accepter.h b/gnuradio-core/src/lib/runtime/gr_msg_accepter.h index 79a631f3a..4aec127a9 100644 --- a/gnuradio-core/src/lib/runtime/gr_msg_accepter.h +++ b/gnuradio-core/src/lib/runtime/gr_msg_accepter.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_MSG_ACCEPTER_H #define INCLUDED_GR_MSG_ACCEPTER_H +#include <gr_core_api.h> #include <gruel/msg_accepter.h> #include <gruel/pmt.h> @@ -29,7 +30,7 @@ * \brief Accepts messages and inserts them into a message queue, then notifies * subclass gr_basic_block there is a message pending. */ -class gr_msg_accepter : public gruel::msg_accepter +class GR_CORE_API gr_msg_accepter : public gruel::msg_accepter { public: gr_msg_accepter(); diff --git a/gnuradio-core/src/lib/runtime/gr_msg_handler.h b/gnuradio-core/src/lib/runtime/gr_msg_handler.h index 774dce73e..ebe3ffe37 100644 --- a/gnuradio-core/src/lib/runtime/gr_msg_handler.h +++ b/gnuradio-core/src/lib/runtime/gr_msg_handler.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_MSG_HANDLER_H #define INCLUDED_GR_MSG_HANDLER_H +#include <gr_core_api.h> #include <gr_message.h> class gr_msg_handler; @@ -31,7 +32,7 @@ typedef boost::shared_ptr<gr_msg_handler> gr_msg_handler_sptr; * \brief abstract class of message handlers * \ingroup base */ -class gr_msg_handler { +class GR_CORE_API gr_msg_handler { public: virtual ~gr_msg_handler (); diff --git a/gnuradio-core/src/lib/runtime/gr_msg_queue.h b/gnuradio-core/src/lib/runtime/gr_msg_queue.h index 477b1ddf1..bf7b89882 100644 --- a/gnuradio-core/src/lib/runtime/gr_msg_queue.h +++ b/gnuradio-core/src/lib/runtime/gr_msg_queue.h @@ -22,19 +22,20 @@ #ifndef INCLUDED_GR_MSG_QUEUE_H #define INCLUDED_GR_MSG_QUEUE_H +#include <gr_core_api.h> #include <gr_msg_handler.h> #include <gruel/thread.h> class gr_msg_queue; typedef boost::shared_ptr<gr_msg_queue> gr_msg_queue_sptr; -gr_msg_queue_sptr gr_make_msg_queue(unsigned int limit=0); +GR_CORE_API gr_msg_queue_sptr gr_make_msg_queue(unsigned int limit=0); /*! * \brief thread-safe message queue * \ingroup misc */ -class gr_msg_queue : public gr_msg_handler { +class GR_CORE_API gr_msg_queue : public gr_msg_handler { gruel::mutex d_mutex; gruel::condition_variable d_not_empty; diff --git a/gnuradio-core/src/lib/runtime/gr_pagesize.h b/gnuradio-core/src/lib/runtime/gr_pagesize.h index 3c1b8eb6b..60dad42c9 100644 --- a/gnuradio-core/src/lib/runtime/gr_pagesize.h +++ b/gnuradio-core/src/lib/runtime/gr_pagesize.h @@ -22,11 +22,13 @@ #ifndef _GR_PAGESIZE_H_ #define _GR_PAGESIZE_H_ +#include <gr_core_api.h> + /*! * \brief return the page size in bytes */ -int gr_pagesize (); +GR_CORE_API int gr_pagesize (); -#endif /* _GR_PAGESIZE_H_ */ +#endif /* _GR_PAGESIZE_H_ */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/runtime/gr_preferences.h b/gnuradio-core/src/lib/runtime/gr_preferences.h index 7f2a25e6b..ab4dc0cb0 100644 --- a/gnuradio-core/src/lib/runtime/gr_preferences.h +++ b/gnuradio-core/src/lib/runtime/gr_preferences.h @@ -23,10 +23,12 @@ #ifndef _GR_PREFERENCES_H_ #define _GR_PREFERENCES_H_ -class gr_preferences { +#include <gr_core_api.h> + +class GR_CORE_API gr_preferences { public: static const char *get (const char *key); static void set (const char *key, const char *value); }; -#endif /* _GR_PREFERENCES_H_ */ +#endif /* _GR_PREFERENCES_H_ */
\ No newline at end of file diff --git a/gnuradio-core/src/lib/runtime/gr_realtime.h b/gnuradio-core/src/lib/runtime/gr_realtime.h index 830c201d7..58db83086 100644 --- a/gnuradio-core/src/lib/runtime/gr_realtime.h +++ b/gnuradio-core/src/lib/runtime/gr_realtime.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_REALTIME_H #define INCLUDED_GR_REALTIME_H +#include <gr_core_api.h> #include <gruel/realtime.h> typedef gruel::rt_status_t gr_rt_status_t; @@ -31,6 +32,6 @@ typedef gruel::rt_status_t gr_rt_status_t; * \brief If possible, enable high-priority "real time" scheduling. * \ingroup misc */ -gr_rt_status_t gr_enable_realtime_scheduling(); +GR_CORE_API gr_rt_status_t gr_enable_realtime_scheduling(); #endif /* INCLUDED_GR_REALTIME_H */ diff --git a/gnuradio-core/src/lib/runtime/gr_runtime_types.h b/gnuradio-core/src/lib/runtime/gr_runtime_types.h index 74d2614a8..98f08b417 100644 --- a/gnuradio-core/src/lib/runtime/gr_runtime_types.h +++ b/gnuradio-core/src/lib/runtime/gr_runtime_types.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_RUNTIME_TYPES_H #define INCLUDED_GR_RUNTIME_TYPES_H +#include <gr_core_api.h> #include <gr_types.h> /* diff --git a/gnuradio-core/src/lib/runtime/gr_scheduler.h b/gnuradio-core/src/lib/runtime/gr_scheduler.h index 13bc1ff14..4e97b5881 100644 --- a/gnuradio-core/src/lib/runtime/gr_scheduler.h +++ b/gnuradio-core/src/lib/runtime/gr_scheduler.h @@ -22,6 +22,7 @@ #ifndef INCLUDED_GR_SCHEDULER_H #define INCLUDED_GR_SCHEDULER_H +#include <gr_core_api.h> #include <boost/utility.hpp> #include <gr_block.h> #include <gr_flat_flowgraph.h> @@ -36,7 +37,7 @@ typedef boost::shared_ptr<gr_scheduler> gr_scheduler_sptr; * * Preconditions: details, buffers and buffer readers have been assigned. */ -class gr_scheduler : boost::noncopyable +class GR_CORE_API gr_scheduler : boost::noncopyable { public: diff --git a/gnuradio-core/src/lib/runtime/gr_scheduler_sts.h b/gnuradio-core/src/lib/runtime/gr_scheduler_sts.h index 4cf835156..9b73b68c1 100644 --- a/gnuradio-core/src/lib/runtime/gr_scheduler_sts.h +++ b/gnuradio-core/src/lib/runtime/gr_scheduler_sts.h @@ -21,13 +21,14 @@ #ifndef INCLUDED_GR_SCHEDULER_STS_H #define INCLUDED_GR_SCHEDULER_STS_H +#include <gr_core_api.h> #include <gr_scheduler.h> #include <gruel/thread_group.h> /*! * \brief Concrete scheduler that uses the single_threaded_scheduler */ -class gr_scheduler_sts : public gr_scheduler +class GR_CORE_API gr_scheduler_sts : public gr_scheduler { gruel::thread_group d_threads; diff --git a/gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h b/gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h index 16a0c0204..f97ab2e7f 100644 --- a/gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h +++ b/gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h @@ -21,13 +21,14 @@ #ifndef INCLUDED_GR_SCHEDULER_TPB_H #define INCLUDED_GR_SCHEDULER_TPB_H +#include <gr_core_api.h> #include <gr_scheduler.h> #include <gruel/thread_group.h> /*! * \brief Concrete scheduler that uses a kernel thread-per-block */ -class gr_scheduler_tpb : public gr_scheduler +class GR_CORE_API gr_scheduler_tpb : public gr_scheduler { gruel::thread_group d_threads; diff --git a/gnuradio-core/src/lib/runtime/gr_select_handler.h b/gnuradio-core/src/lib/runtime/gr_select_handler.h index c3808995b..532707a02 100644 --- a/gnuradio-core/src/lib/runtime/gr_select_handler.h +++ b/gnuradio-core/src/lib/runtime/gr_select_handler.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SELECT_HANDLER_H #define INCLUDED_GR_SELECT_HANDLER_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> class gr_select_handler; @@ -35,7 +36,7 @@ typedef boost::shared_ptr<gr_select_handler> gr_select_handler_sptr; * * \sa gr_dispatcher */ -class gr_select_handler +class GR_CORE_API gr_select_handler { int d_fd; diff --git a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc index 7f1b40641..ae04e4a65 100644 --- a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc +++ b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc @@ -29,6 +29,7 @@ #include <gr_block_detail.h> #include <gr_buffer.h> #include <boost/thread.hpp> +#include <boost/format.hpp> #include <iostream> #include <limits> #include <assert.h> @@ -57,9 +58,8 @@ gr_single_threaded_scheduler::gr_single_threaded_scheduler ( : d_blocks (blocks), d_enabled (true), d_log(0) { if (ENABLE_LOGGING){ - char name[100]; - snprintf(name, sizeof(name), "sst-%d.log", which_scheduler++); - d_log = new std::ofstream(name); + std::string name = str(boost::format("sst-%d.log") % which_scheduler++); + d_log = new std::ofstream(name.c_str()); *d_log << "gr_single_threaded_scheduler: " << d_blocks.size () << " blocks\n"; diff --git a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h index 060d3017d..17f4a1c54 100644 --- a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h +++ b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SINGLE_THREADED_SCHEDULER_H #define INCLUDED_GR_SINGLE_THREADED_SCHEDULER_H +#include <gr_core_api.h> #include <gr_runtime_types.h> #include <fstream> @@ -35,7 +36,7 @@ typedef boost::shared_ptr<gr_single_threaded_scheduler> gr_single_threaded_sched * \ingroup internal */ -class gr_single_threaded_scheduler { +class GR_CORE_API gr_single_threaded_scheduler { public: ~gr_single_threaded_scheduler (); @@ -51,11 +52,11 @@ class gr_single_threaded_scheduler { void main_loop (); - friend gr_single_threaded_scheduler_sptr + friend GR_CORE_API gr_single_threaded_scheduler_sptr gr_make_single_threaded_scheduler (const std::vector<gr_block_sptr> &blocks); }; -gr_single_threaded_scheduler_sptr +GR_CORE_API gr_single_threaded_scheduler_sptr gr_make_single_threaded_scheduler (const std::vector<gr_block_sptr> &blocks); #endif /* INCLUDED_GR_SINGLE_THREADED_SCHEDULER_H */ diff --git a/gnuradio-core/src/lib/runtime/gr_sptr_magic.h b/gnuradio-core/src/lib/runtime/gr_sptr_magic.h index 872374ab6..4b7f9899d 100644 --- a/gnuradio-core/src/lib/runtime/gr_sptr_magic.h +++ b/gnuradio-core/src/lib/runtime/gr_sptr_magic.h @@ -21,6 +21,7 @@ #ifndef INCLUDED_GR_SPTR_MAGIC_H #define INCLUDED_GR_SPTR_MAGIC_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> class gr_basic_block; @@ -30,7 +31,7 @@ namespace gnuradio { namespace detail { - class sptr_magic { + class GR_CORE_API sptr_magic { public: static boost::shared_ptr<gr_basic_block> fetch_initial_sptr(gr_basic_block *p); static void create_and_stash_initial_sptr(gr_hier_block2 *p); diff --git a/gnuradio-core/src/lib/runtime/gr_sync_block.h b/gnuradio-core/src/lib/runtime/gr_sync_block.h index c5a6a50f1..808c1c18a 100644 --- a/gnuradio-core/src/lib/runtime/gr_sync_block.h +++ b/gnuradio-core/src/lib/runtime/gr_sync_block.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SYNC_BLOCK_H #define INCLUDED_GR_SYNC_BLOCK_H +#include <gr_core_api.h> #include <gr_block.h> /*! @@ -31,7 +32,7 @@ * * Override work to provide the signal processing implementation. */ -class gr_sync_block : public gr_block +class GR_CORE_API gr_sync_block : public gr_block { protected: gr_sync_block (void){} //allows pure virtual interface sub-classes diff --git a/gnuradio-core/src/lib/runtime/gr_sync_decimator.h b/gnuradio-core/src/lib/runtime/gr_sync_decimator.h index 12cd54195..b2ed3c4fe 100644 --- a/gnuradio-core/src/lib/runtime/gr_sync_decimator.h +++ b/gnuradio-core/src/lib/runtime/gr_sync_decimator.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SYNC_DECIMATOR_H #define INCLUDED_GR_SYNC_DECIMATOR_H +#include <gr_core_api.h> #include <gr_sync_block.h> /*! @@ -31,7 +32,7 @@ * * Override work to provide the signal processing implementation. */ -class gr_sync_decimator : public gr_sync_block +class GR_CORE_API gr_sync_decimator : public gr_sync_block { private: unsigned d_decimation; diff --git a/gnuradio-core/src/lib/runtime/gr_sync_interpolator.h b/gnuradio-core/src/lib/runtime/gr_sync_interpolator.h index 0363bc55c..d65b3da1e 100644 --- a/gnuradio-core/src/lib/runtime/gr_sync_interpolator.h +++ b/gnuradio-core/src/lib/runtime/gr_sync_interpolator.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_SYNC_INTERPOLATOR_H #define INCLUDED_GR_SYNC_INTERPOLATOR_H +#include <gr_core_api.h> #include <gr_sync_block.h> /*! @@ -31,7 +32,7 @@ * * Override work to provide the signal processing implementation. */ -class gr_sync_interpolator : public gr_sync_block +class GR_CORE_API gr_sync_interpolator : public gr_sync_block { private: unsigned d_interpolation; diff --git a/gnuradio-core/src/lib/runtime/gr_sys_paths.h b/gnuradio-core/src/lib/runtime/gr_sys_paths.h index aa8249775..1f1759c36 100644 --- a/gnuradio-core/src/lib/runtime/gr_sys_paths.h +++ b/gnuradio-core/src/lib/runtime/gr_sys_paths.h @@ -22,10 +22,12 @@ #ifndef _GR_SYS_PATHS_H_ #define _GR_SYS_PATHS_H_ +#include <gr_core_api.h> + //! directory to create temporary files -const char *gr_tmp_path(); +GR_CORE_API const char *gr_tmp_path(); //! directory to store application data -const char *gr_appdata_path(); +GR_CORE_API const char *gr_appdata_path(); #endif /* _GR_SYS_PATHS_H_ */ diff --git a/gnuradio-core/src/lib/runtime/gr_timer.h b/gnuradio-core/src/lib/runtime/gr_timer.h index ff14e315d..fa3c06ece 100644 --- a/gnuradio-core/src/lib/runtime/gr_timer.h +++ b/gnuradio-core/src/lib/runtime/gr_timer.h @@ -22,13 +22,14 @@ #ifndef INCLUDED_GR_TIMER_H #define INCLUDED_GR_TIMER_H +#include <gr_core_api.h> #include <gr_types.h> class gr_timer; typedef boost::shared_ptr<gr_timer> gr_timer_sptr; -typedef void (*gr_timer_hook)(gr_timer *, void *); +GR_CORE_API typedef void (*gr_timer_hook)(gr_timer *, void *); /*! * \brief create a timeout. @@ -36,18 +37,18 @@ typedef void (*gr_timer_hook)(gr_timer *, void *); * \ingroup misc * gr_timer_hook is called when timer fires. */ -gr_timer_sptr gr_make_timer (gr_timer_hook, void *); +GR_CORE_API gr_timer_sptr gr_make_timer (gr_timer_hook, void *); /*! * \brief implement timeouts */ -class gr_timer { +class GR_CORE_API gr_timer { double d_expiry; double d_period; gr_timer_hook d_hook; void *d_hook_arg; - friend gr_timer_sptr gr_make_timer (gr_timer_hook, void *); + friend GR_CORE_API gr_timer_sptr gr_make_timer (gr_timer_hook, void *); gr_timer (...); diff --git a/gnuradio-core/src/lib/runtime/gr_top_block.h b/gnuradio-core/src/lib/runtime/gr_top_block.h index ed244cb7c..fca68ae71 100644 --- a/gnuradio-core/src/lib/runtime/gr_top_block.h +++ b/gnuradio-core/src/lib/runtime/gr_top_block.h @@ -23,21 +23,22 @@ #ifndef INCLUDED_GR_TOP_BLOCK_H #define INCLUDED_GR_TOP_BLOCK_H +#include <gr_core_api.h> #include <gr_hier_block2.h> class gr_top_block_impl; -gr_top_block_sptr gr_make_top_block(const std::string &name); +GR_CORE_API gr_top_block_sptr gr_make_top_block(const std::string &name); /*! *\brief Top-level hierarchical block representing a flowgraph * \ingroup container_blk * */ -class gr_top_block : public gr_hier_block2 +class GR_CORE_API gr_top_block : public gr_hier_block2 { private: - friend gr_top_block_sptr gr_make_top_block(const std::string &name); + friend GR_CORE_API gr_top_block_sptr gr_make_top_block(const std::string &name); gr_top_block_impl *d_impl; diff --git a/gnuradio-core/src/lib/runtime/gr_top_block_impl.h b/gnuradio-core/src/lib/runtime/gr_top_block_impl.h index ef28dd829..904443be5 100644 --- a/gnuradio-core/src/lib/runtime/gr_top_block_impl.h +++ b/gnuradio-core/src/lib/runtime/gr_top_block_impl.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_TOP_BLOCK_IMPL_H #define INCLUDED_GR_TOP_BLOCK_IMPL_H +#include <gr_core_api.h> #include <gr_scheduler.h> #include <gruel/thread.h> @@ -34,7 +35,7 @@ * decoupling of changes from dependent classes. * */ -class gr_top_block_impl +class GR_CORE_API gr_top_block_impl { public: gr_top_block_impl(gr_top_block *owner); diff --git a/gnuradio-core/src/lib/runtime/gr_tpb_detail.h b/gnuradio-core/src/lib/runtime/gr_tpb_detail.h index acfa264c7..90908c2f5 100644 --- a/gnuradio-core/src/lib/runtime/gr_tpb_detail.h +++ b/gnuradio-core/src/lib/runtime/gr_tpb_detail.h @@ -21,6 +21,7 @@ #ifndef INCLUDED_GR_TPB_DETAIL_H #define INCLUDED_GR_TPB_DETAIL_H +#include <gr_core_api.h> #include <gruel/thread.h> #include <deque> #include <gruel/pmt.h> @@ -30,7 +31,7 @@ class gr_block_detail; /*! * \brief used by thread-per-block scheduler */ -struct gr_tpb_detail { +struct GR_CORE_API gr_tpb_detail { gruel::mutex mutex; //< protects all vars bool input_changed; diff --git a/gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h b/gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h index a630b1be9..548cfedfb 100644 --- a/gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h +++ b/gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h @@ -21,6 +21,7 @@ #ifndef INCLUDED_GR_TPB_THREAD_BODY_H #define INCLUDED_GR_TPB_THREAD_BODY_H +#include <gr_core_api.h> #include <gr_block_executor.h> #include <gr_block.h> #include <gr_block_detail.h> @@ -33,7 +34,7 @@ * done or is interrupted. */ -class gr_tpb_thread_body { +class GR_CORE_API gr_tpb_thread_body { gr_block_executor d_exec; public: diff --git a/gnuradio-core/src/lib/runtime/gr_types.h b/gnuradio-core/src/lib/runtime/gr_types.h index ad8f145b8..fd5ca7758 100644 --- a/gnuradio-core/src/lib/runtime/gr_types.h +++ b/gnuradio-core/src/lib/runtime/gr_types.h @@ -23,6 +23,7 @@ #ifndef INCLUDED_GR_TYPES_H #define INCLUDED_GR_TYPES_H +#include <gr_core_api.h> #include <boost/shared_ptr.hpp> #include <vector> #include <stddef.h> // size_t diff --git a/gnuradio-core/src/lib/runtime/gr_unittests.h b/gnuradio-core/src/lib/runtime/gr_unittests.h index 59149bb2e..7161b31e7 100644 --- a/gnuradio-core/src/lib/runtime/gr_unittests.h +++ b/gnuradio-core/src/lib/runtime/gr_unittests.h @@ -24,12 +24,14 @@ #include "config.h" #endif +#include <gr_core_api.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> +#include <string> #include <boost/filesystem/operations.hpp> #include <boost/filesystem/path.hpp> diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc index 3b8a6e617..7138605c9 100644 --- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc +++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc @@ -30,6 +30,8 @@ #include <stdio.h> #include <string.h> #include <gr_local_sighandler.h> +#include <vector> +#include <boost/format.hpp> // all the factories we know about #include <gr_vmcircbuf_createfilemapping.h> @@ -130,7 +132,7 @@ init_buffer (gr_vmcircbuf *c, int counter, int size) } static bool -check_mapping (gr_vmcircbuf *c, int counter, int size, char *msg, bool verbose) +check_mapping (gr_vmcircbuf *c, int counter, int size, const char *msg, bool verbose) { bool ok = true; @@ -163,28 +165,28 @@ check_mapping (gr_vmcircbuf *c, int counter, int size, char *msg, bool verbose) return ok; } -static char * +static const char * memsize (int size) { - static char buf[100]; + static std::string buf; if (size >= (1 << 20)){ - snprintf (buf, sizeof (buf), "%dMB", size / (1 << 20)); + buf = str(boost::format("%dMB") % (size / (1 << 20))); } else if (size >= (1 << 10)){ - snprintf (buf, sizeof (buf), "%dKB", size / (1 << 10)); + buf = str(boost::format("%dKB") % (size / (1 << 10))); } else { - snprintf (buf, sizeof (buf), "%d", size); + buf = str(boost::format("%d") % size); } - return buf; + return buf.c_str(); } static bool test_a_bunch (gr_vmcircbuf_factory *factory, int n, int size, int *start_ptr, bool verbose) { bool ok = true; - int counter[n]; - gr_vmcircbuf *c[n]; + std::vector<int> counter(n); + std::vector<gr_vmcircbuf *> c(n); int cum_size = 0; for (int i = 0; i < n; i++){ @@ -202,9 +204,8 @@ test_a_bunch (gr_vmcircbuf_factory *factory, int n, int size, int *start_ptr, bo } for (int i = 0; i < n; i++){ - char msg[100]; - snprintf (msg, sizeof (msg), "test_a_bunch_%dx%s[%d]", n, memsize (size), i); - ok &= check_mapping (c[i], counter[i], size, msg, verbose); + std::string msg = str(boost::format("test_a_bunch_%dx%s[%d]") % n % memsize (size) % i); + ok &= check_mapping (c[i], counter[i], size, msg.c_str(), verbose); } for (int i = 0; i < n; i++){ diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.h index a73a1559c..0e67d405b 100644 --- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.h +++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.h @@ -23,13 +23,14 @@ #ifndef _GR_VMCIRCBUF_H_ #define _GR_VMCIRCBUF_H_ +#include <gr_core_api.h> #include <vector> /*! * \brief abstract class to implement doubly mapped virtual memory circular buffers * \ingroup internal */ -class gr_vmcircbuf { +class GR_CORE_API gr_vmcircbuf { protected: int d_size; char *d_base; @@ -48,7 +49,7 @@ class gr_vmcircbuf { /*! * \brief abstract factory for creating circular buffers */ -class gr_vmcircbuf_factory { +class GR_CORE_API gr_vmcircbuf_factory { protected: gr_vmcircbuf_factory () {}; virtual ~gr_vmcircbuf_factory (); @@ -76,7 +77,7 @@ class gr_vmcircbuf_factory { /* * \brief pulls together all implementations of gr_vmcircbuf */ -class gr_vmcircbuf_sysconfig { +class GR_CORE_API gr_vmcircbuf_sysconfig { public: /* diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc index 42c459484..1b4d9700a 100644 --- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc +++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc @@ -37,6 +37,7 @@ #include <stdio.h> #include <gr_pagesize.h> #include <gr_vmcircbuf_createfilemapping.h> +#include <boost/format.hpp> #ifdef HAVE_CREATEFILEMAPPING // Print Windows error (could/should be global?) @@ -72,23 +73,21 @@ gr_vmcircbuf_createfilemapping::gr_vmcircbuf_createfilemapping (int size) throw std::runtime_error ("gr_vmcircbuf_createfilemapping"); } - char seg_name[1024]; - snprintf (seg_name, sizeof (seg_name), "/gnuradio-%d-%d", getpid (), s_seg_counter); + std::string seg_name = str(boost::format("/gnuradio-%d-%d") % getpid () % s_seg_counter); d_handle = CreateFileMapping(INVALID_HANDLE_VALUE, // use paging file NULL, // default security PAGE_READWRITE, // read/write access 0, // max. object size size, // buffer size - seg_name); // name of mapping object + seg_name.c_str()); // name of mapping object s_seg_counter++; if (d_handle == NULL || d_handle == INVALID_HANDLE_VALUE){ - char msg[1024]; - snprintf( msg, sizeof(msg), - "gr_vmcircbuf_mmap_createfilemapping: CreateFileMapping [%s]", + std::string msg = str(boost::format( + "gr_vmcircbuf_mmap_createfilemapping: CreateFileMapping [%s]") % seg_name ); - werror( msg, GetLastError() ); + werror((char *) msg.c_str(), GetLastError() ); throw std::runtime_error ("gr_vmcircbuf_mmap_createfilemapping"); } diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h index 9276ae98b..5ef31f5c6 100644 --- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h +++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h @@ -23,6 +23,7 @@ #ifndef _GR_VMCIRCBUF_CREATEFILEMAPPING_H_ #define _GR_VMCIRCBUF_CREATEFILEMAPPING_H_ +#include <gr_core_api.h> #include <gr_vmcircbuf.h> #ifdef HAVE_CREATEFILEMAPPING @@ -32,7 +33,7 @@ * \brief concrete class to implement circular buffers with mmap and shm_open * \ingroup internal */ -class gr_vmcircbuf_createfilemapping : public gr_vmcircbuf +class GR_CORE_API gr_vmcircbuf_createfilemapping : public gr_vmcircbuf { public: // CREATORS @@ -49,7 +50,7 @@ class gr_vmcircbuf_createfilemapping : public gr_vmcircbuf /*! * \brief concrete factory for circular buffers built using mmap and shm_open */ -class gr_vmcircbuf_createfilemapping_factory : public gr_vmcircbuf_factory +class GR_CORE_API gr_vmcircbuf_createfilemapping_factory : public gr_vmcircbuf_factory { private: static gr_vmcircbuf_factory *s_the_factory; diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h index 238f44414..002f5b434 100644 --- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h +++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h @@ -23,13 +23,14 @@ #ifndef _GR_VMCIRCBUF_MMAP_SHM_OPEN_H_ #define _GR_VMCIRCBUF_MMAP_SHM_OPEN_H_ +#include <gr_core_api.h> #include <gr_vmcircbuf.h> /*! * \brief concrete class to implement circular buffers with mmap and shm_open * \ingroup internal */ -class gr_vmcircbuf_mmap_shm_open : public gr_vmcircbuf { +class GR_CORE_API gr_vmcircbuf_mmap_shm_open : public gr_vmcircbuf { public: // CREATORS @@ -41,7 +42,7 @@ class gr_vmcircbuf_mmap_shm_open : public gr_vmcircbuf { /*! * \brief concrete factory for circular buffers built using mmap and shm_open */ -class gr_vmcircbuf_mmap_shm_open_factory : public gr_vmcircbuf_factory { +class GR_CORE_API gr_vmcircbuf_mmap_shm_open_factory : public gr_vmcircbuf_factory { private: static gr_vmcircbuf_factory *s_the_factory; diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h index e5be52768..a2ed6b87b 100644 --- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h +++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h @@ -23,13 +23,14 @@ #ifndef _GR_VMCIRCBUF_MMAP_TMPFILE_H_ #define _GR_VMCIRCBUF_MMAP_TMPFILE_H_ +#include <gr_core_api.h> #include <gr_vmcircbuf.h> /*! * \brief concrete class to implement circular buffers with mmap and shm_open * \ingroup internal */ -class gr_vmcircbuf_mmap_tmpfile : public gr_vmcircbuf { +class GR_CORE_API gr_vmcircbuf_mmap_tmpfile : public gr_vmcircbuf { public: // CREATORS @@ -41,7 +42,7 @@ class gr_vmcircbuf_mmap_tmpfile : public gr_vmcircbuf { /*! * \brief concrete factory for circular buffers built using mmap and shm_open */ -class gr_vmcircbuf_mmap_tmpfile_factory : public gr_vmcircbuf_factory { +class GR_CORE_API gr_vmcircbuf_mmap_tmpfile_factory : public gr_vmcircbuf_factory { private: static gr_vmcircbuf_factory *s_the_factory; diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h index cc87f8fe6..c7a008581 100644 --- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h +++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h @@ -23,13 +23,14 @@ #ifndef _GR_VMCIRCBUF_SYSV_SHM_H_ #define _GR_VMCIRCBUF_SYSV_SHM_H_ +#include <gr_core_api.h> #include <gr_vmcircbuf.h> /*! * \brief concrete class to implement circular buffers with mmap and shm_open * \ingroup internal */ -class gr_vmcircbuf_sysv_shm : public gr_vmcircbuf { +class GR_CORE_API gr_vmcircbuf_sysv_shm : public gr_vmcircbuf { public: // CREATORS @@ -41,7 +42,7 @@ class gr_vmcircbuf_sysv_shm : public gr_vmcircbuf { /*! * \brief concrete factory for circular buffers built using mmap and shm_open */ -class gr_vmcircbuf_sysv_shm_factory : public gr_vmcircbuf_factory { +class GR_CORE_API gr_vmcircbuf_sysv_shm_factory : public gr_vmcircbuf_factory { private: static gr_vmcircbuf_factory *s_the_factory; diff --git a/gnuradio-core/src/lib/runtime/qa_runtime.h b/gnuradio-core/src/lib/runtime/qa_runtime.h index c55208c39..e1038aaf6 100644 --- a/gnuradio-core/src/lib/runtime/qa_runtime.h +++ b/gnuradio-core/src/lib/runtime/qa_runtime.h @@ -23,11 +23,12 @@ #ifndef _QA_RUNTIME_H_ #define _QA_RUNTIME_H_ +#include <gruel/attributes.h> #include <cppunit/TestSuite.h> //! collect all the tests for the runtime directory -class qa_runtime { +class __GR_ATTR_EXPORT qa_runtime { public: //! return suite of tests for all of runtime directory static CppUnit::TestSuite *suite (); diff --git a/gnuradio-core/src/lib/swig/CMakeLists.txt b/gnuradio-core/src/lib/swig/CMakeLists.txt new file mode 100644 index 000000000..ef0772944 --- /dev/null +++ b/gnuradio-core/src/lib/swig/CMakeLists.txt @@ -0,0 +1,93 @@ +# Copyright 2010-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. + +######################################################################## +include(GrPython) +include(GrSwig) + +include_directories(${Boost_INCLUDE_DIRS}) +link_directories(${Boost_LIBRARY_DIRS}) + +set(GR_SWIG_INCLUDE_DIRS + ${Boost_INCLUDE_DIRS} + ${GSL_INCLUDE_DIRS} + ${GRUEL_INCLUDE_DIRS} + ${GNURADIO_CORE_INCLUDE_DIRS} + ${CMAKE_CURRENT_BINARY_DIR} +) +set(GR_SWIG_LIBRARIES gnuradio-core) + +######################################################################## +# Build and install the swig targets +######################################################################## +# ---------------------------------------------------------------- +# We've split the previously monstrous gnuradio_corethon into 6 +# smaller pieces. This reduces compile time coupling and creates +# smaller pieces for the compiler to digest. prior to this change, on +# X86_64, g++'s resident set size was 650MB! +# ---------------------------------------------------------------- + +set(GR_SWIG_TARGET_DEPS gengen_generated filter_generated) + +GR_SWIG_MAKE(gnuradio_core_runtime gnuradio_core_runtime.i) +GR_SWIG_MAKE(gnuradio_core_general gnuradio_core_general.i) +GR_SWIG_MAKE(gnuradio_core_gengen gnuradio_core_gengen.i) +GR_SWIG_MAKE(gnuradio_core_filter gnuradio_core_filter.i) +GR_SWIG_MAKE(gnuradio_core_io gnuradio_core_io.i) +GR_SWIG_MAKE(gnuradio_core_hier gnuradio_core_hier.i) + +GR_SWIG_INSTALL(TARGETS + gnuradio_core_runtime + gnuradio_core_general + gnuradio_core_gengen + gnuradio_core_filter + gnuradio_core_io + gnuradio_core_hier + DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr + COMPONENT "core_python" +) + +######################################################################## +# Install various files +######################################################################## +install(FILES + gnuradio.i + gr_swig_block_magic.i + gr_shared_ptr.i + gnuradio_core_runtime.i + gnuradio_core_general.i + gnuradio_core_gengen.i + gnuradio_core_filter.i + gnuradio_core_io.i + gnuradio_core_hier.i + DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig + COMPONENT "core_swig" +) + +GR_PYTHON_INSTALL( + FILES gnuradio_core.py + DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr + COMPONENT "core_python" +) + +install( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio_swig_bug_workaround.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_swig" +) diff --git a/gnuradio-core/src/lib/swig/gnuradio_core_general.i b/gnuradio-core/src/lib/swig/gnuradio_core_general.i index adf6b469a..b34d4f936 100644 --- a/gnuradio-core/src/lib/swig/gnuradio_core_general.i +++ b/gnuradio-core/src/lib/swig/gnuradio_core_general.i @@ -19,6 +19,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#define GR_CORE_API + #ifndef SWIGIMPORTED %module(directors="1") gnuradio_core_general #endif diff --git a/gnuradio-core/src/lib/viterbi/CMakeLists.txt b/gnuradio-core/src/lib/viterbi/CMakeLists.txt new file mode 100644 index 000000000..add5c77e8 --- /dev/null +++ b/gnuradio-core/src/lib/viterbi/CMakeLists.txt @@ -0,0 +1,63 @@ +# Copyright 2010-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. + +######################################################################## +# This file included, use CMake directory variables +######################################################################## + +set(viterbi_sources + ${CMAKE_CURRENT_SOURCE_DIR}/metrics.c + ${CMAKE_CURRENT_SOURCE_DIR}/tab.c + ${CMAKE_CURRENT_SOURCE_DIR}/viterbi.c +) + +######################################################################## +# define missing erf function with C linkage (hack for metrics.c) +######################################################################## +if(MSVC) +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/boost_math_erf.cc " +#include <boost/math/special_functions/erf.hpp> +extern \"C\" double erf(double x){ + return boost::math::erf(x); +} +") +list(APPEND viterbi_sources ${CMAKE_CURRENT_BINARY_DIR}/boost_math_erf.cc) +endif(MSVC) + +######################################################################## +# Append gnuradio-core library sources +######################################################################## +list(APPEND gnuradio_core_sources ${viterbi_sources}) + +######################################################################## +# Install runtime headers +######################################################################## +install( + FILES ${CMAKE_CURRENT_SOURCE_DIR}/viterbi.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "core_devel" +) + +######################################################################## +# Create some text executables (not registered tests) +# Its not much to build so the sources are just re-listed, +# rather than create a new library just for these two apps. +######################################################################## +#ADD_EXECUTABLE(viterbi_encode ${CMAKE_CURRENT_SOURCE_DIR}/encode.cc ${viterbi_sources}) +#ADD_EXECUTABLE(viterbi_decode ${CMAKE_CURRENT_SOURCE_DIR}/decode.cc ${viterbi_sources}) diff --git a/gnuradio-core/src/lib/viterbi/Makefile.am b/gnuradio-core/src/lib/viterbi/Makefile.am index 8384c52f0..1b86a86f8 100644 --- a/gnuradio-core/src/lib/viterbi/Makefile.am +++ b/gnuradio-core/src/lib/viterbi/Makefile.am @@ -21,6 +21,8 @@ include $(top_srcdir)/Makefile.common LIBS = -lm +AM_CPPFLAGS = -I$(top_srcdir)/gnuradio-core/src/lib/general + noinst_LTLIBRARIES = libviterbi.la libviterbi_la_SOURCES = \ diff --git a/gnuradio-core/src/lib/viterbi/metrics.c b/gnuradio-core/src/lib/viterbi/metrics.c index 9f958cab7..77c6a63c8 100644 --- a/gnuradio-core/src/lib/viterbi/metrics.c +++ b/gnuradio-core/src/lib/viterbi/metrics.c @@ -42,6 +42,9 @@ #include <stdlib.h> #include <math.h> +//declare erf in case it was missing in math.h and provided for by the build system +extern double erf(double x); + /* Normal function integrated from -Inf to x. Range: 0-1 */ #define normal(x) (0.5 + 0.5*erf((x)/M_SQRT2)) diff --git a/gnuradio-core/src/lib/viterbi/viterbi.h b/gnuradio-core/src/lib/viterbi/viterbi.h index 155b0d93a..5bb8b357a 100644 --- a/gnuradio-core/src/lib/viterbi/viterbi.h +++ b/gnuradio-core/src/lib/viterbi/viterbi.h @@ -23,27 +23,31 @@ * than we'd like for K=7, especially since we chain back every 8 bits. * But it fits so nicely into a 32-bit machine word... */ -struct viterbi_state { + +#include <gr_core_api.h> + +struct GR_CORE_API viterbi_state { unsigned long path; /* Decoded path to this state */ long metric; /* Cumulative metric to this state */ }; +GR_CORE_API int gen_met(int mettab[2][256], /* Metric table */ int amp, /* Signal amplitude */ double esn0, /* Es/N0 ratio in dB */ double bias, /* Metric bias */ int scale); /* Scale factor */ -unsigned char +GR_CORE_API unsigned char encode(unsigned char *symbols, unsigned char *data, unsigned int nbytes,unsigned char encstate); -void +GR_CORE_API void viterbi_chunks_init(struct viterbi_state* state); -void + GR_CORE_API void viterbi_butterfly2(unsigned char *symbols, int mettab[2][256], struct viterbi_state *state0, struct viterbi_state *state1); -unsigned char +GR_CORE_API unsigned char viterbi_get_output(struct viterbi_state *state, unsigned char *outbuf); |